Create Price Lists for Each Customer
Assume you work for Vision Operations, a company that sells computers. You must create different discounts for each customer.
The example in this topic describes one way to set up pricing. It is intended only as a general outline that you can use to learn about different ways to set up Pricing. You will need to use different procedures, different steps, different values, and different objects for your implementation, depending on your business requirements. You must also do additional set up in your environment that this procedure doesn't describe, such as declaring the variables you need to support your code.
Assume you have these requirements.
-
Channel. You sell through Internet, Call Center, and Broker. You incur the least expense through internet sales and more expense through call center. You incur the most expense through broker, except when selling into China because you have established a favorable relationship with a broker in China.
-
Line of business. Lines of business include 50% desktop computers, 30% laptop computers, and 20% peripherals. Your desktop computer line is your original line of business. It is long established but in slow decline because your customers increasingly demand portability. Your business plan is to achieve 70% sales through the laptop line within five years. As an incentive, you provide the deepest discounts for laptop sales.
-
Ship-to country. Your company is most interested in gaining a foothold in emerging and younger markets for the items that it sells. The United States market is already saturated. Japan provides a mature market but maintains some upside potential. Korea is a newer market, and China is emerging.
-
Business unit. To meet accounting and tax requirements, your accounting department requested that you associate each discounted sale only with the Vision Operations business unit.
Here is the functionality that your technical analysis indicates you must implement.
-
Add flexfields that allow the Order Entry Specialist to specify the channel, line of business, ship-to country, and business unit.
-
Map flexfields to Pricing and use them as part of the pricing calculation.
-
Create a separate price list that you can use to specify different discounts for each of your major customers, depending on channel, line of business, and ship-to country. Use flexfield values as input to these price lists. Your major customers include.
-
Fantastic Laptops. A wholesaler who sells mainly in large quantities to public universities in the United States. You sell through internet and call center. You agreed on specific discounts during contract negotiations after a successful competitive bidding process to provide computing services to public universities.
-
Computer Service and Rentals. A retailer who operates in each of the countries where you sell. You sell through internet and call center in all countries except China, where you sell only through a broker. Also, Computer Service and Rentals is a long-term customer. You have negotiated a deeper discount with them over the years.
-
PennyPack Systems. Operates only in China and Korea. In China, you sell only through a broker. In Korea, you sell through internet and call centers. Due to the competitive landscape, you provide the deepest discounts of all customers for PennyPack Systems.
-
Here are the discounts that you identified in consultation with your product and financial teams.
Attribute |
Percent Discount |
---|---|
Channel |
|
Line of Business |
|
Ship to Country |
|
Customer |
|
The discounts accumulate. For example, if you sell a laptop computer in the United States to Fantastic Laptops through the internet, then the total discount is 25%: 10% for channel, plus 10% for line of business, plus 5% for customer.
Here's the service data object that you will set up. For details, see How Service Mappings, Pricing Algorithms, and Matrixes Work Together.
Note
-
The customer pricing profile for each customer assigns the pricing strategy for each customer. For example, if you use Pricing Strategy for Computer Service and Rentals as the pricing strategy for customer Computer Service and Rentals, then set the Pricing Strategy attribute in the global segment of the descriptive flexfield to Pricing Strategy for Computer Service and Rentals.
-
At run time, the pricing algorithm gets values from the customer pricing profile and the global segment of the descriptive flexfield. It then uses these values to set the pricing strategy for the sales order, such as Pricing Strategy for Computer Service and Rentals.
-
Include the customer name in the pricing strategy name. This technique helps to make sure the strategy name is unique, helps the Order Entry Specialist to understand how the sales order uses the strategy, and helps you to maintain your implementation.
-
More than one customer can use the same pricing strategy.
-
This topic assumes all business units and customers use the same currency. If you must convert a currency, then add a currency conversion list to the pricing strategy. For details, see Manage Currency Conversion Lists.
Summary of the Set Up
-
Create extensible flexfields.
-
Create pricing lookups.
-
Create matrix classes.
-
Create price lists and discount lists.
-
Create pricing profiles and pricing strategies.
-
Modify pricing algorithms.
-
Test your set up.
You use Groovy script to modify a pricing algorithm. Proceed only if you have significant technical experience with writing computer code that interacts with a relational database in an order fulfillment solution.
Create Extensible Flexfields
-
Sign into Order Management with the privileges that you need to administer Order Management.
Don't sign in with pricing privileges. You can't use them to define an extensible flexfield.
-
Go to the Setup and Maintenance work area, go to the task.
-
Offering: Order Management
-
Functional Area: Orders
-
Task: Manage Order Extensible Flexfields
This example assumes you're implementing the Order Management offering. If you're using a different offering, then click it instead of Order Management.
-
-
Modify the extensible flexfield.
-
On the Manage Order Extensible Flexfields page, enter the value, then click Search.
Attribute
Value
Name
Header Information
-
Click Actions > Edit.
-
Click Manage Contexts.
-
On the Manage Contexts page, click Actions > Create.
-
On the Create Context page, set values.
Attribute
Value
Display Name
HeaderPricingEff
Code
HeaderPricingEff
API Name
Headerpricingeff
Enabled
Contains a check mark
Behavior
Single Row
-
In the Context Usages area, click Actions > Create, set the values, then click Save.
Attribute
Value
Name
Additional Header Information
View Privileges
None
Edit Privileges
None
-
In the Context Sensitive Segments area, click Actions > Create.
-
On the Create Segment page, set the values, then click Save and Close.
Attribute
Value
Name
SalesChannel
Code
SalesChannel
API Name
saleschannel
Enabled
Contains a check mark.
Data Type
Character
Table Column
Select any column that's available.
Value Set
10 Characters
Prompt
Sales Channel
-
In the Context Sensitive Segments area, click Actions > Create.
-
On the Create Segment page, set values, then click Save and Close.
Attribute
Value
Name
LineofBusiness
Code
LineofBusiness
API Name
lineofbusiness
Enabled
Contains a check mark.
Data Type
Character
Table Column
Select any column that's available.
Value Set
10 Characters
Prompt
Line of Business
-
On the Edit Context page, click Save and Close.
-
On the Manage Contexts page, click Save and Close.
-
On the Edit Extensible Flexfield page, click Save and Close.
-
-
Deploy the extensible flexfield.
-
On the Manage Order Extensible Flexfields page, click Actions> Deploy Flexfield.
-
Wait for the deployment dialog to indicate that deployment successfully finished, then click OK.
-
Click Actions > Download Flexfield Archive, wait for the dialog to indicate that the archive successfully finished, then click Download.
-
Save the 10008_DOO_HEADERS_ADD_INFO.zip file to your local hard drive, extract it, then navigate to the folder.
. . .10008_DOO_HEADERS_ADD_INFO\oracle\apps\scm\doo\processOrder\flex\headerContextsB\view
-
Open HeaderEffBHeaderPricingEffprivateVO.xml.
-
Verify that HeaderEffBHeaderPricingEffprivateVO.xml contains these values.
Attribute
Value
EntityAttrName for the header
HeaderId
EntityAttrName for the channel segment
Channel
EntityAttrName for the line of business segment
lineofbusiness
EntityAttrName for the ship to country segment
shiptocountry
-
Add Extensible Flexfields to Service Mapping
Create a service mapping that maps values from the extensible flexfield into Pricing.
-
Sign out of Order Management, and then sign into Oracle Pricing with administrative privileges.
-
Go to the Pricing Administration work area, then click Tasks > Manage Service Mappings.
-
On page Manage Service Mappings, in the Name column, click Sales.
-
Add the entities.
-
On the Edit Service Mappings page, on the Entities tab, click Action > Add Row, then set the values.
Attribute
Value
Entity
HeaderPricingEff_Custom
Description
Get the extensible flexfield values to use in each
custom
price list. -
In the Details area, add the attributes, then click Save.
Attribute
Type
Primary Key
HeaderId_Custom
Long
Contains a check mark.
Channel_Custom
String
Does not contain a check mark.
ShipToCountry_Custom
String
Does not contain a check mark.
LineOfBusiness_Custom
String
Does not contain a check mark.
For example:
-
Click Services, then click the row that contains the value.
Attribute
Value
Service
PriceSalesTransaction
-
In the Details area, click Actions, click Add Row, then set the values.
Entity
Read
Write
HeaderPricingEff_Custom
Contains a check mark.
Does not contain a check mark.
This step associate the entity you use to send values from the extensible flexfield to Pricing.
-
In the HeaderPricingEff_Custom Entities area, add attributes, and then click Save.
Attribute
Read
Write
HeaderId_Custom
Contains a check mark.
Does not contain a check mark.
Channel_Custom
Contains a check mark.
Does not contain a check mark.
LineOfBusiness_Custom
Contains a check mark.
Does not contain a check mark.
ShipToCountry_Custom
Contains a check mark.
Does not contain a check mark.
-
-
Create the sources.
-
Click Sources, then click the row that includes this value.
Attribute
Value
Source
OrderHeader
-
On the Entity Mapping tab, click Actions, click Add Row, set the values, then click Save.
Attribute
Value
Entity
HeaderPricingEff_Custom
Type
View Object
View Object
HeaderEffBHeaderPricingEffprivateVO
This value must match the name of the public view object that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
Query Type
Unique Identifier
Query Attribute
HeaderId
-
In the
HeaderPricingEff_Custom
Details area, add attributes, then click Save.Attribute
View Object Attribute
HeaderId_Custom
HeaderId
Channel_Custom
Channel
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
LineOfBusiness_Custom
lineofbusiness
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
ShipToCountry_Custom
shiptocountry
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
This step sets up Pricing to read extensible flexfield values from the public view object that Order Management sends to Pricing when the Order Entry Specialist uses the Price Order action or saves the sales order.
-
In the Sources area, click the row that includes the value.
Attribute
Value
Source
OrderLine
-
In the OrderLine Details area, click View, click Columns, then add a check mark to Joined Entity and Joined Entity Attribute.
-
On the Entity Mapping tab, click Actions, click Add Row, set the values, then click Save.
Attribute
Value
Entity
HeaderPricingEff_Custom
Type
View Object
View Object
HeaderEffBHeaderPricingEffprivateVO
This value must match the name of the public view object that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
Query Type
Join
Query Attribute
HeaderId
Joined Entity
Header
It might be necessary to refresh the row before you set the Joined Entity. To refresh, step out of the row. You can also click Save, cancel the Error dialog, and then set the Joined Entity.
Joined Entity Attribute
HeaderId
This step maps the extensible flexfield attributes in the public view object. It configures Pricing to read extensible flexfield values from the public view object that Order Management sends to Pricing when Order Management updates the line quantity or shipping attributes on the order line.
-
In the
HeaderPricingEff_Custom
Details area, add these attributes.Attribute
View Object Attribute
HeaderId_Custom
HeaderId
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
Channel_Custom
channel
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
LineOfBusiness_Custom
lineofbusiness
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
ShipToCountry_Custom
shiptocountry
This value must match the value of EntityAttrName that you noted earlier in this topic when you examined the contents of the 10008_DOO_HEADERS_ADD_INFO.zip file.
This step sets up Pricing to read the extensible flexfield values from the public view object that Order Management sends to Pricing when Order Management updates the quantity or shipping fields on the order line.
For example:
-
-
Click Save and Close > Done.
Create Pricing Lookups
Here are the lookups you create. The Order Entry Specialist uses them to set attribute values.
Create the lookups.
-
Go to the Setup and Maintenance work area, then go to the task:
-
Offering: Order Management
-
Functional Area: Pricing
-
Task: Manage Pricing Lookups
-
-
On the Manage Pricing Lookups page, in the Search Results area, click Actions > New, create the lookup, then click Save.
Attribute
Meaning
Lookup Type
PRC_COUNTRY
Meaning
Country
Module
Common
-
In the Lookup Codes area, click Actions > New, create lookup codes for countries, then click Save.
Lookup Code
Display Sequence
Meaning
China
1
China
Japan
2
Japan
Korea
3
Korea
United States
4
United States
Display Sequence determines the sequence that Order Management uses to display countries when the Order Entry Specialist sets the Ship-to Country attribute. You can display countries in any sequence. In this example, you use Display Sequence to display countries in alphabetic order.
-
Repeat steps 3 and 4 for the Channels lookup. Use these values.
Attribute
Value
Lookup Type
PRC_CHANNELS
Meaning
Channels
Module
Common
Add these lookup codes.
-
Internet
-
Call Center
-
Broker
-
-
Repeat steps 3 and 4 for the Lines of Business lookup. Use these values.
Attribute
Value
Lookup Type
PRC_LINE_OF_BUSINESS
Meaning
Lines of Business
Module
Common
Add these lookup codes.
-
Laptops
-
Desktops
-
Peripherals
-
-
Click Save and Close.
Create Matrix Classes
You set up the same attributes in the matrix class and on the discount list so the discount rule can reference them. For example, you add channels and lines of business in the matrix class and on the discount list.
-
Go to the Pricing Administration work area, then click Tasks > Manage Matrix Classes.
-
On the Manage Matrix Classes page, in the Name column, click Price List Charge Adjustment.
You use this matrix class to get values for your custom attributes, the business unit, and the customer.
-
On the Edit Matrix Class page, in the Condition Columns area, click Actions > Add Row, then add the condition.
Attribute
Value
Name
Channel
Source Code Name
Channel
Comparison
Equals
Compare to Attribute
HeaderPricingEff_Custom.Channel_Custom
Allow Null
Contains a check mark
Null is Wildcard
Contains a check mark
Domain
Lookup: PRC_CHANNEL
Here's the condition that this step sets up.
-
Set the Channel_Custom attribute on extensible flexfield HeaderPricingEff_Custom to the value that the Order Entry Specialist set in the PRC_CHANNEL lookup.
-
-
In the Condition Columns area, click Actions > Add Row, then add the condition.
Attribute
Value
Name
Line of Business
Source Code Name
LineofBusiness
Comparison
Equals
Compare to Attribute
HeaderPricingEff_Custom.LineofBusiness_Custom
Allow Null
Contains a check mark
Null is Wildcard
Contains a check mark
Domain
Lookup: PRC_LINE_OF_BUSINESS
Here's the condition that this step sets up.
-
Set the LineofBusiness_Custom attribute on extensible flexfield HeaderPricingEff_Custom to the value that the Order Entry Specialist set in the PRC_LINE_OF_BUSINESS lookup.
-
-
In the Condition Columns area, click Actions > Add Row, then add the condition.
Attribute
Value
Name
Ship to Country
Source Code Name
ShiptoCountry
Comparison
Equals
Compare to Attribute
HeaderPricingEff_Custom.ShiptoCountry_Custom
Allow Null
Does not contain a check mark
Null is Wildcard
Does not contain a check mark
Domain
Lookup: PRC_COUNTRY
Here's the condition that this step sets up.
-
Set the ShiptoCountry_Custom attribute on extensible flexfield HeaderPricingEff_Custom to the value that the Order Entry Specialist set in the PRC_COUNTRY lookup.
-
-
In the Condition Columns area, click Actions > Add Row, then add the condition.
Attribute
Value
Name
Business Unit
Source Code Name
BusinessUnit
Comparison
Equals
Compare to Attribute
Header.SellingBusinessUnitId
Allow Null
Does not contain a check mark
Null is Wildcard
Does not contain a check mark
Use these values when you set the Domain.
Attribute
Value
Name
Business Unit
Domain Type
View Object Query
Application Module
MatrixDomainAM (oracle.apps.scm.pricing.common.publicModel.applicationModule.MatrixDomainAM)
Configuration
MatrixDomainAMLocal
View Object
BusinessUnitPVO
Key Attribute
BusinessUnitId
Display Attribute
Name
View Criteria
Leave empty
Data Type
Number
View Object Bind Variables
Leave empty
Here's the condition that this step sets up.
-
Set the Business Unit attribute to the value that the Order Entry Specialist set in the SellingBusinessUnitId attribute on the sales order header.
The Business Unit attribute is predefined. The domain specifies how to get the value through a predefined view object.
-
-
In the Condition Columns area, click Actions > Add Row, then add the condition.
Attribute
Value
Name
Customer
Source Code Name
Customer
Comparison
Equals
Compare to Attribute
Header.CustomerId
Allow Null
Does not contain a check mark
Null is Wildcard
Does not contain a check mark
Use these values when you set the Domain.
Attribute
Value
Name
Customer
Domain Type
View Object Query
Application Module
ManageOrdersAM (oracle.apps.scm.fom.common.ManageOrders.uiModel.applicationModule.ManageOrdersAM)
Configuration
ManageOrdersAMLocal
View Object
Customer
Key Attribute
PartyId
Display Attribute
PartyName
View Criteria
Leave empty
Data Type
Number
View Object Bind Variables
Leave empty
Here's the condition that this step sets up.
-
Set the Customer attribute to the value that the Order Entry Specialist set in the CustomerId attribute on the sales order header.
The Customer attribute is predefined. The domain specifies how to get this value through a predefined view object.
-
-
Click Save.
-
Create the matrix class that specifies the pricing term adjustment.
-
On the Manage Matrix Classes page, in the Name column, click Pricing Term Adjustment.
-
On the Edit Matrix Class page, add all the same conditions that you added to the Price List Charge Adjustment matrix class earlier in this procedure.
You use the Price List Charge Adjustment matrix class to create the conditions for the Price List Charge Adjustment Matrix. For details, see Manage Pricing Matrix Type.
-
Create Price Lists and Discount Lists
Create Price Lists
Create a separate price list for each of your major customers for the AS54888 laptop computer.
-
Go to the Pricing Administration work area, then click Tasks > Manage Price Lists.
-
On the Manage Price Lists page, in the Search Results area, click Actions > Create.
-
in the Create Price List dialog, set the values, then click Save and Edit.
Attribute
Value
Name
Price List for Fantastic Laptops
Business Unit
Vision Operations
Type
Segment Price List
Currency
USD
-
On the Edit Price List page, on the Price List Lines tab, in the Items area, click Actions > Add Row, set the values, then click Save.
Attribute
Value
Item
AS54888
Enter the value, press the Tab key on your keyboard, then wait for other attributes on the row to populate.
Pricing UOM
Each
Line Type
Buy
-
Click Create Charge, set the values in the Charge area, then click Save.
Attribute
Value
Pricing Charge Definition
Sale Price
Calculation Method
Price
Base Price
499
Allow Manual Adjustment
Contains a check mark
-
Click the down arrow next to Create Charge, click Create Price Adjustment Matrix, make sure each of these attributes in the dialog contain a check mark, then click OK.
-
Channel
-
Line of Business
-
Business Unit
-
Customer
-
-
In the Price Adjustments area, add rows, then click Save.
Channel
Line of Business
Business Unit
Customer
Adjustment Type
Adjustment Amount
Call Center
Laptops
Vision Operations
Fantastic Laptops
Discount Percent
20
Internet
Laptops
Vision Operations
Fantastic Laptops
Discount Percent
25
Note
-
20% discount equals 5% for call center, 10% for laptop, plus 5% for customer
-
25% discount equals 10% for internet, 10% for laptop, plus 5% for customer
Tip:After you add the first row, click Actions > Duplicate to add subsequent rows. You can also use Duplicate on the Manage Price Lists page when you create price lists for other customers later in this topic.
-
-
Click Access Sets, click Actions > Add Row, then set the value.
Attribute
Value
Set Code
Common
-
Click Approve, then click Save and Close.
-
Repeat steps 3 through 10 for customer Computer Service and Rentals. Use the same values but with this difference.
Attribute
Value
Price List Name
Price List for Computer Service and Rentals
Add these rows in the Price Adjustments area.
Row
Channel
Line of Business
Ship to Country
Business Unit
Customer
Adjustment Type
Adjustment Amount
1
Call Center
Laptops
United States
Vision Operations
Computer Service and Rentals
Discount Percent
25
2
Internet
Laptops
United States
Vision Operations
Computer Service and Rentals
Discount Percent
25
3
Call Center
Laptops
Japan
Vision Operations
Computer Service and Rentals
Discount Percent
30
4
Internet
Laptops
Japan
Vision Operations
Computer Service and Rentals
Discount Percent
35
5
Call Center
Laptops
Korea
Vision Operations
Computer Service and Rentals
Discount Percent
35
6
Internet
Laptops
Korea
Vision Operations
Computer Service and Rentals
Discount Percent
40
7
Broker
Laptops
China
Vision Operations
Computer Service and Rentals
Discount Percent
45
Note these calculations for each row.
Total Discount
Calculation
Row 1, 25%
5% channel, 10% line of business, 0% country, 10% customer
Row 2, 30%
10% channel, 10% line of business, 0% country, 10% customer
Row 3, 30%
5% channel, 10% line of business, 5% country, 10% customer
Row 4, 35%
10% channel, 10% line of business, 5% country, 10% customer
Row 5, 35%
5% channel, 10% line of business, 10% country, 10% customer
Row 6, 40%
10% channel, 10% line of business, 10% country, 10% customer
Row 7, 45%
5% channel, 10% line of business, 20% country, 10% customer
-
Repeat steps 3 through 10 for customer PennyPack Systems. Use the same values but with this difference.
Attribute
Value
Price List Name
Price List for PennyPack Systems
Add these rows in the Price Adjustments area.
Row
Channel
Line of Business
Ship to Country
Business Unit
Customer
Adjustment Type
Adjustment Amount
1
Call Center
Laptops
Korea
Vision Operations
PennyPack Systems
Discount Percent
45
2
Internet
Laptops
Korea
Vision Operations
PennyPack Systems
Discount Percent
50
3
Broker
Laptops
China
Vision Operations
PennyPack Systems
Discount Percent
55
Note these calculations for each row.
Total Discount
Calculation
Row 1, 45%
5% channel, 10% line of business, 10% country, 20% customer
Row 2, 50%
10% channel, 10% line of business, 10% country, 20% customer
Row 3, 55%
5% channel, 10% line of business, 20% country, 20% customer
Define Discount Lists
-
In the Pricing Administration work area, click Tasks > Manage Discount Lists.
-
On the Manage Discount Lists page, click Actions > Create.
-
In the Create Discount List dialog, set the values, then click Save and Edit.
Attribute
Value
Name
Discount List for Fantastic Laptops
Currency
USD
Business Unit
Vision Operations
Price Type
All
Charge Type
Sale
Charge Subtype
Price
Line Type
Buy
-
In the Search Results area, click Actions > Add Row, set the values, then click Save.
Attribute
Value
Item Level
All Items
Pricing UOM
Each
Line Type
Buy
This step specifies to apply the discounts that this discount list creates to any sale item that meets the discount rules.
-
Create the customer discount.
-
In the Discount Rules area, click Actions > Create, then click Attribute Based Rule.
-
In the Create Discount Rule dialog, set the values, then click OK.
Attribute
Value
Price Type
All
Charge Type
Sale
Charge Subtype
Price
Name
Customer Discount
-
In the Details area, click Actions > Edit Rules Table Columns.
-
In the Edit Rules Table Columns dialog, in the Condition Columns area, click Actions > New, set the values, then click OK.
Attribute
Value
Name
Customer
Source Code Name
Customer
Comparison
Equals
Compare to Attribute
Header.CustomerId
Allow Null
Does not contain a check mark
Null is Wildcard
Does not contain a check mark
Use these values when you set the Domain.
Attribute
Value
Name
Customer
Domain Type
View Object Query
Application Module
ManageOrdersAM (oracle.apps.scm.fom.common.ManageOrders.uiModel.applicationModule.ManageOrdersAM)
Configuration
ManageOrdersAMLocal
View Object
Customer
Key Attribute
PartyName
Display Attribute
PartyName
View Criteria
Leave empty
Data Type
Text
View Object Bind Variables
Leave empty
The condition in this step sets the Customer attribute to the value that the Order Entry Specialist set in the CustomerId attribute on the sales order header.
The Customer attribute is predefined. The domain specifies how to get the value through a predefined view object.
-
In the Details area, add rows, then click Save.
Customer
Adjustment Type
Adjustment Amount
Fantastic Laptops
Discount Percent
5
Computer Service and Rentals
Discount Percent
10
PennyPack Systems
Discount Percent
20
-
-
Create the line-of-business discount.
-
In the Discount Rules area, click Actions > Create, then click Attribute Based Rule.
-
In the Create Discount Rule dialog, set the values, then click OK.
Attribute
Value
Price Type
All
Charge Type
Sale
Charge Subtype
Price
Name
Line of Business Discount
-
In the Details area, click Actions > Edit Rules Table Columns.
-
In the Edit Rules Table Columns dialog, in the Condition Columns area, click Actions > New, set the values, then click OK.
Attribute
Value
Name
Line of Business
Source Code Name
LineofBusiness
Comparison
Equals
Compare to Attribute
HeaderPricingEff_Custom.LineofBusiness_Custom
The service mapping provides this value. If this attribute doesn't display, then examine the service mapping you set up earlier in this topic.
Allow Null
Contains a check mark
Null is Wildcard
Contains a check mark
Domain
Lookup: PRC_LINE_OF_BUSINESS
The condition in this step sets the LineofBusiness_Custom attribute on extensible flexfield HeaderPricingEff_Custom to the value that the Order Entry Specialist set in the PRC_LINE_OF_BUSINESS lookup.
-
In the Details area, add the rows, then click Save.
Channel
Adjustment Type
Adjustment Amount
Call Center
Discount Percent
5
Internet
Discount Percent
10
-
-
-
Create the country discount.
-
In the Discount Rules area, click Actions > Create, then click Attribute Based Rule.
-
In the Create Discount Rule dialog, set the values, then click OK.
Attribute
Value
Price Type
All
Charge Type
Sale
Charge Subtype
Price
Name
Ship to Country Discount
-
In the Details area, click Actions > Edit Rules Table Columns.
-
In the Edit Rules Table Columns dialog, in the Condition Columns area, click Actions > New, set the values, then click OK.
Attribute
Value
Name
Ship to Country
Source Code Name
ShiptoCountry
Comparison
Equals
Compare to Attribute
HeaderPricingEff_Custom.ShiptoCountry_Custom
Allow Null
Does not contain a check mark
Null is Wildcard
Does not contain a check mark
Domain
Lookup: PRC_COUNTRY
Tip: To filter items in a list, enter the first few characters, such as PRC, then press the Enter key on your keyboard.
The condition in this step sets the ShiptoCountry_Custom attribute on extensible flexfield HeaderPricingEff_Custom to the value that the Order Entry Specialist set in the PRC_COUNTRY lookup
-
In the Details area, add the rows, then click Save.
Customer
Adjustment Type
Adjustment Amount
Japan
Discount Percent
5
Korea
Discount Percent
10
China
Discount Percent
20
-
-
Create the business unit discount.
-
At the top of the page, click Approve.
Create Pricing Profiles and Pricing Strategies
Create Descriptive Flexfields for Pricing Profiles
For details, see Use Extensible Flexfields with Pricing.
-
Go to the Setup and Maintenance work area, then go to the task:
-
Offering: Order Management
-
Functional Area: Pricing
-
Task: Manage Pricing Descriptive Flexfields
-
-
On the Manage Pricing Descriptive Flexfields page, search for the value.
Attribute
Value
Name
Customer Pricing Profile DFF
-
Click Actions > Edit.
-
On the Edit Descriptive Flexfield page, click Actions > Create.
-
On the Create Segment page, set values, then click Create Value Set.
Attribute
Value
Name
Strategy
Code
Strategy
API Name
strategy
Data Type
Number
Table Column
ATTRIBUTE_NUMBER1
Select the lowest attribute number that's available. For example, if ATTRIBUTE_NUMBER1 through ATTRIBUTE_NUMBER5 aren't available, and if ATTRIBUTE_NUMBER6 is available, then select ATTRIBUTE_NUMBER6.
-
On the Create Value Set page, set values, then click Save and Close.
Attribute
Value
Value Set Code
pricing_strategies_set
Module
Pricing
Validation Type
Table
Value Data Type
Character
From Clause
qp_pricing_strategies_vl
Value Column Name
Name
ID Column Name
Pricing_Strategy_Id
Where Clause
status_code = 'Approved'
Order By Clause
Name
-
On the Create Segment page, set values, click Save and Close, then click Save and Close again.
Attribute
Value
Value Set
pricing_strategies_set
Prompt
Strategy
Display Type
List of Values
-
On the Manage Pricing Descriptive Flexfields field page, click Deploy Flexfield.
-
Wait for the deployment to finish, then examine the result dialog to confirm that the deployment succeeded without error.
Create Pricing Strategies
Create a pricing strategy for each of your customers. For details, see Manage Pricing Strategies.
-
Create a pricing strategy for Fantastic Laptops.
-
Use these values for the pricing strategy.
Attribute
Value
Name
Pricing Strategy for Fantastic Laptops
Business Unit
Vision Operations
Currency
USD
Allow Price List Override
Contains a check mark
-
Select and add a segment price list. Use this value.
Attribute
Value
Name
Price List for Fantastic Laptops
-
Select and add a discount list. Use this value.
Attribute
Value
Name
Discount List for Fantastic Laptops
-
Click Approve.
-
-
Create a pricing strategy for Computer Service and Rentals.
-
Use these values for the pricing strategy.
Attribute
Value
Name
Pricing Strategy for Computer Service and Rentals
Business Unit
Vision Operations
Currency
USD
Allow Price List Override
Contains a check mark
-
Select and add a segment price list. Use this value.
Attribute
Value
Name
Price List for Computer Service and Rentals
-
Select and add a discount list. Use this value.
Attribute
Value
Name
Discount List for Computer Service and Rentals
-
Click Approve.
-
-
Define a pricing strategy for PennyPack Systems.
-
Use these values for the pricing strategy.
Attribute
Value
Name
Pricing Strategy for PennyPack Systems
Business Unit
Vision Operations
Currency
USD
Allow Price List Override
Contains a check mark
-
Select and add a segment price list. Use this value.
Attribute
Value
Name
Price List for PennyPack Systems
-
Select and add a discount list. Use this value.
Attribute
Value
Name
Discount List for PennyPack Systems
-
Click Approve.
-
Create Customer Pricing Profiles
For details, see Manage Pricing Profiles.
-
Create a customer pricing profile for Fantastic Laptops. Use these values.
Attribute
Value
Customer Name
Fantastic Laptops
Strategy
Pricing Strategy for Fantastic Laptops
-
Create a customer pricing profile for Computer Service and Rentals. Use these values.
Attribute
Value
Customer Name
Computer Service and Rentals
Strategy
Pricing Strategy for Computer Service and Rentals
-
Create a customer pricing profile for PennyPack Systems. Use these values.
Attribute
Value
Customer Name
PennyPack Systems
Strategy
Pricing Strategy for PennyPack Systems
Modify Pricing Algorithms
Modify the Get Sales Pricing Strategy Pricing Algorithm
Here's the modification you will make in the Get Sales Pricing Strategy pricing algorithm.
This modification gets the pricing strategy for each customer that you defined in the customer pricing profile, and then assigns this strategy to the sales order header.
-
Click Tasks > Manage Algorithms.
-
On the Manage Algorithms page, select a published version of the pricing algorithm, such as Version 1.
Attribute
Value
Name
Get Sales Pricing Strategy
-
Click Actions > Create Version, then wait for the page to display your In Progress version, such as Version 2.
-
Open your In Progress version.
-
On the Edit Algorithm page, in the Algorithm tab, click step 4, Get Customer Pricing Profile.
-
In the Step Details area, delete all the code in the Condition window.
-
Add this code in the Condition window.
'SUCCESS' == Param.OutputStatus && Header.DerivePricingStrategyFlag && Header.PricingStrategyId == null && Header.PricingSegmentCode == null && CustomerPricingProfile?.size() == 0 && finer('-------- Derive Pricing Strategy: Get Customer Pricing Profile --------') == null
This code adds the values of the descriptive flexfield attributes to the service data object.
-
In the First Row Actions area, add this line immediately after
])
.Header.PricingStrategyId = CustomerPricingProfile?.AttributeNumber1
Make sure your revised code matches this code.
finest('test customer Pricing profile - on First rows') CustomerPricingProfile.insert([ CostToServeCode: GetCustPricingProfile.CostToServeCode, CustomerPricingProfileId: getNextId(), CustomerRatingCode: GetCustPricingProfile.CustomerRatingCode, CustomerSizeCode : GetCustPricingProfile.CustomerSizeCode, CustomerValueCode: GetCustPricingProfile.CustomerValueCode, RevenuePotentialCode: GetCustPricingProfile.RevenuePotentialCode ]) Header.PricingStrategyId = CustomerPricingProfile?.AttributeNumber1
-
If you defined a pricing strategy assignment, then skip this step.
In this example, assume you didn't define a pricing strategy assignment, but instead you will use the pricing strategy that you referenced earlier in this topic when you defined the descriptive flexfield in the customer pricing profile, and that you will use this profile for each of your customers.
So, delete these steps from the pricing algorithm.
-
Get Pricing Segment Matrix
-
Invoke Pricing Segment Matrix
-
Handle Segment Matrix Processing Errors
-
Purge SuccessfulHeaders for Reuse
-
Get Header Strategy Assignment Matrix
-
Retrieve Header Strategy
-
Purge Successful Headers
If you prefer not to delete these steps, then do this.
-
Don't delete the steps. Instead, add a new step immediately before step Get Pricing Segment Matrix. Use these values for the new step.
Attribute
Value
Type
Composite, If
Name
Disabled Steps
Condition
false
Description
This step disables the steps that it contains. It sets up the pricing algorithm to get the pricing segment and pricing strategy from the pricing profile instead of from the disabled steps.
-
Expand the Disabled Steps step, then use Move Up to move each of the steps that you didn't delete into Disabled Steps.
-
-
Click Save and Close.
-
On the Manage Algorithms page, click Actions > Publish.
Modify the Pricing Algorithm
Here's the modification that you will make.
This modification adds a data set that references the attribute values for the extensible flexfields you specified earlier in this topic when you defined the adjustment matrix in your price lists, and the adjustment matrix in your discount lists.
-
On the Manage Algorithms page, select a published version of this pricing algorithm, such as Version 1.
Attribute
Value
Name
Apply Matrices
-
Click Actions > Create Version, then wait for the page to display your In Progress version, such as Version 2.
-
Open your In Progress version.
-
On the Edit Algorithm page, in the Algorithm tab, click the Evaluate and Apply Matrix Adjustments step.
It might be necessary to expand several steps.
-
In the Step Details area, in the Data Sets area, click the row that contains this value.
Attribute
Value
Name
Header
-
In the Data Sets area, click Add Row, then set the values.
Attribute
Value
Name
HeaderPricingEff_Custom
Variable Path
PriceRequest.HeaderPricingEff_Custom
Cardinality
Zero or one
Data Set Join
[HeaderId_Custom:{Line.HeaderId}]
-
Click Save and Close.
-
On the Manage Algorithms page, click Actions > Publish.
Test Your Set Up
Test the Price Sales Transaction Pricing Algorithm
You must publish your algorithms before you can test because they affect Price Sales Transaction.
-
On the Manage Algorithms page, open Price Sales Transaction for editing.
-
On the Edit Algorithm page, click Test.
-
Click Actions > Add Row, then set the value.
Attribute
Value
Test Case Name
Override Test for Customer Price List
-
In the Test Input area, in the row that contains PriceRequest in the Variable Name column, click the pencil in the Variable Value column.
-
In the Edit Variable dialog, delete all the code.
-
Add this code.
<?xml version="1.0" encoding="UTF-8"?> <PriceRequestInternal:PriceRequestInternalType xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:PriceRequestInternal="http://xmlns.oracle.com/apps/scm/pricing/priceExecution/pricingProcesses/PriceRequestInternal" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="PriceRequestInternal:PriceRequestInternalType"> <PriceRequestInternal:Header> <PriceRequestInternal:CustomerId>1028144</PriceRequestInternal:CustomerId> <PriceRequestInternal:HeaderId>1</PriceRequestInternal:HeaderId> <PriceRequestInternal:CalculatePricingChargesFlag>true</PriceRequestInternal:CalculatePricingChargesFlag> <PriceRequestInternal:CalculateShippingChargesFlag>false</PriceRequestInternal:CalculateShippingChargesFlag> <PriceRequestInternal:CalculateTaxFlag>false</PriceRequestInternal:CalculateTaxFlag> <PriceRequestInternal:SellingBusinessUnitId>103</PriceRequestInternal:SellingBusinessUnitId> <PriceRequestInternal:SellingLegalEntityId>204</PriceRequestInternal:SellingLegalEntityId> <PriceRequestInternal:TransactionTypeCode>ORA_SALES_ORDER</PriceRequestInternal:TransactionTypeCode> </PriceRequestInternal:Header> <PriceRequestInternal:PricingServiceParameter> <PriceRequestInternal:PricingContext>SALES</PriceRequestInternal:PricingContext> </PriceRequestInternal:PricingServiceParameter> <PriceRequestInternal:Line> <PriceRequestInternal:HeaderId>101</PriceRequestInternal:HeaderId> <PriceRequestInternal:InventoryItemId>100000017351102</PriceRequestInternal:InventoryItemId> <PriceRequestInternal:InventoryOrganizationId>204</PriceRequestInternal:InventoryOrganizationId> <PriceRequestInternal:LineId>1001</PriceRequestInternal:LineId> <PriceRequestInternal:LineCategoryCode>ORDER</PriceRequestInternal:LineCategoryCode> <PriceRequestInternal:LineQuantity unitCode="Ea" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">2</PriceRequestInternal:LineQuantity> <PriceRequestInternal:LineQuantityUOMCode>"Ea"</PriceRequestInternal:LineQuantityUOMCode> <PriceRequestInternal:LineTypeCode>ORA_BUY</PriceRequestInternal:LineTypeCode> </PriceRequestInternal:Line> <PriceRequestInternal:ChangeSummary logging="false" xmlns:sdo="commonj.sdo"/> </PriceRequestInternal:PriceRequestInternalType>
where
Value
Is An Example For
1028144
CustomerId
103
SellingBusinessUnitId
204
SellingLegalEntityId
100000017351102
InventoryItemId
204
InventoryOrganizationId
Ea
unitCode
Ea
LineQuantityUOMCode
To get the values that you must use in your environment, see the Getting Identifiers for Test Payloads section, below in this topic.
-
Click Run Test > Test Output, then make sure the output payload includes these details.
Attribute
Example Value
StrategyName
Pricing Strategy for Fantastic Laptops
OverridePriceListId
A numeric value, such as 300100231040800.
This value identifies the price list that you set up in this example.
Explanation
Base List Price Applied from Price List for Fantastic Laptops
PriceElementCode
QP_BASE_LIST_PRICE
currencyCode
USD
xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:UnitPrice>
399
Verify that this value represents the price of the item that Pricing calculates from the price list, which is 399 in this example. Note that the default price list on the pricing strategy might contain a different value, such as 499.
For example:
<?xml version="1.0" encoding="UTF-8"?> <PriceRequestInternal:PriceRequestInternalType xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:PriceRequestInternal="http://xmlns.oracle.com/apps/scm/pricing/priceExecution/pricingProcesses/PriceRequestInternal" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="PriceRequestInternal:PriceRequestInternalType"> <PriceRequestInternal:Header> <PriceRequestInternal:DerivePricingStrategyFlag>true</PriceRequestInternal:DerivePricingStrategyFlag> <PriceRequestInternal:PricingDate>2016-10-13T18:58:22.99Z</PriceRequestInternal:PricingDate> <PriceRequestInternal:StrategyName>HDO Productions Pricing Strategy</PriceRequestInternal:StrategyName> <PriceRequestInternal:AllowCurrencyOverrideFlag>true</PriceRequestInternal:AllowCurrencyOverrideFlag> <PriceRequestInternal:AppliedCurrencyCode>USD</PriceRequestInternal:AppliedCurrencyCode> <PriceRequestInternal:CalculatePricingChargesFlag>true</PriceRequestInternal:CalculatePricingChargesFlag> <PriceRequestInternal:CalculateShippingChargesFlag>false</PriceRequestInternal:CalculateShippingChargesFlag> <PriceRequestInternal:CalculateTaxFlag>true</PriceRequestInternal:CalculateTaxFlag> <PriceRequestInternal:CustomerId>1028144</PriceRequestInternal:CustomerId> <PriceRequestInternal:DefaultCurrencyCode>USD</PriceRequestInternal:DefaultCurrencyCode> <PriceRequestInternal:HeaderId>1</PriceRequestInternal:HeaderId> <PriceRequestInternal:PriceAsOf>2016-10-13T18:58:22.99Z</PriceRequestInternal:PriceAsOf> <PriceRequestInternal:PriceValidFrom>2016-10-13T18:58:22.99Z</PriceRequestInternal:PriceValidFrom> <PriceRequestInternal:PricedOn>2016-10-13T18:58:22.99Z</PriceRequestInternal:PricedOn> <PriceRequestInternal:PricingStrategyId>300100071304851</PriceRequestInternal:PricingStrategyId> <PriceRequestInternal:SellingBusinessUnitId>103</PriceRequestInternal:SellingBusinessUnitId> <PriceRequestInternal:SellingLegalEntityId>204</PriceRequestInternal:SellingLegalEntityId> <PriceRequestInternal:TransactionTypeCode>ORA_SALES_ORDER</PriceRequestInternal:TransactionTypeCode> </PriceRequestInternal:Header> <PriceRequestInternal:PricingServiceParameter> <PriceRequestInternal:CacheEnabledFlag>false</PriceRequestInternal:CacheEnabledFlag> <PriceRequestInternal:ChargeComponentIdCntr>4</PriceRequestInternal:ChargeComponentIdCntr> <PriceRequestInternal:ChargeIdCntr>1</PriceRequestInternal:ChargeIdCntr> <PriceRequestInternal:CurrentPricingDate>2016-10-13T18:58:22.99Z</PriceRequestInternal:CurrentPricingDate> <PriceRequestInternal:OutputStatus>SUCCESS</PriceRequestInternal:OutputStatus> <PriceRequestInternal:PricingContext>SALES</PriceRequestInternal:PricingContext> </PriceRequestInternal:PricingServiceParameter> <PriceRequestInternal:Line> <PriceRequestInternal:AppliedCurrencyCode>USD</PriceRequestInternal:AppliedCurrencyCode> <PriceRequestInternal:DefaultPriceListPrecedence>2</PriceRequestInternal:DefaultPriceListPrecedence> <PriceRequestInternal:FromCurrencyCode>USD</PriceRequestInternal:FromCurrencyCode> <PriceRequestInternal:GlConversionTypeCode>Corporate</PriceRequestInternal:GlConversionTypeCode> <PriceRequestInternal:HasAlternatePriceList>true</PriceRequestInternal:HasAlternatePriceList> <PriceRequestInternal:ItemType>STANDARD</PriceRequestInternal:ItemType> <PriceRequestInternal:PricingDate>2016-10-13T18:58:22.99Z</PriceRequestInternal:PricingDate> <PriceRequestInternal:StrategyName>Corporate Pricing Strategy</PriceRequestInternal:StrategyName> <PriceRequestInternal:AllowCurrencyOverrideFlag>true</PriceRequestInternal:AllowCurrencyOverrideFlag> <PriceRequestInternal:AllowPriceListUpdateFlag>true</PriceRequestInternal:AllowPriceListUpdateFlag> <PriceRequestInternal:AppliedPriceListId>300100231040800</PriceRequestInternal:AppliedPriceListId> <PriceRequestInternal:DefaultCurrencyCode>USD</PriceRequestInternal:DefaultCurrencyCode> <PriceRequestInternal:DefaultPriceListId>300100231040790</PriceRequestInternal:DefaultPriceListId> <PriceRequestInternal:HeaderId>1</PriceRequestInternal:HeaderId> <PriceRequestInternal:InventoryItemId>100000017351102</PriceRequestInternal:InventoryItemId> <PriceRequestInternal:InventoryOrganizationId>204</PriceRequestInternal:InventoryOrganizationId> <PriceRequestInternal:LineCategoryCode>ORDER</PriceRequestInternal:LineCategoryCode> <PriceRequestInternal:LineId>1</PriceRequestInternal:LineId> <PriceRequestInternal:LineQuantity unitCode="Ea" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">2</PriceRequestInternal:LineQuantity> <PriceRequestInternal:LineQuantityUOMCode>Ea</PriceRequestInternal:LineQuantityUOMCode> <PriceRequestInternal:LineTypeCode>ORA_BUY</PriceRequestInternal:LineTypeCode> <PriceRequestInternal:OverridePriceListId>300100231040800</PriceRequestInternal:OverridePriceListId> <PriceRequestInternal:PriceAsOf>2016-10-13T18:58:22.99Z</PriceRequestInternal:PriceAsOf> <PriceRequestInternal:PriceValidFrom>2016-10-13T18:58:22.99Z</PriceRequestInternal:PriceValidFrom> <PriceRequestInternal:PricedOn>2016-10-13T18:58:22.99Z</PriceRequestInternal:PricedOn> <PriceRequestInternal:PricingStrategyId>300100071304851</PriceRequestInternal:PricingStrategyId> <PriceRequestInternal:ShipToLocationId>929</PriceRequestInternal:ShipToLocationId> </PriceRequestInternal:Line> <PriceRequestInternal:Charge> <PriceRequestInternal:CompSeqCntr>1004</PriceRequestInternal:CompSeqCntr> <PriceRequestInternal:NeedsCostPlus>false</PriceRequestInternal:NeedsCostPlus> <PriceRequestInternal:NeedsMargin>true</PriceRequestInternal:NeedsMargin> <PriceRequestInternal:RunningUnitPrice>399</PriceRequestInternal:RunningUnitPrice> <PriceRequestInternal:CanAdjustFlag>false</PriceRequestInternal:CanAdjustFlag> <PriceRequestInternal:ChargeAppliesTo>PRICE</PriceRequestInternal:ChargeAppliesTo> <PriceRequestInternal:ChargeDefinitionCode>QP_SALE_PRICE</PriceRequestInternal:ChargeDefinitionCode> <PriceRequestInternal:ChargeDefinitionId>300100070852423</PriceRequestInternal:ChargeDefinitionId> <PriceRequestInternal:ChargeId>1</PriceRequestInternal:ChargeId> <PriceRequestInternal:ChargeSubtypeCode>ORA_PRICE</PriceRequestInternal:ChargeSubtypeCode> <PriceRequestInternal:ChargeTypeCode>ORA_SALE</PriceRequestInternal:ChargeTypeCode> <PriceRequestInternal:CurrencyCode>USD</PriceRequestInternal:CurrencyCode> <PriceRequestInternal:EstimatedPricedQuantityFlag>false</PriceRequestInternal:EstimatedPricedQuantityFlag> <PriceRequestInternal:EstimatedUnitPriceFlag>false</PriceRequestInternal:EstimatedUnitPriceFlag> <PriceRequestInternal:ParentEntityCode>LINE</PriceRequestInternal:ParentEntityCode> <PriceRequestInternal:ParentEntityId>1</PriceRequestInternal:ParentEntityId> <PriceRequestInternal:PriceTypeCode>ONE_TIME</PriceRequestInternal:PriceTypeCode> <PriceRequestInternal:PricedQuantity unitCode="Ea" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">2</PriceRequestInternal:PricedQuantity> <PriceRequestInternal:PricedQuantityUOMCode>Ea</PriceRequestInternal:PricedQuantityUOMCode> <PriceRequestInternal:PrimaryFlag>true</PriceRequestInternal:PrimaryFlag> <PriceRequestInternal:RollupFlag>false</PriceRequestInternal:RollupFlag> <PriceRequestInternal:SequenceNumber>1</PriceRequestInternal:SequenceNumber> <PriceRequestInternal:TaxIncludedFlag>false</PriceRequestInternal:TaxIncludedFlag> </PriceRequestInternal:Charge> <PriceRequestInternal:ChargeComponent> <PriceRequestInternal:AbsoluteExtendedAmount>798</PriceRequestInternal:AbsoluteExtendedAmount> <PriceRequestInternal:PriceValidFrom>2016-10-13T18:58:22.99Z</PriceRequestInternal:PriceValidFrom> <PriceRequestInternal:ChargeComponentId>1</PriceRequestInternal:ChargeComponentId> <PriceRequestInternal:ChargeId>1</PriceRequestInternal:ChargeId> <PriceRequestInternal:CurrencyCode>USD</PriceRequestInternal:CurrencyCode> <PriceRequestInternal:Explanation>Base List Price Applied from HDO Productions PL</PriceRequestInternal:Explanation> <PriceRequestInternal:ExplanationMessageName>QP_BASE_LIST_PRICE_CHARGE</PriceRequestInternal:ExplanationMessageName> <PriceRequestInternal:ExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:ExtendedAmount> <PriceRequestInternal:HeaderCurrencyCode>USD</PriceRequestInternal:HeaderCurrencyCode> <PriceRequestInternal:HeaderCurrencyExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:HeaderCurrencyExtendedAmount> <PriceRequestInternal:HeaderCurrencyUnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:HeaderCurrencyUnitPrice> <PriceRequestInternal:PercentOfComparisonElement>1</PriceRequestInternal:PercentOfComparisonElement> <PriceRequestInternal:PriceElementCode>QP_BASE_LIST_PRICE</PriceRequestInternal:PriceElementCode> <PriceRequestInternal:RollupFlag>false</PriceRequestInternal:RollupFlag> <PriceRequestInternal:SequenceNumber>1000</PriceRequestInternal:SequenceNumber> <PriceRequestInternal:SourceId>300100231040804</PriceRequestInternal:SourceId> <PriceRequestInternal:SourceTypeCode>PRICE_LIST_CHARGE</PriceRequestInternal:SourceTypeCode> <PriceRequestInternal:UnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:UnitPrice> </PriceRequestInternal:ChargeComponent> <PriceRequestInternal:ChargeComponent> <PriceRequestInternal:AbsoluteExtendedAmount>798</PriceRequestInternal:AbsoluteExtendedAmount> <PriceRequestInternal:SkipRunningPrice>true</PriceRequestInternal:SkipRunningPrice> <PriceRequestInternal:ChargeComponentId>2</PriceRequestInternal:ChargeComponentId> <PriceRequestInternal:ChargeId>1</PriceRequestInternal:ChargeId> <PriceRequestInternal:CurrencyCode>USD</PriceRequestInternal:CurrencyCode> <PriceRequestInternal:ExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:ExtendedAmount> <PriceRequestInternal:HeaderCurrencyCode>USD</PriceRequestInternal:HeaderCurrencyCode> <PriceRequestInternal:HeaderCurrencyExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:HeaderCurrencyExtendedAmount> <PriceRequestInternal:HeaderCurrencyUnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:HeaderCurrencyUnitPrice> <PriceRequestInternal:PercentOfComparisonElement>1</PriceRequestInternal:PercentOfComparisonElement> <PriceRequestInternal:PriceElementCode>QP_LIST_PRICE</PriceRequestInternal:PriceElementCode> <PriceRequestInternal:PriceElementUsageCode>LIST_PRICE</PriceRequestInternal:PriceElementUsageCode> <PriceRequestInternal:RollupFlag>false</PriceRequestInternal:RollupFlag> <PriceRequestInternal:SequenceNumber>1001</PriceRequestInternal:SequenceNumber> <PriceRequestInternal:TaxIncludedFlag>false</PriceRequestInternal:TaxIncludedFlag> <PriceRequestInternal:UnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:UnitPrice> </PriceRequestInternal:ChargeComponent> <PriceRequestInternal:ChargeComponent> <PriceRequestInternal:AbsoluteExtendedAmount>798</PriceRequestInternal:AbsoluteExtendedAmount> <PriceRequestInternal:SkipRunningPrice>true</PriceRequestInternal:SkipRunningPrice> <PriceRequestInternal:ChargeComponentId>3</PriceRequestInternal:ChargeComponentId> <PriceRequestInternal:ChargeId>1</PriceRequestInternal:ChargeId> <PriceRequestInternal:CurrencyCode>USD</PriceRequestInternal:CurrencyCode> <PriceRequestInternal:ExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:ExtendedAmount> <PriceRequestInternal:HeaderCurrencyCode>USD</PriceRequestInternal:HeaderCurrencyCode> <PriceRequestInternal:HeaderCurrencyExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:HeaderCurrencyExtendedAmount> <PriceRequestInternal:HeaderCurrencyUnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:HeaderCurrencyUnitPrice> <PriceRequestInternal:PercentOfComparisonElement>1</PriceRequestInternal:PercentOfComparisonElement> <PriceRequestInternal:PriceElementCode>QP_NET_PRICE</PriceRequestInternal:PriceElementCode> <PriceRequestInternal:PriceElementUsageCode>NET_PRICE</PriceRequestInternal:PriceElementUsageCode> <PriceRequestInternal:RollupFlag>false</PriceRequestInternal:RollupFlag> <PriceRequestInternal:SequenceNumber>1002</PriceRequestInternal:SequenceNumber> <PriceRequestInternal:TaxIncludedFlag>false</PriceRequestInternal:TaxIncludedFlag> <PriceRequestInternal:UnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:UnitPrice> </PriceRequestInternal:ChargeComponent> <PriceRequestInternal:ChargeComponent> <PriceRequestInternal:AbsoluteExtendedAmount>798</PriceRequestInternal:AbsoluteExtendedAmount> <PriceRequestInternal:SkipRunningPrice>true</PriceRequestInternal:SkipRunningPrice> <PriceRequestInternal:ChargeComponentId>4</PriceRequestInternal:ChargeComponentId> <PriceRequestInternal:ChargeId>1</PriceRequestInternal:ChargeId> <PriceRequestInternal:CurrencyCode>USD</PriceRequestInternal:CurrencyCode> <PriceRequestInternal:ExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:ExtendedAmount> <PriceRequestInternal:HeaderCurrencyCode>USD</PriceRequestInternal:HeaderCurrencyCode> <PriceRequestInternal:HeaderCurrencyExtendedAmount currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">798</PriceRequestInternal:HeaderCurrencyExtendedAmount> <PriceRequestInternal:HeaderCurrencyUnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:HeaderCurrencyUnitPrice> <PriceRequestInternal:PercentOfComparisonElement>1</PriceRequestInternal:PercentOfComparisonElement> <PriceRequestInternal:PriceElementCode>QP_MARGIN</PriceRequestInternal:PriceElementCode> <PriceRequestInternal:PriceElementUsageCode xsi:nil="true"/> <PriceRequestInternal:RollupFlag>false</PriceRequestInternal:RollupFlag> <PriceRequestInternal:SequenceNumber>1003</PriceRequestInternal:SequenceNumber> <PriceRequestInternal:TaxIncludedFlag>false</PriceRequestInternal:TaxIncludedFlag> <PriceRequestInternal:UnitPrice currencyCode="USD" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">399</PriceRequestInternal:UnitPrice> </PriceRequestInternal:ChargeComponent> <PriceRequestInternal:ChangeSummary logging="false" xmlns:sdo="commonj.sdo"/> </PriceRequestInternal:PriceRequestInternalType>
-
Verify that Last Execution Status displays Succeeded, or a similar success indication.
If it displays Failure, then click Show Exception Details to examine and troubleshoot.
If you receive this error, then use an XML editor to validate that your code uses the correct XML format.
Error: Unable to parse the variable[PriceRequest] using the service definition [Sales.PriceRequestInternal]. Please check the variable value or service schema
-
Click Save and Close.
-
On the Manage Algorithms page, click Actions > Publish.
Create a Test Sales Order
-
Sign out of Oracle Pricing, then sign into Order Management with the privileges that you need to manage sales orders.
-
Go to the Order Management work area.
-
Enter the value, then step out of the Customer attribute.
Attribute
Value
Customer
Fantastic Laptops
-
Click Actions > View Pricing Strategy and Segment, then verify the values.
Attribute
Value
Pricing Segment
Corporate Segment
Strategy Name
Pricing Strategy for Fantastic Laptops
-
Add item AS54888, set various attributes, such as Channel, Line of Business, and Ship-to Country, then verify that Pricing applies the discounts that you specified in the price lists and discount lists.
-
Repeat steps 3 through 5 for Computer Service and Rentals.
-
Repeat steps 3 through 5 for PennyPack Systems.
Get Identifiers for Test Payloads
-
Sign into the Order Management work area, then create a sales order.
-
Set the Customer attribute and the Business Unit attribute to values you must test. For this example, set these values.
Attribute
Value
Customer
Fantastic Laptops
Business Unit
Vision Operations
-
Add an order line that includes the item you're testing. For this example, add AS54888.
-
Click Submit, then notice the sales order number that Order Management creates, such as 12345.
-
-
Get values for the sales order header. Run SQL query on the database that your implementation uses to store the sales order that you created in step 1.
select header_id, sold_to_party_id as CustomerId, org_id as SellingBusinessUnitId, legal_entity_id as SellingLegalEntityId from doo_headers_all where Order_Number = $12345;
where
-
12345 is the order number you noted in step 1.
-
The query returns values that you can use in your payload for these header attributes.
Value in SQL
Provides Value for Attribute in Test Payload
Example Values
sold_to_party_id
Header.CustomerId
Header_id equals 100413 and CustomerId equals 1006.
org_id
Header.SellingBusinessUnitId
SellingBusinessUnitId equals 204.
legal_entity_id
Header.SellingLegalEntityId
SellinglegalEntityId equals 204.
-
-
Get values for the order line. Run an SQL query.
select inventory_item_id as InventoryItemId, inventory_organization_id as InventoryOrganizationId, ordered_uom as LineQuantityUOMCode from doo_fulfill_lines_all where header_id = $56789;
where
-
56789 is the header Id in the query result from step 2.
-
The query returns values that you can use in your payload for these order line attributes.
Value in SQL
Provides Value for Attribute in Test Payload
Example Values
inventory_item_id
Line.InventoryItemId
Header_id equals 100413 and InventoryItemId equals 149.
inventory_organization_id
Line.InventoryOrganizationId
InventoryOrganizationId equals 204.
ordered_uom
Line.LineQuantity.UOMCode
Note that you must replace the UOMCode in two different locations in the payload. In this example, the value is
Ea
.LineQuantityUOMCode equals USD.
-