Advanced pricing method hierarchy with lot attribute values

Article09/20/20237 min read

To execute the price calculation based on the attribute driven pricing on the sales/purchase documents, the price list pages should be created with values predefined for an item. When the Attribute Driven Pricing toggle is turned on and the Price Calculation method is set to Advanced Pricing Method, the selection of the price on the lines takes place as follows:

To explain how a price is selected in a sales order line, we will give an example. Let’s say you have created a sales order for customer C0015, with an order line for item number 15 along with the below attributes and location code:

Let us assume that you have specified the following price lines for item 15 on the Sales Price page. Lines that do not match the selected item number, Customer, Customer group or Campaign are already filtered out in this picture.

So which price from the price list will be chosen for the order line? First, the system will filter out all price lines that are not valid for this order. The picture below explains when a price line is valid or invalid when the Attribute Driven Pricing toggle is turned on.

Which lines are valid?
Item numberOnly price lines with the same item number as the item on the order line are valid.
Sales type/Sales code
  • Lines with Sales Type CUSTOMER are only valid when the customer is equal to the customer on the order or to the sales price reference customer (when this field is specified for the customer on the order).
  • Lines with Sales Type CUSTOMER PRICE GROUP are only valid when the customer group is linked to the customer on the order.
  • Lines with Sales Type CAMPAIGN are only valid when this campaign is selected on the order.
  • Lines with Sales Type ALL CUSTOMER are always valid.
Starting date
  • For sales orders: only price lines with no starting date or a starting date that is before or equal to order/shipment/promised delivery/requested delivery date are valid: Which of these dates is applicable depends on the ‘Sales Price Reference Date’, specified on the customer card.
  • For other sales documents: only price lines with no starting date or a starting date that is before or equal to the order date are valid.
Currency codeOnly price lines that have no currency code (i.e., representing the default system currency) or have the same currency code as the currency on the order header are valid.
Variant codeOnly price lines that have no variant code or have the same variant code as the item on the order line are valid.
Unit of measureAll unit of measure codes are valid.
Minimum quantityOnly lines that have a lower minimum quantity than the quantity in the order line are valid.

When in the price line another unit of measure code is specified than in the order line, the minimum quantity is recalculated using the item unit of measure table.

Ending date
  • For sales orders: only price lines that have no ending date, or an ending date that is after the order/shipment/promised delivery/requested delivery date are valid. Which of these dates is applicable depends on the ‘Sales Price Reference Date’, specified on the customer card.
  • For other sales documents: only price lines with no starting date or a starting date that is before or equal to the order date are valid.
LocationOnly Lines with the same location on the order line are valid.
Global Lot AttributesOnly lines that have no global lot attribute values or have the same global lot attributes on the order line are valid.
Note

When determining the sales discount instead of the sales price, a similar process is followed. But additionally, the item discount group is then also considered. If no item number is found at a certain level but a discount is present for an item discount group that is assigned to the item, then this discount will be considered. And instead of the sales type customer price group, the system will search for the sales type customer discount group.

Using the rules in the picture above, the pink lines in the picture below are filtered out of the price list in our example. The reason why they are not valid (in combination with our order example) is highlighted in red.

Note

When no lines remain, the Unit Price of the item card would be used on the order line.

After filtering out these invalid price lines, the system will continue to filter lines (in 7 steps) based on a certain hierarchy (which also applies when a discount is retrieved). The most important fields are Currency Code and Variant Code. The first step the system will take is checking whether price lines exist in which the values of bothfields match the values in the order (line). If so, it will continue to step 2 with those price lines. If they are not found, it will look further for lines that contain only the correct currency code. If those are not found, it will look for lines that contain only the correct variant code. And finally, if those are not found, it will continue to step 2 with the remaining price lines (which have no value for both fields).

In the second step, the remaining lines are filtered on the Source Type field. Lines with sales type Campaign trump lines with CUSTOMER, which in turn trump lines with CUSTOMER PRICE GROUP, which in turn trump lines of type ALL CUSTOMERS.

In the third step, the Unit of Measure Code is checked for the exact match between the price list lines and order line.

Next (if multiple lines still exist), price lines with the most recent starting date will be selected. And of those lines, the price line(s) with the highest minimum quantity remain(s).

Then, the system checks for the lines that have the same location code as that of the order line. Finally, the system will look for any pricing lines that already exist with the same global attribute values as the order line. If they cannot be located, it will look for lines in the global lot attribute fields that have least matching or empty values.

Note

The system accepts any values on the pricing list lines for the blank field values on the order line.

Applying these seven steps to the valid price lines we had left in our example, would filter out the orange lines in the picture below, resulting in remaining (grey) price lines. Explanation:

Step 1: Since price lines with USD and RED exist, two lines are filtered out.

Step 2: CUSTOMER trumps ALL CUSTOMER, so the line with ALL CUSTOMER is filtered out.

Step 3: As price lines with UoM BOX exist, the price line with no UoM is filtered out.

Step 4: As 2017 and_2018_ are older than, the line with starting date 01/01/2017 & 01/01/2018 are filtered out.

Step 5: As the remaining lines are with same minimum quantity 50, all three lines exist.

Step 6: As price lines with Location East exist, the price line with other or no locations are filtered out.

Step 7: Finally, the system will filter and only display the pricing lines that match the order line’s global lot attribute values. However, if any value is not specified or left blank in the order line, the system will also consider any assigned or empty values in the pricing line for that specific global lot attribute.

Based on the above the following lines are filtered,

When multiple records are found after the hierarchical filtering, the system will select the price from the line with lowest price. Here it will select the Unit Price of 11 from the filtered lines as it is the lowest.