Setting up modifiers with accumulated range breaks provides additional flexibility to existing price break processing. Using accumulated range breaks, you can set up range price breaks that accumulate within and across orders based on some attribute value (for example, quantity) that is accumulated from previous orders or order lines.
The pricing engine uses the accumulation value as the starting point of the break calculation. Oracle Advanced Pricing does not store these accumulated values. The value is passed by the calling application in the engine request or the engine dynamically sources the attribute from a customer API.
Values can be accumulated across different orders or within an order. For example, suppose a customer places the following two orders:
Order A: 2 of Item Shampoo
Order B: 3 of Item Shampoo
Under regular range price break processing, each order would be evaluated independently of the other. However, with accumulated range price breaks, the accumulated quantity value from Order A is the starting point for evaluating the range break for Order B.
The value of the accumulation attribute is sourced from the pricing request when evaluating accumulated range price breaks for modifiers. Customers are responsible for accumulating and maintaining the values from previous transactions in any manner they choose. This value is the starting point for range price breaks in subsequent transactions that are passed to the pricing engine.
Setting the Profile Option and Volume AttributeTo begin using the accumulation attribute feature, the profile QP: Accumulation Attributes Enabled must be set to Yes. Typically, this value is set by the System Administrator. The profile option also enables the Accumulation Attribute field in the Price Breaks tab on the Define Modifier window. Complete the following steps to set up this feature (no seeded attributes are provided for this feature).
You can create two types of accumulation volume attributes in Attribute Management to use this feature:
Use the mapping method of Attribute Mapping to source the accumulation value from the pricing request.
Use the new attribute mapping method Runtime_Sourced to enable the pricing engine to source the attribute and accumulation values from a custom API. A new package has been created, QP_RUNTIME_SOURCE, containing a specification for the custom API. Customers are required to write a corresponding body to this package. See the Advanced Pricing Implementation Guide for more information.
Set the profile QP: Accumulation Attributes Enabled to Yes at Site, Application, or both levels. The profile enables the Accumulation Attribute field in modifier lines. Price break details are defined in Define Details.
Define a modifier line with the following setup:
Line type: Price Break Header (or Price Break in HTML)
Break type: RANGE
Select Accumulation Attribute from the list of values.
When using accumulated range breaks, the accumulation total must be passed as the starting point for each pricing request. For example, suppose the following discount is set up to give a discount across orders.
| Volume Attribute From | Volume Attribute To | Adjustment Amount |
|---|---|---|
| 0 | 5 | 5% |
| 5 | 10 | 10% |
| 10 | 15 | 15% |
If a customer then places three separate orders for five items each, then the adjustment amount is calculated as follows:
| Order No. | Quantity | Accumulated Value | Adjustment Amount |
|---|---|---|---|
| 1 | 5 | 0 | 5% |
| 2 | 5 | 5 | 10% |
| 3 | 5 | 10 | 15% |
The adjustment calculations for the preceding example are as follows:
For the first order, the accumulated value is 0. A discount of 5 percent is given because the order quantity of 5 satisfies the first quantity range break of 0 to 5.
For the second order, the accumulated value passed to the pricing engine is 5 (5 from Order 1). A discount of 10 percent is given, because the break is evaluated starting with quantity 6, which satisfies the range of 5 to 10.
Finally, for the third order, the accumulated value passed to the pricing engine is 10. A discount of 15 percent is given, because the break is evaluated starting with quantity 11, which satisfies the range of 10 to 15.
Accumulated range price breaks can be used to evaluate the volume of order lines within the same order.
For example, if a customer orders three lines of the same item that is eligible for a discount, then each line is priced based on the accumulated value of the previous qualifying line for the same product.
Suppose a price break modifier is set up with the following volume ranges and adjustment amounts:
| Volume Attribute From | Volume Attribute To | Adjustment Amount (Percent) |
|---|---|---|
| 0 | 5 | 5% |
| 5 | 10 | 10% |
| 10 | 15 | 15% |
When this discount is applied, the accumulated values and adjustment amounts are calculated as follows:
| Line No. | Quantity | Accumulated Value | Adjustment Amount |
|---|---|---|---|
| 4.1 | 3 | 0 | 5% |
| 4.2 | 6 | 3 | 8.33% |
| 4.3 | 4 | 9 | 13.75% |
The accumulation value and discounts are evaluated as follows:
The first line is given a discount of 5 percent because an accumulation value of 0 is passed and the order quantity of 3 satisfies the range 0 to 5.
Line 4.2 is evaluated with starting at the accumulated value of 3. Two of the ordered quantity 6 fall within the range of 0 to 5, and 4 falls within the range 5 to 10, resulting in an 8.33 percent adjustment.
Line 4.3 is evaluated with a starting point of (3+6) = 9 passed by the calling application and an order quantity of 4. One of quantity 4 falls within the range 5 to 10 and 3 fall within the range of 10 to 15, resulting in a 13.75 percent adjustment.