Example of How Pricing Algorithms Price Items, Part 5

Learn how pricing algorithms calculate list price.

5. 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.

apply a tier adjustment that you set up on the price list.

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.

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.

  • The tier basis is item quantity.

  • The quantity on the order line is 2.

  • The base list price is 2,500 for Each.

  • Tier 1 gives a 10% discount on quantities 1 through 10.

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.

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

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.

  • Get the rounding rules for the currency that the charge uses.

    In this example, the charge currency is the same as the price list currency, which is USD.

  • Determine the delta. The delta is the difference between the value that isn't rounded and the value that's rounded.

  • Apply the delta on another charge component as a rounding adjustment. For example, if RunningUnitPrice is $101, and if the round rule specifies to round to the nearest hundred, then the delta is $1.

  • Set RunningUnitPrice to the rounded value.

  • Create a charge component then store the rounded value in it.

  • Calculate the extended amount according to the quantity.

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.

The Order Management work area displays each charge component on a separate line in the Amount dialog of the sales order.