One dated price for one item on one price list, optionally narrowed to a specific SKU and/or item lot type. PriceListRuleService matches on the exact item, the resolved price list, a SKU and lot type that are either equal to the line's or left blank, and an effective-date window around the pricing date (the line's PriceAsOnDate, else the document's, else the document date, else today); candidates are ordered by DateEffectiveFrom descending then by SKU and lot type, so the newest rule wins and a rule naming the exact SKU or lot type outranks a blank one carrying the same start date. The matched amounts land on the line as UnitPrice/UnitPrice2 for sales-side lines and UnitCost/UnitCost2 for bill, adjustment, purchase-order and bill-return lines. The price is a default rather than an override: bundle-priced lines are skipped entirely, and on a freshly inserted line a non-zero amount the user already typed is preserved.
Fields
| Field | Label | Type | Required | What it does |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DateEffectiveFrom | Date Effective From | Date | Yes | Start of the rule's validity and the strongest tie-break: among the rules valid on the pricing date the one with the latest start wins. The pricing date is the line's PriceAsOnDate, else the document's, else the document date, else today. |
DateEffectiveTill | Date Effective Till | Date | | End of validity. Leaving it empty makes the rule open-ended rather than expired, which is the usual reason an old rule keeps pricing lines. |
ExternalId | External | Text | | |
Id | Id | Guid | Yes | |
ItemId | Item | Lookup → Item | Yes | |
ItemLotTypeId | Item Lot Type | Lookup → ItemLotType | | Optional narrowing to one item lot type; empty matches all of them. Like SKU it acts as a tie-break, so a lot-type-specific rule outranks a blank rule with the same start date. |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
Price | Price | Currency | | The unit amount copied onto the matched document line: UnitPrice on sales-side lines and UnitCost on bill, adjustment, purchase-order, bill-return, requisition and auto-purchase-order lines. It behaves as a default — bundle-priced lines are skipped, and on a newly inserted line a non-zero amount already entered is left untouched. |
Price2 | Price2 | Currency | | A secondary unit amount copied alongside the primary one into UnitPrice2 or UnitCost2. |
PriceListId | Price List | Lookup → PriceList | Yes | Required. The rule is only considered once a list has been settled for the line — the line's own price list, else the parent document's, else any list flagged as the default. |
RecordTypeId | Record Type | Guid, hidden | | |
SKUId | SKU | Lookup → SKU | | Leaving it empty makes the rule apply to every SKU of the item. When a SKU-specific rule and a blank one share the same start date, the SKU-specific one is preferred. |
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 | Edit | Edit In Page |
EditListHeader | Edit | EditInline | EditListHeader |
EditListRow | Edit | Edit | EditListRow |
New | New | NewInline | New |
Validations
| Validation | Applies to | Error message | Notes |
| Date Rule Validation | DateEffectiveTill, Error | Date Effective Till can not be Older than Date Effective From | Ensures effective-till date is not earlier than effective-from date |
Lookup filters
| Filter | Lookup field | Notes |
| Sku For Item | SKUId | Sku For Item |