Example Pricing Algorithm, Part 5, Calculate List Price
Learn how pricing algorithms calculate list price.
Here are some examples of how you can set up algorithms to calculate list price that meet your specific needs.
-
Prorate a tier adjustment according to billing frequency for a recurring charge.
-
Apply precedence when you use an attribute to adjust the price list charge.
-
Add the name of the discount rule to your explanation message.
-
Round the list price according to business unit.
This step includes three parts:
-
Apply Tier Adjustment
-
Apply Matrix Adjustment
-
Finalize List Price
Apply Tier Adjustment
You apply a tier adjustment in our example. For example, prorate a tier adjustment according to the billing frequency of a recurring charge. Use a service mapping to send the billing frequency through an extensible attribute to the algorithm, then use the Apply Tiered Pricing algorithm to extend the duration of the recurring charge.
You apply a tier adjustment that you set up on the price list. Apply it to the base list price. You create tiers according to amount or quantity. For example, create tier 1 that gives a 10% discount off the base list price for quantities 1 through 10, and tier 2 that gives a 20% discount for quantities above 10.
Here are the SDOs.
Note
-
The output SDO from the Get Base List Price step provides the input SDO.
-
The TierQueue entity contains details about the tier adjustment.
The algorithms use your set ups in the Pricing Administration work area.
Here's what the algorithms do.
What the Algorithms Do |
How the Algorithms Do It |
---|---|
1. Get the tier header. |
Get details from the tier header. For example, the type of tier basis, such as item quantity. The Calculation Basis area on the Edit Price List page in Pricing Administration contains most of the tier header attributes. |
2. Calculate the adjustment amount according to the tier basis. |
Assume.
So, the adjustment amount is 500 (2 multiplied by 2,500 multiplied by 10%). |
3. Calculate the accumulation basis. |
- |
4. Calculate the item quantity according to the quantity tier basis. |
- |
5. Calculate the item amount according to the amount tier basis. |
- |
6. Get the tier lines. |
- |
7. Calculate the adjustment basis for the tier. |
- |
8. Calculate the tier. |
- |
9. Calculate the tier adjustment. |
- |
10. Create the charge component. |
- |
Here are details about the attributes in the SDOs.
Entity |
Attributes in Input SDO |
Attributes in Output SDO |
---|---|---|
Charge |
- |
. . . RunningUnitPrice: 2450 . . . |
ChargeComponent |
- |
ChargeComponentId: 2 ChargeId: 2 ExplanationMessageName: QP_PRICE_LIST_TIER_ADJ ExtendedAmount: -100 USD IsInternal: N PriceElementCode: QP_PRICE_LIST_TIER_ADJ PriceValidFrom: 2019-03-26 @ 08:32:53 SequenceNumber: 1001 SourceId: 300100177515265 SourceTypeCode: TIERED_LINES UnitPrice: -50 USD |
Note
-
UnitPrice contains the adjustment amount.
-
RunningUnitPrice is BaseListPrice of 2500 minus UnitPrice of 50 equals of 2450.
-
ExtendedAmount is UnitPrice of 50 multiplied by Quantity of 2 equals 100.
Here are some of the functions you can use with the Apply Tiered Pricing algorithm. This algorithm does most of the calculations. It calls the Calculate Pricing Basis algorithm. All functions are View Object Lookup except getMessage, which is a script.
Function Name |
Description |
---|---|
getDiscountListName |
Get the name of the discount list. |
getMessage |
Get an error message. |
getPriceElement |
Get the pricing element according to the price element code. |
getPriceListCharge |
Get the price list charge according to PriceListChargeId. |
getPriceListName |
Get the price list name, such as Corporate Segment Price List. |
getPriceListNameFromCharge |
Get the price list name that's associated with the charge. |
getPricingBasisHeader |
Get the header of the pricing basis. |
getTierHeader |
Get attribute values for one tier header. Go to REST API for Oracle Supply Chain Management Cloud, expand Order Management > Pricing Tiers, then click Get one tier header. |
getTierLine |
Get attribute values for one tier line. Go to REST API for Oracle Supply Chain Management Cloud, expand Order Management > Pricing Tiers > Tier Lines, then click Get one tier line. |
Apply Matrix Adjustment
The matrix adjustment is similar to the tier adjustment.
-
Apply a matrix adjustment that you set up on the price list. Apply it on the base list price.
Set up a matrix adjustment according to the value of an attribute. For example, if the Customer attribute contains Computer Service and Rentals, then give a $100 discount.
-
The output SDO from the Apply Tier Adjustment part of the Calculate List Price step is the input SDO in the Apply Matrix Adjustment part.
-
The MatrixQueue entity in the input SDO contains the matrix adjustment details.
The algorithm uses your set up in the Pricing Administration work area.
Here's what the algorithm does.
What the Algorithm Does |
How the Algorithm Does It |
---|---|
1. Get the attributes. |
- |
2. Evaluate the matrix rules. |
If your add more than one rule in your matrix, then add a precedence condition so the algorithm knows which rule to apply if more than one rule matches the runtime condition. |
3. Calculate the matrix adjustments. |
- |
4. Handle matrix errors. The most common error happens when the condition column isn't part of the algorithm data set. |
- |
Here are details about the attributes in the SDOs. Bold font indicates attributes that the algorithm added to the output SDO.
Entity |
Attributes in Input SDO |
Attributes in Output SDO |
---|---|---|
Charge |
- |
. . . RunningUnitPrice: 2350 . . . |
ChargeComponent |
- |
ChargeComponentId: 3 ChargeId: 1 ExplanationMessageName: QP_PRICE_LIST_ATTR_ADJ ExtendedAmount: -200 USD MatrixConditionString: Customer=Computer Service and Rentals MatrixResultString: Adjustment Type=Discount Amount Adjustment Amount =100 Adjustment Basis=null PriceElementCode: QP_PRICE_LIST_ATTR_ADJ SequenceNumber: 1002 SourceId: 300100177515271 SourceTypeCode: MATRIX_RULE UnitPrice: -100 USD |
Note
-
UnitPrice contains the adjustment amount.
-
Assume you create a tier adjustment and a matrix adjustment. The flow applies the tier adjustment first, then the matrix adjustment. The value of RunningUnitPrice after the tier adjustment is 2450. So, RunningUnitPrice now is 2450 minus UnitPrice of 100 equals 2350.
-
ExtendedAmount is UnitPrice of 100 multiplied by Quantity of 2 equals 200.
Here are some of the functions you can use with the Apply Matrices algorithm.
Function Name |
Description |
---|---|
getAdjustmentBasis |
Get the name of the adjustment basis. |
getChargeDefinitionName |
Get the name of the charge definition. |
getDiscountListName |
Get the name of the discount list. |
getItemExtAttrDimensions |
Get the dimensions of the item extensible attributes. Get attribute values for one tier header. |
getPriceListName |
Get the name of the price list. |
getPriceListNameFromCharge |
Get the name of the price list that's associated with the charge. |
For details, go to REST API for Oracle Supply Chain Management Cloud, expand Order Management, then click Pricing Matrixes.
You can provide an explanation as part of the charge component, then display it on the sales order in Order Management. For example, include the name of the discount rule in the explanation.
Finalize List Price
The output SDO from the Apply Matrix Adjustment part of the Calculate List Price step provides the input SDO.
Here's what the algorithm does.
What the Algorithms Do |
How the Algorithms Do It |
---|---|
1. Round the list price and the net price. |
Examine, then round RunningUnitPrice for each charge.
|
2. Create the charge component for the net price. |
- |
Here are details about the attributes in the SDOs. Bold font indicates attributes that the algorithm added to the output SDO.
Entity |
Attributes in Input SDO |
Attributes in Output SDO |
---|---|---|
Charge |
- |
. . . RunningUnitPrice: 2350 . . . |
ChargeComponent |
- |
ChargeComponentId: 4 ChargeId: 1 CurrencyCode: USD ExtendedAmount: 4700 USD PriceElementCode: QP_LIST_PRICE PriceElementUsageCode: LIST_PRICE SequenceNumber: 1003 SkipRunningPrice: Y TaxIncludedFlag: N UnitPrice: 2350 USD |
Note
-
UnitPrice contains the rounded, final amount.
-
RunningUnitPrice is the rounded value.
-
RunningUnitPrice contains the same value that the charge component for the list price contains.
-
ExtendedAmount is RunningUnitPrice of 2350 multiplied by Quantity of 2 equals 4700.
-
PriceElementCode uses QP_LIST_PRICE to set the list price.
Here are some of the functions you can use with the Create Charge Component with Running Unit Price algorithm. You can use it to modify how to round the price. All functions are View Object Lookup except getDurationConversionRate, which is script.
Function Name |
Description |
---|---|
getChargeDefinitionName |
Get the name of the charge definition. |
getDurationConversionRate |
Get the conversion rate for the duration. |
getOKCUomMappings |
Get the mapping for the time unit of measure. |
getUomTranslation |
Get the translation of the abbreviation, such as Ea, for the unit of measure. |
Where Do Pricing Details Display?
The Order Management work area displays each charge component on a separate line in the Amount dialog of the sales order.