Skip to main content

Price breaks based on Weight?

This post describes how to use the attribute mapping method in Oracle Advanced Pricing to implement a complex contract pricing rule
Recently I came across the following pricing requirement that seemed to be tricky at first glance: -
Use price breaks based on a weight of an item as defined in a DFF. 
  1. An item from Inventory is assigned to a contract line and has a quantity of 1 with a UOM of Each
  2. Each item has a break price (either by item category or the item number) based on the weight. E.g., price is $1000 < 5000 tons and $1500 if weight is between 5001 and 9999 tons and $2000 if > 10000 tons.
The Advanced Pricing allows you to hook up your SQL code to drive pricing. The attribute mapping feature of Oracle Advanced Pricing helped us to implement the above pricing rules by adding a few lines of SQL code.
First, we cannot use the standard price break functionality to achieve this since standard price break uses volume or quantity as basis. We followed the steps below:

Step 1: Create a function to get the weight of the item using item id

e.g.,
Function get_weight( p_item_id number, p_organization_id number) is
l_weight number;
begin
select attribute5 - DFF that stores weight
into l_weight
from mtl_system_items
where inventory_item_id = p_item_id
and organization_id = p_organization_id
return l_weight;
when others then
return 0;
End 

Step 2: Create a pricing attribute called weight (datatype: Number)

Navigation: Pricing Manager > Setup > Attribute Management > Contexts and Attribute

Step 3: Setup Attribute Mapping for this pricing attribute

Navigation: Pricing Manager > Setup > Attribute Management > Attribute Linking and Mapping > (B) Link Attributes
Attribute Mapping Method: Attribute Mapped
Level: Line
User Source Type: PL/SQL API
User Value String:pkg_name.get_weight(okc_price_pub.g_contract_info.inventory_item_id, okc_price_pub.g_contract_info.inv_org_id)

Step 4: Run ‘Build Attribute Mapping Rule’ concurrent program

Navigation: Pricing Manager > Setup > Atrribute Management > Attribute Linking and Mapping > Tools Menu

Step 5: Create Formula that uses weight to calculate price

Navigation: Pricing Manager > Pricing Formulas > Formula Setup
One of the formula line will be this newly created pricing attribute. Now the actual formula will depend on the exact requirement for calculation. For example, the formula for the example you have given can be:
Price = WT_FACTOR
Where WT_FACTOR is “Factor List” which is defined as follows:
WT_FACTOR = 1000 if weight price attribute is between 0 and 5000
WT_FACTOR = 1500 if weight price attribute is between 5001 and 9999
WT_FACTOR = 2000 if weight price attribute is between 10000 and 99999999
A new Factor List can be created from the formula form by clicking the factor button at the bottom right corner.  The formula is so versatile that you can implement it in many ways. The following formula would give the same result:
Price = WT_FACTOR * 500
Where WT_FACTOR is “Factor List” which is defined as follows:
WT_FACTOR = 2 if weight price attr is between 0 and 5000
WT_FACTOR = 3 if weight price attr is between 5001 and 9999
WT_FACTOR = 4 if weight price attr is between 10000 and 99999999

Step 6: Associate the formula with the item

This association can be in Price List or Modifier depending on the scenario. If this is only used in contract and always priced this way then you can tie this in the price list itself. If it needs more context sensitive treatment then you may have to use a modifier and use the formula in the modifier.

Step 7: Attach this price list to the contract

Attribute Mapping provide provides a logical and highly flexible setup framework that can be used to model even the most complex pricing scenario. GET_CUSTOM_PRICE() is another way of implementing fully customized pricing rules based on SQL query. 

Comments

Popular posts from this blog

Difference Between MTS, ATO, MTO ,PTO ,CTO and ETO.

 Make-to-stock (MTS) In MTS environments, products are created before receipt of a customer order. Customer orders are then filled from existing stock, and then those stocks are replenished through production orders. MTS environments have the advantage of decoupling manufacturing processes from customer orders. Theoretically, this enables customer orders to be filled immediately from readily available stock. It also allows the manufacturer to organize production in ways that minimize costly changeovers and other disruptions. However, there are risks associated with placing finished goods into inventory without having a firm customer order or an established need. These risks tend to limit MTS environments to simple, low-variety, or commodity products whose demand can be forecasted readily.  Assemble-to-order (ATO) In ATO environments, products are assembled from components after the receipt of a customer order. The key components in the assembly or f...

Accounting entries in Oracle Purchasing and Payables

This document gives in detail different accounts used and the accounting impact of various transactions that take place in Oracle Purchasing and Oracle Payables. Both Standard costing and Average costing methods are considered. The accounts are Oracle Applications specific and might differ from the conventional accounting names. Examples are given wherever required for better understanding of the concept. The sources of these accounts are given. PURCHASING:  Receiving – For Accrual Process for perpetual Accruals Receipts for inventory purchases are always accrued upon receipt. And also use perpetual accruals for expense purchases you want to record uninvoiced purchase liabilities immediately upon the receipt of the expense goods. Receiving Account (Receiving Account) To record the current balance of the material in receiving and inspection. Where to define in Apps: Define Organization           ...

Scheduling ,Reservations and ATP in Oracle Order management

Before we start understanding scheduling we need to know certain terms and how they are derived in Oracle. Terminology Understanding the following terms will help you understand how scheduling works in OM. Actual Arrival Date - The date the order line arrives at the customer site. Actual Ship Date - The date the order line is shipped. This date is recorded by the ship confirm action. Arrival Set - A set of order lines which arrive at the same time at the destination. Available to Promise (ATP) - The quantity of current on-hand stock, outstanding receipts and planned production not already committed to sales orders or other sources of demand. ATP Date - The date that a requested quantity will be available to promise. Delivery Lead Time - Time (in days) for items to reach the customer once they are shipped. There are two ways to help system calculate this date. 1) Create a location for the Ship-to address and assign it as the internal location and then define...