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.

Caution: 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

  • Sell through broker, 0%

  • Sell through broker in China, 5%

  • Sell through call center, 5%

  • Sell through internet, 10%

Line of Business

  • Sell through peripheral line-of-business, 0%

  • Sell through desktop line-of-business, 0%

  • Sell through laptop line-of-business, 10%

Ship to Country

  • Sell into United States, 0%

  • Sell into Japan, 5%

  • Sell into Korea, 10%

  • Sell into China, 20%

Customer

  • Sell to Fantastic Laptops, 5%

  • Sell to Computer Service and Rentals, 10%

  • Sell to PennyPack Systems, 20%

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.

service data object

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

  1. Create extensible flexfields.

  2. Create pricing lookups.

  3. Create matrix classes.

  4. Create price lists and discount lists.

  5. Create pricing profiles and pricing strategies.

  6. Modify pricing algorithms.

  7. Test your set up.

Caution: 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

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

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

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

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

  1. Sign out of Order Management, and then sign into Oracle Pricing with administrative privileges.

  2. Go to the Pricing Administration work area, then click Tasks > Manage Service Mappings.

  3. On page Manage Service Mappings, in the Name column, click Sales.

  4. 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:

      entities on page Manage Service Mappings
    • 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.

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

      step that configures Pricing to read the extensible flexfield values
  6. Click Save and Close > Done.

Create Pricing Lookups

Here are the lookups you create. The Order Entry Specialist uses them to set attribute values.

lookups that the Order Entry Specialist will use to set attribute values

Create the lookups.

  1. Go to the Setup and Maintenance work area, then go to the task.

    • Offering: Order Management

    • Functional Area: Pricing

    • Task: Manage Pricing Lookups

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

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

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

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

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

  1. Go to the Pricing Administration work area, then click Tasks > Manage Matrix Classes.

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

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

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

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

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

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

  8. Click Save.

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

  1. Go to the Pricing Administration work area, then click Tasks > Manage Price Lists.

  2. On the Manage Price Lists page, in the Search Results area, click Actions > Create.

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

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

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

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

  7. 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.
  8. Click Access Sets, click Actions > Add Row, then set the value.

    Attribute

    Value

    Set Code

    Common

  9. Click Approve, then click Save and Close.

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

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

  1. In the Pricing Administration work area, click Tasks > Manage Discount Lists.

  2. On the Manage Discount Lists page, click Actions > Create.

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

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

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

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

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

  8. Create the business unit discount.

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

  1. Go to the Setup and Maintenance work area, then go to the task.

    • Offering: Order Management

    • Functional Area: Pricing

    • Task: Manage Pricing Descriptive Flexfields

  2. On the Manage Pricing Descriptive Flexfields page, search for the value.

    Attribute

    Value

    Name

    Customer Pricing Profile DFF

  3. Click Actions > Edit.

  4. On the Edit Descriptive Flexfield page, click Actions > Create.

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

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

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

  8. On the Manage Pricing Descriptive Flexfields field page, click Deploy Flexfield.

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

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

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

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

  1. Create a customer pricing profile for Fantastic Laptops. Use these values.

    Attribute

    Value

    Customer Name

    Fantastic Laptops

    Strategy

    Pricing Strategy for Fantastic Laptops

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

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

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

  1. Click Tasks > Manage Algorithms.

  2. On the Manage Algorithms page, select a published version of the pricing algorithm, such as Version 1.

    Attribute

    Value

    Name

    Get Sales Pricing Strategy

  3. Click Actions > Create Version, then wait for the page to display your In Progress version, such as Version 2.

  4. Open your In Progress version.

  5. On the Edit Algorithm page, in the Algorithm tab, click step 4, Get Customer Pricing Profile.

  6. In the Step Details area, delete all the code in the Condition window.

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

  8. 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
  9. 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.

  10. Click Save and Close.

  11. On the Manage Algorithms page, click Actions > Publish.

Modify the Pricing Algorithm

Here's the modification that you will make.

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.

  1. On the Manage Algorithms page, select a published version of this pricing algorithm, such as Version 1.

    Attribute

    Value

    Name

    Apply Matrices

  2. Click Actions > Create Version, then wait for the page to display your In Progress version, such as Version 2.

  3. Open your In Progress version.

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

  5. In the Step Details area, in the Data Sets area, click the row that contains this value.

    Attribute

    Value

    Name

    Header

  6. 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}]

  7. Click Save and Close.

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

  1. On the Manage Algorithms page, open Price Sales Transaction for editing.

  2. On the Edit Algorithm page, click Test.

  3. Click Actions > Add Row, then set the value.

    Attribute

    Value

    Test Case Name

    Override Test for Customer Price List

  4. In the Test Input area, in the row that contains PriceRequest in the Variable Name column, click the pencil in the Variable Value column.

  5. In the Edit Variable dialog, delete all the code.

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

  7. 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>
    
  8. 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
    
  9. Click Save and Close.

  10. On the Manage Algorithms page, click Actions > Publish.

Create a Test Sales Order

  1. Sign out of Oracle Pricing, then sign into Order Management with the privileges that you need to manage sales orders.

  2. Go to the Order Management work area.

  3. Enter the value, then step out of the Customer attribute.

    Attribute

    Value

    Customer

    Fantastic Laptops

  4. Click Actions > View Pricing Strategy and Segment, then verify the values.

    Attribute

    Value

    Pricing Segment

    Corporate Segment

    Strategy Name

    Pricing Strategy for Fantastic Laptops

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

  6. Repeat steps 3 through 5 for Computer Service and Rentals.

  7. Repeat steps 3 through 5 for PennyPack Systems.

Get Identifiers for Test Payloads

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

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

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