A container for contract-discount percentages that DiscountGroupService stamps onto a document header when the header has none. Candidates must be active and carry a DiscountType of exactly 'Sale Price' or 'Purchase Price', and must fit the document on partner account, branch, partner account group and customer account group, where group membership comes from AccountGroupMember rows in an account group of type Discount. The percentages themselves live in child DiscountGroupRule rows, and the IncentiveEngine can overwrite a document's discount group from a compensation slab.
Fields
| Field | Label | Type | Required | What it does |
BranchId | Branch | Lookup → Branch | | Confines the group to documents raised in that branch; empty means every branch. Branch is the first ordering key among matching groups, so a branch-specific group is preferred. |
ClaimablePercentage | Claimable Percentage | Percent | | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
CustomerAccountGroupId | Customer Account Group | Lookup → AccountGroup | | Restricts the group to customers in that account group, resolved from AccountGroupMember rows whose account group is of type Discount. Groups of any other type are invisible here. |
DiscountType | Discount Type | PickList | Yes | Must read exactly 'Sale Price' or 'Purchase Price'. The selector coerces anything that is not the sale value to the purchase value before comparing, so a typo or a blank effectively files the group under purchase and it will never be chosen for a sales document. Values: Sale Price, Purchase Price. |
Id | Id | Guid | Yes | |
IsActive | Active | Boolean | | Only active groups are considered when a document header is given a discount group; deactivating a group stops new documents picking it up but does not disturb groups already stored on existing documents. |
IsClaimable | Claimable | Boolean | | The claims engine decides claimability from the scheme's own claimable flag, not from this one, so setting it here does not make a discount recoverable. |
IsDefault | Default | Boolean | | Stored but never consulted by the selector — unlike price lists, discount-group selection has no default fallback, so a document that matches no scoped group simply ends up with no discount group and no contract discount. |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | Yes | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountGroupId | Partner Account Group | Lookup → AccountGroup | | Restricts the group to documents whose partner account belongs to that group, again through AccountGroupMember rows in an account group of type Discount. |
PartnerAccountId | Partner Account | Lookup → Account | | Confines the group to documents for that partner account; empty means all partners. It ranks second behind branch when several groups match. |
RecordTypeId | Record Type | Guid, hidden | | |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete the selected records. |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete in a list page |
Edit | Edit | Edit | Edit |
EditInLine | Edit | EditInline | Delete in page. |
EditInList | Edit | Edit | Edit |
EditListHeader | Edit | EditInline | EditListHeader |
New | New | New | New |
UIAction | UI Action | UIAction | UI Action |
Lookup filters
| Filter | Lookup field | Notes |
| Partner Account Filter | PartnerAccountId | |
| Related Branch | BranchId | |