Oracle. SCM Cloud Administering Pricing. Release 13 (update 18B)

Size: px
Start display at page:

Download "Oracle. SCM Cloud Administering Pricing. Release 13 (update 18B)"

Transcription

1 Oracle SCM Cloud Release 13 (update 18B)

2 Release 13 (update 18B) Part Number E Copyright , Oracle and/or its affiliates. All rights reserved. Author: carl casey This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/ or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government. This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group. This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle. The business names used in this documentation are fictitious, and are not intended to identify any real companies currently or previously in existence.

3 Contents Preface 1 i Introduction 1 What's New in : Explained Oracle Fusion Pricing: Overview Pricing Sales Orders: How It Works... 5 Profiles, Segments, and Strategies: How They Work Together Managing Oracle Fusion Pricing: Roadmap 2 Strategies Managing Lists 25 Rules Prices Costs Discounts Shipping Charges Currencies Adjustments Managing Profiles, Segments, and Strategies Profiles and Segments Managing Charges, Elements, Parameters, and Rounding Managing Pricing Charge Definitions: Procedure Managing Price Elements: Procedure Managing Pricing Bases: Procedure Managing Pricing Parameters: Procedure Managing Rounding Rules

4 5 Performing Various Administrative Work Import Pricing External Systems Covered Items Performance Managing User Interfaces Managing Pricing Totals: Procedure Managing Price Details on Order Lines: Procedure Managing Pricing Lookups: Procedure User Modifications Messages Managing Pricing Algorithms, Service Mappings, and Matrix Classes Pricing Architecture: How It Works Service Mappings Pricing Algorithms Matrix Classes Managing Pricing Descriptive Flexfields: Procedure Performing Advanced Set Ups 193 Defining Discounts That Accumulate or Cascade: Procedure Assigning Pricing Strategy According to Order Type: Procedure Assigning Pricing Strategy According to Precedence: Procedure Defining Price Lists for Each Customer: Procedure Using Extensible Flexfields with Pricing: Procedure Setting Up Item Extensible s in Pricing: Overview Setting Up Item Extensible s in Pricing: Procedure Overriding Net Price: Procedure

5 Preface Preface This preface introduces information sources that can help you use the application. Using Oracle Applications Using Applications Help Use help icons to access help in the application. If you don't see any help icons on your page, click your user image or name in the global header and select Show Help Icons. Not all pages have help icons. You can also access Oracle Applications Help. Watch: This video tutorial shows you how to find help and use help features. You can also read Using Applications Help. Additional Resources Community: Use Oracle Cloud Customer Connect to get information from experts at Oracle, the partner community, and other users. Guides and Videos: Go to the Oracle Help Center to find guides and videos. Training: Take courses on Oracle Cloud from Oracle University. Conventions The following table explains the text conventions used in this guide. Convention Meaning boldface Boldface type indicates user interface elements, navigation paths, or values you enter or select. monospace Monospace type indicates file, folder, and directory names, code examples, commands, and URLs. > Greater than symbol separates elements in a navigation path. Documentation Accessibility For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website. Videos included in this guide are provided as a media alternative for text-based help topics also available in this guide. i

6 Preface Contacting Oracle Access to Oracle Support Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit My Oracle Support or visit Accessible Oracle Support if you are hearing impaired. Comments and Suggestions Please give us feedback about Oracle Applications Help and guides! You can send an to: ii

7 Chapter 1 1 Introduction Introduction What's New in : Explained This topic lists each help topic that is new or significantly revised for each release of Oracle Fusion Pricing. Release 13 (update 18B) The following topics are new or significantly revised. This table lists the new topics first, and then the revised topics. Topic Description Defining Discounts That Accumulate or Cascade: Procedure New topic. Apply discounts that accumulate or cascade on a price list. This content previously appeared in Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support. It has been rewritten and updated to support the current release. Assigning Pricing Strategy According to Order Type: Procedure New topic. Assign pricing strategy according to the type of sales order. This content previously appeared in Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support. It has been rewritten and updated to support the current release. Assigning Pricing Strategy According to Precedence: Procedure New topic. Define pricing strategies that reference different pricing segments according to pricing precedence, but still use a default pricing strategy, such as Corporate Pricing Strategy. This content previously appeared in Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support. It has been rewritten and updated to support the current release. Defining Price Lists for Each Customer: Procedure New topic. Define price lists according to the requirements for each customer. This content previously appeared in Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support. It has been rewritten and updated to support the current release. Promoting Pricing Algorithms Into the Current Release: Procedure New topic. Use the Promote All action to incorporate changes that Oracle Fusion Pricing provides in new algorithms in the current release into pricing algorithms from the prior release. These changes include new features and corrections to features that already exist. Verifying the Source Code for Pricing Algorithms: Procedure New topic. Click View Source to verify the source code of a pricing algorithm. Managing Price Details on Order Lines: Procedure Revised topic. You can use a pricing results presentation or modify the Sales service mapping to specify how to display each price element in a price breakdown. Release 13 (update 18A) The following topics are new or significantly revised. This table lists the new topics first, and then the revised topics. 1

8 Chapter 1 Introduction Topic Description Managing Pricing Rules and Pricing Profiles in Spreadsheets: Explained New topics. You can use a Microsoft Excel workbook to modify more than one price list, discount list, or customer pricing profile to reflect changes to your pricing policies and profitability targets. You can apply these changes to multiple objects, such as all of your price lists, in Oracle Fusion Pricing. Managing Pricing Rules and Pricing Profiles in Spreadsheets: Procedure Managing Pricing for Configured Items: Procedure New topic. You can define pricing for a configured item in a price list or a discount list. Caching Data in Pricing: Explained New topics. To improve application performance, you can cache pricing data to reduce the number of times required to initialize objects and to minimize round trip database processing. Caching Data in Pricing: Procedure This content previously appeared in Data Caching in Pricing (Doc ID ) on My Oracle Support at https: / /supportoraclecom. Release 13 (update 17D) The following topics are new or significantly revised. This table lists the new topics first, and then the revised topics. Topic Description Managing Pricing Strategies: Procedure Revised topic. You can define a default currency and specify whether or not a user can override it when the user creates a sales order. You can use the Quantity Decimal Precision profile to control decimal precision for attributes that store numeric values. For example, to control decimal precision on the order line quantity that the Order Entry Specialist sets on the Create Order page, or to control decimal precision during order import. Note that you do not use decimal precision to allow only a whole number in the quantity. Instead, you can set the Indivisible attribute to Yes in the Product Information Management work area when you set up the item. For example, most companies sell a desktop computer as a whole item. The scale of the decimal precision defines the maximum number of digits to the right of the decimal point. The value you set for the profile controls the scale, and the profile will round the quantity according to the scale you specify. Release 13 (update 17C) The following topics are new or significantly revised. This table lists the new topics first, and then the revised topics. Topic Description Setting Up Item Extensible s in Pricing: Overview In some situations, your business requirements might need to calculate or adjust a price according to the attributes of the item, but it might be too cumbersome to define these calculations for each item. Instead, you can define item attributes on an item class to represent details about the item, and then reference these details in a pricing rule that determines the price or discount. Setting Up Item Extensible s in Pricing: Procedure Setting the Domain of a Result Column section in Managing Matrix Classes: Procedure Revised topic. You can now set Item Extensible as the Domain Type to get a value from an attribute that you define on the Manage Item Groups and s page. 2

9 Chapter 1 Introduction Release 13 (update 17B) The following topics are new or significantly revised. This table lists the new topics first, and then the revised topics. Topic Description Allowing Users to Adjust Price: Procedure Configure Oracle Fusion Pricing to allow an authorized person to adjust price and at the same time control the adjustment amount to prevent an unprofitable discount. Managing Pricing Guidelines: Described A pricing guideline is a rule that you define for an item, user role, customer details, or time period that controls modifications to price, net price, margin, and so on. You can create a pricing guideline for each pricing component according to your business requirements. Managing Pricing Guidelines: Procedure Managing Pricing for Covered Items: Described Managing Pricing for Covered Items: Procedure Getting Details for Pricing from External Systems: Explained A coverage item is an item that adds value by providing coverage for a covered item. For example, a six month warranty is a coverage item for a laptop computer, and the laptop computer is the covered item. You can administer coverage pricing rules on a price list to manage the rules between each coverage item and each covered item. Configure a pricing algorithm to call a web service that resides outside of Oracle Fusion Pricing, get data from an external system, and then leverage it as part of your pricing calculation. Getting Details for Pricing from External Systems: Procedure Managing Service Mappings: Explained A service mapping contains entities, sources, and services. Pricing uses it to map the input SDO to the output SDO. Managing Pricing Algorithms: Worked Example In this example, you define pricing algorithms so that they use an extensible flexfield to override the net price of a pricing charge on a fulfillment line. Using Extensible Flexfields with Pricing: Procedure Use an extensible flexfield to determine how to calculate pricing. In this example, you use the sales channel attribute of an extensible flexfield to determine the pricing strategy. Pricing Architecture: How It Works Revised topic. Includes new details that describe how pricing algorithms calculate price for sales orders. White Papers for Oracle Fusion Pricing Revised topics. Includes new details about set ups you can perform to modify your pricing implementation. search for Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support at https: //supportoracle.com and then download the attachments. Oracle Fusion Pricing: Overview Oracle Fusion Pricing is a pricing solution that you can use to manage pricing for items. You can use it to create pricing rules and pricing algorithms that support your corporate pricing practices. Pricing administration allows you to design pricing rules that meet your revenue and business objectives so that you can price items for each pricing segment. The pricing architecture allows you to modify predefined logic so that you can implement a pricing algorithm that runs the pricing rules that your deployment requires. 3

10 Chapter 1 Introduction This figure illustrates some of the components that you can set up in Pricing. 5 Pricing Algorithm Sales Order 1 Priced Sales Order Pricing Profile 2 Pricing Segments Revenue Potential High Accounts Low Cost to Serve 3 4 Pricing Strategy Price List Discount List Cost List Explanation of Callouts You can set up the following components in Pricing: 1. Pricing Profile. Categorize customers who exhibit similar characteristics. For example, categorize a customer as high customer size, high customer value, medium customer rating, and high revenue potential. 2. Pricing Segment. Assign customers who exhibit similar buying practices to a pricing segment, and then associate this segment with a pricing strategy that meets the business and revenue goals that you set for this segment. 3. Pricing Strategy. Implement and enforce corporate pricing strategies and pricing objectives so that they meet your business requirements and revenue requirements. You can group pricing rules in a pricing strategy to control pricing behavior. 4

11 Chapter 1 Introduction 4. Lists. Create lists, such as a price list, that includes rules that calculate price and shipping charges for an item, and then reference these lists from the pricing strategy. You can do the following work: Apply multiple charges to an item. For example, you can define a charge for a one-time sales price for a desktop computer in one pricing rule, and then apply another charge for maintenance service for this desktop computer that recurs monthly in another pricing rule. Create pricing rules that calculate the base price, list price, price adjustments, discounts, return charges, shipping charges, and so on according to a set of conditions and results. Define currency conversion rules that manage pricing for different currencies. 5. Pricing Algorithm. Set up the process that Pricing uses during pricing calculations, including pricing algorithms and service mappings that you can define to meet your business requirements. Related Topics Pricing Architecture: How It Works Pricing Sales Orders: How It Works Oracle Fusion Pricing uses pricing entities, such as price lists and discount lists, to calculate the price of an item and the sales order total. 5

12 Chapter 1 Introduction For this example, assume you integrate Pricing with Order Management Cloud, and that Pricing must determine charges for the AS54888 Desktop Computer. The following diagram illustrates the work that Pricing does when it prices this item. Order Management Cloud 1 2 Send Request to Price Sales Order Determine Pricing Strategy Pricing profile, segment, and strategy 3 Get Base List Price Price list Apply Adjustments Tier adjustmentsand attribute adjustment 4 5 Calculate List Price 6 Apply Discounts Discount list 7 Calculate Net Price 8 Calculate Sales Tax 10 Oracle Fusion Tax 9 Calculate and Send Pricing for Sales Order Calculate Profit Margin Cost list Explanation of Callouts Pricing does the following work when it prices this item: 1. An order entry specialist adds an order line in Order Management. Order Management then sends a request to Pricing to price the sales order, including attribute details that affect pricing. For example: Customer Computer Service and Rentals Business Unit Vision Operations 6

13 Chapter 1 Introduction Item AS54888 Unit of Measure Each Line Type Buy Quantity 2 2. Determine the pricing strategy to use for this item. It uses pricing profiles, pricing segments, and pricing strategies to determine this pricing strategy. For details, see Pricing Profiles, Segments, and Strategies: How They Work Together. 3. Use a price list that the pricing strategy references to get the base list price for the item. A price list sets the price for each item that you sell. For details, see Managing Price Lists: Procedure. 4. Reference a tier adjustment or an attribute adjustment, and then apply it to the item. You can specify tier pricing or a pricing matrix to adjust the price that a pricing rule calculates. For details, see Adjusting Prices: Explained. 5. Calculate the list price. 6. Reference a discount list that applies a discount on the base list price so that it can determine the net price. For example, apply a 10% percent discount off the list price. For details about how to define a discount list that applies a flat rate discount, a percent discount, or that uses a pricing matrix to define a discount according to an item attribute, see Managing Discount Lists: Procedure. 7. Calculate the net price, and then return the charge and charge components. 8. Call Oracle Fusion Tax to calculate sales tax for the item. Pricing uses the tax details that Oracle Fusion Tax returns to create charge components for taxes. 9. Calculate profit margin according to costs that the cost lists define. You can create a cost list that references a variety of charges, such as item cost, sales commission, or labor cost. For details, see Managing Cost Lists: Procedure and Cost Plus Pricing: Explained. 10. Calculate sales order totals, and then communicate the results to Order Management. For this example, Pricing returns the following details to Order Management: Pricing Base List Price $1,000. From the Corporate price list. Tier Adjustment Minus $200. List Price $ % Discount Minus $100. Net Price $700. 7

14 Chapter 1 Introduction Pricing Extended Amount $1400. Note the following points: Order Management sends a request to Pricing every time the Order Entry Specialist adds an order line, clicks Submit, or reprices the sales order. Pricing repeats this entire process to recalculate the sales order every time it receives a request from Order Management, including pricing for each order line and the sales order total. An item can include one or more charges, and Pricing returns each of these values as a charge. For example, it returns the value of the unit price as the Sale Price Charge. Pricing comes predefined to perform most of this work without requiring you to modify pricing logic. This topic describes a simplification of the predefined Price Sales Transaction pricing algorithm, which is the primary algorithm that Pricing uses to price an item. You can modify this pricing algorithm. Pricing uses different pricing algorithms to calculate different prices. For example, it uses the Calculate Sales Order Totals pricing algorithm to calculate the sales order total. For details, see Pricing Architecture: How It Works. This example does not display details about the taxes or profit margins that the pricing algorithm calculates. For details about how to use a service mapping to display these details, see Managing Service Mappings: Procedure. Most Oracle Fusion Applications use the User Preferred Time Zone when they perform a calculation that includes a date value. However, Pricing uses the server time zone. This might affect the value for some pricing calculations. For example, calculations that include the Start Date and End Date. For other technical details about pricing, search for Doc ID (White Papers for Oracle Fusion Pricing) on My Oracle Support at Related Topics Pricing Architecture: How It Works Adjusting Prices: Explained Profiles, Segments, and Strategies: How They Work Together Oracle Fusion Pricing uses the pricing profile, pricing segment, pricing strategy assignment, and pricing strategy that you define when it prices a sales order. 8

15 Chapter 1 Introduction The following flow illustrates how Pricing uses these pricing entities to price a sales order Pricing Algorithm Sales Order Priced Sales Order Runtime Setup 3 Customer Computer Services Computers Direct Pricing Profile Revenue Cost to Serve High Medium Very High High High Very High 4 Rating High High Size Large Large Rating High High Size Large Large Pricing Segment Computer Services Computers Direct 5 Segment Tier 1 Tier 2 Cost to Serve Medium High Pricing Strategy Assignment Segment Tier 1 Tier 2 6 Transaction Sales Order Channel Strategy Direct Commercial Corporate Pricing Strategy Pricing and Shipping Rules Price Discount Cost Currency Shipping Explanation of Callouts In this example, Pricing does the following work: 1. Receive a sales order from an Oracle Cloud Application, such as Order Management Cloud. 2. Use a pricing algorithm that references a service mapping, pricing profile, pricing segment, pricing strategy assignment, and pricing strategy to price the sales order at runtime. For example, the pricing algorithm calculates the list price, applies discounts, and applies taxes. For details, see Pricing Architecture: How It Works. 3. Use the pricing profiles that you define to create a relationship between the pricing attributes that describe buying behavior, and each customer. In this example, assume Pricing receives a sales order for Computer Services, who is 9

16 Chapter 1 Introduction a large, highly valued, and highly rated customer who exhibits high revenue potential and medium cost to serve. For details, see Managing Pricing Profiles: Procedure. 4. Compare each attribute of the pricing profile to each pricing segment until it finds a match. It uses the pricing segments that you define to group customers who exhibit a similar set of characteristics and buying behaviors. For example, you can group large, highly rated customers who exhibit a medium cost to serve into a single segment, such as Tier 1. For this example, the characteristics of the following segment and customer match each other, so Pricing uses the Tier 1 pricing segment for Computer Services. Cost to Serve Rating Size Segment: Tier 1 Segment Medium High Large Customer: Computer Services Medium High Large 5. Use the pricing strategy assignment to assign a pricing strategy to the customer. You can use different pricing strategies for the same pricing segment to support multiple selling scenarios, or you can use different strategies for different segments. For example, you can create the following assignment rules: If the Pricing Segment is Tier 1, and if the Transaction is Sales Order, and if the Channel is Direct, then use the US Commercial pricing strategy. If the Pricing Segment is Tier 2, then use the Corporate pricing strategy. 6. Use the pricing strategy to make sure pricing meets the pricing objective. Pricing uses the following lists that the pricing strategy references: Price lists to get the list price for the item Discount lists to get adjustments on the price Cost lists to apply cost plus pricing, when required Currency conversion lists to determine the conversion rate to use, when required Shipping charge lists to get the shipping charges 7. Calculate the sales order total, and then send the priced sales order, including each pricing charge and charge component, to Order Management. 10

17 Chapter 1 Introduction For example, Pricing can send the following pricing details, and then Order Management displays them for the sales order total: Related Topics Pricing Architecture: How It Works Managing Pricing Profiles: Procedure Managing Oracle Fusion Pricing: Roadmap Managing Oracle Fusion Pricing includes setup and administration. Note the following points: It is recommended that you do the setup work first, and then the administrative work. It is recommended that you do the work in the same sequence that each roadmap lists the topics. All steps are optional. This roadmap provides a generic approach to managing Pricing. You might find that you only need to perform a few steps, and in random order, depending on the Pricing functionality that your implementation requires. Roadmap for Setting Up Pricing Set up pricing administration: Managing Pricing Charge Definitions: Procedure Managing Price Elements: Procedure Managing Pricing Bases: Procedure Managing Pricing Parameters: Procedure Managing Rounding Rules: Procedure 11

18 Chapter 1 Introduction Set up user interfaces: Managing Pricing Totals: Procedure Managing Pricing Results Presentations: Procedure Managing Pricing Messages: Procedure Managing Pricing Message Tokens: Procedure Managing Pricing Lookups: Procedure Managing Pricing Descriptive Flexfields: Procedure Roadmap for Administer profiles, segments, strategies, and lists: Managing Pricing Profiles: Procedure. Managing Pricing Segments: Procedure. Managing Pricing Strategies: Procedure. Create a pricing strategy but do not add any lists. Managing Price Lists: Procedure. Managing Cost Lists: Procedure. Managing Discount Lists: Procedure. Managing Shipping Charge Lists: Procedure. Managing Currency Conversion Lists: Procedure. Managing Pricing Strategies: Procedure. Add the lists and other objects that you created in steps 4 through 8 to the pricing strategy that you created in step Assigning Pricing Strategies: Procedure. 11. Test your work. Use an Oracle Cloud Application, such as Order Management Cloud, to verify that pricing works correctly. Administer algorithms, service mappings, and matrixes: Managing Pricing Matrix Types: Procedure Mapping Pricing Operations to Pricing Algorithms: Procedure Managing Pricing Algorithms: Procedure Managing Service Mappings: Procedure Managing Matrix Classes: Procedure Quick Start Use this section only if must perform a few tasks, depending on the Pricing functionality that your implementation requires. Modify How Order Management Displays Pricing Details See the following topics to modify how Order Management displays pricing details. Description Topic Modify how Pricing calculates the pricing details that Order Management displays for an order line, such as the unit price, list price, sale price, and discount. Modifying Prices on Order Lines: Procedure Specify the details that Order Management displays in the Amount dialog. Modifying Pricing Algorithm Variables: Procedure 12

19 Chapter 1 Introduction Description Topic Specify the details that Order Management displays in the Total dialog. Managing Pricing Totals: Procedure Specify how to display each price element in a price breakdown. For example, display the rounding adjustment in the price breakdown that Order Management displays in the Amount Sale Price dialog. Managing Pricing Results Presentations: Procedure Modifying Pricing Logic See the following topics to modify pricing logic. Description Topic Specify the logic that Pricing uses to calculate price. For example, remove the tax calculation. Modifying Pricing Algorithms: Procedure Specify the logic that Pricing uses to calculate price. For example, calculate credit before you calculate tax. Managing Pricing Totals: Procedure Add an attribute to the pricing calculation. For example, add freight details to an order line. Managing Service Mappings: Procedure Apply conditional logic. For example, apply a different percent discount depending on whether the customer resides in a North, South, East, or West geographical region. Managing Matrix Classes: Procedure Specify how Pricing rounds the values that it calculates. For example, round each price to 0.97 or 0.99 for companies that reside in the United States, and round each price to 88 for companies that reside in China. Managing Rounding Rules: Procedure Define a pricing rule that controls how Pricing calculates the price for each item. For example: Pricing Rules: Explained Set the base price to $500 USD for a cell phone, and allow the user to manually adjust this price. Add a 5% increase to the invoice price to capture cost of goods sold. Provide an 8% discount if the customer purchases a recurring 13

20 Chapter 1 Description Introduction Topic service for 12 months, such as a monthly service call. Price shipping for a Desktop Computer at $50 for Standard Delivery and $100 for Express Delivery. Define the base price for a computer monitor at $400 USD (United States Dollar), and use a 1.38 conversion rate to offer it for sale in CAD (Canadian Dollar) at $ Use tier pricing or a pricing matrix to adjust the price that a pricing rule calculates. Adjusting Prices: Explained Specify a pricing charge definition that determines the total price of an item. For example, you can add a handling fee to an item that currently includes only a sale charge and an administration charge. Managing Pricing Charge Definitions: Procedure Specify the basis that Pricing uses to calculate an adjustment according to a percent or amount. For example, sell to a distributor who ships items and handles freight and shipping, but exclude freight charges from your pricing basis. Managing Pricing Bases: Procedure Modify Pricing for Strategies and Customers See the following topics to modify pricing for strategies and customers. Description Topic Use a pricing profile to categorize customers who exhibit similar characteristics. For example, categorize a customer as high size and high revenue. Managing Pricing Profiles: Procedure Use a pricing segment to categorize customers, understand their business motivations, and to offer a pricing solution. Track pricing performance to improve revenue and profit margins. Managing Pricing Segments: Procedure Define a pricing strategy that helps you achieve a profitability goal. Managing Pricing Strategies: Procedure 14

21 Chapter 1 Introduction Related Topics Pricing Architecture: How It Works 15

22 Chapter 1 Introduction 16

23 Chapter 2 Managing Profiles, Segments, and Strategies 2 Managing Profiles, Segments, and Strategies Profiles and Segments Managing Pricing Profiles: Procedure You can use a pricing profile to categorize customers who exhibit similar characteristics. For example, you can categorize a customer as high customer size, high customer value, medium customer rating, and high revenue potential. This topic includes example values. You might use different values, depending on your business requirements. Manage pricing profiles: 1. Determine the characteristics that describe each of your customers. In this example, assume you work for Vision Corporation, a fictitious company that sells desktop and laptop computers. You need to administer pricing for the following customers: Computer Service and Rentals, and Professional Computing Solutions. Each of these businesses are large, long-established customers who have been selling to commercial, domestic corporations for a long time. Computer Associates International. A medium size, up-and-coming, new customer who sells to governments and commercial enterprises in domestic and international markets. Computers Direct to U. A brand new, just-launched company who sells direct to consumers. Vision Corporation has determined that these customers exhibit the following characteristics. Customer Revenue Potential Cost to Serve Rating Size Computer Service and Rentals Very High Medium Very High Very High Large Professional Computing Solutions Very High Medium Very High Very High Large Computer Associates International High High Medium High Medium Computers Direct to U Low Low Low Medium Small 2. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 3. On the Overview page, click Tasks, and then click Manage Customer Pricing Profiles. 17

24 Chapter 2 Managing Profiles, Segments, and Strategies 4. On the Manage Customer Pricing Profiles page, click Actions, and then click Create. 5. In the Create Customer Pricing Profiles dialog, add values from the table in step 1 for Computer Service and Rentals, and then click Save and Close For the Start Date and End Date attributes, note that you can create only one pricing profile for each customer for each time period. You cannot add a customer with multiple pricing profiles in the same time period or in time periods that overlap one another. Repeat steps 4 and 5 for Professional Computing Solutions. Repeat steps 4 and 5 for Computer Associates International. Repeat steps 4 and 5 for Computers Direct to U. Add a pricing segment that Pricing can use to match each customer to a segment. For details, see Managing Pricing Segments: Procedure. Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Pricing Segments: Procedure You can use a pricing segment to categorize sets of customers, understand their business motivations, and offer a pricing solution. You can also use it to track pricing performance and analyze similar customer situations to help you improve revenue and margins. For this example, assume you must add a corporate segment, international segment, and a domestic segment. This topic includes example values. You might use different values, depending on your business requirements. Manage pricing segments: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Pricing Segments. 3. On the Manage Pricing Segments page, click Create Pricing Segment Matrix. If the Manage Pricing Segments page already displays a pricing matrix, then you must click Delete Pricing Segment Matrix, click Yes in the Warning dialog, close and reopen the Manage Pricing Segments page, and then click Create Pricing Segment Matrix. Oracle Fusion Pricing can maintain only one pricing matrix for each deployment. 4. In the Create Pricing Segment Matrix dialog, add a check mark for each condition you must include in the matrix, and then click OK. It is recommended that you add a check mark to each condition that you require. If a row in your matrix does not require a condition, then you can leave it empty, and Pricing ignores this condition only for this row. Adding each condition simplifies future maintenance if you need to expand your matrix at some time in the future. 5. On the Manage Pricing Segments page, click Actions, and then click Add Row. 6. Add values for the first row of the following matrix. Revenue Potential Size Cost to Serve Rating Segment Precedence Very High Large Medium Very High Very High Corporate Segment 1 18

25 Chapter 2 Managing Profiles, Segments, and Strategies Revenue Potential Size Cost to Serve Rating Segment Precedence High Medium High Medium High International Segment 2 Low Small Low Low Medium Domestic Segment 7. Click Actions, click Add Row, and then add values from the second row of the matrix in step Click Actions, click Add Row, and then add values from the third row of the matrix in step Create a pricing strategy to make sure your pricing logic meets the pricing objective. For details, see Managing Pricing Strategies: Procedure. Note the following points: Pricing compares the pricing profile to each row of the pricing matrix until it finds a match. If more than one row matches, then Pricing uses the row that contains the lowest value in the Precedence. For example, if the first and second row match, and if the first row contains a precedence of 1, and the second row contains a precedence of 2, then Pricing uses the first row. For details, see Profiles, Segments, and Strategies: How They Work Together. You are not required to define a segment. However, it is recommended that you define at least one row that Pricing can use for the pricing strategy, by default. Pricing might ignore each attribute in the pricing matrix that includes an empty value, depending on whether or not the matrix class allows an empty value. For example, if the matrix class allows an empty value, then the following row assigns the Corporate pricing segment to every pricing profile that includes a Very High rating. It ignores the empty attributes, such as revenue, size, and value. Revenue Potential Size Cost to Serve Rating Segment Very High Corporate Segment Related Topics Profiles, Segments, and Strategies: How They Work Together Strategies Managing Pricing Strategies: Procedure You can define a pricing strategy that helps you achieve a profitability goal. It specifies the price lists, cost lists, discount lists, currency conversion lists, shipping rules, and return price lists that Oracle Fusion Pricing uses to help meet the pricing objective of the pricing strategy. For example, you can create a pricing strategy according to competitor pricing, to sell at a loss so that you can enter a market, to price an item differently for each pricing segment, or to price it high so that customers perceive it favorably. 19

26 Chapter 2 Managing Profiles, Segments, and Strategies Note the following: The pricing strategy references the pricing objective for the customer, such as to create interest about your item. It also references the prices and pricing policies that Pricing applies to help you accomplish this objective. You can add a price list, cost list, discount list, or currency conversion list that you have not yet approved to a strategy, and then approve the strategy. However, Pricing only uses approved lists at run time. You can specify whether or not a user can override the default price list. You can define a default currency and specify whether or not a user can override it when the user creates a sales order. The user can override the default currency only with a currency that the pricing strategy references. For the example in this topic, assume you must create a pricing strategy that implements the following functionality: Optimizes profit. References the Operations business unit of customer Computer Service and Rentals. Reference various lists in Pricing to set the prices, costs, discounts, shipping charges, and currency conversions. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work Manage a pricing strategy: 1. Create the pricing strategy. 2. Define and add lists to this pricing strategy. Create the Pricing Strategy Create the pricing strategy: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Pricing Strategy. 3. On the Manage Pricing Strategy page, click Actions, and then click Create. 4. In the Create Pricing Strategy dialog, set the following values, and then click Save and Edit. Description Name Enter Corporate Pricing Strategy. Business Unit Choose a business unit, such as Computer Service and Rentals Operations. Default Currency Choose USD. You can choose the currency that Pricing displays at run time for items that you associate with this pricing strategy. Default GL Conversion Type Leave empty. You can choose the currency conversion type that Pricing must use if it cannot find the conversion list when it converts currency in the general ledger. Objective For this example, choose Profit Maximization. You can set the Objective to help clarify the purpose of the strategy. This attribute does not affect pricing calculations. 20

27 Chapter 2 Managing Profiles, Segments, and Strategies Description Allow Price List Override Leave empty. Allows the user to specify some other price list at run time. The current release of Oracle Fusion Pricing does not support this feature. Allow Currency Override If you set Default Currency to USD, and if you: Set Allow Currency Override to Yes, then Pricing uses USD by default, but also allows the Order Entry Specialist to change USD to GBP (Pound Sterling) or EUR (Euro). If the Order Entry Specialist changes the currency, then Pricing uses the currency that the Order Entry Specialist chooses when it calculates the price. Import a source order that is not already priced, and if the source order uses GBP or EUR, then Pricing will use GBP or EUR to price the source order regardless of how you set Default Currency or Allow Currency Override. If you do not define a pricing strategy, then Pricing allows the Order Entry Specialist to choose USD, GBP, or EUR, and Pricing will use the currency that the Order Entry Specialist chooses when it calculates the price. Define and Add Lists to This Pricing Strategy Define and add the lists that this pricing strategy must reference, such as price lists, discount lists, and so on. You must define these lists before you can add them to this pricing strategy. Define and add lists to this pricing strategy: 1. Define the lists that this pricing strategy must reference. For this example, define the following lists: List Name For Instructions, see... Price List for Computer Service and Rentals Managing Price Lists: Procedure Cost List for Sentinel Standard Desktop Managing Cost Lists: Procedure Discount List for Sentinel Standard Desktop Managing Discount Lists: Procedure Shipping Charge List for Sentinel Standard Desktop Managing Shipping Charge Lists: Procedure Currency Conversion List for Sentinel Standard Desktop Managing Currency Conversion Lists: Procedure 2. On the Edit Pricing Strategy page, in the Pricing Rules tab, in the Segment Price Lists area, click Actions, and then click Select and Add. You can use each area in the Pricing Rules tab, such as Segment Price Lists, to add a price list. For details about these different types of price lists, see Managing Price Lists: Procedure. 21

28 Chapter 2 Managing Profiles, Segments, and Strategies 3. In the Select and Add dialog, search for Price List for Computer Service and Rentals, and then click OK. 4. Navigate to the Edit Price List page, and then click Close Tab. 5. On the Edit Pricing Strategy page, click Approve. Pricing sets the pricing strategy status to In Progress when you create a pricing strategy, by default. You must approve the pricing strategy so that you can use it in your deployment. 6. In the Segment Price Lists area, in the Name column, click Price List for Computer Service and Rentals. 7. On the Edit Price List page, click References, and then verify that the Name displays Price List for Computer Service and Rentals. Pricing displays each pricing strategy that references this price list. 8. Repeat steps 2 through 7 for each of the other lists that you added in step 1. For example, to add Cost List for Sentinel Standard Desktop, on the Edit Pricing Strategy page, click Costs Lists, add the cost list, navigate to the Edit Cost List page, click Close Tab, and so on. Note the following points: You can add the same list to a pricing strategy multiple times, and you can assign a different time frame each time you add it, or you can add can add multiple lists and set different time frames for them. For example, you can add a discount list that provides a 15% discount, and set the dates so that it is in effect from January through March the first time you add it, and in effect June through July the second time you add it. If you add more than one list in an area of the Pricing Rules tab or Shipping Rules tab, then Pricing applies these lists according to the lowest number that you set in the Precedence attribute. For example, assume you add two lists in the Segment Price Lists area. If you set the precedence for list x to 1, and the precedence for list y to 2, then Pricing applies list x first, and then list y. 9. Define the rules that assign a pricing segment to the pricing strategy that you created in this topic. For details, see Assigning Pricing Strategies: Procedure. Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Price Lists: Procedure Managing Pricing Guidelines: Described Assigning Pricing Strategies: Procedure You can use an assignment matrix to define the rules that assign a pricing segment to a pricing strategy. In this example, assume you must assign all sales orders that are inside sales for all customers who reside in the Corporate segment. You must assign these sales orders to the Corporate strategy. This topic includes example values. You might use different values, depending on your business requirements. Assign a pricing strategy: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job rule, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Pricing Strategy Assignments. 3. On the Manage Pricing Strategy Assignments page, examine the predefined assignments. 22

29 Chapter 2 Managing Profiles, Segments, and Strategies If a predefined assignment meets your business requirement, then it is recommended that you do not create a new one, and you can exit this procedure. 4. Immediately below the page title, click Actions, click Add Row, and then set the following values. Assignment Level Header Pricing Context Sales Transaction Type Sales Orders Start Date Choose today's date. The combination of Assignment Level, Pricing Context, and Transaction Type must specify a unique value for each time period. You cannot create identical pricing strategy assignments that include dates that overlap one another Click Save. Click Create Assignment Matrix. In the Create Assignment Matrix dialog, add a check mark to each option, and then click OK. In the Header-Sales area, click Actions, click Add Row, and then set the following values. Channel Method Inside Sales Pricing Segment Corporate Segment Transaction Type Sales Order Pricing Strategy Corporate Strategy If you create more than one row in the assignment matrix, then the combination of Assignment Level, Pricing Context, and Transaction Type must specify a unique value for each time period, and these dates must not overlap one another. You can use the matrix class when you set up Pricing to determine the attributes that you can specify in the assignment matrix. For details, see Managing Pricing Matrix Types: Procedure. 9. Click Save. Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Pricing Matrix Types: Procedure 23

30 Chapter 2 Managing Profiles, Segments, and Strategies 24

31 Chapter 3 3 Managing Lists Managing Lists Rules Pricing Rules: Explained You define pricing rules to control how Oracle Fusion Pricing calculates the price for each item. You can define a pricing rule for the following pricing entities. Pricing Entity Example Rule Price list Set the base price to $500 USD for a cell phone, and allow the user to manually adjust this price. For details, see Managing Price Lists: Procedure. Cost list Add a 5% increase to the invoice price to capture cost of goods sold. For details, see Managing Cost Lists: Procedure. Discount list Provide an 8% discount if the customer purchases a recurring service for 12 months, such as a monthly service call on a commercial kitchen appliance. For details, see Managing Discount Lists: Procedure. Shipping charge list Price shipping for a Desktop Computer at $50 for Standard Delivery and $100 for Express Delivery. For details, see Managing Shipping Charge Lists: Procedure. Currency conversion list Define the base price for a computer monitor at $400 USD (United States Dollar), and use a 1.38 conversion rate to offer it for sale in CAD (Canadian Dollar) at $ For details, see Managing Currency Conversion Lists: Procedure. Note the following points: You use a separate page to define each type of pricing list. For example, you use the Manage Price Lists page to define a price list. For details, see Managing Price Lists: Procedure. The Overview page of the Pricing Administration work area displays pricing rules that you recently updated. You can search this page to locate other pricing rules. You must click Access Set when you define a list, and then add an access set. The access set identifies the sales orders that Pricing will process. For example, if you choose Vision Operations Business Unit Set for the access set, then Pricing will only process sales orders that reference the Vision Operations business unit. You can set Access Set to Common to process sales orders for all business units. You must click Approve on the page that you use to create the list so that you can add it to a pricing strategy and so the pricing algorithm can use it. You can use the Pricing Administrator or Pricing Manager job role when you log into Pricing and edit a pricing rule. However, Pricing displays Approve only if you log in with the Pricing Manager job role, and only if you have not already approved the list. You define a list, add it to a pricing strategy, and then verify this addition. The behavior is similar for any type of list that you define. For details, see Managing Pricing Strategies: Procedure. 25

32 Chapter 3 Managing Lists You can define a tier pricing rule that adjusts the price according to the number of items that the customer orders. For example, apply a 10% discount on all items when the customer buys two or three computers, and apply a 15% discount on all items when the customer buys four or more computers. For details, see Adjusting Prices: Explained. You can add a pricing matrix that allows you to adjust the charges that you define in each list according to a set of conditions and the value of an attribute. For details, see Adjusting Prices: Explained. Specifying s for Pricing Rules You can specify the following attributes for most pricing rules. Description Business Unit Specify the business unit where Pricing applies this pricing strategy. The business unit helps you organize and report on pricing and charges according to a management hierarchy, and to make sure Pricing processes data securely for the business unit. Item Specify the item that you must add to the list, such as the AS54888 Desktop Computer. If you cannot locate the item you must add, then you must add it to the Product Model. For details, see the guide titled Oracle Fusion, Implementing Product Information Management. Pricing UOM Specify the unit of measure, such as Each. Primary Pricing UOM Add a check mark to use the value that you set in the Pricing UOM attribute as the primary pricing unit of measure. For details, see the Defining Units of Measure section of this topic. Service Duration Period If the item that you add in this line is a service, such as a maintenance service agreement for a computer system, then set the service duration period. Service Duration If the item that you add in this line is a service, then set the service duration. Associated Items If the item that you add in this line is a configured item, then click the icon in Associated Items to view the configure options. Line Type Choose one of the following values: Start Date and End Date Buy. The customer is buying the item. Return. The customer is returning the item. Specify the time period when the rule is available for processing. To create a rule that never expires, leave the End Date empty. Defining Units of Measure Pricing does not convert a unit of measure in the current release. For example, assume it receives order lines x and y, the item for each order line is AS54888, but the UOM for order line x is Each and the UOM for order line y is Box of 5. In this situation, it does not convert Box of 5 to a quantity of 5 and a UOM of Each. It also does not calculate the price for Box of 5 as five multiplied by the price for Each. So, you must add a separate line for the item in the Price List Line tab for each UOM that you sell for AS You can then click Create Charge to specify how to calculate price for Box of 5. For an example, see Managing Price Lists: Procedure. 26

33 Chapter 3 Managing Lists Note the following points: Primary Pricing UOM does not affect pricing calculations or relationships in the current release. Pricing includes it to support converting a unit of measure in a future release. You can add only one unique combination of item, unit of measure, and line type for the primary pricing UOM The following example describes the correct definition for two items where your implementation must support different units of measure for the same item. Item Description Pricing UOM Primary Pricing UOM AS54888 Desktop Computer Each Contains a check mark AS54888 Desktop Computer Box of 5 Does not contain a check mark CM15140 Computer Monitor Each Contains a check mark CM15140 Computer Monitor Box of 5 Does not contain a check mark Duplicating Lists You can copy list details to a new list, including pricing rules, modify the new list, and then save your modifications. Copying a list can help you quickly create a new list and avoid errors. You click the Duplicate icon to duplicate a list. For example: Navigate to the Overview page. Click Tasks. Click Manage Discount Lists. Search for the list you must copy. In the Search Results area, click Duplicate. Pricing displays a dialog that allows you to specify how to copy the list, such as whether or not to copy discount lines from the original discount list. Note the following points: If you modify the currency when you duplicate a list, then you might not be able to copy the charges that the original list references. For example, assume you duplicate a cost list and modify the currency to CAD (Canadian Dollar). You might not be able to copy the charges because Pricing created them for some other currency, such as USD (United States Dollar). If you duplicate charges, then you can copy all charges or only the most current set of charges. Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Pricing Strategies: Procedure Troubleshooting Pricing Rules: Explained This topic describes some remedies you can try to fix a problem that is not allowing you to use a pricing rule that you create. 27

34 Chapter 3 Managing Lists If you cannot use a pricing rule, then try the following remedies: Make sure you add the list that contains the pricing rule to a pricing strategy. Make sure you approve the list. You must click Approve on the page that you use to create the list so that you can add it to a pricing strategy and so the pricing algorithm can use it. Pricing displays Approve only if you log in with the Pricing Manager role, and only if you have not already approved the list. Make sure the transaction occurs during the time frame that you specify when you set the start date and end date for the list. Prices Managing Price Lists: Procedure You can define a price list to set the price for each item that you sell. Note the following points: You can associate multiple price lists with multiple pricing strategies. You can create multiple price lists, and then use pricing profiles, pricing segments, and pricing strategies to reference these prices lists with one or more customers. If you add a charge to an approved price list, then Pricing automatically approves the pricing entities that the charge references. It approves these entities for use in this price list. You can define the pricing charges that a price list contains for each item that the list references. You can define the following types of pricing charges. Type of Charge Description One Time Charge A one-time charge for an item, such as a one-time fee to establish a phone service. Recurring Charge A periodic charge, such as the monthly recurring charge for a phone service. For the example in this topic, assume you must add a price list that sets the base price for the AS54888 Desktop Computer at: $2,500 for each computer $10,000 for a box of five computers This topic includes example values. You might use different values, depending on your business requirements. This topic describes how to create a pricing rule. For details, including descriptions about some of the attributes that you can set, see Pricing Rules: Explained. Summary of the Work Manage a price list: 1. Create the price list. 2. Add items to the price list. 3. Add the price list to a pricing strategy. 28

35 Chapter 3 Managing Lists Note that you only add the price list to a pricing strategy the first time you create the price list. Pricing automatically implements any changes that you make after you add the price list. Create the Price List Create the price list: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Price Lists. 3. On the Manage Price List page, click Actions, and then click Create. 4. In the Create Price List dialog, set the following values. Description Name For this example, enter Price List for Computer Service and Rentals. Pricing Charge Definition For this example, choose Sale Price. You can specify the pricing charge definition that represents the value that Pricing calculates during a transaction. In most situations, you choose Sale Price. To verify your choice, examine the values that Pricing displays in the Price List Line Default s area after you choose. Make sure these values describe the items that you will add to this price list. For details, see Managing Pricing Charge Definitions: Procedure. Calculation Method For this example, choose Price. You can choose one of the following values: Price. Use the value that you set in the Base Price attribute in this price list to calculate the price. Cost. Use cost plus pricing to calculate the price. You add an adjustment to the cost that you define in the cost list, and then Pricing uses this adjustment to determine the base price. For details, see Cost Plus Pricing: Explained. Note that Pricing will use the values you set in the Price List Line Default s area of the Create Price List dialog for each item that you add to this price list. For example, if you set the Calculation Method attribute to Price in the Create Price List dialog, and then use the Price List Lines area of this price list to add item AS54888 Desktop Computer, then Pricing will set the Calculation Method attribute to Price in the Charge area for the AS54888 Desktop Computer. 5. In the Type attribute, set one of the following values. Type Description Segment Price List For this example, choose Segment Price List. Specifies the base price of an item. Choose this type to use the base price when Pricing calculates the invoice price. You use Segment Price List in most situations. You use the pricing profile to segment customers, and then assign this profile to a pricing strategy. Pricing applies the pricing adjustments that other price lists in the pricing strategy specify. It applies these adjustments to the base price, and then uses these adjusted prices to calculate the final invoice price. 29

36 Chapter 3 Managing Lists Type Description Ceiling Price List Specifies the highest price of any item that you add to this price list. Choose this type to make sure the invoice price of an item does not exceed the ceiling price. Floor Price List Specifies the lowest price of any item that you add to this price list. Choose this type to make sure the invoice price of an item is not less than the floor price. GSA Price List Choose this type for items that you sell to a government agency. GSA (General Services Administration) periodically sets these prices when it makes the GSA price list available. If the customer is not a government agency, then you cannot set the net price to a value that is less than the GSA price. GSA is an agency of the United States government that manages and supports federal agencies. 6. Click Save and Edit. Add Items to the Price List Add items to the price list: 1. In the Price List Lines tab, click Actions, click Add Row, and then set the following values. Item AS54888 Pricing UOM Each 2. Click Create Charge. 3. In the Charge area, set the following value. Pricing Charge Definition Sale Price Calculation Method Price Base Price Repeat steps 1 through 3 using the following values: Item AS54888 Pricing UOM Box of 5 Pricing Charge Definition Sale Price 30

37 Chapter 3 Managing Lists Calculation Method Price Base Price Note the following points: You must add a separate line in the Price List Line tab for each UOM that you sell for this item. You can add multiple charges to a price list line for each item to help manage the price charge so that you can achieve your profitability objective. For example, you can create a separate charge for the sale price, the administration fee, and recurring charges, and then manage them at various levels, such as individual items or all items. 5. Click Save, and then click Approve. Add the Price List to a Pricing Strategy For this example, add this price list in the Segment Price Lists area of the pricing strategy named Corporate Pricing Strategy. For details, see Managing Pricing Strategies: Procedure. Related Topics Managing Pricing Charge Definitions: Procedure Managing Pricing Strategies: Procedure Profiles, Segments, and Strategies: How They Work Together Costs Managing Cost Lists: Procedure Oracle Fusion Pricing comes predefined to apply costs from a cost list. You can also create a cost list that references a variety of charges, such as item cost, sales commission, or labor cost. You can do the following work: Use a cost list to implement cost plus pricing. Use a cost list to help calculate part of the profit margin for a charge. Separate charges to help you manage and optimize the charges and profit margins for an item, helping you improve your pricing strategy. For example, you can create a separate charge for the transport charge, installation charge, recurring service charge for maintenance, and a one-time administration fee for 50 desktop computers. Oracle Fusion Pricing adds each cost as a charge to the cost list. Manage charges at different levels, such as individual items or all items. For the example in this topic, assume you must add a cost list that includes a $35 fee for maintenance service for the AS54888 Desktop Computer that recurs one time for each month. 31

38 Chapter 3 Managing Lists This topic includes example values. You might use different values, depending on your business requirements. This topic describes how to create a pricing rule. For details, including descriptions about some of the attributes that you can set, see Pricing Rules: Explained. Summary of the Work To manage a cost list, do the following work: 1. Create the cost list. 2. Add an item to the cost list. 3. Add the cost list to a pricing strategy. Create the Cost List Create the cost list: 1. Create the pricing charge definition that Pricing must use to calculate the costs for your cost list. You must do this work before you define the cost list. For details, see Managing Pricing Charge Definitions: Procedure. 2. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 3. On the Overview page, click Tasks, and then click Manage Cost Lists. 4. On the Manage Cost List page, click Actions, and then click Create. 5. In the Create Cost List dialog, enter the following values, and then click Save and Edit. Description Name For this example, enter Cost List for Computer Service and Rentals Add an Item to the Cost List Add an item to the cost list: 1. Click Actions, click Add Row, and then set the following value. Description Item For this example, add AS54888 Desktop Computer. 2. Click Create Cost Charge. 3. In the Cost Charges area, set the following values. Description Cost Element Choose Cost of Goods Sold. You can use the cost element to monitor cost through the inventory and accounting life cycle. For example, you can monitor the material cost, overhead cost, or tax cost of an item. You can monitor each of these costs as a separate cost element. Pricing comes predefined to use Cost of Goods Sold, but you can set up pricing to use other cost elements. Pricing Charge Definition For this example, choose Recurring, and then set Price Periodicity to Month. 32

39 Chapter 3 Managing Lists Description You can use this attribute to specify the type of charge. For example, you can choose one of the following values: Cost Calculation Type Sale Price. Apply this cost to an item that the customer is purchasing. Service Price. Apply this cost to a service that the customer is purchasing, such as a one-time charge to install and setup a network of desktop computers. Recurring. Apply this cost to a recurring service that the customer is purchasing, such as monthly maintenance service for a desktop computer. For this example, choose Fixed, and then enter 35 in the Cost Amount. You can specify whether or not Pricing uses a fixed amount or a percentage. For fixed, select Fixed, and then enter a value in the Cost Amount attribute. For percentage, select Percent of Price Element, and then define the following attributes: Cost Basis Element. Select the price element that Pricing uses to calculate the cost charge, such as Base List Price. Cost Percentage. Enter a number that represents the percent to calculate for the cost charge. You can enter a percentage of a price element, such as 10% of the base list price, ceiling price, invoice price, list price, or net price. Pricing calculates the charge value at run time. For example, to calculate the cost as 15% of the base list price, set Cost Basis Element to Base List Price, and sent Cost Percentage to 15. Cost Plus Pricing For this example, leave empty. You can add a check mark to define an item price in terms of cost, such as add a $100 cost markup to the list price. For details, see Cost Plus Pricing: Explained. Cost Method For this example, leave empty. You can choose the accounting method that your company accounting policies require to account for this cost. This attribute does not affect pricing calculations or relationships. You can use it to help document how you are using this cost list. 4. Scroll to the top of the page, click Save, and then click Approve. If you add a pricing rule to a cost list that you already approved, then Pricing automatically approves the pricing entities that the rule references. It approves these entities for use in this cost list. Add the Cost List to a Pricing Strategy For this example, add this cost list to the pricing strategy named Corporate Pricing Strategy. For details, see Managing Pricing Strategies: Procedure. Related Topics Managing Pricing Charge Definitions: Procedure Managing Pricing Strategies: Procedure 33

40 Chapter 3 Managing Lists Cost Plus Pricing: Explained You can use cost plus pricing to help you calculate and analyze the profit margin that your company earns for an item in terms of the pricing charges that the item references. You can use it to optimize pricing so that it meets the pricing objective that you define. If you use cost plus pricing, then Oracle Fusion Pricing calculates the item price according to attributes that you set on the price list and the cost list. The cost of an item is the sum of the charges that you define for the item on these lists. Pricing includes only the charges that you enable for cost plus pricing as part of the cost when it calculates the price. Consider the following example that uses cost plus pricing: Cost Plus Pricing Cost Amount Cost Calculation Type Markup Selling Price Contains a check mark 345 Fixed plus 55 equals $400 Does not contain a check mark 345 Fixed For example, assume you typically sell a cellular phone according to the price that you define in the Base Price attribute of the price list of $445, and that you set the Calculation Method in the price list to Price. You decide to offer this phone to the customer for $400 using cost plus pricing. You must do the following work: 1. In the price list, set the following attributes: Calculation Method Cost Calculation Type Markup Amount Cost Calculation Amount In the cost list, set the following attributes: Cost Calculation Type Fixed Cost Amount 345 Cost Plus Pricing Add a check mark Pricing will use the following calculation at run time: Cost of $345 plus markup of $55 equals a base price of $400 34

41 Chapter 3 Managing Lists Discounts Managing Discount Lists: Procedure You can create a discount list to define discounts, profit margins, and price overrides for an item. Note the following points: You can define a discount for a variety of reasons, such as seasonal holiday discount, or volume discount according to price or quantity. For example, assume you create a pricing list that sets the base price of a cell phone at $445 with no other adjustments, which sets the list price at $445. You can define a seasonal discount of 10% from December 10 to January 1, resulting in a net price of $ You can apply a flat rate discount or a percent discount. You can use a pricing matrix to define a discount according to an item attribute and apply it to the list price at run time. For example, you can mark up the price of an extra large, red shirt by $10, and apply a 7.5% discount for a blue, large shirt. For the example in this topic, assume you must set up a pricing rule that provides a one-time, $100 discount on the sale price of a new desktop computer. This topic includes example values. You might use different values, depending on your business requirements. This topic describes how to create a pricing rule. For details, including descriptions about some of the attributes that you can set, see Pricing Rules: Explained. Summary of the Work To manage a discount list, do the following work: 1. Create the discount list. 2. Add an item to the discount list. 3. Add the discount list to a pricing strategy. Create the Discount List Create the discount list: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Discount Lists. 3. On the Manage Discount List page, click Actions, and then click Create. 4. In the Create Discount List dialog, set the following values, and then click Save and Edit. Description Name For this example, enter Discount List for Sentinel Standard Desktop. Price Type For this example, choose One Time. 35

42 Chapter 3 Managing Lists Description You can specify the type of price that Pricing uses with the item that you add to this discount list. For example: Charge Type One Time. For a one time purchase of a tangible item, such as a desktop computer. Service. For a recurring purchase, such as a service agreement for a desktop computer that bills monthly. For this example, choose Sales. You can specify the type of charge that Pricing uses for the item. For example: Charge Subtype Sale. For a tangible item, such as a desktop computer. Service. For a service, such as a service agreement for a desktop computer. For this example, choose Price. You can provide more details about the charge, such as whether the charge is a price or a fee. For example, a service charge might include an installation fee and a delivery fee. Add an Item to the Discount List Add an item to the discount list: 1. In the Discount Lines tab, click Actions, click Add Row, and then set the following attributes. Name AS54888 Description Sentinel Desktop Computer Pricing UOM Each 2. In the Discount Rules area, click Actions, click Create, and then notice the following menu items. Type of Rule Simple Rule Description For this example, click Simple Rule. Allows you to create a simple discount rule, such as: Tier Based Rule Give a 5% discount on a one-time sale price. Give a $5 discount on a recurring maintenance charge. Allows you to create a discount rule according to order amount or order quantity, such as: Give a 15% discount on each sales order that is valued at $5,000 to $10,000 or order quantity of 10 to

43 Chapter 3 Type of Rule Managing Lists Description Give a 25% discount on each sales order that is valued at more than $10,000 or order quantity greater than 20. For details, see Tier Pricing: Explained. Based Rule Allows you to create a discount rule according to an attribute of the charge. For example, to apply a 20% discount on the price of a laptop computer, you must specify the price element that Pricing uses to calculate the 20%, such as the list price, base price, or net price. 3. In the Create Discount Rule dialog, enter the following values, and then click OK. Name New Purchase Discount for AS54888 Sentinel Desktop Computer Adjustment Amount Scroll to the top of the page, click Access Sets, and then add an access set. 5. Click Save, and then click Approve. Add the Discount List to a Pricing Strategy For this example, add this discount list to the pricing strategy named Corporate Pricing Strategy. For details, see Managing Pricing Strategies: Procedure. Related Topics Managing Pricing Strategies: Procedure Shipping Charges Managing Shipping Charge Lists: Procedure You can create a shipping charge list that calculates freight, duty, handling, and insurance charges for an item. For example, you can allow your users to choose 2nd day air delivery for a desktop computer at a price of $75 for each computer, or choose ground transportation at a price of $25. In this example, assume you must create a shipping charge list that does the following: Allows your users to price shipping for the AS54888 Desktop Computer at $50 USD for Standard Delivery and $100 USD for Express Delivery. Discounts the shipping charge by 10% if the customer orders a quantity of 5 to 10 computers. Discounts the shipping charge by 25% if the customer orders a quantity of more than 10 computers. This topic includes example values. You might use different values, depending on your business requirements. This topic describes how to create a pricing rule. For details, including descriptions about some of the attributes that you can set, see Pricing Rules: Explained. 37

44 Chapter 3 Managing Lists Summary of the Work To manage a shipping charge list, do the following work: 1. Create a shipping charge list. 2. Create a pricing matrix that adds the discounts. 3. Add the shipping charge list to a pricing strategy. Create a Shipping Charge List Create a shipping charge list: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Shipping Charge Lists. 3. On the Manage Shipping Charge Lists page, in the Search Results area, click Actions, and then click Create. 4. In the Create Shipping Charge List dialog, set values for the following attribute and the other required attributes, and then click Save and Edit. Name Shipping Charge List for Sentinel Standard Desktop 5. On the Edit Shipping Charge List page, in the Shipping Charges tab, click Items. In this example, you add a shipping charge for a single item. Note that Oracle Fusion Pricing does not support the Flat Rates tab in the current release. 6. Click Actions, click Create, and then click Create Item Charge. Note that Oracle Fusion Pricing does not support Create Product Category Charge in the current release. 7. In the Create Item Charge dialog, set the following attributes. Shipping Method Standard Delivery Pricing Charge Definition Freight 8. Click Actions, click Add Row, and then set the following attributes. Name AS54888 Calculation Method Price Base Price 50 Allow Manual Adjustment Does not contain a check mark. Note that you cannot allow users to manually adjust the price in the current release of Oracle Fusion Pricing. 38

45 Chapter 3 Managing Lists 9. Click OK. 10. Repeat steps 6 through 9, except set the following values. Shipping Method Express Delivery Base Price 100 Create a Pricing Matrix That Adds the Discounts Create a pricing matrix that adds the discounts: 1. In the Search Results area, click Actions, and then click Create Adjustment Matrix. 2. In the Create Price Adjustment Matrix dialog, add a check mark to each option, and then click OK. 3. In the Adjustment Matrix area, add the following matrix. Minimum Extended Quantity Maximum Extended Quantity Adjustment Type Adjustment Amount 5 10 Discount Percent NA Discount Percent 25 To specify a maximum quantity to infinity, leave Maximum Extended Quantity empty in the row that specifies the highest value. 4. Scroll up, click Access Sets, and then add an access set. 5. Click Save, and then click Approve. Add the Shipping Charge List to a Pricing Strategy For this example, add this shipping charge list to the pricing strategy named Corporate Pricing Strategy. For details, see Managing Pricing Strategies: Procedure. Related Topics Managing Pricing Strategies: Procedure Currencies Managing Currency Conversion Lists: Procedure A currency conversion list specifies the conversion rate between two currencies, such as the US Dollar and the Canadian Dollar. You can also adjust the conversion rate to accommodate changes that occur in company policy, currency fluctuations, international monetary policy, and so on. 39

46 Chapter 3 Managing Lists Use a currency conversion list to do the following work: Define the currencies and conversion rules that Oracle Fusion Pricing uses to calculate prices at run time so the application that requires price details, such as Order Management Cloud, can display prices in the currency that the user is familiar with. If you do not specify a currency conversion list, then Pricing uses the default currency conversion list. Define price values in a single currency but offer items in multiple currencies. Reduce maintenance because you define only a minimal number of lists in Pricing for a pricing strategy when compared to defining a price list for each currency. Limit the currencies that your implementation uses to sell items. You cannot define a currency conversion list or general ledger conversion, but you can add a conversion rate for the general ledger when you define a currency conversion list. In this example, assume you must adjust the US Dollar down by 0.99 to the Canadian Dollar using a conversion rate of This topic includes example values. You might use different values, depending on your business requirements. This topic describes how to create a pricing rule. For details, including descriptions about some of the attributes that you can set, see Pricing Rules: Explained. Summary of the Work To manage a currency conversion list, do the following work: 1. Create the currency conversion list. 2. Add a conversion rate to the currency conversion list. 3. Add the currency conversion list to a pricing strategy. Create the Currency Conversion List Create the currency conversion list: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Currency Conversion Lists. 3. On the Manage Currency Conversion Lists page, in the Search Results area, click Actions, click Add Row, and then enter the following values. Description Name For this example, enter Currency Conversion List for Sentinel Standard Desktop. Add a Conversion Rate to the Currency Conversion List Add a conversion rate to the currency conversion list: 1. in the Details area, click Actions, and then click Create. 2. In the Create Conversion Rate dialog, set the following attributes. Description Base Currency For this example, choose USD - US Dollar. 40

47 Chapter 3 Managing Lists Description To Currency For this example, choose CAD - Canadian Dollar. Conversion Type For this example, choose Fixed. You can specify the source that Pricing must use for the conversion rate. You can choose one of the following values: Fixed. Define a fixed rate that you specify. If you choose Fixed, then define a rate in the Conversion Rate attribute. GL Sourced. Get rates from the GL (general ledger) conversion list or the General Ledger application. GL fixes rates for a time period, such as a yearly, quarterly, or monthly. Conversion Rate For this example, enter GL Conversion Type For this example, leave it empty. If you set Conversion Type to GL Sourced, then you must set the GL Conversion Type. For example, choose Corporate, Quarterly, Monthly, Spot, EMU Fixed, User Defined, and so on. This attribute does not affect pricing calculations or relationships. It allows you to document how you are using this currency conversion list. Adjustment Type For this example, choose Markdown Amount. You can specify how to make the adjustment, such as markdown or markup. Adjustment Amount For this example, enter 0.2. You can specify the amount or percent to apply for the adjustment. 3. Click OK. 4. Scroll to the top of the page, click Access Sets, and then add an access set. 5. Click Save. Add the Currency Conversion List to a Pricing Strategy For this example, add this currency conversion list to the pricing strategy named Corporate Pricing Strategy. For details, see Managing Pricing Strategies: Procedure. Example Conversions Consider the following example conversions that convert USD to CAD with a 1.01 conversion rate: Adjustment Type Adjustment Amount Adjustment Calculated on Conversion Rate Final Conversion Rate Markdown Amount minus 0.2 equals 0.99 Markdown Percent 20% 20% of 1.01 equals minus equals Markup Amount plus 0.2 equals

48 Chapter 3 Managing Lists Adjustment Type Adjustment Amount Adjustment Calculated on Conversion Rate Final Conversion Rate Markup Percent 20% 20% of 1.01 equals plus equals Related Topics Managing Pricing Strategies: Procedure Profiles, Segments, and Strategies: How They Work Together Managing Multiple Currencies: Procedure You can administer pricing to allow the user to choose from more than one currency in a single sales order. For the example in this topic, you configure Pricing to allow your users to order the AS5488 desktop computer from Computer Service and Rentals in the USD currency or Yen currency. Summary of the Work To manage multiple currencies, do the following work: Examine the predefined behavior. Create pricing strategies. Assign pricing strategies to pricing segment. Test your work. This topic includes example values. You might use different values, depending on your business requirements. Examine the Predefined Behavior Examine the predefined behavior: 1. Log into Order Management. 2. Create a new sales order using the following values. value Customer Computer Service and Rentals Item AS On the order header, click Actions, and then click Edit Currency Details. 4. On the Edit Currency Details dialog, click the down arrow for Order Currency, and notice that it includes only US Dollar. 5. Click OK, and then log out of Order Management. Create Pricing Strategies In this section, you create two different pricing strategies. One strategy will default to USD, and the other one will default to Yen. 42

49 Chapter 3 Managing Lists Create pricing strategies: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Pricing Strategy. 3. Create a new pricing strategy, using the following values. Name Pricing Strategy for USD Business Unit Computer Service and Rentals Default Currency USD - US Dollar Objective Allow user to choose USD Allow Currency Override Contains a check mark. 4. Create another pricing strategy, using the following values. Name Pricing Strategy for Yen Business Unit Computer Service and Rentals Default Currency JPY- Yen Objective Allow user to choose Yen Allow Currency Override Contains a check mark. Assign Pricing Strategies to Pricing Segment In this section, you assign your new pricing strategies to a pricing segment. Assign pricing strategies to pricing segment: 1. On the Overview page, click Tasks, and then click Manage Pricing Strategy Assignments. 2. Immediately below the page title, click Actions, click Add Row, and then set the following values. Assignment Level Header Pricing Context Sales Transaction Type Sales Orders 43

50 Chapter Managing Lists Start Date Choose today's date. Click Save. Click Create Assignment Matrix. In the Create Assignment Matrix dialog, add a check mark to each option, and then click OK. In the Header-Sales-Sales order area, click Actions, click Add Row, and then set the following values. Channel Method Inside Sales Pricing Segment Corporate Segment Transaction Type Sales Order Pricing Strategy Pricing Strategy for USD 7. Click Actions, click Add Row, and then set the following values. Channel Method Inside Sales Pricing Segment Corporate Segment Transaction Type Sales Order Pricing Strategy Pricing Strategy for Yen 8. Click Save and Close. Test Your Work Test your work: 1. Log into Order Management. 2. Create a new sales order using the following values. value Customer Computer Service and Rentals Item AS On the order header, click Actions, and then click Edit Currency Details. 44

51 Chapter 3 Managing Lists 4. On the Edit Currency Details dialog, click the down arrow for Order Currency, and verify that it allows you to choose US Dollar or Yen. Related Topics Managing Pricing Strategies: Procedure Assigning Pricing Strategies: Procedure Profiles, Segments, and Strategies: How They Work Together Adjustments 45

52 Chapter 3 Managing Lists Adjusting Prices: Explained You can use tier pricing or a pricing matrix to adjust the price that a pricing rule calculates. For example, assume you define a price list that includes a desktop computer and you set the base price for this item to $2,000. The following diagram illustrates how you can add tier pricing and a pricing matrix to adjust the price for this computer in two different ways. 1 2 Explanation of Callouts 46

53 Chapter 3 Managing Lists This example adds the following adjustments: 1. Tier pricing. Allows you to adjust a pricing rule according to quantity or monetary value. For example: If the quantity on the sales order is 10 to 19, then reduce the price for each unit by $200. If the quantity on the sales order is 20 or more, then reduce the price for each unit by $ Pricing matrix. Allows you to adjust a pricing rule according to the value of an attribute. For example: If the customer on the sales order is Computer Service and Rentals, then reduce the total price by $50. If the customer on the sales order is Computers Direct to U, then reduce the total price by $25. For example, if Computer Service and Rentals orders 10 computers, then this rule performs the following calculation. Description Calculation Base price for each item before tier discount $2,000. Tier The quantity of 10 places the sales order in tier 1. Tier adjustment $200 discount for each unit. Price for each unit after tier adjustment $2,000 base price minus $200 discount equals $1,800. Price for all units after tier adjustment 10 unit multiplied by $1,800 equals $18,000. Adjustment in pricing matrix $50 discount off total price. Price after tier adjustment and matrix adjustment $18,000 minus $50 equals $17,950. You can add an adjustment to the following lists. List Tier Pricing Pricing Matrix Price list yes yes Cost list yes no Currency conversion list no yes Shipping charge list no yes Returns price list no no For an example that uses a tier adjustment, see Adding Tiers to Pricing Rules: Procedure. 47

54 Chapter 3 Managing Lists For an example that uses a pricing matrix, see Managing Shipping Charge Lists: Procedure. For details about how a matrix class determines the attributes that you can choose in a pricing matrix, see Matrix Classes: Explained. Related Topics Managing Matrix Classes: Explained Tier Pricing: Explained You can add tier pricing to a pricing rule to adjust the price according to the number of items that the customer orders. For example, if the customer buys two desktop computers, then use tier 1 to apply a 10% discount, and if the customer buys four desktop computers, then use tier 2 to apply a 15% discount. This topic describes some of the attributes that you can set when you define tier pricing. For details about them, see Adding Tiers to Pricing Rules: Procedure. You can set the Application Method attribute of a tier pricing rule to one of the following values when you specify how Oracle Fusion Pricing applies this rule: Per Unit. Apply the rule to each unit. As Block. Apply the rule to a block of units. Defining Tiers for Each Unit Apply the tier pricing rule to each unit. For example, if the sales order includes a quantity of four, and if the discount is $1 for each item, then the total discount is $4. You use the following attributes when you define a tier pricing rule for each unit: Description Minimum Set the lowest value that defines the tier. Maximum Set the highest value that defines the tier. Set the Apply To attribute to All Tiers Apply the adjustment that each tier specifies. Set the Apply To attribute to Highest Tier If the quantity places the sales order in the highest tier, then apply the adjustment that the highest tier specifies to all items, and ignore all other tiers. Example of Defining Tiers for Each Unit For example, assume you must define the following tiers: Tier 1. If the customer orders a quantity of one to 10 items, then price each item at $50. Tier 2. If the customer orders a quantity of more than 10 items, then price each item at $45. Override the list price with a price that you specify for each tier. If the sales order includes a quantity of 15 items, then Pricing will assign the following items to tiers depending on whether or not you set the Apply To attribute to All Tiers or Highest Tiers: 48

55 Chapter 3 Managing Lists Tier All Tiers Highest Tier 1 10 items Not applicable 2 5 items 15 items Pricing will calculate the following values: Minimum Maximum Price Override All Tiers Highest Tier Tier $50 10 items multiplied by $50 equals $500 Not applicable Tier 2 11 $45 5 items multiplied by $45 equals $ items multiplied by $45 equals $675 $500 plus $225 equals $725 $675 Price for All Tiers Defining Tiers for Blocks You use the same attributes to define tiers for blocks of units that you use when you define tiers for each unit, plus a few more. Note the following concepts: Concept Description Block A quantity of items, such as 100 desktop computers. Increment Specifies the size of the block. For example, if you specify the Increment as 100, then the block size is 100. Partial block A block that includes only part of the full count of items that the Increment specifies for a block. For example, if the Increment is 100, then any block that includes less than 100 items is a partial block, so a block that includes a quantity of 99 is a partial block. Satisfied block A block that includes the full quantity that the Increment specifies for a block. For example, if the Increment is 100, then a block that includes a quantity of 100 is satisfied. If you set Partial Block Action to: Include Partial Block. Pricing applies the discount to each partial block and to each satisfied block. Include Satisfied Blocks. Pricing applies the discount only to each satisfied block. Examples of Defining Tiers for Blocks Assume you must define the following functionality: Tier 1. If the customer orders a quantity of 100 to 1,000 items, then price each item at $10. Tier 2. If the customer orders a quantity of 1,001 to 2,000 items, then price each item at $5. 49

56 Chapter 3 Managing Lists Tier 3. If the customer orders a quantity of more than 2,000 items, then price each item at $3. Override the list price with a price that you specify for each tier. If you set the Apply To attribute to Highest Tier Pricing, then Pricing will assign the following quantities to tiers: Minimum Maximum Increment Item Price 1 1, $10 1,001 2, $5 2,001 $3 Example of Using All Tiers or Highest Tier If the sales order includes a quantity of 2,300 items, then Pricing will assign the following quantities to each tier depending on how you set the Apply To attribute: Tier Set Apply To to All Tiers Set Apply To to Highest Tier 1 1,000 items Not applicable 2 1,000 items Not applicable items 2,300 items In this example, Pricing will calculate the following values: Minimum Maximum Increment Price Override All Tiers Highest Tier Tier 1 1 1, $10 1,000 items multiplied by $10 each equals $10,000 Not applicable Tier 2 1,001 2, $5 1,000 items multiplied by $5 each equals $5,000 Not applicable Tier 3 2,001 $3 300 items multiplied by $3 each equals $900 2,300 items multiplied by $3 each equals $6,900 Price for All Tiers Not applicable Not applicable $15,900 $6,900 Not applicable Not applicable Example of Using Include Partial Block or Include Satisfied Blocks 50

57 Chapter 3 Managing Lists If the sales order includes a quantity of 850 units, then Pricing will assign all items to tier 1, and will ignore the other tiers. It will calculate the following values depending on whether or not you select Include Partial Block or Include Satisfied Blocks. Assume the list price is $12 each: Minimum Maximum Increment Price Override Include Partial Block Include Satisfied Blocks Tier 1 1 1, $ items multiplied by $10 each equals $8, items multiplied by $10 each equals $8000 Tier 2 1,001 2, $5 Not applicable Not applicable Tier 3 2,001 $3 Not applicable Not applicable Price for All Tiers Not applicable Not applicable Not applicable Not applicable $8,500 $8000 List Price for Items Not in Satisfied Bloc Not applicable Not applicable Not applicable Not applicable Not applicable 50 items multiplied by $12 each equals 600 Total Price for All Items Not applicable Not applicable Not applicable Not applicable Not applicable $8600 Related Topics Managing Matrix Classes: Explained Adding Tiers to Pricing Rules: Procedure You can use tier pricing to adjust a pricing rule. In this example, you add tier pricing that applies the following logic on each sales order: Apply a 10% discount on all items when the customer buys two or three desktop computers. Apply a 15% discount on all items when the customer buys four or more desktop computers. For details about tier pricing and some of the attributes that you set, see Tier Pricing: Explained. Add tiers to a pricing rule: 1. Create a discount list for the AS54888 Desktop Computer. For details, see Managing Discount Lists: Procedure. 2. In the Discount Rules area, click Actions, click Create, and then click Tier Based Rule. 3. In the Create Discount Rule dialog, in the Calculation Basis area, set the following values. Description Name Enter Desktop Computer Tiered Discount. 51

58 Chapter 3 Tier Basis Type Managing Lists Description For this example, choose Item Quantity. You can choose one of the following values: Item Quantity. Adjust the tier according to the quantity of items that the customer orders. Extended Amount. Adjust the tier according to the total monetary value of the sales order. You must also select a tier basis to specify the price element that Pricing must use to calculate the tier adjustment, such as One Time or Recurring. For details about tier basis and adjustment basis, see Managing Pricing Bases: Explained. Apply To For this example, choose Highest Tier. For details, see the Setting the Apply To section in this topic. Application Method Aggregation Method For this example, choose Per Unit. For this example, choose On Line. You can choose one of the following values to specify how Pricing calculates the adjustment: On Document. Calculate according to the total quantity or total amount for the entire sales order or document. On Line. Calculate according to the quantity or amount for each order line. Note that Pricing applies the tier rule to each order line regardless of how you set Aggregation Method. Adjustment Type For this example, leave Adjustment Type empty because you specify the adjustment type in the Tiered Pricing Rules area. Note the following points: You can include different adjustment types across tiers. If you set the Adjustment Type in the header, then Pricing defaults the Adjustment Type in each line to the value that you set in the header. For details, see the Setting the Adjustment Type section in this topic. Enforce Adjustment Calculation on Each Tier For this example, make sure this option does not contain a check mark. If you add a check mark, then Pricing applies the attributes that you specify in the Calculation Basis area, such as Application Method, to each of the rules that you specify in the Tiered Pricing Rules area, and you cannot modify these attributes in the Tiered Pricing Rules area. 4. In the Tiered Pricing Rules area, define the first tier. Click Actions, click Add Row, and then enter the following values. 52

59 Chapter 3 Managing Lists Minimum 0 Note that Pricing calculates the minimum value as Minimum plus 1. For example, if you set Minimum to 0, then it will use 1 as the minimum value for the tier. Maximum 3 Application Method Per Unit Adjustment Type Discount Percent Adjustment Amount 10 Adjustment Basis List Price If you specify a percent discount, then you must specify the adjustment basis that Pricing uses to calculate the adjustment, such as list price or installation charge. For example, if the list price of a desktop computer is $500, and if you specify List Price as the adjustment basis, and if you specify an adjustment amount of 10%, then the discount is $500 multiplied by.10 equals $ In the Tiered Pricing Rules area, define the first tier. Click Actions, click Add Row, and then enter the following values. Minimum 3 Maximum Leave empty Pricing will use this tier for any sales order that includes a quantity of four or more. Application Method Per Unit Adjustment Type Discount Percent Adjustment Amount 15 Adjustment Basis List Price 6. Click OK. 7. On the Edit Discount List page, click Save, and then click Approve. Setting the Apply To You use the Apply To attribute to specify the tiers that Pricing applies. For example, assume you define the following tiers: 53

60 Chapter 3 Managing Lists Tier Quantity Tier Rule 1 Zero to three 10% discount 2 Four or more 15% discount Pricing applies these tiers differently depending on you set the Apply To attribute. For example: Quantity That Customer Orders Set the Apply To to All Tiers Set the Apply To to Highest Tier Two Apply a 10% discount on two items. Apply a 10% discount on two items. Four Apply a 10% discount on three items, and a 15% discount on one item. Apply a 15% discount on four items. Six Apply a 10% discount on three items, and a 15% discount on three items. Apply a 15% discount on six items. Setting the Adjustment Type You can use the Adjustment Type attribute to specify the following types of tier adjustments. Pricing applies these adjustments to each item, and it applies them to the value of the Adjustment Basis. In this example, Adjustment Basis is List Price, so it applies the adjustment to the list price: Adjustment Type Description Discount Amount Adjust the price according to the value that you enter. For example, if you enter 15, then decrease the price by $15. Discount Percent Adjust the price according to the discount that you specify. For example, if you enter 15, then decrease the price by 15%. Markup Amount Adjust the price according to the value that you enter. For example, if you enter 15, then increase the price by 15$. Markup Percent Adjust the price according to the markup that you specify. For example, if you enter 15, then increase the price by 15% of the tier basis. Price Override Adjust the price according to the value that you enter. For example, if you enter 15, then adjust the price by $15. Related Topics Managing Matrix Classes: Explained 54

61 Chapter 3 Managing Lists Modifying Prices on Order Lines: Procedure You can modify how Oracle Fusion Pricing calculates the pricing details that Order Management Cloud displays for an order line. For example: Set the unit price. Set the start and end dates when the price applies. Use an adjustment matrix. For example, you can apply a discount according to quantity. Use a tier adjustment. For details, see Managing Price Lists: Procedure. For the example in this topic, assume you must modify a predefined price list that references the AS54888 Desktop Computer so that it uses the following pricing: Reduce the base price from $2,500 to $2,000 for each computer. If the order line quantity is 10 or more, then discount the sale price by 20%. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To modify prices on order lines, do the following work: 1. Examine the current behavior. 2. Modify the price list. 3. Verify your work. Examine the Current Behavior Examine the current behavior: In the Navigator, click Order Management. On the Overview page, click Tasks, and then click Create Order. Complete attributes in the header. In the Order Lines area, add an item. For this example, assume you add the following item: Item AS54888, Desktop Computer Quantity 10 UOM Each Sale Price 2,500 55

62 Chapter 3 Managing Lists 5. Click 2,500 next to Sale Price, and then examine the following details. You will modify the price list so that it applies a unit price of $2,000, and a discount of 20%. 6. Click Done, and then log out of Order Management. Modify the Price List Modify the price list: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Price Lists. 3. On the Manage Price List page, enter the following value, and then click Search. Name Corporate Segment Price List 4. In the Search Results, click Corporate Segment Price List. 5. On the Edit Price List page, enter the following value, and then click Search. Item AS Enter the following value. Base Price Click the down arrow next to Create Charge, and then click Create Price Adjustment Matrix. 8. In the Create Price Adjustment Matrix dialog, add a check mark to Ordered Quantity, and then click OK. 9. In the Sale Price, Price Adjustments area, add the following row. 56

63 Chapter 3 Managing Lists Ordered Quantity Adjustment Type Adjustment Amount 10 Discount Percent Click Save and Close, and then log out of Pricing. Verify Your Work Verify your work: In the Navigator, click Order Management. On the Overview page, click Tasks, and then click Create Order. Complete attributes in the header. In the Order Lines area, add an item. For this example, assume you add the following item: Item AS54888, Desktop Computer Quantity 10 UOM Each Sale Price 1, Click 1,600 next to Sale Price, and then verify that the dialog displays the following values. Related Topics Pricing Sales Orders: How It Works 57

64 Chapter 3 Managing Lists Allowing Users to Adjust Price: Procedure In some situations, it might be necessary for an authorized person to adjust the net price on the order line for an item. For example, to offer a customer a discretionary discount. You can configure Oracle Fusion Pricing to allow this person to adjust price and at the same time control the adjustment amount to prevent an unprofitable discount. You can set up Pricing to allow a user to do the following work: Adjust the net price according to a percent of the list price or net price. Adjust the net price according to a value. Set a new value for the net price. Apply one or more adjustments to a charge for each order line. Specify a reason for the adjustment. Pricing validates each manual price adjustment against the pricing guidelines that you define in Pricing. A pricing guideline can control the amount of net price to adjust. For example, it can prevent a manual price adjustment from exceeding 50% of the list price. Note that Pricing can apply a manual price adjustment for a configured item only to the price of the entire item. It cannot apply this adjustment to a configure option. This topic assumes you already set up Pricing. For details, see Managing Oracle Fusion Pricing: Roadmap. This topic includes example values. You might use different values, depending on your business requirements. In this example, you will allow users to adjust the sale price for the AS54111 item. Allow users to adjust the price: 1. In the Navigator, click Pricing Administration. 2. On the Overview page, on the Pricing Rules tab, in the Name column, click Corporate Segment Price List. 3. On the Edit Price List page, in the Search area, enter the following value, click Search, and then wait for the result to display. Item AS In the AS54111 Charge area, on the Sale Price row, make sure Allow Manual Adjustment contains a check mark. Related Topics Managing Oracle Fusion Pricing: Roadmap Managing Pricing Guidelines: Described 58

65 Chapter 4 Managing Charges, Elements, Parameters, and Rounding 4 Managing Charges, Elements, Parameters, and Rounding Managing Pricing Charge Definitions: Procedure You can create a pricing charge definition that defines the charges Oracle Fusion Pricing combines to determine the total price for an item. For example, an item might include multiple charges, such as a one-time sale charge and an administration charge. You can create a pricing charge definition that adds a handling fee to this item. You reference a pricing charge definition from a pricing rule that you create in the Pricing Administration work area. For examples, see Managing Price Lists: Procedure and Managing Cost Lists: Procedure. Manage pricing charge definitions: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Charge Definitions. On the Manage Pricing Charge Definitions page, in the Search area, set Active to Yes, and then click Search. Examine the pricing charge definitions that come predefined with Pricing, such as for price, shipping, freight, handling, insurance, or returns. To reduce maintenance, it is recommended that you use a predefined pricing charge definition instead of creating a new one. 7. If you cannot locate a pricing charge definition that meets your requirements, then click Actions, click Add Row, and then set the following attributes. Description Applies To Apply the pricing charge definition to a price charge, return charge, or a shipping charge. Note that Pricing does not come predefined to process a return charge, such as a restocking fee, but you can use the Manage Returns Price Lists page to configure a returns price list. Price Type Charge Type Specify whether the charge that Pricing associates with an item is One Time or Recurring. Use Recurring for a charge that recurs, such as a subscription. Specify the type of charge that Pricing associates with an item. For example: Sale. For a tangible item, such as a computer monitor. Service. For a service, such as performing service on a computer monitor. Freight. For freight charges, such as the charges incurred to ship an item. Charge Subtype Provide details about the charge, such as whether the charge is a Price or a Fee. For example, a service charge might include an installation charge and a delivery fee. Price Periodicity UOM Class Specify the time period when Pricing applies a recurring charge. For example, Weekly or Monthly. 59

66 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Description Tax Charge Type Specify how to use this pricing charge definition for tax purposes, such as Commercial discount, Freight charge, Insurance charge, Miscellaneous charge, or Packing charge. Refundable Add a check mark to allow Pricing to refund the charges that this pricing charge definition references. Setup Enabled Add a check mark to associate the pricing charge definition with pricing entities. Note the following points: Active If the Active option contains a check mark, and if the Setup Enabled option does not contain a check mark, then the pricing charge definition can use the pricing entities that it currently references, but you cannot associate other pricing entities with the pricing charge definition. If you must disable a pricing charge definition but must not delete it because historical data continues to use it, then remove the check mark from Setup Enabled. Pricing will prevent you from assigning a pricing charge definition to a pricing entity in the Pricing Administration work area, but the pricing charge definition will remain active so that it can support records that contain historical data. Add a check mark to make the pricing charge definition available for use. You must make sure the Setup Enabled option and the Active option each contain a check mark so that Pricing can use the pricing charge definition at run time. Calculate Margin Add a check mark to calculate the profit margin for the pricing charge definition. Related Topics Managing Price Lists: Procedure Managing Cost Lists: Procedure Oracle Fusion Pricing: Overview Managing Price Elements: Procedure A price element is a pricing entity that a pricing algorithm uses to capture the different types of prices, costs, adjustments, taxes, or profit margins that it requires to create a price breakdown or pricing analytic. You can use a price element to capture different price points in a price calculation. Base list price, tier adjustment, list price, discount adjustment, net price, and cost of goods sold are each an example of a price point. Pricing calculates the value for each price element when it runs the pricing algorithm. For example, list price is an example of a price element. It might calculate the value of the list price for the AS54888 Desktop Computer at $2,500. For details, see Pricing Architecture: How It Works. Manage price elements: 1. Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. 2. In the Navigator, click Setup and Maintenance. 3. On the Setup and Maintenance page, click Order Management, and then click Setup. 60

67 Chapter 4 Managing Charges, Elements, Parameters, and Rounding 4. On the Setup page, search for, and then open Manage Price Elements. 5. On the Manage Price Elements page, in the Search area, set Active to Yes, and then click Search. 6. Examine the price elements that come predefined with Pricing. To reduce maintenance, it is recommended that you use a predefined price element instead of creating a new one. 7. If you cannot locate a price element that meets your requirements, then click Actions, click Add Row, and then set the following attributes. Description Element Code Enter a unique code that identifies the price element. This code makes sure you do not create a duplicate price element that might result in a conflict error. Element Name Enter a name. Pricing displays this name in the price breakdown and in the Pricing Administration work area. You can modify the name of a predefined price element. Type Active Choose a type, such as Price or Cost. Add a check mark. Pricing only uses pricing elements that are active. If a pricing entity: Does not reference the price element. You can remove the check mark to remove the price element from calculations, but to keep it for possible later use. References the price element. You cannot remove the check mark. Related Topics Managing Pricing Algorithms: Explained Managing Price Lists: Procedure Managing Cost Lists: Procedure Managing Pricing Bases: Procedure You can specify the pricing basis that Oracle Fusion Pricing uses to calculate an adjustment. It references a price element, such as List Price or Invoice Price, to calculate the discount that it applies on an item. The price element is one of the components on the pricing charge. You can manage the following types of pricing bases: Type of Pricing Basis Adjustment Basis Description Adjust the price according to a percent. Note the following points: For example, you can create an adjustment basis that applies a 20% discount on the list price of a network of desktop computers. For another example, apply a 10% discount on the installation charge for a network of desktop computers. 61

68 Chapter 4 Type of Pricing Basis Managing Charges, Elements, Parameters, and Rounding Description Tier Basis You can define the adjustment on the list price, base price, or net price, resulting in different invoice values for the network of computers. Adjust the price according to an amount. Note the following points: A tier basis aggregates price for a single pricing charge or a set of pricing charges. For example, if a one-time sale charge is greater than $2,000, then apply a 10% discount on the base price. For another example, determine the one-time sale charges for the QP LIST PRICE charge component. The tier basis contains the details of the pricing charges and the charge components that Pricing uses to calculate the adjustment. It references the price type, charge type, charge subtype, and price periodicity. This information is important when multiple charges exist for an item. You can include or exclude charges. For example, assume a third-party contractor installs the item you sell, so you do not want to offer a discount on the installation. You can create a pricing basis that includes only the one-time sale charge and a monthly recurring service charge, but that excludes the one-time installation charge. You can specify whether or not the tier basis applies to each order line or to the entire sales order. To calculate the tier basis at run time, Pricing aggregates the charges that match the criteria you define. For the example in this topic, assume you must add a tier basis for the sale, installation, and monthly service for a network of desktop computers. Assume you must apply this tier basis on the following charges: A one time charge on the list price of the sale A one time charge on the list price of the installation fee A recurring charge on the list price of the monthly service fee Assume you sell to a distributor who ships the item and handles the freight and shipping charges, so you must exclude freight charges from your pricing basis. This topic includes example values. You might use different values, depending on your business requirements. Manage a pricing basis: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Bases. On the Manage Pricing Bases page, in the Search area, set Active to Yes, and then click Search. Examine the pricing bases that come predefined with Pricing. To reduce maintenance, it is recommended that you use a predefined pricing basis instead of creating a new one. 7. If you cannot locate a pricing basis that meets your requirements, then click Actions, and then click Create. 8. On the Create Pricing Basis page, set the following attributes. Usage Tier Basis Price Element List Price Price Type One Time 62

69 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Charge Type Sale Charge Subtype Price Active Contains a check mark 9. Click Add Charge Criteria. 10. In the Criteria for Included Charges area, notice that the Create Pricing Basis page already added a row that includes the criteria that you specified in step Add the criteria for the installation fee. In the Criteria for Included Charges area, click Actions, click Add Row, and then set the following values. Price Type One Time Charge Type Sale Charge Subtype Fee 12. Add the criteria for the monthly service fee. In the Criteria for Included Charges area, click Actions, click Add Row, and then set the following values. Price Type Recurring Charge Type Service Charge Subtype Fee Price Periodicity Month Note the Pricing gets the values that it displays for Price Periodicity from the UOM class that you define in the pricing charge definition. If you do not define this UOM class, then Pricing gets these values from the Default Pricing Periodicity UOM class. For details, see Managing Pricing Charge Definitions: Procedure. 13. Add the criteria for the excluded charges. In the Criteria for Excluded Charges area, click Actions, click Add Row, and then set the following values. Price Type One Time Charge Type Freight 63

70 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Charge Subtype All 14. Click Save. 15. Reference your pricing basis from a pricing rule that you create in the Pricing Administration work area. For details, see Adding Tiers to Pricing Rules: Procedure. Related Topics Adding Tiers to Pricing Rules: Procedure Oracle Fusion Pricing: Overview Pricing Rules: Explained Managing Pricing Parameters: Procedure A pricing parameter allows you to manage behavior that applies across the Pricing Administration work area. Each pricing parameter comes predefined with Oracle Fusion Pricing. You cannot create or delete a pricing parameter, but you can modify a parameter value. Manage pricing parameters: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Parameters. On the Manage Pricing Parameters page, modify the following parameters, as necessary. Pricing Parameter Description Default Price Periodicity UOM Class Set the default value that Pricing displays in the Pricing Administration work area for the price periodicity attribute. Pricing uses this value for each recurring charge or usage charge for this attribute. For example, you can set the default value to Weekly, Monthly, or Per Quarter. If you set it to Weekly, then Pricing displays Weekly as the default value for price periodicity when you create a pricing entity, such as a price list, in the Pricing Administration work area. For details about how you set price periodicity, see Managing Pricing Charge Definitions: Procedure. Item Validation Organization Specify the item validation organization that Pricing uses for each business unit when it validates an item. Note the following points: Pricing filters the items that it displays according to the item validation organization that you specify. For example, if you specify Vision Operations as the business unit, and V1 as the Organization, then Pricing only displays items that are part of the V1 organization when you create a pricing entity in the Pricing Administration work area. Product Information Manager associates each inventory organization with a business unit, and it determines the values that you can choose for the organization. For details 64

71 Chapter 4 Pricing Parameter Managing Charges, Elements, Parameters, and Rounding Description Product Catalogs about how to set up Product Information Manager, see the guide titled, Implementing Common Features for. If you do not define an item validation organization, then you cannot view items in the Pricing Administration work area. Choose the product catalog that Pricing uses to calculate the price, adjustments, and costs for each item according to a product catalog. Note that Pricing does not support product catalogs in the current release. 6. Click Save. Related Topics Oracle Fusion Pricing: Overview Pricing Rules: Explained Managing Price Lists: Procedure Managing Rounding Rules Managing Rounding Rules: Procedure You can use a rounding rule to replace a value with some other value that is shorter, simpler, or more explicit. You can apply a rounding rule to a price to make sure that you apply rounding consistency across pricing algorithms. You can create a complex rounding rule. For example, you can create the following rounding rules to meet the needs of a local cultural preference, or that your company policy requires: Round each price to 0.97 or 0.99 for companies that reside in the United States, and round each price to 88 for companies that reside in China. Round each price that includes a value: Between 1 and 100 to a precision of 4 Between and to a precision of 2 Greater than to a precision of 0 Summary of the Work To manage a rounding rule, do the following work: 1. Create a rounding rule. 2. Assign the rounding rule to a currency. This topic includes example values. You might use different values, depending on your business requirements. Create a Rounding Rule Create a rounding rule: 1. Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. 65

72 Chapter Managing Charges, Elements, Parameters, and Rounding In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Rounding Rules. On the Manage Rounding Rules page, in the Name attribute, enter %, and then click Search. The Manage Rounding Rules page displays the predefined rounding rules. 6. Examine the predefined rounding rules. To reduce maintenance, it is recommended that you use a predefined rounding rule instead of creating a new one. 7. If you cannot locate a rounding rule that meets your requirements, then click Actions, click Add Row, and then set the following values. Name Description Enter text that Pricing can use to reference this rounding rule. It is recommended that you use the following style: Enter alphanumeric text. Use headline capitalization. Use an underscore to separate each word. Type For details, see Rounding Rule Types: Explained. Round To For details, see Rounding Rule Types: Explained. Direction Set to one of the following values: Incremental Setup Enabled Down. Round values down. Standard. Round values according to a standard. Standard makes sure Pricing performs mathematical, half up rounding, such as rounding $1.75 up to $2. For details, see Rounding Rule Types: Explained. Do one of the following: Active Up. Round values up. Add a check mark. Make this rounding rule available at run time. Remove the check mark. Make this rounding rule available at run time, but prevent a user from assigning a currency to it on the Manage Rounding Rule Assignments page. This feature is useful when you must discontinue usage of a rounding rule but cannot delete it because historical data still uses it. Add a check mark to make this rounding rule available at run time. 8. Click Save and Close. Assign the Rounding Rule to a Currency As an option, you can assign the rounding rule to a currency. If your business uses multiple currencies, then you can specify the currency that the rounding rule affects. This feature allows you to create multiple rounding rules, and then assign a different currency to each of them. 66

73 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Assign the rounding rule to a currency: 1. On the Setup page, search for, and then open Manage Rounding Rule Assignments. 2. On the Manage Rounding Rule Assignments page, click Actions, click Add Row, and then set the following values. Description Currency Choose the currency that you must assign to this rounding rule. Rounding Rule Choose the rounding rule that you created earlier in this topic. At run time, Pricing will apply this rounding rule only to an item that uses the currency that you set in the Currency attribute. 3. Verify your work. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Algorithms: Explained Types of Rounding Rules: Explained You can create different types of rounding rules. You can create the following types of rounding rules. Round to precision Round to nearest Round to the nearest multiple Round to range Round to Precision Consider the following examples that use round to precision, where Round To specifies to round according to a decimal place value. Price Round To Direction Rounded $ Up $16.00 $ Down $15.00 $ Standard $16.00 $ Standard $ Standard

74 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Price Round To Direction Rounded $ Standard 190 $ Standard 200 $ Standard Round to Nearest Consider the following examples that use round to nearest, where Round To specifies the value to use when rounding. Price Round To Direction Incremental Rounded $ Up 0.10 $0.25 $ Down 0.10 $0.15 $ Standard 0.10 $0.25 Note that Pricing adds the Increment according to the value that you set for Round To. You can also manually modify the Increment. You can specify an increment of a whole, a tenth, a hundredth, or a whole multiple of a decimal, such as 0.5 or Round to the Nearest Multiple Consider the following examples that use round to the nearest multiple to round to the nearest multiple of the Round To value. For example, if you set Round To to 5, then the multiples of Round To are 5, 10, 15, 20, and so on. Note that the Standard direction rounds down to the nearest value. Price Round To Direction Rounded $ Up $20.00 $ Down $15.00 $ Standard $15.00 Round to Range Consider the following examples that use round to range to round to a range of values that you specify. Price Round Rounding Rule Type Rounded Direction Increment $0 100 Round to nearest 0.99 Standard 1 $100 10,000 Round to nearest 9 Standard 10 68

75 Chapter 4 Managing Charges, Elements, Parameters, and Rounding Price Round Rounding Rule Type Rounded Direction $10,000 10,500 Round to value 10,500 Standard Increment You can identify multiple ranges and define a separate rounding rule for each of these ranges. You can use the following round rule types. Round to precision. Round to a precision. Round to nearest. Round to the nearest value. Round to the nearest multiple. Round to the nearest multiple of the value. Round to value. Round to a fixed value. You can set only one rounding rule for each range of values. 69

76 Chapter 4 Managing Charges, Elements, Parameters, and Rounding 70

77 5 Chapter 5 Performing Various Administrative Work Performing Various Administrative Work Import Pricing Importing Price Lists: Procedure You can use the Price List Import Template to import price lists into Oracle Fusion Pricing. This template contains a structure that the Oracle database requires. It includes a tab for each database table, and it displays these tabs in a specific sequence. It includes columns on each tab that represent table columns, and it specifies the data type that Oracle requires for each database column. Summary of the Work Import price lists: Prepare your price list. Create the import file. Upload your price list. Import your price list. You can use this procedure to create a price list that includes child objects. You can also use the Pricing Administration work area to create a price list, but you must manually add each child object. Prepare Your Price List You must convert your price list into a CSV (comma separate values) file that uses the same structure that the Price List Import Template uses. Using this template helps to make sure your converted price list uses the same structure that the Oracle database requires. This topic describes one recommended way to convert your price list. The details of your conversion might require a different way. If you cannot use the Price List Import Template for some reason, then it is recommended that you consult Oracle resources about how to use an open interface when importing data. Convert your price list into a CSV file: 1. Download the Price List Import Template from the Price List topic in the book titled File-Based Data Import for Oracle Supply Chain Management Cloud on Oracle Help Center at 2. Use a spreadsheet editor that can read a CSV file, such as Excel, to open the Price List Import Template, and then familiarize yourself with the structure that it uses. 3. Use a data manipulation tool to structure your price list so it mirrors the structure that the Price List Import Template contains, and then save this data to a CSV file. You can use SQL (Structured Query Language), ODI (Oracle Data Integrator), or some other tool to convert your price list into a CSV file. Guidelines for Converting Your Price List Into a CSV File You must create a CSV file that includes data for interface tables and columns when you do the conversion. Do the following work to make sure the structure that this CSV file contains mirrors the structure that the Price List Import Template contains: Include the same table names and column names in your CSV file that the templates uses. 71

78 Chapter 5 Performing Various Administrative Work Sequence the tables in your CSV file in the same sequential order that the templates uses. The tab sequence that the template uses determines this sequential order. Include the same columns in each table in your CSV file that the templates uses, and arrange these columns in the same sequential order inside each table. Use the same data type for each column. Include data for all required columns. The Price List Import Template uses an asterisk ( * ) to indicate required columns. For example, the Calculation Method column on the PRICE_LIST_CHARGES_INT tab is required. Note that the import might require some columns depending on conditions that apply to your usage. The Price List Import Template uses double asterisks ( ** ) to indicate a set of required columns. You must include a value for at least one column in each set. For example, the template uses double asterisks with UOM Code and UOM Name to indicate that they constitute one set. You must include a value for at least one of these columns. To view an example of this CSV structure, do the following work: Open the Price List Import Template in Microsoft Excel. Click the PRICE_LISTS_INT tab. Choose File, Save As, and then click Excel Workbook. Save the file as a.csv file, and then use a text editor to examine the output. Create the Import File Create the import file: 1. Prepare the Price List Import Template. Use a spreadsheet editor that can read a CSV file, such as Excel, to open the Price List Import Template. Delete the example data from the Price List Import Template. This template comes with example data that helps you determine the type of data that you must include. For example, row five of the PRICE_LISTS_INT tab includes example data. Make sure you delete all example data from all tables in the spreadsheet, even from tables that you do not require. 2. Copy and paste your price list into each of the tables in the Price List Import Template: Use a spreadsheet editor to open the CSV file that contains your price list. Copy your line data to the clipboard. In the Price List Import Template, click the PRICE_LISTS_INT tab. Click cell A5, and then paste your data. Examine the results to make sure you correctly pasted the data. For example, make sure the Name column contains VARCHAR data, and that the Source Price List ID column contains NUMBER data. Continue copying data for each table until you finish copying all your price list into the Price List Import Template. Do not modify the tab sequence in the template or the column sequence on each worksheet. Modifying the template in this way will cause errors. Do not delete any tabs. It is recommended that you save your work after each copy. 3. Create the import file: Click the Create CSV tab, and then click Generate CSV File. If the Generate CSV File button is not active, then click Developer in the menu bar, and then click Macros. In the Macro dialog, choose GenCSV, and then click Run. 72

79 Chapter 5 Performing Various Administrative Work Wait for the macro in Excel to finish running. When the macro finishes running, Excel displays a dialog that allows you to save a.zip file. In the save dialog, choose a location to save your.zip file, and then click Save. The macro creates a.zip file that includes a separate file for each table that the template contains. Upload Your Price List Upload your price list: 1. Log into Pricing Administration. You must use the Import Price Lists privilege or the Import Approved Price Lists privilege when you log in. 2. In the Navigator, under Tools, click Scheduled Processes. 3. On the Scheduled Process page, click Schedule New Process. 4. In the Schedule New Process dialog, set the following attribute, and then click OK. Name Load Interface File for Import 5. In the Process Details dialog, set the following parameters. Parameter Description Import Process Choose Import Price List. Data File Do the following work: a. b. c. d. Click the down arrow in the Data File attribute. Scroll down, and then click Upload a New File. In the Upload File dialog, click Choose File. In your Windows Explorer window, locate and choose the.zip file that you created when you used the Price List Import Template, and then click Open. e. In the Upload file dialog, click OK. f. In the Process Details dialog, make sure the Data File attribute displays the name of the.zip before you continue Click Submit. In the Confirmation dialog, note the value of the Process ID, click OK, and then click Close. Click Actions, and then click Refresh. Use the Process ID that you noted earlier to locate your scheduled process, and then make sure the Status attribute for this process displays Succeeded. The Succeeded status indicates that the scheduled process successfully uploaded your price list. If the upload fails on any row, then the status displays Error. If the Search Results list does not display your process, then click Refresh until it does. 10. Correct errors, if necessary: If the scheduled process ends in an error, then click the Error status in the Search Results list for your scheduled process, and then examine the log and output files to get details about the data that caused the error. 73

80 Chapter 5 Performing Various Administrative Work Use Excel to open the Price List Import Template that contains your price list, and then correct the price list that is causing the error. In the Price List Import Template, click Generate CSV File, and then run the scheduled process again. Repeat this step until the scheduled process successfully uploads your price list. Import Your Price List Import your price list: 1. Run the Import Price List scheduled process. In the Process Details dialog, set one of the following parameters. Parameter Description Price List Name Enter the name of the price list. Import Request ID Enter the identification number that you noted in step 8 of the Upload Your Price List section of this topic. Commit Point Accept the default value of 100, or enter an integer that sets the maximum number of records to import at one time. For example, if Commit Point is 100, then the import will import 100 records at a time. Number of Child Processes Enter an integer that sets the maximum number of child processes to run during the import. If the number of records to import is: Less than one hundred. The import runs two child processes, by default. More than one hundred. The import runs four child processes, by default. 2. Make sure the Status for the Import Price List scheduled process that you submitted is Succeeded. The Succeeded status indicates that the scheduled process successfully imported your price list. If the import fails on any row, then the status displays Error. 3. Verify your import: Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Price Lists. Search for the price list that you imported. Verify that the Manage Price Lists page displays the price lists that you imported. Interface Tables That the Price List Import Template Uses The Price List Import Template includes a tab for each of the following interface tables. Table Name Information That This Table Must Contain QP_ PRICE_ LISTS_INT Price list header data. QP_ PRICE_ LIST_SETS_INT Access set data. 74

81 Chapter 5 Performing Various Administrative Work Table Name Information That This Table Must Contain QP_ PRICE_ LIST_ ITEMS_INT Item line data. QP_ PRICE_ LIST_ CHARGES_INT Pricing charges defined for the item. QP_ TIER_ HEADERS_INT Tier header defined for the charge. QP_ TIER_ LINES_INT Tier lines defined for the tier header. QP_ PL_ COMP_ ITEMS_INT Component item line data. QP_ MATRIX_ DIMENSIONS_ INT matrix defined for the charge. QP_ MATRIX_ RULES_INT matrix rules defined for the matrix. Troubleshooting Price List Import Perform the following steps until you resolve the problem: 1. Click the job for the scheduled process that you ran earlier in this topic, open the attachments in the details section, and then examine the following log files. Log File Description.txt files created for the Import Price List Header job, the Access Set, or the Import Price List Items job. Describes the error..log files created for the Import a Price List job or the Import Price List job. Describes the status of the child jobs. 2. Make sure the status of the Load Interface file for the import job is Succeeded and is not in a Warning or Error state. 3. Make sure you correctly set the parameters when you run the Import Price List job. 4. Examine the server logs and the Enterprise Manager logs. If the scheduled process does not create the.txt file for the job, then a problem might exist with the database or some unknown exception might have occurred. It is recommended that you examine the server logs or the Enterprise Manager logs for the job that does not create a.txt file. 5. Examine the interface tables. Examine the Enterprise Manager Logs Do the following work: 1. Log into Enterprise Manager. 2. In the Oracle Fusion Supply Chain Management tree, expand Farm_SCMDomain, and then expand Scheduling Services. 3. Right-click ESSAPP, click Job Request, and then click Search Job Request. 4. In the Request Search area, enter the following details, and then click Search. 75

82 Chapter 5 Performing Various Administrative Work Description Request ID Enter the job Id. 5. In the Request Details area, examine the results, click Action, click Request Log, examine the error log, and then correct the problem that the error log displays. Examine the Interface Tables Do the following work: 1. Get administrative access so that you can query the Oracle database. 2. Query the interface tables, and then examine the following status. Status Description NEW Not processed. ERROR Processed but includes a data error. VALIDATED Processed but not imported because one or more children contain an error. IMPORTED Successfully imported. For details about these tables, see the Interface Tables That the Price List Import Template Uses section in this topic. 3. Examine the IMPORT_STATUS_CODE column of the QP_PRICE_LISTS_INT table. This column describes the overall status of the price list. It includes the following values. Status Description COMPLETED The scheduled process imported the price list and each child entity. PARTIAL The scheduled process imported only part of the price list. Pricing uses the following hierarchy. You can use the status of each item in this hierarchy to help isolate where the error occurs: Price List Header Item Component Item Charge Charge Tier Tier Header Tier Line Matrix Matrix Dimension Matrix Rules For example, Item is a child of Price List Header, Component Item is a child of Item, and Charge is a child of Component Item. 76

83 Chapter 5 Performing Various Administrative Work Pricing processes each child entity only if the parent is valid. If the parent: Does not fail validation. If a child errors, then the status of the parent is VALIDATED and the child status is ERROR, VALIDATED, or NEW. Fails validation. The parent status is ERROR and the status for each child is NEW. For example, if a charge error occurs, then the hierarchy will contain the following values: Price List Header, IMPORTED Item, VALIDATED Component item Charge Charge Tier, NEW Tier Header Tier Line Matrix, NEW Matrix Dimension Matrix Rules For another example, if a tier header error occurs, then the hierarchy will contain the following values: Price List Header, IMPORTED Item, VALIDATED Component item Charge Charge, VALIDATED Tier Tier Header Tier Line, NEW Matrix, VALIDATED Matrix Dimension Matrix Rules Related Topics Managing Price Lists: Procedure Managing Pricing Rules and Pricing Profiles in Spreadsheets: Explained You can use a Microsoft Excel workbook to modify more than one price list, discount list, or customer pricing profile to reflect changes to your pricing policies and profitability targets. You can apply these changes to multiple objects, such as all of your price lists, in Oracle Fusion Pricing. 77

84 Chapter 5 Performing Various Administrative Work You use the following client and server environment. Pricing Administration Work Area 3 Oracle Fusion Server 2 Search, Create, Read, Update, Delete 1 Download Your Laptop Explanation of Callouts Do the following work: 1. Download a spreadsheet from the Pricing Administration work area. 2. Perform search, download, create, read, update, and delete actions on Pricing data in Excel, and then upload your work to the Oracle Fusion server. 3. The server displays your changes in the Pricing Administration work area. 78

85 Chapter 5 Performing Various Administrative Work You can use the workbook to do the following work: Manage price list data, including items, charges, tier adjustments, and matrix adjustments. Manage pricing data across multiple price lists and business units. Perform operations on items, service items, coverage items, or configuration models. You can also perform operations on all items. Manage Manage Price Lists and Discount Lists Description You can do the following work: Manage Customer Pricing Profiles Download charges or discounts from the Pricing Administration work area to an Excel spreadsheet. Create and update base list prices and list prices across multiple price lists in Excel. Create and update discounts across multiple discount lists in Excel. Search for and adjust pricing charges or discounts according to attribute, such as Price List Description or Discount List Description, Pricing Strategy, Business Unit, Currency, Status, Item Number, Description, Charge Definition, Price Type, Effectivity Date, and so on. Upload your changes to the Oracle Fusion server. You can do the following work: Download profiles from Pricing to an Excel spreadsheet. Edit or create new profiles in Excel. Search for and adjust profiles according to attribute, such as Customer Name, Revenue Potential, Cost to Serve, Customer, Customer Rating, Customer Size, Effectivity Date, and so on. Upload your changes. For details about how to use the spreadsheet, see Managing Pricing Rules and Pricing Profiles in Spreadsheets: Procedure. Guidelines Use guidelines in this section to help you get started. Guidelines for Downloading the Spreadsheet and Searching Data It is recommended that you use the following guidelines when you download the spreadsheet and search data: Download the workbook only one time. For subsequent uses, open the xls file directly on your local computer. You can save and move the workbook file to any location on your laptop, or even copy it to another computer. The workbook that you download does not contain charge lists, discount lists, or customer pricing profiles. It is a empty workbook that provides an alternative to using the Pricing Administration work area to administer changes across multiple objects. To improve performance, search for, filter, and download only the data that you require to perform the subsequent action, such as create, update, and so on. To make sure the data in the worksheet is up to date with the data on the server, refresh the search each time after the spreadsheet finishes processing your action. Use the Active Charges option to search for all charges that are active according to date. If you must process more than 10,000 records, then separate data into batches of 10,000 records or less for each batch. 79

86 Chapter 5 Performing Various Administrative Work Guidelines for Using Excel It is recommended that you use the following guidelines when you use the Excel spreadsheet: Rearrange, resize, or hide columns to meet your preferences. Do not delete any column. Do not copy and paste any column. If you delete a column, or copy and paste a column, then you might encounter an error. You can update only attributes that display with a white background. You cannot update attributes that display with a grey background. For example, on the Manage Pricing Charges worksheet, you can update only the following attributes: Calculation Method Price Start Date End Date Allow Manual Adjustment Calculation Type Cost Calculation Amount To create a new record, you add data to an empty row. You can add values to attributes that display with a white background or a grey background when you create a new record. Copy data from another worksheet and paste it into the Oracle worksheet that you download from the Pricing Administration work area. For example, assume you maintain your own spreadsheet that includes data about the items you sell. You can copy this data into the Oracle worksheet, and then upload it to the Oracle Fusion server. Make sure you copy only data rows. Do not copy header rows, and do not overwrite header rows in the Oracle worksheet. To import an entire file, or to import very large sets of data, see Importing Price Lists: Procedure. If Excel prompts you to save the file, then do not save changes in the spreadsheet because this data might become old compared to the data on the server. Instead, download data from the server immediately before each action. Also, do not use CTRL+S, and do not use Save in the File menu in Excel. You cannot use the Undo command in Excel to undo changes while in Connected mode. You cannot select a row and then click Delete to delete it while in Connected mode. Instead, use the Delete command on the ribbon. Do not use the Clear or Clear All command in Excel. Instead, use the Clear All Data command that displays in the ribbon after you install ADF Desktop Integration. You must use Microsoft Excel. You cannot use any other spreadsheet application. Spreadsheet Elements Use the following descriptions to get details about some of the spreadsheet elements. Spreadsheet Element Description Login and Logout Log into or log out of a session with the Oracle Fusion server. Clear All Data Click Clear All Data at the end of each session to clear data from the spreadsheet. This action helps to make sure the spreadsheet is up to date with data on the server during the next session. 80

87 Chapter 5 Performing Various Administrative Work Spreadsheet Element Description Edit Options This value references the server address. You can modify it to use the spreadsheet with a different server. In most situations, it is recommended that you not modify the value in the Edit Options dialog. Instead, use a different spreadsheet for each server. Search Search data on the Oracle Fusion server. Create or Update Upload data that you created or updated in the Oracle spreadsheet. You upload to the Oracle Fusion server. Delete Select one or more data rows in the spreadsheet, and then click Delete to delete them from the server. Note that this action occurs immediately while in Connected mode and you cannot undo it. Status Viewer View messages that describe the result of your actions. For example, if the Status Viewer displays No error, then your action was successful. However, if an error occurs, for example you do not include a required attribute, then the Status Viewer displays an error message, such as: Changed column Flagged column Status column Displays an icon that indicates you modified a value in the row but have not yet uploaded your modification to the server. Double-click in the Flagged column to delete the row. The Flagged column displays an icon that indicates you plan to delete the row but have not yet uploaded your deletion to the server. Click Delete in the ribbon to upload your deletion. Displays the status of your action. It is recommended that you scan the Status column after each action to make sure the server successfully processed your request. If the Status is empty after a request or displays Row Updated Successfully, then the update was successful. If an error occurs, then the Status column displays a summary of the error. Use the Status Viewer to view error details. Key column Displays a value that uniquely identifies the record. You cannot modify this value. Make sure you do not select it when you copy a row. It is recommended that you hide the Key column. Guidelines for Using the Manage Pricing Charges Worksheet It is recommended that you use the following guidelines: Use the Manage Pricing Charges worksheet to create or update items and pricing charges. You must define a price list and associate it with a business unit before you define pricing and charges for the item. You can update charge attributes Price, Start Date, End Date, or Allow Manual Adjustment. You cannot delete a pricing charge. Instead, use the End Date to set the date when Pricing must no longer use the pricing charge. Note that the Updated Pricing Rules area of the Pricing Administration work area does not display changes you make in the spreadsheet. Guidelines for Using the Manage Tiered Adjustment Rules Worksheet 81

88 Chapter 5 Performing Various Administrative Work It is recommended that you use the following guidelines: Use the Manage Tiered Adjustment Rules worksheet to create, update, or delete tier rules for a pricing charge. This worksheet processes all tier lines for each charge together in a group. It does not process each row individually. You can update all tier header attributes except for Tier Basis Type, Application Method, and Enforce Adjustment. For details about the tier header, see Adding Tiers to Pricing Rules: Procedure. You can update all tier line attributes. You can update the minimum value and the maximum value for tier line attributes only in Connected mode. If you use this worksheet to delete the last tier rule of any charge, then this worksheet will also delete the tier header. You must define the charge for the item in a price list before you manage the tiered adjustment rules that reference the item. Make sure the discount rule attributes that your rule specifies are identical for each row in the tier group. Make sure the tier header includes all required values. If you set the tier basis type to an amount, then make sure you set the application method to Per Unit. Guidelines for Using the Manage Matrix Adjustment Rules Worksheet It is recommended that you use the following guidelines: Use the Manage Matrix Adjustment Rules worksheet to create, update, or delete matrix rules or attribute rules for a pricing charge. You must define the charge for the item in a price list before you manage a matrix adjustment rule that references the item. You can perform update or delete operations only in Connected mode. You must use the following format for date data: yyyy-mm-dd. You must use the following format for time stamp data: yyyy-mm-dd hh:mm:ss. Guidelines for Using Connected Mode or Deferred Mode The spreadsheet works in Connected mode or Deferred mode, but these modes are transparent to you. You do not need to take an action to use one or the other. For example, if you download data to the spreadsheet from the server, edit a row, and then upload the edit, then the spreadsheet works in Connected mode. It maintains an active connection to the server. An active connection does not exist in Deferred mode. For example, assume you open your spreadsheet but do not connect to the server. You intentionally cancel out of the log in dialog that displays. Instead, you copy data into the Oracle spreadsheet from some other source, such as your own spreadsheet file. You login into the server and are now in Connected mode. You click Create or Update to upload your changes. You can create or update data without having to identify the action as a create or update. The spreadsheet automatically determines to do one of the following during upload whether you use Connected mode or Deferred mode. Update. It finds a record that matches the data you provide, so it updates the existing record. Create. It cannot find a match given the data you provide, so it creates a new record. For example, assume you add a new row for a pricing charge for item AS54888 in the Corporate Segment Price List. The spreadsheet examines the Oracle Fusion database during the upload. It finds item AS54888 in Product Information Management but does not find AS54888 in the Corporate Segment Price List. It adds AS54888 to Corporate Segment Price List. 82

89 Chapter 5 Performing Various Administrative Work Troubleshooting It is recommended that you use the following guidelines: If an error occurs, then the Status column displays a summary of the error status. Use it to read the summary. Use the Status Viewer to read the error message. If an error occurs, then the spreadsheet displays the Download dialog. Notice the text Do pending changes?. Click one of the following values: you want to discard the Yes. Discard the change that causes the error. The server does not update any data and the spreadsheet does not display any details about the error. No. The server does not update any data, but the spreadsheet does display details about the error in the Status column and in the Status Viewer. You can use the Search command to restore the values in your spreadsheet after you encounter an error. Use the following details to troubleshoot problems. Problem Solution You receive the following message: Step out of the cell that you are editing, and then retry the update. You receive the following message: Make sure the value in the Maximum attribute contains a BigDecimal data type. Maximum: cannot convert the input value to the expected data type (BigDecimal). Note that some messages in the Status Viewer includes the following details: A prefix that identifies the attribute name. In this example, the error occurs in the Maximum attribute. A parenthetical that suggests a correction. In this example, (BigDecimal) is the parenthetical, and it suggests you use BigDecimal as the data type value for the Maximum attribute. You receive the following message: You receive the following message: Make sure each required attribute contains a value. Refresh your data. You might encounter this error if you perform an action, do not refresh your data, and then perform another action. For example, assume you do the following work: Download data to the Manage Tiered Adjustment Rules worksheet. Download data to the Manage Pricing Charges worksheet. Make, and then upload a change on the Manage Pricing Charges worksheet. Navigate back to the Manage Tiered Adjustment Rules worksheet but do not refresh your data. Make, and then upload a change on the Manage Tiered Adjustment Rules worksheet. 83

90 Chapter 5 Problem Performing Various Administrative Work Solution To fix this situation, refresh your data after you navigate back to the Manage Tiered Adjustment Rules worksheet, and then make and upload your changes. You receive the following message: Make sure your values do not overlap across tiers. For example, if the values for tier one is 0 through 99, then make sure the minimum value for tier two is 100, not 99 or less. You specified a value in the Minimum attribute or Maximum attribute on the Manage Tiered Adjustment Rules worksheet. You receive the following message: If you add an item in the spreadsheet, and if you receive an error that it does not exist, then you must make sure the Product Information Management work area defines the item. For example, assume you add a new row on the Manage Pricing Charges worksheet and define a value of AS54999 in the Item column. If the Product Information Management work area defines item AS54998 but not item AS54999, then the item does not exist. The workbook does not display the Maintain Price List Data tab. Click Yes in the Connect dialog. If you close the workbook, open it, and then click No in the Connect dialog, then the workbook will not display the Maintain Price List Data tab Related Topics Managing Discount Lists: Procedure Pricing Rules: Explained Managing Price Lists: Procedure Managing Pricing Rules and Pricing Profiles in Spreadsheets: Procedure Use a Microsoft Excel workbook to modify your setup in Oracle Fusion Pricing. Summary of the Work Manage pricing rules and pricing profiles in spreadsheets: Install the ADF Desktop Integration. Download your spreadsheet. Search and download your data. Modify and upload your data. End your session. Install the ADF Desktop Integration Install the ADF Desktop Integration: 1. Close all instances Microsoft Excel on your local computer. 2. Log into Oracle Fusion Pricing with the Pricing Manager user role. 84

91 Chapter 5 Performing Various Administrative Work 3. In the Navigator, click Download Desktop Integration. 4. In the status bar at the bottom of your browser, allow the download, and then wait for the adfdi-excel-addininstaller.exe file to finish downloading. 5. Open adfdi-excel-addin-installer.exe on your local computer. 6. In the ADF Desktop Integration Installer dialog, click Developer Options. 7. In the Developer Options dialog, click Enabled, click Install, wait for the installation to finish, and then click Close. 8. Open the Control Panel on your local computer, click Programs and Features, and then verify the list that displays includes your new installation. For example, make sure it displays Oracle ADF 11g Desktop Integration Add-In for Excel. 9. Open Excel, and then, in the Microsoft Office Customization Installer, click Install. 10. Click File, click Add-Ins, and then verify that the Add-Ins submenu contains ADF Desktop Integration. In some Excel versions, it might be necessary to enable the add-in. For details about installing add-ins, see the documentation for Microsoft Excel at Close Excel. Download Your Spreadsheet Download your spreadsheet: 1. In the Navigator, click Pricing Administration. 2. Navigate to one of the following pages, depending on the data you must download: Manage Price Lists Manage Discount Lists Manage Customer Pricing Profiles For this example, navigate to Manage Price Lists. 3. Click Actions, and then click Download Spreadsheet to Maintain Price List Data. 4. In the Opening ManagePriceLists.xlsx dialog, set Open With to Microsoft Excel, and then click OK. 5. In Excel, in the Connect dialog, click Yes. This dialog allows you to connect to the server that hosts your Oracle Fusion application. 6. In the Login dialog, enter your user name and password, and then click Sign In. Use the same user name and password that you use when you log into Oracle Fusion Pricing with administrator privileges, such as pricing_mgr_operations. 85

92 Chapter 5 Performing Various Administrative Work 7. Notice that your spreadsheet displays the following Maintain Price List Data tab and the command ribbon that ADF Desktop Integration installed. The ribbon includes commands, such as Login and Logout, that you can use to interact with the server. Note that you need to download the spreadsheet only one time. For details, see Managing Pricing Rules and Pricing Profiles in Spreadsheets: Explained. Search and Download Your Data In this example, assume your company is introducing a new line of computer products, and you must discontinue the old AS line. You will set the End Date for all AS items. Search and download your data: 1. Click the Manage Pricing Charges tab, and then wait a moment for the worksheet to display column headings. It might take a few seconds for the worksheet to display column headings the first time that you open a spreadsheet, depending on network speed and other factors. Notice that the each column in the spreadsheet displays an attribute. These are the same attributes that you can access on the Manage Price Lists page in the Pricing Administration work area. 2. In the ribbon, click Search. 3. In the Search Pricing Charges dialog, set the following values, click OK, and then wait for the spreadsheet to download and display the items. Price List Corporate Segment Price List Business Unit Vision Operations 86

93 Chapter 5 Performing Various Administrative Work Item AS You must include a value in at least one of the attributes that the dialog displays with a double asterisk (**). To improve performance, it is recommended that you search for, filter, and download only the data that you require for the subsequent action. For example, specify the Price List, Business Unit, and the beginning characters of the Item, instead of only the Business Unit. 4. Wait for the spreadsheet to download data from the server. The spreadsheet downloads data that meets your search criteria. Notice that this search returns the following results. Modify and Upload Your Data Modify and upload your data: 1. Change the value in the End Date column to the current date, such as 12/12/2017 9:00:00 AM, for all rows. You can copy and paste values just like you do in any Excel spreadsheet. 2. In the ribbon, click Create or Update. 3. Optional. Verify your upload: In the Pricing Administration work area, on the Manage Price Lists page, search for Corporate Segment Price List. In the search results, click Corporate Segment Price List. On the Edit Price List: Corporate Segment Price List page, in the Search area, search for the following value. 87

94 Chapter 5 Performing Various Administrative Work Item AS In the Search Results, click the first row, and then in the Dates area, verify that the End Date contains the date you set in the spreadsheet, such as 12/12/2017 9:00:00 AM. Note that the hour might display a different value, depending on the time zone that the server uses. For example, the Pacific time zone is one hour behind the Mountain time zone. If your local computer is in the Pacific time zone, and if you set the date to 12/12/2017 9:00:00 AM in the spreadsheet, and if the server uses the Mountain time zone, then the server might display 12/12/ :00:00 AM in the Pricing Administration work area. End Your Session End your session: In Excel, click Clear All Data. Click File, and then click Close. In the Microsoft Excel dialog that displays the text Want to save changes?, click Don't Save. To start another session, in Excel, click File, click Open, and then click ManagePriceLists.xlsx. Managing Tiered Adjustment Rules In this example, assume you used the Pricing Administration work area to create a price list named PDM Demo, you added seven items to it, and you use this price list for items that require tier pricing. You will modify tier pricing for item AS For details about tier pricing, see Tier Pricing: Explained. Manage tiered adjustment rules: Open the ManagePriceLists.xlsx file that you downloaded earlier in this topic. In the Connect dialog, click Yes, and then, in the Login dialog, enter your user name and password. Click the Manage Tiered Adjustment Rules tab, and then click Search. In the Search Tiered Adjustment Rules dialog, set the following value, and then click OK. Price List PDM Demo 88

95 Chapter 5 Performing Various Administrative Work 5. Wait for the download to finish, and then notice that the spreadsheet displays the following results. Note the following points: The price list defines two tier groups. One tier group for item AS54111, and one tier group for item SR_0808. The spreadsheet includes attributes for tiered pricing, such as Apply To, Application Method, and Partial Block Action. These are the same attributes that you set for tier pricing in the Pricing Administration work area. The spreadsheet applies the same rules and constraints that the Pricing Administration work area applies for tiered pricing. 6. Modify the following Minimum and Maximum values for item AS Item Price Minimum Maximum AS AS AS Set the adjustment amount and basis for each tier. 8. Upload your changes, navigate to the Pricing Administration work area, and then verify that the work area displays your changes. Related Topics Managing Discount Lists: Procedure Pricing Rules: Explained Managing Price Lists: Procedure Adding Tiers to Pricing Rules: Procedure 89

96 Chapter 5 Performing Various Administrative Work External Systems Getting Details for Pricing from External Systems: Explained You can configure a pricing algorithm to call a web service that resides outside of Oracle Fusion Pricing, get data from an external system, and then leverage it as part of your pricing calculation. For example, assume your implementation must calculate a shipping charge for a carrier and shipping method. This might require Pricing to call a web service that resides on a server that the carrier owns, and then get charge data. This kind of data often updates frequently, so it is preferable to get it only on demand, when needed, instead of periodically importing it and then maintaining it in Pricing. 90

97 Chapter 5 Performing Various Administrative Work The following diagram illustrates how Pricing uses a web service to get the details it needs from an external system so it can price an item. In this example, Pricing uses Oracle Integration Cloud Service to establish the integration. You might use a different integration technology. 2 1 Request to price item System Outside of Oracle Fusion Pricing Web Service Endpoint s, web service name and URL 3 4 Request for item details 7 Item details 5 Oracle Integration Cloud Service 6 Explanation of Callouts Pricing does the following work when it uses a web service to price an item: 1. Order Management Cloud sends a request to Pricing to price an item. 2. The service mapping specifies sources, entities, and mapping between entities and attributes so that Pricing can create the structure for the output SDO that it will send to Order Management. 3. The pricing algorithm specifies when to call the web service, what details to get from the web service, and how to process the details that it receives from the web service. 91

98 Chapter 5 Performing Various Administrative Work 4. Oracle Integration Cloud Service gets the connector details from Manage External Service Details for Algorithms, and then sends a SOAP request to the web service endpoint that resides on the system outside of Pricing. Manage Connector Details specifies how to call the web service, including the URL that locates the end point, and the user and password that the end point requires to log in. 5. The web service sends the reply in a SOAP payload to Integration Cloud Service. 6. Integration Cloud Service sends the details to the pricing algorithm. 7. The pricing algorithm uses the details it received from the web service to calculate the price, and then sends pricing details to Order Management. For details about how this process works, see Pricing Architecture: How It Works. You can also use the Price Request Service to determine and validate sales transactions. For details, see the Price Request Service topic in SOAP Web Services for Oracle Supply Chain Management Cloud, on Oracle Help Center at docs.oracle.com/en/cloud/saas/supply-chain-management/r13-update17d/oessc/index.html. Related Topics Oracle Fusion Pricing: Overview Pricing Architecture: How It Works Managing Service Mappings: Explained Getting Details for Pricing from External Systems: Procedure Oracle Fusion Pricing comes predefined to support cost plus pricing through costs that you define on the Manage Cost Lists page in the Pricing Administration work area. In the example in this topic, you will get the cost of the item through a web service call to Oracle Fusion Costing, and then mark it up or down according to the rules on the price list. This topic assumes you already set up Pricing. For details, see Managing Oracle Fusion Pricing: Roadmap. This topic assumes that customer Computer Service and Rentals is part of the Corporate Segment and Corporate Pricing Strategy. In this example, you will modify the following attributes from their starting values to the ending values. Starting Ending Pricing Segment Corporate Segment Custom Corporate Segment Pricing Strategy Corporate Pricing Strategy Corporate Pricing Strategy - External Services This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To get details for Pricing from external systems, do the following work: 1. Examine the current behavior. 2. Create the pricing algorithm that gets cost details and calculates price. 3. Modify the pricing algorithm that communicates attribute details. 92

99 Chapter Performing Various Administrative Work Create the service mapping and add entities. Add the service to the service mapping. Manage the connector details. Create an integration with the web service. Test your work. Examine the Current Behavior In this example, assume you set up Pricing to use the Corporate Segment pricing segment and the pricing strategy named Corporate Pricing Strategy when it prices the AS54888 item for customer Computer Service and Rentals. Examine the current behavior: 1. Log into Pricing with the Pricing Administrator job role. 2. In the Navigator, click Order Management, and then create a sales order with the following values. Customer Computer Service and Rentals Item AS54888 Amount Add the item to the sales order, click Actions, click View Pricing Strategy and Segment, and then notice the following values. Pricing Segment Corporate Segment Pricing Strategy Corporate Pricing Strategy For this example, you modify Pricing so that it uses a pricing strategy that gets pricing details from a web service. Create the Pricing Algorithm That Gets Cost Details and Calculates Price In this section, you create a pricing algorithm that gets cost details from Oracle Fusion Costing, which is the external application in this example. For details about pricing algorithms, see Pricing Algorithms: Explained. Create the pricing algorithm that gets cost details and calculates price: In the Navigator, click Pricing Administration. Click Tasks, and then click Manage Algorithms. On the Manage Algorithms page, click Actions, and then click Create. On the Create Algorithm page, set the following values, and then click Save. Name Compute Price from External Application Custom 93

100 Chapter 5 Performing Various Administrative Work 5. Add a step that gets the details Pricing needs from an external application: Click Add Step, click Conditional Action, set the following values, and then click Save. Name Get Cost From Costing Service Description Call the Oracle Fusion Costing Service and get the item cost Add the following data sets. Set the Candidate as Primary, and then click Save. Note that getcostfromcostingservice is the name of the function that you add later in this procedure. Name Variable Path Cardinality Data Set Join Candidate PriceRequest. ChargeCandidate Empty Empty Note that this path references the primary data set. The entity ChargeCandidate represents the charge candidates according to the current price list setup. They represent the application charge candidates for the item that Pricing is pricing. Charge PriceRequest. Charge Zero or one [ChargeId: {CandidateChargeId}] Line PriceRequest. Line Zero or one [LineId: {ChargeParentEntityId}] CostingService getcostfromcostingservice(line. Zero or one InventoryItemId Line. InventoryOrganizationId). Empty ServiceParam PriceRequest. PricingServiceParameter Empty One Click Add Condition, click Default Action, and then set the following value. Action Candidate. Cost = CostingService. ItemCost 6. Add a step that uses details from the external application to calculate the price: In the Steps list, click Add Step, click Conditional Action, set the following values, and then click Save. 94

101 Chapter 5 Performing Various Administrative Work Name Calculate Cost Plus Price Description Calculate Cost Plus Pricing on the cost received from Oracle Fusion Costing Add the following data sets. Set the Candidate as Primary, and then click Save. Name Variable Path Cardinality Data Set Join Candidate PriceRequest. ChargeCandidate Empty Empty ServiceParam PriceRequest. PricingServiceParameter One Empty Charge PriceRequest. Charge Zero or one [ChargeId: {ChargeChargeId}] Click Add Condition, click Default Action, and then set the following value. Action Candidate.BasePrice = Candidate.Cost + pricingutil.computeunitadjustment(candidate.calculationtypecode, 0, Candidate.CostCalculationAmount, Candidate.Cost) This equation calculates the base price according to the calculation type code. For this example, assume you define a price list that includes a Markup Amount of 5 USD on top of the base price. Assume that the value from the web service sets Cost to 100 USD. So, the calculation for baseprice is 100 plus 5 equals 105 USD. The predefined function computeunitadjustment calculates the adjustment according to one of the following values that you define: Discount Amount Discount Percent Markup Amount Markup Percent Click Save. 7. Click Variables, and then add the following variables. Set the Default Expression for PriceListType to 'SEGMENT_PRICE'. Make sure you include the single quotation marks. Name Data Type Input/Output Internal Service Schema PriceRequest Data object Input and Output PricingInternal. PriceRequestInternal PriceListType String Input Leave empty 95

102 Chapter 5 Performing Various Administrative Work Name Data Type Input/Output Internal Service Schema CostingInput Data object None Sales. RetrieveItemCostCustom Cost Big decimal None Leave empty CostCurrencyCode String None Leave empty 8. Add a function that includes the instructions that describe how to call the external system: Click Functions, click Actions, click Add Row, and then set the following values. Name getcostfromcostingservice Query Type Script Click Arguments, and then add the following arguments. Name InventoryItemId Name OrganizationId Click getcostfromcostingservice Function Detail, add the following code, and then click Save. This code determines how to structure the SOAP payloads that Pricing uses to communicate with the external application: def costparams = CostingInput.createDataObject('costparams') costparams.itemid = InventoryItemId costparams.invorgid= OrganizationId def serviceoutputmap = executesoapservice('qp_fusion_costing_ics_srvc', CostingInput, [operation:'retrieveitemcost', soapversion:'1.1', incontext:'sales.retrieveitemcost_custom', outcontext:'sales.retrieveitemcost_custom']) CostingInput = serviceoutputmap.get("outputsdo") return CostingInput.Result.get(0) Note the following parts of this code. Part Description costparams Creates the input payload to send to the web service. The costing service expects the InventoryItemId and OrganizationId of the item you must cost. 96

103 Chapter 5 Performing Various Administrative Work Part Description executesoapservice A predefined pricing algorithm function that expects the following input parameters: Name of the integration to call. Input SDO. Map that includes other details, such as the name of the service operation to call, the name of the input context, and so on. Modify the Pricing Algorithm That Communicates Details In this section you modify a pricing algorithm so that it uses a web service to call, and then receive details that Pricing can use from Oracle Fusion Costing. Your definition will structure the input and output payload that Pricing uses to communicate with the external application. You can use the execute SOAP service construct at any point in the pricing algorithm. Modify the pricing algorithm that communicates attribute details: 1. On the Manage Algorithms page, click the row that includes Get Base List Price for Goods and Services. This pricing algorithm searches a price list to get the price list charges that Pricing uses to calculate the base list price. You will modify it so that it instead uses a web service to get these details. 2. Click Actions, and then click Create Version. 3. On the Edit Algorithm page, in the Steps area, expand the Create Charges step. The Create Charges step gets the price from the price list. 4. Expand the Cost Plus Pricing step. Cost Plus Pricing determines when to get the cost from Pricing, and then how to process the reply. You want to leverage the data that Pricing receives from the web service call, such as when to get it and where to use it in your pricing configuration. 5. In this step, you add the following condition: If CostsFromFusionCosting is true, then run the child steps. Add the condition: In the Steps area, click If Cost Plus Pricing. Click Add Step, and then click Conditional Action. In the Step Details area, add the following values, and then click Save. Note that this condition references the CostsFromFusionCosting variable you set earlier in this topic. Name If Cost Plus Pricing From Fusion Costing Condition NeedsCostPlus &&!CostsFromFusionCosting & & finer('==== Calling Cost-Plus Pricing ====') == null 6. In this step, you add an action that calls the algorithm that you created earlier in this topic. Add the action: Click the If Cost Plus Pricing From Fusion Costing row, click Add Step, and then click Subalgorithm. In the Step Details area, set the following values, and then click Save. 97

104 Chapter 5 Performing Various Administrative Work Name Get Prices From Fusion Costing Algorithm Name Compute Price from External Application Custom If necessary, modify the input variables that display so they match the following values. PriceListType 'SEGMENT_ PRICE' PriceRequest PriceRequest If necessary, modify the output variables that display so they match the following values. PriceRequest PriceRequest Click Save. 7. Test your pricing algorithm: Click Test, click Actions, click Add Row, and then click Run Test. Verify that Last Execution Status displays a green check mark. 98

105 Chapter 5 Performing Various Administrative Work Create the Service Mapping and Add Entities In this section, you create the following service mapping. CostParams InvOrgId ItemId CurrencyCode ErrorFlag InvOrgId ItemCost ItemId Result UOMCode CostParams InvOrgId Inputs Outputs ItemId External_Call CurrencyCode ErrorFlag InvOrgId Legend Service Entity Cross-reference ItemCost ItemId UOMCode You define the service mapping context, entities, and attributes so that they replicate the exact structure of the web service you are calling. In this example, you match the structure of the Fusion Costing Service. The SDO structures must match the input and the output structure of the web service. If you call some other web service, such as web service x, then you must replicate the structure of web service x. For details about service mappings, see Managing Service Mappings: Described. Create the service mapping and add entities: 1. Click Tasks, and then click Manage Service Mappings. 99

106 Chapter 5 Performing Various Administrative Work 2. On the Manage Service Mappings page, click Actions, and then click Create. 3. In the Create Service Mapping dialog, set the following value, and then click Save and Edit. Name External_ Call_Custom 4. On the Edit Service Mapping page, on the Entities tab, click Actions, click Add Row, and then set the following value. Entity CostParams_ Custom Description Stores the value for custom cost parameters. 5. In the Details area, add two attributes using the following values. Make sure Allow Null contains a check mark for each attribute. InvOrgId_ Custom Long ItemId_Custom Long 6. Add another entity. On the Entities tab, click Actions, click Add Row, and then set the following values. Entity _Custom Description Stores the value of the CostParams input element 7. In the Details area, use the following values to add attributes to the _Custom entity. These attributes will contain the details that you communicate to and from your external system. Make sure Allow Null contains a check mark for each attribute. CurrencyCode_ Custom String ErrorFlag_ Custom Boolean InvOrgId_ Custom Long ItemCost_ Custom Decimal ItemId_Custom Long 100

107 Chapter 5 Performing Various Administrative Work UOMCode_Custom String 8. On the Edit Service Mapping page, on the Entities tab, click Actions, click Add Row, and then set the following values. This result entity replicates the definition that web service uses. Entity Result_Custom Description Store the value of the output element Add the Service to the Service Mapping In this section, you specify the end point that locates the external service, and you specify the entities that you will use to communicate details with this service. Add the service to the service mapping: 1. On the Edit Service Mapping page, click Services. 2. Click Actions, click Add Row, and then add the following values. Service GetItemCost_ Custom You can enter any text. It is recommended that your text describes the work the service performs. Namespace Enter the URL that locates the end point on the external system that will communicate the SOAP payloads with Pricing. For example: server. com:7012 Description Get the item cost 3. In the Details area, on the Entities tab, add the following entities. Make sure the Read attribute and the Write attribute for each entity contains a check mark. Entity Alias Reference Entity Parent Entity CostParams_ Custom CostParams Leave empty. Leave empty. Result_Custom Result Leave empty. Leave empty. _Custom Leave empty. Leave empty. _Custom Result 101

108 Chapter 5 Performing Various Administrative Work Note that the definition of the Fusion Costing Service includes a three level hierarchy: one is root, two is CostParams and Result, and three is under Result. To replicate this hierarchical relationship, you use the _Custom entity to specify, leave Parent Entity empty, and then use _Custom again to specify and set Parent Entity to Result. 4. In the Entity column, click CostParams_Custom. 5. In the CostParams_Custom Entities area, add the following entities. Make sure the Read attribute and the Write attribute for each entity contains a check mark. Leave other attributes empty. Alias InvOrgId_ Custom InvOrgId ItemId_Custom ItemId 6. In the GettemCost_Custom Details area, on the Entities tab, click the _Custom row that does not contain a value in the Reference Entity attribute. 7. In the _Custom Entities area, add the following entities. Make sure the Read attribute and the Write attribute for each entity contains a check mark. Leave other attributes empty. Alias CurrencyCode_ Custom CurrencyCode ErrorFlag_ Custom ErrorFlag InvOrgId_ Custom InvOrgId ItemCost_ Custom ItemCost ItemId_Custom ItemId UOMCode_Custom UOMCode 8. Click Save. Note that it is not necessary to use the Sources tab to define a source because you typically use the Sources tab to specify a source when a virtual object populates the web service. However, in this example, you use a pricing algorithm and call a web service to get the details that the web service requires. Manage the Connector Details Manage the connector details: 1. In the Navigator, click Setup and Maintenance. 2. On the Setup and Maintenance page, click Order Management, and then click Setup. This example assumes you are implementing the Order Management offering. If you are using a different offering, then click it instead of Order Management. 3. On the Setup page, search for, and then open Manage External Service Details for Algorithms. 102

109 Chapter 5 Performing Various Administrative Work For details, see Connecting Order Management to Source Systems: Procedure. 4. On the Manage Connector Details page, create a connection to the system that hosts the web service your pricing algorithm must call. For this example, assume your pricing algorithm calls the Fusion Costing Service, so use the following values. Target System Fusion_HCM Note that you must first use the Setup and Maintenance work area to specify this system as a trading community source system. Connector Name QP_ FUSION_ COSTING_ ICS_SRVC You can use any value. However, this value must match the value that the pricing algorithm sends to the executesoapservice function. Connector URL Enter the URL that locates the server and port that your web service uses as the end point. For example: User Name Enter the user name required to access your web service. Password Enter the password required to access your web service. Invocation Mode Synchronous Create an Integration with the Web Service Create an integration with the web service: 1. Log a service request and get access to the role that allows you to use Integration Cloud Service For details, see Using Integration Cloud Service with Order Management to Communicate Events: Procedure. Log into Integration Cloud Service. On the Welcome page, click Create Connections. On the Connections page, click New Connections. In the Create Connection - Select Adapter dialog, click SOAP Adapter. In the New Connection - Information dialog, set the following values, and then click Create. Connection Name You can use any text. For this example, enter QP_ PRICING_ EXTERNAL_ SERVICE_CALL. Identifier You can use any text. For this example, enter QP_ PRICING_ EXTERNAL_ SERVICE_CALL. Connection Role Trigger and Invoke 7. On the page that displays, click Configure Connectivity. 8. In the dialog that displays, set the following values, and then click OK. 103

110 Chapter 5 Performing Various Administrative Work ERP Services Catalog WSDL URL Enter the URL that locates the WSDL. Use the following format: https: //server: port/ fndappcoreservices/ ServiceCatalogServicewsdl For example: server. com: 9999/ fndappcoreservices/ ServiceCatalogServicewsdl ERP Events Catalog URL (optional) Enter the URL that locates the events catalog. Use the following format: http: //server: port/ soainfra For example: http: / /myserver com7818/ soa-infra 9. In the Connection Properties dialog, set the following values, and then click OK. Property Name WSDL URL Description Do the following work: Suppress Insertion of Timestamp Make sure the Property column displays ItemCostService.wsdl. Make sure the Upload File option contains a check mark. Click Upload. Set to Yes. 10. Click Configure Security. 11. In the Credentials dialog, enter the user name and password that you use to access Oracle Fusion Pricing as an administrator, and then click OK. 12. At the top of the page, click Test, and then wait for the indicator that displays immediately to the right of Test to change to a green color, and to display 100%. 13. Click Save. 14. Click Test, wait, and then verify that the page displays the following message: The connection test was successful. 15. Click Exit Connection. Test Your Work Test your work: 1. Log into Order Management, and then create a sales order with the following values. Customer Computer Service and Rentals Item AS54888 Amount

111 Chapter 5 Performing Various Administrative Work Recall from the pricing algorithm that you defined a price list with a Markup Amount of 5 USD on top of the base price, and that the value from the web service sets Cost to 100 USD. So, the calculation for baseprice is 100 plus 5 equals 105 USD. 2. Add the item to the sales order, click Actions, click View Pricing Strategy and Segment, and then notice the following values. Pricing Segment Corporate Segment Pricing Strategy Corporate Pricing - External Services This is the strategy you set up earlier. Related Topics Oracle Fusion Pricing: Overview Pricing Architecture: How It Works Managing Service Mappings: Explained Covered Items Managing Pricing for Covered Items: Described A coverage item is an item that adds value by providing coverage for a covered item. For example, a six month warranty is a coverage item for a laptop computer, and the laptop computer is the covered item. You can administer coverage pricing rules on a price list to manage the rules between each coverage item and each covered item. You can use Oracle Fusion Pricing to achieve the following results: Define pricing rules for a coverage item that covers all items on a price list. Define a one-time charge or a recurring charge. Use an amount or a percent of the covered item price in each rule. Define one or more charges for each rule between the coverage item and the covered item. Set each charge as a one-time charge or as a recurring charge. Calculate each coverage pricing rule according to an amount or to a percent of the covered item price for a duration. For example, the price for the Gold Warranty coverage for a laptop for three years is $10 for each year, with a total amount of $30 over the full three year period. Import and export coverage pricing rules from price lists. Pricing supports coverage pricing through an integration with Oracle Fusion Service Contracts. For details about how to set up service contracts, see the Implementing Enterprise Contracts guide on Oracle Help Center. 105

112 Chapter 5 Performing Various Administrative Work Differentiating Pricing for Coverage You can sell an item and also sell coverage for an item. In some situations, you might need Pricing to price a coverage item for a warranty or support differently than it prices a coverage item for a durable good. The coverage item price might depend on the item that it covers. For example, assume a company that builds medical devices sells the following items to medical clinics. Covered Item Coverage Item MRI machine Technical support for an MRI machine CT scanner Technical support for a CT scanner A technician typically applies a more sophisticated skill set when supporting an MRI machine than when supporting a CT scanner. Pricing allows the medical device company to differentiate the price of the support that it offers for the MRI machine from the support that it offers for the CT scanner. Calculating One Time and Recurring Charges for Covered Items Pricing uses the following calculations to calculate the charge for each covered item. Calculate One-time Charge To calculate the extended amount, multiple the one-time charge by the quantity of units of the covered item. For example, if the one-time charge is 25, and if the quantity is 4, then the onetime charge is 100. Note that a one-time charge applies to the entire duration of the coverage. Calculate Recurring Charge Calculate the recurring charge for each covered quantity for each primary UOM (unit of measure), where this UOM is Time: 1. If the duration UOM is not equal to the price periodicity UOM, then set the duration UOM to the price periodicity UOM. For example, if the duration UOM of the coverage is 1 Year, and if the price periodicity UOM is 6 Months, then set the duration UOM to 6 Months. 2. Multiply the recurring charge by the quantity of units of the covered item. 3. Multiply the result of step 2 by the duration. For example, if the unit price for the monthly charge is $10, and if the quantity of units is 1, and if 12 months have passed, then the result is: Extended amount of $10 ($10 multiplied by 1, where 1 is the quantity of units of covered items) Total coverage amount of $120 ($10 extended amount multiplied by 1 unit multiplied by 12 months) Related Topics Managing Price Lists: Procedure Managing Pricing for Covered Items: Procedure In this example, you set up Oracle Fusion Pricing to calculate three years of warranty service for a laptop computer, starting on January 1, 2017, billed monthly at the rate of 10% of the sale price. 106

113 Chapter 5 Performing Various Administrative Work This topic includes example values. You might use different values, depending on your business requirements. Manage pricing for covered items: In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Bases. On the Manage Pricing Bases page, specify the pricing basis to use for the covered item. More than one charge might exist for a covered item. You must set up a pricing basis that determines the charges and price element, such as list price or net price, to use for the percent calculation. For example, assume your covered item includes a separate charge for the sale price, but does not include charges for the monthly recurring sale price or a one-time recycling fee. You must specify which of these charges to use as the basis when calculating the coverage charge for the covered item. In this example, the price of the coverage is 10% of the list price of the covered item. 5. Click Actions, click Create, and then set the following values. This basis specifies the list price as the charge to evaluate. For details, see Managing Pricing Bases: Procedure. Name Coverage_ Basis_ for_ Desktop_PC Usage Coverage Basis Price Element List Price Price Type Recurring Charge Type Sale Charge Subtype Price Price Periodicity Month Active Contains a check mark Click Save and Close. In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Price Lists. On the Manage Price List page, search for the price list named Corporate Segment Price List, and then open it for editing. 10. On the Price List Lines tab, in the Items area, click Actions, click Add Row, and then set the following values. Item WR11531 Description Desktop PC Warranty 107

114 Chapter 5 Performing Various Administrative Work Pricing UOM Year Line Type Buy Primary Pricing UOM Contains a check mark Service Duration Period Year Service Duration 3 Note the following points: To verify you added a coverage item, make sure the Associated Items column displays the Managed Covered Item icon, and that Service Duration Period and Service Duration are grey and disabled. This example assumes that Product Management includes the coverage item WR If the search cannot find the coverage item that you require, then you must add it in the Product Management work area. 11. In the Associated Items column of the row you just added, click the Manage Covered Item icon. 12. On the Manage Covered Items page, click Add Row, set the following values, and then click Save. Pricing UOM Each Coverage UOM Year Action Type Add 13. Click Create Charge. 14. In the Charge details area, set the following values, and then click Save. Pricing Charge Definition Recurring Sale Price Price Periodicity Month Calculation Method Covered Item Price Percent Use this method for a coverage pricing rule when the rule bases the price of the coverage on a percent of the covered item price. Coverage Basis Coverage_ Basis_ for_ Desktop_PC Calculation Amount 10 Start Date Set a date. 108

115 Chapter 5 Performing Various Administrative Work End Date Set a date. Related Topics Managing Price Lists: Procedure Managing Pricing Bases: Procedure Managing Pricing for Configured Items: Procedure You can define pricing for a configured item in a price list or a discount list. This example assumes you already used the Configurator Models work area to define the following configured item: CN92777 Sentinel Desktop OC68020 Hard Drive Option Class CM Gigabyte CM Terabyte OC29315 RAM Option Class CM Gigabyte CM Gigabyte For details about configured items, including how to define them and more pricing set up that you can define, see Configurator Modeling Guide on Oracle Help Center. Manage pricing for a configured item: In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Price Lists. On the Manage Price Lists page, click Actions, and then click Create. In the Create Price List dialog, specify details, and then click Save and Edit. On the Edit Price List page, in the Search Results area, click Actions, and then click Add Row. In the row you just added, search for the following item. Item CN In the Associated Items column, click the icon. The icon displays only for a configured item or for a coverage item. 8. On the Edit Component Item Charges page, in the Item Structure Details area, expand the list, and then notice that the hierarchy displays for the following configure item, CN92777, Sentinel Desktop, and the option classes for CN92777, such as OC Note that you cannot define charges on an option class. 109

116 Chapter 5 Performing Various Administrative Work Item Description CN92777 Sentinel Desktop OC68020 Hard Drive Option Class OC29315 RAM Option Class 9. Expand OC68020, and then notice the following configure options that display under OC68020, which is the option class for the hard drive. Note that you can define a charge on a configure option. Item Description CM Gigabyte CM Terabyte 10. Click the row that contains Sentinel Desktop in the Description column, click Create Charge, set the following values, and then click Save. Pricing Charge Definition Sale Price Calculation Method Price Base Price 500 Start Date Specify the date when to start using this charge. End Date Specify an optional date when to stop using the charge. If you do not specify an end date, the Pricing will use this charge continuously unless you modify it. 11. Expand the row that contains Hard Drive Option Class in the Description column, click the row that contains 500 Gigabyte, click Create Charge, set the following values, and then click Save. Pricing Charge Definition Sale Price Calculation Method Price Base Price In the Item Structure Details list, in the 500 Gigabyte row, notice that the Charge column displays a check mark. The check mark indicates that you define a charge for this item. 110

117 Chapter 5 Performing Various Administrative Work 13. Define pricing for the remaining configure options. Use the same values for Pricing Charge Definition and Calculation Method that you used in the prior steps. Configure Option Base Price CM Terabyte Hard Drive 50 CM Gigabyte RAM 15 CM Gigabyte RAM Click Save and Close. Note the following points: You cannot define a charge for the option class. Pricing does not create the charge from the discount list. The discount rule for a configure option is specific to the configuration model. For example, Pricing applies the discount rule for the hard drive in the context of the configuration model. If you define the discount rule outside of the configuration model, the Pricing applies the discount rule separately. You can apply pricing to the configured item or to the rollup charge when you define a discount on the configured item. Apply Pricing to Rollup Charges on Discount Lists If you add a check mark to Apply to Rolled-up Charge when you create the discount rule for the configured item, then Pricing applies the discount that you set for the configured item on the configured item and on the configure options. It applies the rollup discount and also adds any discounts that you specify on each item. For example, assume you define the following discount rules for the Sentinel Desktop configured item and the configure options. Pricing makes the following calculations at runtime. Description Price Discount Calculation Without Rollup Calculation With Rollup Price for configured item, Sentinel Desktop $500 10% of the $500 price equals $50 $500 price minus $50 discount equals $450 $450 Price for configure option CM Terabyte Hard Drive $40 10% of the $40 price equals 4 $40 price minus $4 discount equals $36 $36 minus $3.6 (10% roll-up from configured item) equals $32.40 Price for configure option CM Gigabyte RAM $25 No discount $25 $25 minus $2.50 (10% roll-up from configured item) equals $22.50 Total price Not applicable Not applicable $511 $

118 Chapter 5 Performing Various Administrative Work Manage Configure Options Across Configuration Models You can specify pricing for a configure option independently of and across more than one configuration model. It is not necessary to define pricing for the configure option in the context of each configuration model. Instead, you can maintain configure option pricing for all configuration models on the same price list. You can also maintain configure option pricing for the following: In a tier adjustment or pricing matrix For price list rules at the All Items level Assume you define the following setup: A configuration model that includes three configure options. Set the sales charge for the configuration model at $1000. Set the sales charge for the first two configure options at $20 each. Set the price of the third configure option at $10, and define it as a separate line item on the price list. It is the same price across all configuration models. Pricing will perform the following calculations at runtime: Price the first two configure options at $20 each Price the third configure option at $10. Price the configuration model at $1050. Related Topics Managing Price Lists: Procedure Profiles, Segments, and Strategies: How They Work Together Managing Pricing Strategies: Procedure Adjusting Prices: Explained Troubleshooting Pricing Rules: Explained Performance Caching Data in Pricing: Explained To improve application performance, you can cache pricing data to reduce the number of times required to initialize objects and to minimize round trip database processing. You can cache data for the following data. Data Pricing Rule Description Pricing queries rules and entities to calculate the price of an item, such as shipping charges, discounts, margin, and taxes. You can cache pricing rules to avoid a round trip to the database and improve application performance. 112

119 Chapter 5 Data Performing Various Administrative Work Description You can cache the following objects. Price list Cost list Shipping charge list Discount list Pricing strategy Pricing segment Customer pricing profile Return price list Pricing strategy assignment Currency conversion list Matrix rule You can cache the following entities. Configurations in the Setup and Maintenance Work Area Pricing setup data Matrix classes Item attributes Customer attributes Pricing Algorithm You can cache algorithm metadata to avoid reading and parsing it multiple times from the database. Service Mapping You can cache service mapping definitions to optimize performance. How the Cache Works for Pricing Rules Pricing uses the cache in a shared application module in the Oracle Application Development Framework to cache each pricing rule. Pricing loads the pricing rule into this cache the first time it gets the pricing rule when it prices a transaction, and then reads the rule from the cache during each subsequent price request. Note that the cache does not include any changes that you make to the pricing rule until you refresh the cache. For example, assume the following occurs. 1. An Order Entry Specialist signs into the Order Management work area, creates a sales order, sets the Customer attribute, and then adds order line x. 2. Order Management calls Pricing to price order line x. 3. This is the first time the user created a sales order in the current sign in session, so the cache does not include any pricing data. Therefore, Pricing loads pricing data into the cache of a shared application module, and then uses this cached data to price the order line. 4. The Order Entry Specialist adds order line y. 5. Order Management calls Pricing to price order line y. 6. Pricing uses the pricing data in the cache to price order line y. Application performance improves because Pricing does not load the pricing data again and does not perform round trips to and from the server to load this data. Pricing will use the cached data for each subsequent pricing request until the cache clears or expires, or until the server restarts. To specify when to clear the cache in a shared application module, or to disable the cache, see Caching Data in Pricing: Procedure. 113

120 Chapter 5 Performing Various Administrative Work How the Cache Works for Pricing Algorithms Pricing uses the session cache to cache each pricing algorithm. Note the following points. Pricing loads the pricing algorithm into the session cache the first time it gets the pricing algorithm when it prices a transaction, and then reads the algorithm from the session cache during each subsequent price request. Pricing continues to use the session cache until the user signs out of the session. Pricing does not refresh the cache until the user signs back into the application. Pricing does not support disabling the session cache. You must not attempt to disable the session cache. For example. 1. Assume the following. User 1, User 2, and User 3 are each an Order Entry Specialist who use the Order Management work area. Administrator is a Pricing Administrator who uses the Pricing Administration work area. 2. Administrator defines an algorithm named Calculate My Shipping Charges, creates version 1 for this pricing algorithm, and then publishes it. 3. User 1 signs into Order Management, creates a sales order, and then adds the Sentinel Desktop to an order line. 4. Order Management sends a request to Pricing to price the order line. 5. Pricing looks for Calculate My Shipping Charges in the session cache but does not find it because this is the first request in this session. 6. Pricing gets Calculate My Shipping Charges from the database and loads it into the session cache. 7. User 2 signs into Order Management, creates a sales order, and then adds the Sentinel Desktop to an order line. 8. Order Management sends a request to Pricing to price the order line. 9. Pricing looks for Calculate My Shipping Charges in the session cache, finds it, and uses it to price the order line. Continuing this example, assume the Administrator modifies the pricing algorithm. 1. Administrator modifies Calculate My Shipping Charges, creates version 2 of this pricing algorithm, and then publishes it. 2. User 1, who has not signed out of Order Management, creates a new sales order, and then adds the Sentinel Desktop to an order line. 3. Order Management sends a request to Pricing to price the order line for User Pricing looks for Calculate My Shipping Charges in the session cache, finds version 1, and then uses it to price the order line for User User 2 signs out of and signs into Order Management, creates a sales order, and then adds the Sentinel Desktop to an order line. 6. Order Management sends a request to Pricing to price the order line for User The administrator published version 2, so Pricing looks for version 2 of Calculate My Shipping Charges in the session cache but does not find it. So Pricing loads version 2 into the session cache, and then uses version 2 to price the order line for User User 3 signs into Order Management, creates a sales order, and then adds the Sentinel Desktop to an order line. 9. Order Management sends a request to Pricing to price the order line for User Pricing looks for version 2 of Calculate My Shipping Charges in the session cache, finds it, and then uses it to price the order line for User 3. How the Cache Works for Service Mappings Pricing publishes each service mapping definition to the cache in Oracle Metadata Service. If you do not modify any service mapping definition, then Pricing reads the definition from the cache in Oracle Metadata Service when it prices an item. 114

121 Chapter 5 Performing Various Administrative Work If you modify one or more service mapping definitions, then Pricing does the following work Gets the service mapping definition that you modified. Generates the schema for the definition you modified. Publishes the schema to the cache in Oracle Metadata Service. Reads the definition from the cache in Oracle Metadata Service to price an item. For details, see section Oracle Metadata Services in the book titled Oracle Fusion Middleware Understanding Oracle Application Development Framework on Examples of Using the Cache with Pricing Rules This section includes examples of using the cache with pricing rules in Order Management, where. User 1 and User 2 are each an Order Entry Specialist who use the Order Management work area. Administrator is a Pricing Administrator who uses the Pricing Administration work area. Behavior Without Cache Refresh In this example, assume the Pricing Administrator set up the Sentinel Desktop with a unit price of $300. Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 1 User 1 adds the Sentinel Desktop to an order line. $300 $300 2 User 2 adds the Sentinel Desktop to an order line. $300 $300 3 Administrator updates the price for the Sentinel Desktop to $399. Not applicable Not applicable 4 User 1 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $300 5 User 2 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $300 $399 $399 Behavior With Cache Refresh Assume the Pricing Administrator set up the Sentinel Desktop with a unit price of $300, that you set up the cache so it refreshes every 60 minutes, and that the Order Management users wait 60 minutes before signing back in. Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 1 User 1 adds the Sentinel Desktop to an order line. $300 $300 2 User 2 adds the Sentinel Desktop to an order line. $300 $

122 Chapter 5 Performing Various Administrative Work Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 3 Administrator updates the price for the Sentinel Desktop to $399. Not applicable Not applicable User 1 signs out, waits 60 minutes, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $399 User 2 signs out, waits 60 minutes, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $ $399 $399 Behavior With Two Charges, Without Cache Refresh Assume the Pricing Administrator set up the Sentinel Desktop with charge 1 of $300, and then adds charge 2 of $200. Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 1 User 1 adds the Sentinel Desktop to an order line. charge 1 equals $300 charge 1 equals $300 2 User 2 adds the Sentinel Desktop to an order line. charge 1 equals $300 charge 1 equals $300 3 Administrator adds charge 2 of $200 to the Sentinel Desktop. Not applicable Not applicable 4 User 1 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. charge 1 equals $300 charge 1 equals $300 User 2 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. charge 1 equals $300 5 charge 2 equals $200 charge 1 equals $300 charge 2 equals $200 Behavior With Two Charges, With Cache Refresh Assume the Pricing Administrator set up the Sentinel Desktop with charge 1 of $300, and then adds charge 2 of $200. Assume you set up the cache so it refreshes every 60 minutes, and that the Order Management users wait 60 minutes before signing back in. Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 1 User 1 adds the Sentinel Desktop to an order line. charge 1 equals $300 charge 1 equals $

123 Chapter 5 Performing Various Administrative Work Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 2 User 2 adds the Sentinel Desktop to an order line. charge 1 equals $300 charge 1 equals $300 3 Administrator adds charge 2 to the Sentinel Desktop equal to $200 Not applicable Not applicable User 1 signs out, waits 60 minutes, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. charge 1 equals $300 User 2 signs out, waits 60 minutes, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. charge 1 equals $ charge 1 equals $300 charge 2 equals $200 charge 2 equals $200 charge 1 equals $300 charge 2 equals $200 charge 2 equals $200 Behavior With Price Adjustment, Without Cache Refresh In this example, assume the Pricing Administrator set up the Sentinel Desktop with the unit price equal to $300, and then adds a $20 markup. Step Description Unit Price with Cache Enabled Unit Price with Cache Disabled 1 User 1 adds the Sentinel Desktop to an order line. $300 $300 2 User 2 adds the Sentinel Desktop to an order line. $300 $300 3 Administrator adds an adjustment matrix that specifies a $20 markup on the Sentinel Desktop. Not applicable Not applicable 4 User 1 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $300 5 User 2 signs out, signs in, creates a new sales order, and then adds Sentinel Desktop to an order line. $300 $320 $320 Related Topics Managing Pricing Algorithms: Procedure 117

124 Chapter 5 Performing Various Administrative Work Pricing Rules: Explained Managing Service Mappings: Explained Caching Data in Pricing: Procedure You can modify cache behavior or disable the cache that Pricing uses with pricing rules. Modifying Cache Behavior Pricing uses the cache in a shared application module in the Oracle Application Development Framework to cache each pricing rule. You can modify some of the behavior for this cache. Note that Pricing comes predefined to use this cache, by default. It is not necessary to set it up. Modify cache behavior. 1. Sign into Oracle Enterprise Manager For details, see Oracle Enterprise Manager Documentation at In the navigation tree, expand Application Deployments, expand Internal Applications, and then click OrderOrchestration. In the menu, click ADF, and then click Configure ADF Business Components. In the tree, expand oracle.apps.scm.pricing.priceexecution.servicemappings, and then click OcCoreLookupAMShared. In the Properties area, set the following values. Property Time To Live Number of milliseconds that data in the cache remains alive. Most Oracle Fusion Applications use milliseconds, which is 60 minutes. For example, assume you set Time To Live to , and that Application Development Framework refreshes the cache at exactly 01:00:00:001 PM. Application Development Framework will not refresh the cache until 02:00:00:001 PM. At 1:30 PM, assume you modify a pricing rule that Order Management uses. The cache will not contain your modification until 02:00:00:001, and Order Management will continue to display pricing according to the old pricing rule until 1 millisecond after 2 PM. Idle Instance Timeout Number of milliseconds to wait before removing a definition that Pricing does not access. Application Development Framework periodically removes data that no application accesses from the cache to optimize performance. Most Oracle Fusion Applications use milliseconds, which is 10 minutes. For example, assume you set Idle Instance Timeout to , and that Pricing accesses pricing rule x at exactly 01: 00:00:001 PM to price an item. If Pricing does not access pricing rule x again before 01:10:00:001 PM, then Application Development Framework will remove pricing rule x from the cache. 118

125 Chapter 5 Performing Various Administrative Work For example. Disabling the Cache Pricing comes predefined to enable and use the cache with each pricing algorithm, by default. It is recommended that you not disable it in your production environment. However, you can disable it in a test environment so you can examine the results of your development work without waiting for the cache to refresh. In this example, you disable the cache for the Price Sales Transactions pricing algorithm. You can disable the cache for whichever algorithm you are testing. Disable the cache. 1. In the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, search for Price Sales Transactions, and then click the row that displays the most recent published version Assume this environment contains published versions 0, 1, and 2, so click the row that displays version 2. Click Actions, and then click Create Version. In the Name column, click the link for the version you just created. On the Edit Algorithm page, expand step 1, Set Initial s, and then click step 2, Initialize. In the Subalgorithm area, in the Input Variables area, enter the following value, and then click Save and Close. Variable EnableCache true 8. On the Manage Algorithms page, click the row that contains version 3 of Price Sales Transactions. 9. Click Actions, and then click Publish. 119

126 Chapter 5 Performing Various Administrative Work 10. Sign into Order Management Cloud, create a sales order, add an order line, and then verify that Pricing applies your latest modifications. Related Topics Managing Pricing Algorithms: Explained 120

127 6 Chapter 6 Managing User Interfaces Managing User Interfaces Managing Pricing Totals: Procedure A pricing total is the sum of multiple charges. You can use it to combine and display the values of several charges as a single value. Note the following points: Oracle Fusion Pricing uses a pricing algorithm named Calculate Sales Order Totals to calculate the totals that Order Management Cloud displays in the Total dialog when the order entry specialist creates a sales order. The Manage Pricing Totals page specifies the pricing totals to include in this dialog. Each of these pricing totals references a pricing algorithm that specifies the logic that the pricing algorithm uses to calculate each pricing total. For example, the predefined Total List Price pricing total references a pricing algorithm that adds up the extended amounts of each one-time price charge for every Buy line for the charge components where the price element equals LIST_PRICE. For details, see Pricing Architecture: How It Works. For the example in this topic, assume Order Management displays the following values in the Total dialog: Assume you must modify this Totals dialog in the following ways: Calculate total credit before you calculate total tax. Move the Total Tax line to immediately below Total Credit. Change the text Pay Now to Your Total Price. 121

128 Chapter 6 Managing User Interfaces You modify the pricing algorithm to change the calculation sequence and the sequence of lines in the dialog, and you use the Manage Pricing Totals page to modify the text. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To manage pricing totals, do the following work: Examine the current behavior. Modify the pricing algorithm. Modify the pricing totals setup. Test your work. Examine the Current Behavior Examine the current behavior: Log into Order Management with administrative privileges. In the Navigator, click Order Management. On the Overview page, click Tasks, and then click Create Order. Complete attributes in the header. In the Order Lines area, add an item. For this example, assume you add the following item: Item Your Price AS54888, Desktop Computer 2, Click 2,490 next to Sale Price, and then examine the price details. 7. Click 2,490 next to Add, examine the price details in the Amount Sale Price dialog, and then click Add. For details about how to modify this dialog, see Managing Pricing Results Presentations: Procedure. 8. Click 2,490 next to Total at the top of the page, and then examine the price details in the Total dialog. For this example, assume Order Management displays the Total dialog included earlier in this topic. Modify the Pricing Algorithm Modify the pricing algorithm: 1. In the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, click the Calculate Sales Order Totals row, click Actions, and then click Create Version. 4. Click Calculate Sales Order Totals in the row that includes In Progress in the Status column. 122

129 Chapter 6 Managing User Interfaces 5. On the Edit Algorithm page, click the Total Credit row, click Move Up, and then verify that your modification resembles the following sequence: 6. Click Save and Close. 7. On the Manage Algorithms page, click the Calculate Sales Order Totals row that includes In Progress in the Status column, click Actions, and then click Publish. Modify the Pricing Totals Setup Modify the pricing totals setup: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Totals. On the Manage Pricing Totals page, in the Search area, set Transaction Enabled to Yes, and then click Search. Notice that the values in the Name column match the values that you observed in the Total dialog. In the Name column, change the following value, and then click Save and Close 123

130 Chapter 6 Managing User Interfaces Old New Pay Now Your Total Price Test Your Work Test your work: 1. In the Navigator, click Order Management. 2. On the Overview page, click Tasks, click Create Order, add the same item you added earlier, click Add, click 2,490 next to Total at the top of the page, and then verify that the Total dialog displays Total Credit immediately above Total Tax, and that it displays the Your Total Price text. Related Topics Oracle Fusion Pricing: Overview Pricing Architecture: How It Works Managing Pricing Algorithms: Explained Managing Price Elements: Procedure Managing Price Details on Order Lines: Procedure You can use a pricing results presentation or modify the Sales service mapping to specify how to display each price element in the price breakdown on an order line in a sales order. Oracle Fusion Pricing provides the details that Order Management Cloud displays in different price breakdowns, such as the breakdown in the Amount dialog for an order line, or the Total dialog of a sales order. A pricing results presentation is a template that specifies how to display each price element in the price breakdown on the order line. You can also modify the Sales service mapping to specify some aspects of this display. Summary of the Work Manage price details on order lines. 1. Examine the current behavior. 2. Manage the pricing results presentation. For this example, assume you must display the rounding adjustment in the price breakdown that Order Management displays in the Amount Sale Price dialog on an order line. This topic includes example values. You might use different values, depending on your business requirements. Examine the Current Behavior Examine the current behavior. 1. Sign into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. 2. In the Navigator, click Order Management. 3. On the Overview page, click Tasks, and then click Create Order. 124

131 Chapter 6 Managing User Interfaces 4. Specify attributes in the header. 5. In the Order Lines area, add an item. For this example, assume you add the following item. Item Your Price AS54888, Desktop Computer 2, Click 2,500 next to Sale Price, and then examine the price details. 7. Click 2,500 next to Add, examine the price details in the Amount Sale Price dialog, and then click Add. Order Management displays the following dialog. Assume you must add the rounding adjustment in this dialog. 8. Click 2,500 next to Total at the top of the page, and then examine price details in the Total dialog. For details about how to modify the Total dialog, see Managing Pricing Totals: Procedure. Manage the Pricing Results Presentation Manage the pricing results presentation In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Results Presentations. On the Manage Pricing Results Presentations page, in the Name attribute, enter %, and then click Search. The Manage Pricing Results Presentations page displays the predefined pricing results presentations. 5. Examine the pricing results presentations. To reduce maintenance, it is recommended that you use a predefined pricing results presentation instead of creating a new one. 6. Click the row that includes QP_SALES_PRICE_BREAKDOWN in the Name column. Order Management comes predefined to use this pricing results presentation to display the Amount Sale Price dialog. 125

132 Chapter 6 Managing User Interfaces 7. In the Price Elements area, choose Selected Price Elements. 8. Click Actions, and then click Select and Add. 9. In the Select and Add dialog, in the Element Name attribute, enter %, and then click Search. Notice that you can use this dialog to specify the elements that Order Management displays in the Amount Sale Price dialog. 10. in the Element Name attribute, enter Your Price Rounding Adjustment, and then click Search. Click the row that includes Rounding Adjustment in the Element Name column, click Apply. 11. in the Element Name attribute, enter Your Price, and then click Search. 12. Click the row that includes Your Price in the Element Name column, click Apply, and then click OK. Note that the Amount dialog in Order Management only displays elements that you add, and that it only displays elements that apply for the order line. For example, if the amount on the order line does not require rounding, then the dialog will not display a line for the rounding adjustment. To avoid an empty dialog that does not contain any price lines, it is recommended that you add at least one element that will display in most situations, such as Your Price. 13. Click Save and Close. 14. Test your work. Sign into Order Management, create a sales order, specify a customer, and then add an order line. On the order line, click the link in the Amount column. The price breakdown displays in the Amount dialog. Verify that the Amount dialog displays the price elements that you specified on the Manage Pricing Results Presentations page. Modifying the Sales Service Mapping In this example, you will modify the Sales service mapping so Order Management displays cost and margin in the price breakdown on the order line. 1. Sign in to Oracle Fusion Pricing with the Pricing Manager or Order Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then, in the Pricing Configuration area, click Manage Service Mappings. 3. On the Manage Service Mappings page, click Sales. 4. On the Edit Service Mappings page, click Sources, and then click the row that includes OrderChargePriceBreakdown in the Source column. 5. On the Entity Mappings tab, click the row that includes PricingResultsParameter in the Entity column. 6. In the Mappings area, notice the following predefined mappings. Expression Description PresentationPrivilege 'VIEW_ PRICE_ ADJ_ELEMENTS' Specifies to display only price adjustment elements when the Order Entry Specialist views the price breakdown. ResultPresentationCode 'QP_ SALES_ PRICE_ BREAKDOWN' Specifies to use the QP_ SALES_ PRICE_ BREAKDOWN pricing results presentation when displaying the price breakdown. 7. Set the following value. 126

133 Chapter 6 Managing User Interfaces Expression Description PresentationPrivilege 'VIEW_ ALL_ PRICE_ ELEMENTS' Specifies to display all price adjustment elements, including cost and margin details, when the Order Entry Specialist views the price breakdown. Related Topics Oracle Fusion Pricing: Overview Managing Price Elements: Procedure Managing Pricing Lookups: Procedure Oracle Fusion Pricing comes predefined with the lookups that it displays in the Pricing Administration work area and in some of the Pricing pages of the Setup and Maintenance work area. You cannot delete a predefined lookup, but you can modify some attributes of some lookups. Summary of the Work To manage pricing lookups, do the following work: 1. Examine the current behavior. 2. Modify a pricing lookup. 3. Test your work. For this example, assume you must add a new value that allows you to specify a loss leader pricing strategy. You add this value to the Pricing Strategy Objectives lookup. This topic includes example values. You might use different values, depending on your business requirements. Caution: It is recommended that you only modify a lookup when the modification is critical to meeting your business requirements. Most predefined lookups make sense in their predefined context. In most situations, it should not be necessary to modify them. If you must modify a predefined lookup, then you must make sure that you do not modify a lookup that affects Pricing logic. The example in this topic does not modify Pricing logic. It affects only your requirement to document how you use a pricing strategy. Some lookups are required. For example, the Customer Size attribute of a pricing profile is required. You can modify some of these lookups. If you are not certain whether or not modifying a lookup will affect Pricing logic, then you must consult with Oracle before you make the modification. Examine the Current Behavior Examine the current behavior: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Pricing Strategies. On the Manage Pricing Strategies page, click Actions, and then click Create. 127

134 Chapter 6 Managing User Interfaces 5. On the Create Pricing Strategies dialog, click the Objectives attribute, and notice that it displays the following values: Competitive pricing Profit maximization Revenue maximization 6. Click Cancel. Modify a Pricing Lookup Modify a pricing lookup: In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Lookups. On the Manage Standard Lookups APPLICATION QP page, in the Search area, set one or more attributes to filter the search results, and then click Search. For this example, set the following value. Module Pricing Administration 5. In the Search Results area, scan the Meaning column for a lookup that describes the attribute that you must modify. For this example, you modify the Pricing Strategy Objectives lookup. 6. Click the row that includes Pricing Strategy Objectives in the Meaning column. 7. In the ORA_QP_STRATEGY_OBJECTIVES area, click Actions, click New, and then set the following values. Lookup Code LOSS_LEADER Display Sequence 4 Meaning Loss leader Description Business objective to stimulate sales for other, more profitable items 8. Modify the values in the Display Sequence column so that it uses the following sequence: Lookup Code Display Sequence LOSS_LEADER 1 ORA_ COMPETITIVE_ PRICING 2 ORA_ MAXIMIZE_ PROFIT 3 128

135 Chapter 6 Managing User Interfaces Lookup Code Display Sequence ORA_ MAXIMIZE_ REVENUE 4 9. Click Save and Close, and then click Done. Test Your Work Test your work: In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Pricing Strategies. On the Manage Pricing Strategies page, click Actions, and then click Create. On the Create Pricing Strategies dialog, click the Objectives attribute, and verify that it displays the following values: Loss leader Competitive pricing Profit maximization Revenue maximization 5. Click Cancel. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Strategies: Procedure Lookups: Explained Managing Pricing Descriptive Flexfields: Procedure Oracle Fusion Pricing includes predefined descriptive flexfields that you can use to store details. Summary of the Work To manage pricing descriptive flexfields, do the following work: 1. Examine the current behavior. 2. Modify a descriptive flexfield. 3. Test your work. For this example, assume you must add a new field that allows you to describe details about the pricing strategy objective. This topic includes example values. You might use different values, depending on your business requirements. For details about flexfields, see Descriptive Flexfields: Explained. Examine the Current Behavior Examine the current behavior: 1. Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. 129

136 Chapter Managing User Interfaces In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Pricing Strategies. On the Manage Pricing Strategies page, click Actions, and then click Create. On the Create Pricing Strategies dialog, click the Objectives attribute, and notice the values that it displays. Expand and contract the Additional Information area. Notice that this area is empty. You will add a text box that you can use to describe the pricing strategy objective. 7. Click Cancel. Modify a Flexfield Modify a flexfield: In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Descriptive Flexfields. On the Manage Pricing Descriptive Flexfields page, in the Search area, set one or more attributes to filter the search results, and then click Search. For this example, set the following value. Module Pricing Administration 5. In the Search Results area, scan the Name column for a flexfield that describes the pricing entity that you must modify. For this example, you modify the flexfield named Pricing Strategy Header DFF. 6. Click the row that includes Pricing Strategy Header DFF in the Name column, click Actions, and then click Edit. 7. On the Edit Descriptive Flexfield dialog, click Actions, and then click Create. 8. On the Create Segment dialog, set the following values. Name LOSS_LEADER Data Type Character Set 150 Characters Optional Prompt Description of the business objective Display Type Text Box Display Size 150 Display Height 4 Enabled Contains a check mark 130

137 Chapter 6 Managing User Interfaces Range Type, Required Does not contain a check mark Instruction Help Text Enter details that describe how you intend to meet the objective for this strategy 9. Click Save and Close, and then click Save and Close again. 10. On the Manage Pricing Descriptive Flexfields page, click the row that includes Pricing Strategy Header DFF in the Name column, and then click Deploy Flexfield. 11. On the dialog that displays, wait until the indicator reaches 100%, and then click OK. 12. On the Manage Pricing Descriptive Flexfields page, click Done. Test Your Work Test your work: In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Pricing Strategies. On the Manage Pricing Strategies page, click Actions, and then click Create. Expand and contract the Additional Information area. Verify that this area includes the flexfield that you added, and that you can enter text. 5. Click Cancel. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Strategies: Procedure Flexfields: Overview Descriptive Flexfields: Explained User Modifications Managing Pricing Guidelines: Described A pricing guideline is a rule that you define for an item, user role, customer details, or time period that controls modifications to price, net price, margin, and so on. You can create a pricing guideline for each pricing component according to your business requirements. You can create a pricing guideline to achieve the following results: Set a maximum discount amount, or set a maximum discount percent. Define a minimum margin percent. Control pricing for an item that is not configured or for a configured item. Make sure the Order Entry Specialist sets values that remain within your company profitability policy while negotiating a price with the customer. 131

138 Chapter 6 Managing User Interfaces Reference a pricing matrix so that you can leverage the conditions, constraining values, and violation type that the matrix specifies. Pricing can validate each sales order against a pricing guideline at one of the following predefined events: Save Customer Update Reprice Validate Submit Note the following points: Pricing validates the entire transaction. Pricing validates only the order line for a line pricing event or for a manual price adjustment. Pricing validates against each charge component. Using the manual price adjustment as an example, assume you create a guideline that disallows each adjustment that exceeds 10%. Assume the Order Entry Specialist applies the following adjustments: one for 9%, one for 9%, and one for 8%. Pricing will individually evaluate each of these adjustments. It will not evaluate the sum of adjustments, such as the entire 27%. None of the individual adjustments exceeds 10%, so Pricing will not create a violation. If Pricing determines that a sales order violates a pricing component, then it logs a pricing violation message and displays it as a warning. The Order Entry Specialist can submit a sales order that contains a pricing violation. How it Works Pricing uses the following steps when it validates the sales price: 1. An Order Entry Specialist performs an action in Order Management that requires pricing, such as editing the sale price. 2. Order Management sends a request to Pricing to price the transaction and to validate the sales price. 3. Pricing runs a pricing process to validate the sales price. It runs this pricing process according to the assignments that the Manage Pricing Process Assignments specifies. 4. Pricing runs a pricing algorithm that evaluates the pricing guidelines that you have defined for the pricing strategy when it prices the transaction. 5. Pricing returns any violations it finds for the order line charges for each charge component. 6. If Pricing returns a violation, then Order Management displays it as a warning or error, depending on how you configure the pricing guideline. 132

139 Chapter 6 Managing User Interfaces For example, Order Management can display the following warning that describes the violation: If a pricing violation occurs, then you can use the following tools to further control the sales order: Configure an approval rule that requires the Order Entry Specialist to get approval before submitting a sales order that contains a pricing violation. For details, see Using Visual Information Builder to Create Rules: Explained. Define a processing constraint to prevent the Order Entry Specialist from submitting a sales order that contains a pricing violation. For details, see Managing Processing Constraints: Procedure. Related Topics Managing Pricing Strategies: Procedure Profiles, Segments, and Strategies: How They Work Together Using Visual Information Builder to Create Rules: Explained Managing Processing Constraints: Procedure Managing Pricing Guidelines: Procedure In the example in this topic, you create a pricing guideline that controls the pricing adjustment the Order Entry Specialist can make on the AS54111 Standard Desktop item. You implement the following controls: If the manual price adjustment exceeds 20% of the list price, then display an information message, and allow the Order Entry Specialist to submit the sales order. If the manual price adjustment exceeds 40% of the list price, then display an error. Make sure the net price is 80% or more of the list price. This topic includes example values. You might use different values, depending on your business requirements. 133

140 Chapter 6 Managing User Interfaces Summary of the Work To manage a pricing guideline, do the following work: Add the control for the manual price adjustment. Add the control for Your Price. Add your pricing guideline to a pricing strategy. Test your work. Add the Control for the Manual Price Adjustment Add the control for the manual price adjustment: In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Guidelines. On the Manage Guidelines page, click Actions, and then click Create. In the Create Guideline dialog, set the following values, and then click Save and Edit. Name My guideline Business Unit Vision Operations 5. Add the control for the manual price adjustment. In the Charge Guideline Components area, click Actions, click Add Row, set the following values, and then click Save. Component Custom Adjustment Specify the component where Pricing must apply the pricing guideline. In this example, you are creating a pricing guideline against the charge component named Custom Adjustment that affects the adjustment the Order Entry Specialist can make. The Used in Guidelines attribute of the Manage Price Elements page determines the price element to use. At runtime, the evaluation occurs against the charge component because Pricing returns charge components in the runtime environment. You can also apply a pricing guideline that controls the changes the user can make on other components, such as Your Price, List Price, and so on. Calculation Type Percent of Operator Less than or equal to Calculation Component List Price 6. In the Search Results area, click Actions, click Add Row, and then set the following values. This area allows you to specify where to apply the pricing guideline at a detailed level. Item Level Item 134

141 Chapter 6 Managing User Interfaces You can choose All Items to apply the guideline to all items in the pricing strategy that this guideline references. Name AS54111 In this example, you apply the pricing guideline on for the AS54111 Standard Desktop item. Line Type Buy In some implementations, you can apply the pricing guideline only to Buy order lines. Applies To Price Note that Applies To can also apply to shipping charges. Pricing UOM Each Price Type All Charge Type Sale Charge Subtype Price 7. Click Create Charge Guideline Rule Matrix. 8. In the Charge Guideline Rules area, click Actions, click Add Row, and then set the following values. This area sets the rule to apply for the pricing guideline. Constraining 20 Violation Type Warning Note that, to add more conditions, you add more rows to this matrix. 9. At the top of the page, click Save. Notice that the Statement attribute now contains a value. If the Order Entry Specialist makes an adjustment that violates this guideline, then Order Management displays a similar message in the Price Adjustments dialog. Add the Control for Your Price Add the control for Your Price: 1. Create the pricing guideline for the manual price adjustment. In the Charge Guideline Components area, click Actions, click Add Row, and then set the following values. Component Your Price 135

142 Chapter 6 Managing User Interfaces Calculation Type Percent of Operator Greater than or equal to Calculation Component List Price 2. In the Search Results area, click Actions, click Add Row, set the following values, and then click Save. Item Level Item Name AS54111 Line Type Buy Applies To Price Pricing UOM Each Price Type All Charge Type Sale Charge Subtype Price 3. Click Create Charge Guideline Rule Matrix. 4. In the Charge Guideline Rules area, click Actions, click Add Row, set the following values, and then click Save. Constraining 80 Violation Type Warning 5. Click Access Set. 6. Click Actions, click Add Row, set the following value, and then click Save. Set Code COMMON 7. Click Approve. 136

143 Chapter 6 Managing User Interfaces Add Your Pricing Guideline to a Pricing Strategy Add your pricing guideline to a pricing strategy: Click Tasks, and then click Manage Pricing Strategies. On the Manage Pricing Strategies page, search for, and then open Corporate Pricing Strategy for editing. On the Edit Pricing Strategies page, click Guidelines. In the Charge Guidelines area, click Actions, and then click Select and Add. In the Select and Add dialog, set the following value, and then click Search. Name Corporate Pricing Strategy 6. In the Search Results, click the row, click Apply, and then click OK. 7. In the Charge Guidelines area, set the Start Date for your guideline. 8. At the top of the page, click Save and Close. Test Your Work Test your work: 1. Log into Order Management. 2. Create a sales order with the following values. Customer Computer Service and Rentals Business Unit Vision Operations 3. Add an order line with the following values. Item AS Sentinel Standard Desktop Quantity 1 UOM Each Notice the order line displays a Sale Price of 2, and a Recycling Fee of In the AS Sentinel Standard Desktop row, click the Pencil. 5. In the Edit Sale Price dialog, set the following values. Type Discount Amount Amount

144 Chapter 6 Managing User Interfaces Reason Price Match 6. Notice that the Edit Sale Price dialog displays the following values. List Price 2,000 Automatic Adjustments 0 Manual Adjustments 500 Net Price 1,500 Recall that you set up the following controls: Make sure the manual price adjustment does not exceed 20% of the list price. Make sure the net price is 80% or more of the list price. Note that this manual adjustment violates each of the controls: The $500 manual adjustment is 25% of the $2,000 list price. The net price is less than 80% of the list price. $1,600 is 80% of the list price. 7. In the Edit Sale Price dialog, click Save and Close. 8. At the top of the page, click Save. Order Management calls Pricing to validate the sales price. Pricing evaluates the pricing guidelines that reference the pricing strategy for the transaction, and then applies the guidelines. In this example, it finds two violations, and then sends the results to Order Management. 9. Notice that Order Management displays a Warning icon on the far left side of the order line. 10. Click the warning on the order line. 11. Verify that Order Management displays a warning that resembles the following message: The charge has a pricing violation for the charge component Your Price. The charge component Your Price must be greater than or equal to 1,600 USD (value 80% of the charge component List Price). Related Topics Managing Pricing Strategies: Procedure Profiles, Segments, and Strategies: How They Work Together Messages 138

145 Chapter 6 Managing User Interfaces Managing Pricing Messages: Procedure You can use a pricing message that describes a price element. For example, you can use a pricing message in the following ways: Describe a price element, such as Total List Price, Discount, Shipping, Total Tax, and so on, that Order Management Cloud displays in the Total dialog on the Create Order page. Describe the reason for a sale price violation. For example, Pricing displays the QP_FLOOR_PRICE_VIOLATION message when a cost element is less than the floor price. Describe how Oracle Fusion Pricing identifies the pricing segment or pricing strategy that it uses for a sales order. Describe other details, such as the name of an adjustment and the reason why Pricing applied it. Summary of the Work To manage a pricing message, do the following work: 1. Examine pricing message behavior. 2. Identify predefined tokens. 3. Create a pricing message. In this example, you create a pricing message that Pricing displays for the Sentinel Desktop item in the Corporate price list. Pricing then uses the pricing rule to determine the token value, and then displays the message at run time. This topic includes example values. You might use different values, depending on your business requirements. Examine Pricing Message Behavior Examine the message behavior that comes predefined with Pricing. Identify Predefined Tokens In most situations, you can probably use a predefined token. You must identify the token name so that you can reference it in you message. If you cannot find a predefined token that meets your requirements, then see Managing Pricing Message Tokens: Procedure. Identify predefined tokens: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Message Token Definitions. On the Manage Pricing Message Token Definitions page, choose the pricing entity where Pricing must display the message, and then click Search. For this example, set the following value: Pricing Entity Price List Items 6. In the Search Results area, click Price List Message. 7. On the Edit Pricing Message Token Definition page, click Refresh Token s. 8. Scan the search results for the tokens that look like might meet your requirements, and then note the values in the Token Name column. 139

146 Chapter 6 Managing User Interfaces For this example, you must display the name of the price list and the name of the item, so note the following token names: PRICE_LIST_NAME ITEM_NAME 9. Click Cancel, click Done, and then click Done again. 10. Click Save and Close. Create a Pricing Message Create a pricing message: 1. On the Setup page, search for, and then open Manage Pricing Messages. 2. On the Manage Pricing Messages page, choose the pricing entity where Pricing must display the message, and then click Search. For this example, set the following value: Pricing Entity Price List Items 3. Examine the predefined pricing messages. To reduce maintenance, it is recommended that you use a predefined pricing message instead of creating a new one. 4. If you cannot locate a pricing message that meets your requirements, then click Actions, click Add Row, and then set the following values. Name Description Enter text that Pricing can use to reference this pricing message. For this example, enter It is recommended that you use the following style: Enter only alphabetic text. Use all capital letters. Use an underscore to separate each word. Description Enter text that describes the purpose of this pricing message. This description is intended only to help you administer and manage pricing messages. Pricing does not display it elsewhere. Message Text Enter the text that Pricing will display. Enclose each token name that you use with curly brackets. For this example, enter Item {ITEM_NAME} in price list {PRICE_ LIST_ NAME}is discontinued. Pricing Entity Choose the pricing entity where Pricing must display the message. 5. Click Save. 6. Modify the pricing rule so that it can determine the token value. 140

147 Chapter 6 Managing User Interfaces Related Topics Oracle Fusion Pricing: Overview Managing Pricing Message Tokens: Procedure You can define a token that specifies the attributes that Oracle Fusion Pricing uses to determine the token value for a pricing entity. You can then use this token in a pricing message. Oracle Fusion Pricing uses the token to get and display the token value at run time. A token is placeholder for variable content, such as text or a number. An application replaces the token with a value at run time. For example, assume COST_ELEMENT_NAME is the token in message The {COST_ELEMENT_NAME} is less than the floor price. The application assembles this message at run time to The list price is less than the floor price. For another example, assume you select the CurrencyCode attribute and the Price List pricing entity, and you use this attribute as a token in a pricing message. At run time, Pricing returns the value of the CurrencyCode attribute in the pricing message, and then displays it in the price breakdown. In this example, you create a token that Pricing uses when it displays a message for the Sentinel Desktop item in the Corporate price list. You define Corporate and Sentinel Desktop each as a token value. Manage pricing message tokens: Log into Order Management with setup privileges, such as ORDER_MGR_OPERATIONS. In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Message Token Definitions. On the Manage Pricing Message Token Definitions page, in the Active attribute, click Yes, and then click Search. The Manage Pricing Messages page displays the predefined tokens. 6. Click Detach, and then examine the pricing message tokens. To reduce maintenance, it is recommended that you use a predefined pricing message token instead of creating a new one. 7. If you cannot locate a pricing message token that meets your requirements, then click Actions, click Create, and then set the following values. Name Description Enter text that Pricing can use to reference this pricing message token. It is recommended that you use the following style: Enter only alphabetic text. Use headline capitalization. For this example, enter Custom Price List Message. Description Enter text that describes the purpose of this pricing message. This description is intended only to help you administer and manage pricing messages. Pricing does not display it elsewhere. For this example, enter This definition contains custom tokens for prices. 141

148 Chapter 6 Managing User Interfaces Description Pricing Entity For this example, choose Price List Items. Active Add a check mark. Package Name Enter oracle. apps. scm. pricing. setup. pricingmessages. publicmodel. applicationmodule. You must use this value for all tokens. Application Module Enter PricingMessageTokenAttrDefnAM. You must use this value for all tokens Application Module Configuration Enter PricingMessageTokenAttrDefnAMShared. You must use this value for all tokens. View Object Enter the name of the view object where Pricing must display this message. Use the following format: <entityname>messagevo where: entityname. Identifies the name of pricing entity that you set in the Pricing Entity attribute of this token. For this example, Pricing must display this message on a price list, so enter PriceListChargeMessageVO. You can use the following values, depending on how you set the Pricing Entity attribute: View Criteria CostListChargeMessageVO ItemChargeGuidelineMessageVO ManualChargeAdjustmentMessageVO For this example, choose PriceListChargeMessageVC. 8. Click Save and Edit. 9. On the Edit Pricing Message Token Definition page, in the Pricing Message Token s area, click Refresh Token s. Related Topics Oracle Fusion Pricing: Overview 142

149 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Pricing Architecture: How It Works The pricing algorithm references a service mapping to price an item that it receives from an application, such as Order Management Cloud. The following diagram illustrates how a service mapping, pricing algorithm, and a matrix class work together to price an item. Service Mapping Matrix Class Pricing Algorithm You can do the following: Use the pricing entities that you define in a service mapping to provide a source for the pricing algorithm. Use the pricing algorithm to transform the attribute values that it receives from the service mapping to output values. Choose attributes in the condition and results columns of a matrix class from the entity attributes that you define in the service mapping. How Data Flows Through the Pricing Architecture 143

150 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes The following diagram illustrates how data flows through the pricing architecture. In this scenario, assume that Order Management is the calling application and the receiving application, and that it requires Oracle Fusion Pricing to price a sales order. Note that Pricing might use different services, sources, and algorithms for other scenarios. Service Mapping Order Header Order Line Input SDO Calling Application Source Output SDO Pricing Algorithm Receiving Application Pricing Process Explanation of Callouts The pricing architecture includes the following steps: 1. Order Management, which is the calling application in this scenario, uses the predefined CalculateSalesOrderTotals service to send data for one sales order to Pricing. 2. The CalculateSalesOrderTotals service references the predefined Sales service mapping. This service mapping includes the OrderTotal source, and it uses this source to convert the data that Order Management sends into the following input service data object (SDO). The OrderTotal source specifies the entities and attributes that this 144

151 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes SDO contains and that the service will use as input to the pricing architecture. For example, The OrderTotal source specifies to use the Header entity and the Customer attribute. Header Customer: Computer Solutions Line Item: AS54888 UOM: Each Key Entity Quantity: 2 Price As Of: April 1, The Sales service mapping specifies sources, entities, and mapping between entities and attributes so that Pricing can create the structure for the output SDO that it will send to Order Management. It adds the Charge entity and the 145

152 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes ChargeComponent entity to the following output SDO, but does not add values for the attributes that these entities contain. Header Line Customer: Computer Solutions Item: AS54888 UOM: Each Quantity: 2 Price As Of: April 1, 2016 Order Management Pricing Charge Charge Definition: Charge Type: Charge Subtype: Charge Component Element: Unit Price: Extended Amount: Charge Component Element: Unit Price: Extended Amount: Charge Component Element: Unit Price: Charge Component Element: Unit Price: Legend Entity s 4. Pricing uses a pricing process assignment to identify the pricing algorithm to run, and then applies this pricing algorithm to the service mapping. In this example, Pricing applies each step of the predefined Price Sales Transaction pricing algorithm to the Sales service mapping. Each algorithm step uses data from the output SDO and conditionally updates it in memory at run time. In this example, the pricing algorithm adds values to the attributes 146

153 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes in the Charge entity and the ChargeComponent entity of the following output SDO. For example, it adds a value of $1,000 to the Unit Price attribute. Header Line Customer: Computer Solutions Item: AS54888 UOM: Each Quantity: 2 Price As Of: April 1, 2016 Order Management Pricing Charge Charge Definition: Sale Price Charge Type: Sale Charge Subtype: Price Charge Component Element: Base List Price Unit Price: 1,000 Extended Amount: 2,000 Charge Component Element: List Price Unit Price: 1,000 Extended Amount: 2,000 Charge Component Element: Discount Unit Price: -100 Charge Component Element: Net Price Unit Price: 900 Extended Amount: 1,800 Legend Entity s To calculate the values that it adds, the Price Sales Transaction pricing algorithm performs the following work: Determine Pricing Segment Determine Pricing Strategy Get Price List Apply Discounts Calculate Shipping Charges 147

154 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Calculate Tax Calculate Totals Pricing performs the following calculation: Base List Price. Unit price of 1,000 multiplied by Quantity of 2 equals Extended Amount of 2,000. Net Price. Unit Price from Base List Price of 1,000 minus Discount of 100 equals Unit Price of 900. Unit Price of 900 multiplied by Quantity of 2 equals Extended Amount of Pricing sends the output SDO to Order Management. 6. Order Management receives the output SDO and uses it to update the entities that Order Management uses in a sales order, such as Extended Amount. How Pricing Algorithms Calculate Price for Sales Orders Pricing comes predefined to use the Price Sales Transaction algorithm and the Calculate Sales Order Totals algorithm to perform most of the pricing for a sales order. It uses the following sequence to price a sales order. User Action Step in Price Sales Transaction Step in Calculate Sales Order Totals A. Click Create Order, and then enter a value in the Customer attribute. B. Derive Pricing Strategy C. Calculate List Price Total D. Enter an item in the Select Item field, and then click Search. E. Get Base List Price Not applicable F. Apply Adjustments G. Calculate List Price H. Apply Discounts I. Calculate Net Price J. Compute Sales Tax K. Get Costs L. Calculate Margin M. Click Add to add an item to an order line. Not applicable N. Calculate List Price Total O. Calculate Discount Total P. Calculate Net Price Total Q. Calculate Tax Total R. Calculate Total Credits S. Calculate Shipping Total T. Calculate Total PayNow U. Click Save, Reprice, or Submit. Not applicable V. Repeat steps N through T. 148

155 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes User Action Step in Price Sales Transaction Step in Calculate Sales Order Totals W. Enter an item in the Select Item field, and then click Search. X. Repeat steps E through L. Not applicable Y. Click Add to an item to an order line. Not applicable Z. Repeat steps N through T. AA. Click Save, Reprice, or Submit. Not applicable AB. Repeat steps N through T. For example, assume the following occurs: 1. The Order Entry Specialist enters a value in the Customer attribute: Order Management sends a request to Pricing. Pricing runs the Derive Pricing Strategy step of the Price Sales Transaction algorithm to determine the pricing strategy to use for the customer. Pricing runs the Calculate List Price Total step of the Calculate Sales Order Totals algorithm to set the total price to zero, and then sends a reply to Order Management. Order Management displays the strategy in the View Pricing Strategy and Segment dialog. 2. The Order Entry Specialist enters an item in the Select Item field of the catalog search line, and then clicks Search: Order Management sends a request to Pricing. Pricing runs the Get Base List Price step through the Calculate Margin step of the Price Sales Transaction algorithm to price the item, and then sends a reply to Order Management that includes the item price. Order Management displays this price above the order lines area. 3. The Order Entry Specialist clicks Add to an item to an order line: Order Management sends a request to Pricing. To price the sales order, Pricing runs the Calculate List Price Total step through the Calculate Total PayNow step of the Calculate Sales Order Totals algorithm, and then sends a reply to Order Management. Order Management displays the total price for the order line in the Order Lines area, and the total price for the sales order in the order header. Related Topics Profiles, Segments, and Strategies: How They Work Together Service Mappings Managing Service Mappings: Explained A service mapping is a referential map that creates relationships between services, sources, entities, and attributes. It specifies a group of pricing entities and attributes that a service can retrieve and update. You can use it to model entities and attributes in a declarative environment without having to write software code. 149

156 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes The service mapping allows an application, such as Order Management Cloud, to price an item without having to get the pricing schema that Oracle Fusion Pricing requires. A service mapping specifies a group of pricing entities and attributes that a service mapping service can get and update. A service mapping references the following objects. Object Description Service Mapping Service Reference to a pricing algorithm. Each service mapping service allows you to control the actions that the pricing algorithm can perform. For example, the service mapping service named PriceSalesTransaction references the Line entity, and it specifies to allow Read and Write actions on this entity. A service mapping service is not a web service. Service Mapping Source Mapping that specifies the relationship between a source and entities. For example, the service mapping source named OrderLine creates a map between the following objects: Between the OrderLine source and the Header entity Between the OrderLine source and the Line entity The source provides the value for each attribute from the sales order. For details about how Pricing uses a service mapping, see Pricing Architecture: How it Works. 150

157 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes How a Service Mapping Maps Inputs to Outputs A service mapping contains entities, sources, and services. Pricing uses it to map the input SDO to the output SDO. The following diagram illustrates some of the main parts of the Sales service mapping, which is a typical service mapping that comes predefined with Pricing. Pricing uses it to price a sales order. 3 1 Header 4 HeaderId PricingStrategyId Order Header Order Line Line PricingSegment CustomerId HeaderId ItemId 2 CalculateSalesOrd ertotals LineId PriceAsOf Charge ChargeId ParentEntityId PriceTypeCode Key Source Service Entity Cross-reference ChargeComponent ChargeId UnitPrice Explanation of Callouts 151

158 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes You can define the following parts of a service mapping: 1. Source. Provides a structure so that Pricing can model data in the input SDO. For example, the predefined Sales service mapping includes the OrderTotal source, and this source includes details about the Order Header and Order Line. 2. Service. Requests the service mapping and receives the output SDO. For example, the CalculateSalesOrderTotals service references the entities and attributes that a pricing algorithm can use to calculate the total price of a sales order. 3. Entity. References the entities that the service mapping requires to structure the output SDO. In this example, the output SDO includes four entities. Each entity references one or more attributes. For example, the Header entity references the following attributes: PricingStrategyId. Allows the service mapping to map the input SDO to the pricing strategy on the output SDO. PricingSegmentCode and CustomerId. Allows the service mapping to map the input SDO to the pricing segment on the output SDO. 4.. References the attributes that the service mapping requires to structure the output SDO. Each service mapping fulfills a finite purpose. For example, the Sales service mapping prices a sales order, so it references attributes that a typical sales order includes, such as ItemId so that it can identify the item in the sales order, and UnitPrice so that it can multiply unit price by quantity, and do other calculations. Other service mappings might reference an entirely different set of attributes. Pricing Uses the Sales Service Mapping Pricing comes predefined to use the Sales service mapping to perform most of the pricing work required for a sales order. For example, the following diagram illustrates the map between the Header entity and the OrderHeader source. If the Order Entry Specialist enters a value in the Customer attribute, then Pricing uses the PriceSalesTransaction service because this 152

159 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes service references the Price Sales Transaction algorithm that identifies the strategy, and it uses the OrderHeader source because the Customer attribute is part of the order header where the Order Entry Specialist enters the customer name. 153

160 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Inheriting s from Other Services Some service mappings inherit their attributes from another service mapping. For example, the Entities area of the following PriceSalesTransaction service mapping does not reference any entities. If you click Inherit from Services, you can view the following list of service mappings. PriceSalesTransaction inherits the attributes that these services reference. For example, PriceRequestHeader references the AllowCurrencyOverrideFlag attribute, so PriceSalesTransaction inherits this attribute. This configuration allows the modifications that you make in PriceRequestHeader to also apply to PriceSalesTransaction. 154

161 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Managing Service Mappings: Procedure You can add attributes that contain your data, add attributes to the service, and add attributes to the source when you define a service mapping. For the example in this topic, assume you must add an attribute to a predefined service mapping so that Pricing can map freight details for an order line. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To manage a service mapping, do the following work: 1. Add the attribute that will contain your data. 2. Add your attribute to the service. 3. Add your attribute to the source. Add the That Will Contain Your Data Add the attribute that the service mapping can use to contain your data: 1. In the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Service Mappings. 3. On the Manage Service Mappings page, click Sales. Pricing comes predefined with the Sales service mapping that prices sales orders and order lines. 4. On the Edit Service Mappings page, click Entities You use the Entities tab to define the entity that receives the output of the service mapping. 5. Click the row that includes Line in the Entity column. The freight on board attribute resides on an order line, so you add it to the Line entity. 6. In the Line Details area, click Actions, click Add Row, set the following values, and then click Save. FreightOnBoardCode_ Custom Type String Allow Null Contains a check mark Add Your to the Service You must add the attribute to the service that will process the request so that this service can reference this attribute when it maps the input service data object (SDO) to the output SDO. For details, see Pricing Architecture: How It Works. Add your attribute to the service: 1. Click Services, and then click the row that includes PriceRequestLine in the Service column. 155

162 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Each of the services that comes predefined with Pricing performs a finite service. For example, PriceRequestLine processes a request to price an order line, CalculateSalesOrderTotals processes a request to calculate the total price for a sales order, and so on. 2. In the PriceRequestLine Details area, in the Entities tab, click the row that includes Line in the Entity column. 3. In the Line Entities area, click Actions, click Add Row, set the following values, and then click Save. FreightOnBoardCode_ Custom You might need to scroll to the bottom of the list to locate this attribute. Read Contains a check mark Write Does not contain a check mark Add Your to the Source You must add your attribute to the source. The service mapping uses this source to structure the input SDO. In this example, the calling application, such as Order Management Cloud, will send a code for freight on board, so you must administer the source so that it can accommodate this code. Add your attribute to the source: 1. Click Sources, and then click the row that includes OrderLine in the Source column. Each source that comes predefined with Pricing provides a unique model that the service mapping can use to structure the input SDO. For example, consider the following sources: OrderLine. References entities that an order line typically includes, such as the Line entity. These entities reference attributes that an order line typically includes, such as quantity, the date that the customer requested the order line, and so on. OrderHeader. References entities that an order header typically includes, such as the Header entity. These entities reference attributes that an order header typically includes, such as the customer identification, the selling business unit, the pricing strategy, and so on. 2. In the OrderLine Details area, in the Entities tab, click the row that includes Line in the Entity column. 3. In the Line Details area, in the Mappings tab, click Actions, click Add Row, set the following values, and then click Save. FreightOnBoardCode_ Custom View Object FreightTermCode Related Topics Oracle Fusion Pricing: Overview 156

163 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Pricing Algorithms Managing Pricing Algorithms: Explained A pricing algorithm is a process that uses conditional logic, variables, and functions to manipulate data in the output service data object (SDO) that Oracle Fusion Pricing uses, such as adding a value to each attribute in this SDO. You can use it to modify the logic that Pricing uses when it prices an item. Pricing uses different pricing algorithms to calculate different prices. For example, it uses the predefined Price Sales Transaction to price an item, and the Calculate Sales Order Totals pricing algorithm to calculate the sales order total. Each pricing algorithm can reference another pricing algorithm. You use Groovy script and Expression Builder to code a pricing algorithm. For more use cases that include pricing algorithms, search for Document ID (White Papers for Oracle Fusion Pricing) on My Oracle Support at and then examine the various attachments. The following set up illustrates a typical pricing algorithm Explanation of Callouts 157

164 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes A pricing algorithm includes the following parts: 1. Name. Each pricing algorithm achieves a finite goal, such as determining the shipping charge list to use when calculating the shipping charge, and creating the shipping charges for each order line that requires a shipping charge calculation. 2. Version. Pricing increments the version of the pricing algorithm each time you publish it. You can use the Manage Algorithm page to access each version so that you can control your declarative programming logic. Pricing uses the latest version in the runtime environment. 3. Sequence. A series of steps that the pricing algorithm processes in a sequence. You can move each step up or down to modify the sequence. For example, assume a tax authority requires that you calculate tax only on the item that you are selling, and not on the shipping charge. You can move Step 10, Compute Tax, to immediately above Step 4, Create Shipping Charges. 4. Type. Specifies the type of logic that the step uses, such as Conditional Action, Nested Action, Group, or Subalgorithm. For details, see Algorithm Steps: Explained. For example, Step 4, Create Shipping Charges, is a conditional step that writes the shipping charges to the output SDO only if the order line is a candidate for a shipping charge. It includes the following parts. Condition Description 'SUCCESS' == ServiceParam. OutputStatus & 'LINE' == Candidate. ParentEntityCode Run this step only if the order line is a candidate for a shipping charge. This condition uses the following format: SUCCESS ServiceParam. Identifies a data set in this pricing algorithm step. OutputStatus. &&. LINE. Candidate. Identifies a data set in this pricing algorithm step. ParentEntityCode. 5. Data Sets. Each row in the Data Sets area defines a data set, and it constrains the set of records that this step processes. 6. Variables. Defines the variables that this pricing algorithm uses. For example, if you set the NeedsCurrencyConversion variable to Yes in the Calculate Shipping Charges pricing algorithm, then each algorithm step that involves currency will perform a conversion. 7. Functions. Defines the functions that receive data from the pricing algorithm, processes it, and returns one or more values to the pricing algorithm. 8. Subalgorithm. A pricing algorithm that this pricing algorithm references. In this example, step 10 of the Calculate Shipping Charges pricing algorithm references the Compute Tax pricing algorithm. At runtime, Pricing runs the subalgorithm, and then returns to the subsequent step. In this example, it returns to step

165 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Data Sets In Pricing Algorithms The Data Sets area of a pricing algorithm constrains the set of records that this step processes. The following set up illustrates the parts of a typical data set Explanation of Callouts A data set includes the following parts: 1. Name. Text that describes the data set. It is recommended that you use camel case and make the initial letter uppercase. 2. Variable Path. An expression that specifies the source for the data set. You can use one of the following formats: To define an expression that references a variable, use the following format: AlgorithmVariableName. where: AlgorithmVariableName identifies the name of an algorithm variable. identifies an attribute of the service data object. 159

166 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes In this example, the Header data set uses the following expression. It specifies to use the PriceRequest variable of this algorithm and the Header attribute of the service data object: PriceRequest.Header To define an expression that references a function, use the following format: algorithmfunctionname(argument1.argument2.argument3...) For example, the following expression specifies to use the strategyid argument and the currencycode argument of the checkallowedcurrency function: checkallowedcurrency(strategyid.currencycode) 3. Primary. You can set the Primary in each row of a data set to one of the following values: Contains a check mark. Use this row as the primary data set. Each algorithm step processes the set of records that the primary data set contains. You can define only one primary data set for each step. Does not contain a check mark. Use this row as a nonprimary data set. A nonprimary data set filters the records that the primary data set processes. 4. Cardinality. Specifies the cardinality between the primary data set and the nonprimary data set. You can use one of the following values: One. Specifies one primary data set to one nonprimary data set. Establishes an inner join. [LineId:{Candidate.ParentEntityId}] Zero or One. Specifies zero or one primary data sets to one nonprimary data set. Establishes an outer join. Many. Specifies zero or many primary data sets to one nonprimary data set. 5. Data Set Join. Defines a join that this step uses to filter the nonprimary data set. For example, the following data set join filters the Line data set: Note the following points: You can use a Groovy expression that evaluates to a Boolean value. You can use attributes from the nonprimary data set without a qualifier. If you use a data set join, then you cannot create an optimized index search, which might degrade performance. If you reference a function in the variable path, then you cannot use a data set join. If the expression is a literal string, then it is recommended that you define a data set join. For example: [ActiveFlag: 'Y', HeaderId:{Line.HeaderId}] Name modifier, Name2 modifier, 6. Order By. Specifies to sort the records of the data set in ascending order or descending order, according to one or more columns. You can use the following format: and so on where: A comma separates each level of the sort. 160

167 Chapter 7 modifier is (DESC ASC) Managing Pricing Algorithms, Service Mappings, and Matrix Classes (NULLS FIRST NULLS LAST) For example, consider the following sort: NetPrice DESC NULLS LAST, Header.Discount ASC NULLS FIRST NetPrice NetPrice NULLS FIRST This set up performs the following three level sort: a. Sorts the data set records in descending order according to NetPrice. It places records that contain a null value for NetPrice last. b. Sorts records within the NetPrice sort according to the value of the Discount attribute in the sales order header in ascending order. It places records that contain a null value for Discount first. c. Sorts records within the Discount sort according to the value of the NetPrice attribute in ascending order. It places records that contain a null value for NetPrice first. If you do not define a modifier, then Pricing uses Ascending. 7. Candidate Data Set. Identifies records that are candidates for processing in this step. Pricing comes predefined to use Candidate as the primary for most data sets. For example, if an Order Management Cloud user adds shipping charges to order line x, then this step will consider whether or not to apply shipping charges to order line x, depending on other factors that the algorithm considers, such as pricing strategy, pricing segment, and so on. You can use the following attributes of the Candidate data set. Variable Path Description Candidate uses the CandidateInt.ShippingChargeCandidate variable path, where: Primary CandidateInt. A variable of this pricing algorithm. It stores a value that determines whether or not the item is a candidate for a shipping charge. ShippingChargeCandidate. An attribute of the service data object. It specifies whether or not the item is a candidate for shipping charges. Candidate typically identifies the unfiltered set of records that this step processes, so Primary contains a check mark. 8. ServiceParam Data Set. Pricing comes predefined to use ServiceParam to identify the service data object and the attributes of this service data object that this step uses. ServiceParam uses the following values in this example. Variable Path Description ServiceParam typically uses the PriceRequest.PricingServiceParameter variable path, where: PriceRequest. A variable of this pricing algorithm. This variable references the Sales web service. PricingServiceParameter. An attribute of the Sales web service. Primary Candidate is typically the primary, and it references nonprimary data sets, such as ServiceParam, to filter the primary data set. So Primary does not contain a check mark for a nonprimary data set. Cardinality Zero or One specifies that there is zero or one ServiceParam to each Candidate.is it accurate to say: PricingServiceParameter is a node in the service data object. It can contain one or more attributes, such as CurrentPricingDate or ChargeComponentIdCntr. 161

168 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 9. Line Data Set. Pricing comes predefined to use Line to identify the attributes on the order lines that this step examines when it filters records in the primary data set. The Line data set uses the following values in this example. Variable Path Description Line typically uses the PriceRequest.Line variable path, where: PriceRequest. A variable of this pricing algorithm. This variable references the Sales service. Line. An attribute of the service data object. It identifies an order line. Cardinality Zero or One specifies that there is zero or one Line to each Candidate. In this example, each Candidate can reference only a single order line, so the cardinality is one to one. This cardinality also applies to the header because an order line can reference only one header. Data Set Join Line typically uses the [LineId:{Candidate.ParentEntityId}] join, where: LineId. Identifies the order line. For example, 101. Candidate. References the Candidate data set of this step. ParentEntityId. 10. Header Data Set. Pricing comes predefined to use Header to identify the attributes on the order header that this step examines to filter records in the primary record set. The Header data set uses the following values in this example. Variable Path Description Header typically uses the PriceRequest.Header variable path, where: Data Set Join PriceRequest. A variable of this pricing algorithm. This variable references the Sales service Header. An attribute of the service data object. It identifies an order header. Header typically uses the [HeaderId: {Line.HeaderId}] join, where: HeaderId. An attribute that identifies the header. For example, 101. Line. References the Line data set of this step. HeaderId. 11. Charge Data Set. Pricing comes predefined to use Charge to identify the charges that an order line references. The Charge data set uses the following values in this example. Variable Path Description Charge typically uses the PriceRequest.Charge variable path, where: PriceRequest. A variable of this pricing algorithm. This variable references the Sales service. Charge. An attribute of the service data object. It identifies one or more shipping charges. 162

169 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Description Cardinality Charge specifies that there are many Candidates to one Charge. isn't many charges to one candidate? 12. Local Variable. Define a variable for use only in the condition. 13. Default Action. Use Groovy to define the condition to run when the none of the other conditions you define are met. Pricing Algorithm Variables A pricing algorithm variable stores a value that can change depending on conditions or information that passes through each algorithm step. You can use it to receive data from the object that calls the pricing algorithm, or to send data to this object. You can define the following attributes of a pricing algorithm variable. s Description Name Alphanumeric text that describes the variable. Do not include spaces. Data Type Data type, such as String. If you set Data Type to Data Object, then you must set a value in the Internal Service Schema attribute. Required Add a check mark to make this variable required in an algorithm step. Input/Output Specify to use this variable for the following uses: Input. The object that calls this pricing algorithm can send the value of this variable to the pricing algorithm. Output. The pricing algorithm can send the value of this variable to the object that calls this pricing algorithm. Internal Service Schema If you set the Data Type variable to Data Object, then set Internal Service Schema to the service that provides information to this variable, or that can use the output that this variable provides. For example, the CalculateSalesOrderTotals service calculates the total price of a sales order. If you must use this variable to calculate this total price, then set Internal Service Schema to CalculateSalesOrderTotals. Default Expression Groovy expression that specifies the default value for this variable. If the input payload results in setting the value of this variable to a value that is not empty, then Pricing ignores this expression. Pricing Algorithm Functions A pricing algorithm function is a routine that receives data from the pricing algorithm, processes it, and then returns one or more values to the pricing algorithm. The following function includes parts of a typical pricing algorithm function. It displays the properties of a View Object Lookup query type. You can specify different properties for other query types. 163

170 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Explanation of Callouts A pricing algorithm function includes the following parts: 1. Name. Enter alphanumeric text. It is recommended that you use camel case and make the first letter lower case. Do not include spaces. For example, enter mypricingfunction. 2. Query Type. Choose one of the following values. Query Type Description Script Call a script that determines the value. 164

171 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Query Type Description View Object Lookup Get values from an object that displays in a view in the Pricing Administration work area. Hierarchical View Object Lookup Get values from an object that displays in a hierarchical view in the Pricing Administration work area. 3. Arguments. Click the Arguments link, and then add the arguments that you use to communicate data to and from the function. Note the following points: It is recommended that you use camel case and make the first letter upper case. Do not includes spaces. For example, MyPricingFunctionArgument. Pricing uses the arguments that you add in the same sequence that you add them. For example, if you add argument x, and then y, and then z, then Pricing uses argument x first, and then y, and then z. You can click Move Up or Move Down to modify this sequence. 4. Application Module. This example uses the following code. Example Description oracle. apps. scm. pricing. priceexecution. pricingprocesses. publicmodel. applicationmodule. PricingProcessAM Identify the application module. 5. Application Configuration. This example uses the following code. Example Description ${(PriceRequest. PricingServiceParameter[0]. CacheEnabledFlag=null PriceRequest. PricingServiceParameter[0]. CacheEnabledFlag)? 'PricingProcessAMShared' : 'PricingProcessAMLocal'} Specify the application configuration. 6. View Object. This example references the following view object. Example Description SearchShippingCharge1 Specify the view object. 7. View Criteria. 8. In Memory Search Specification. This example uses the following code. Example Description isindaterange(startdate, EndDate, pricingdate) Specify how to search records that are currently in memory, where: isindaterange. The name of the search specification. 165

172 Chapter 7 Example Managing Pricing Algorithms, Service Mappings, and Matrix Classes Description StartDate. The search specification will only return records that start on or after this date. EndDate. The search specification will only return records that start on or before this date. pricingdate. The search specification will only return records that occur on this date. 9. Order By. Specify how to sort the records of the data set in ascending order or descending order, according to one or more columns. For details, see the Pricing Algorithm Data Sets section of this topic. 10. Single Row. 11. Bind Variables. 12. Hierarchical Query. If you add a hierarchical view object lookup, then you can click the Hierarchical Query tab, and then set the properties. You can set the following properties. Properties Description Connect By Specify how to connect. Query Result Alias Specify the alias. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Algorithm Steps: Explained You can specify the type of logic that a pricing algorithm step uses, such as Conditional Action, Nested Action, Group, or Subalgorithm. This topic describes the following step types that you use in most situations: Conditional Action Step Nested Action Step Group Step Conditional Action Step A conditional action step performs an action on all rows in the primary data set if this set meets the condition that you specify. It uses the following structure: If (condition 1) {... } else if (condition 2) {... } else if (condition 3) {... }... else { default } In this example, you examine a step that calculates a rollup charge for a configured item. It evaluates each row of the primary data set, iterates through the charge for the root item of the configured item, and the charge for each child item, and creates a rollup charge for each charge definition, as necessary. It does the following work: Get the charges from the PriceRequest payload. 166

173 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes If Charge.RollupFlag = true, which indicates that the payload contains at least one rolled up charge, then create a RollupCharge variable in the payload. Populate the RollupCharge variable with rolled-up charges for each child item of the configured item. Set the OutputStatus to SUCCESS on the ServiceParam data set to indicate that this step successfully created the rollup charges. Examine a step that includes a conditional action: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, click Calculate Rollup Charges for Prepriced Orders, click Actions, and then click Create Version. 4. In the Name column, click the new version of Calculate Rollup Charges for Prepriced Orders that you just created. 5. On the Edit Algorithm page, click the Create Rollup Charge step. 6. In the Step Details area, in the Condition window, examine the following code. Condition Description!Charge. RollupFlag && 'LINE' == Charge. ParentEntityCode && ('ROOT' == Line. ItemType 'COMPONENT' == Line. ItemType) Set the exit criteria for this step. In this example, this condition sets the OutputStatus to SUCCESS in the ServiceParam data set to indicate that this step successfully created the rollup charges. 7. In the Step Details area, notice the following parts of the Execute Condition area. Part Description Local Variable Declare variables that apply only to the code that you write in the Conditional Actions and Default Action areas. Conditional Actions Define the conditional logic that Pricing applies for this step. Default Action If the conditional action does not evaluate to true, then define the logic to use for this default action step. 8. In the Local Variables area, notice the following variables. Variable Name Description Rollup Identifies each charge when Pricing iterates through the code in the Action window in the Conditional Actions area. RollupChargeCounter Counts the iterations. 9. In the Conditional Actions area, notice the following condition. True Condition Description RollupCharge. size() = 0 Specifies the condition. 167

174 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 10. In the Conditional Actions area, examine the code in the Actions window. Notice that this code gets the charges for each child item of the configured item, and then populates the RollupCharge variable with the rolled-up charge for this child. Pricing iterates through this code for each child item until it prices each child. 11. Click Add Condition, and then click True Condition. Notice that Pricing added a new condition in the Conditional Actions area. If you add multiple conditions, then Pricing evaluates each condition in the sequence that the Conditional Actions area displays them. You can click Move Up or Move Down to modify this sequence. 12. In the Conditional Actions area, click Delete. 13. On the Manage Algorithms page, delete the In Progress version of the Calculate Rollup Charges for Prepriced Orders pricing algorithm. Nested Action Step A nested action step performs a different action on each row of the data set. For example, assume you must implement the following logic: If more than one order line on a sales order references the same item, then apply a discount for this item. In this example, you write a pricing algorithm step that applies action x to the first row of the data set, and action y to the other rows of the data set. You will examine a step that finds a charge on the shipping charge list for each item on each order line, and then writes the candidates to the output SDO. Examine a step that includes a nested action: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, click Calculate Shipping Charges, click Actions, and then click Create Version. 4. In the Name column, click the new version of Calculate Shipping Charges that you just created. 5. On the Edit Algorithm page, click the Find Shipping Charge Candidates step. 6. In the Step Details area, in the Condition window, examine the following code. Condition Description 'SUCCESS' == ServiceParam. OutputStatus & 'ERROR'!= Line. MessageTypeCode && 'ORDER' == Line. LineCategoryCode & ('STANDARD' == Line.ItemType 'ROOT' == Line. ItemType) & Line. AppliedShippingChargeListId!= null && finer(algmname + ': finding charge candidates for line ' + Line.LineId + ' (' + Line. InventoryItemId + ')') == null Set the exit criteria for this step. In this example, this condition sets the OutputStatus to SUCCESS in the ServiceParam data set to indicate that this step successfully found a charge on the shipping charge list for each item on each order line, and then wrote the candidates to the output SDO. 7. In the Nested Action area, notice that you can choose the data set that this step will query each time it processes a row in the primary data set. In this example, notice that this step comes predefined to use the Charge data set because it includes the data that this step requires to find a charge on the shipping charge list for each item, such as the PricingStrategyId to use for the order line, the SellingBusinessUnitId for the order header, and so on. 8. In the Actions area, click Add Action, and then notice that you can specify a different action for each row that the query returns. For example, choose First Row Actions to add an action that this step performs only on the first row that the query returns. 168

175 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 9. In the First Row Actions area, in the Actions window, examine the code, and notice that it finds a charge on the shipping charge list for each item that the first row references. To simplify viewing, copy this code to the clipboard, and then paste it into a word processing application. 10. In the No Row Actions area, in the Actions window, examine the code, and notice that it handles a situation where the step could not locate a shipping charge list for the item. 11. On the Manage Algorithms page, delete the In Progress version of the Calculate Shipping Charges pricing algorithm. Group Step A group step groups the rows in the primary data set according to the value of an attribute, and then processes a different action for each group. For example, the predefined Aggregate Roll Up Charge Components pricing algorithm rolls up charges so that your customer can view one value for a configured item. This step creates an aggregate charge component that sums the individual charge components for a rollup charge. In this example, you examine a step that finds a charge on the shipping charge list for each item on each order line, and then writes the candidates to the output SDO. Examine a step that includes a nested action: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, click Aggregate Roll Up Charge Components, click Actions, and then click Create Version. 4. In the Name column, click the new version of Aggregate Roll Up Charge Components that you just created. 5. On the Edit Algorithm page, click the Create Aggregate Charge Component by Element Code step. This step examines charge components that are not aggregated and adds them together according to the price element code for each rollup charge. It then creates the corresponding aggregate charge component and sets the RollupFlag for this component to true. 6. In the Step Details area, in the Condition window, examine the following code. Condition Description 'SUCCESS' == ServiceParam. Sets the exit criteria for this step. OutputStatus &!(Comp. IsPassedIn?: false) && Rollup!= null & &!(Rollup. In this example, this condition sets the OutputStatus to SUCCESS in the ServiceParam data set IsPassedIn?: false) && 'LINE' to indicate that this step successfully added charge components according to the price element == Rollup. ParentEntityCode & code for each rollup charge, and then created the corresponding aggregate charge component. (PriceElement == null Comp. PriceElementCode == PriceElement) & &!Comp. RollupFlag && Comp. AggregateChargeComponentId = null && Comp. SourceTypeCode!'MANUALADJUSTMENT' 7. In the Group by s area, notice the following predefined attributes. This step uses the following attributes to arrange rows in the primary data set into groups. Description Rollup. ChargeId Groups rows in the primary data set according to the ChargeId attribute in the Rollup data set. Comp. PriceElementCode Groups rows in the primary data set according to the PriceElementCode attribute of the Comp data set. 169

176 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Description Each attribute that you add in the Group by s area adds the potential for a separate group of rows in the primary data set. Pricing arranges them sequentially according to the attributes you add. If you add more than one attribute, then Pricing places the group according to the sequence that the Group by s area displays them. It places the first group first, and the second group immediately after the first group. It places rows that do not fall in any group immediately after the last group. For example, assume the following: The ChargeId attribute in rows two, five, and seven of the Rollup data set each equal 123. The PriceElementCode attribute in rows three, eight, and nine of the Comp data set each equal 456. Row five of the Rollup data set In this situation, this step arranges rows in the following sequence in the Comp primary data set: Row two of the Rollup data set Row seven of the Rollup data set Row three of the Comp data set Row eight of the Comp data set Row nine of the Comp data set All other rows that do not fall in the first group or the second group 8. In the Actions area, click Add Action, and then notice that you can specify the following different actions for the rows in each group. Actions Description Group First Row Actions Groups actions for the first row. Group Each Row Actions Groups actions for each row. Group Last Row Actions Groups actions for the last row. 9. On the Manage Algorithms page, delete the In Progress version of the Aggregate Roll Up Charge Components pricing algorithm. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Algorithms: Procedure A pricing algorithm is a process that uses conditional logic and calls functions to manipulate data in the output service data object (SDO), such as adding a value to each attribute in this SDO. You can modify a predefined pricing algorithm, or create a new algorithm. Predefined pricing algorithms provide a wide variety of pricing functionality. You might find it useful to modify some of these algorithms to implement the behavior that your deployment requires. Some algorithms contain a significant amount of logic. It 170

177 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes is recommended that you examine them to determine which ones you can modify to implement the logic that your business requires. For details about how a pricing algorithm works, see Pricing Architecture: How it Works. For the example in this topic, assume you must remove tax calculations that a predefined pricing algorithm performs so that the price of each sales order that your users create in Order Management Cloud does not include tax. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To modify a pricing algorithm, do the following work: Examine the current behavior. Create a new version of the algorithm. Modify the pricing algorithm. Verify your work. Examine the Current Behavior Examine the current behavior: 1. Log in to Order Management with a job role that allows you to create a new sales order, such as ORDER_MGR_OPERATIONS, and then, in the Navigator, click Order Management. 2. Click Tasks, and then click Create Order. 3. On the Create Order page, add a customer, and then add an item. For example, add a sales order that includes the following values, and then click Add. Customer Computer Service and Rentals Select Item AS In the Amount column, click the link, and then notice that the Amount dialog includes an amount for tax. This table shows an example of the Amount dialog that includes an amount for tax. Price Component Amount List Price 2,500 Discount 100 Tax 200 Net Price Plus Tax 2,

178 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Create a New Version of the Algorithm Create a new version of the algorithm: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, locate the algorithm that you must modify. Predefined pricing algorithms provide a wide variety of pricing functionality. To locate the pricing algorithm that you must modify, peruse the links in the Name column, click one that looks promising, and then examine the steps. It might be necessary to examine multiple pricing algorithms. For this example, you must disable tax calculation for a sales transaction, so, select the row that displays Price Sales Transactions in the Name column. Note that, for most situations, you can modify the Price Sales Transactions pricing algorithm to implement the logic that you require for pricing. 4. Click Actions, and then click Create Version. Notice that Pricing creates a new version and sets the Status to In Progress. A pricing algorithm can include the statuses shown in this table. Pricing Algorithm Status Description In Progress Editable but not available for Order Management. A pricing algorithm that you are currently developing is typically In Progress. Published Not editable and available for Order Management. Inactive No longer in use. Modify the Pricing Algorithm Modify the pricing algorithm: 1. In the Name column of the version you just created, click Price Sales Transactions. 2. On the Edit Algorithm page, examine the step names to verify that this pricing algorithm can implement the behavior you require. This algorithm includes steps that calculate tax, such as Compute Sales Tax, so it is likely that you can modify it to implement the behavior that this example requires. 3. Click the row that contains Compute Sales Tax in the Name column, click the Delete icon, and then click Save. 4. Click View Source, and then make sure the dialog that displays includes a message that is similar to the following: The following script has passed syntax check 5. On the Manage Algorithms page, click the row that contains the highest version of Price Sales Transaction, click Actions, and then click Publish. You might receive an error that is similar to the following. Another user changed row with primary key. 172

179 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes The Pricing Administration work area might indicate that it published the pricing algorithm. However, if you sign out, and then sign in, it might display as not published. To avoid this situation, click Actions, click Deactivate, click Actions, click Activate, click Actions, and then click Publish. Verify Your Work Verify your work: 1. Log in to Order Management, create a sales order, add a customer to this sales order, and then add an item. 2. In the Amount column, click the link, and then make sure that the Amount dialog does not include an amount for tax. This table shows an example of the Amount dialog without tax. Price Component Amount List Price 2,500 Discount 100 Net Price Plus Tax 2,400 Related Topics Oracle Fusion Pricing: Overview Verifying the Source Code for Pricing Algorithms: Procedure You can click View Source to verify the source code of a pricing algorithm On the Overview page, click Tasks, and then click Manage Algorithms. On the Manage Algorithms page, locate the algorithm that you must modify. Click Actions, and then click Create Version. Modify the pricing algorithm so it meets your requirements. Along the top of the Edit Algorithm page, Click View Source, and then make sure the dialog that displays includes a message that is similar to the following: The following script has passed syntax check 173

180 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes For example. The following code illustrates the kind of details that are available when you click View Source. View Source examines and validates your syntax. It then displays the Groovy code that defines the algorithm in a dialog. It is recommended that you use it before you publish your pricing algorithm. You can also use it to get a complete picture of how the pricing algorithm is defined, or to troubleshoot between versions of the pricing algorithm. For example, you can copy the source code of the working version and of the nonworking version, paste it into a code comparison application, and then examine the difference to help identify the code that might be causing the problem. //===================================================================== // Price Sales Transactions // Version: 2 // Start: :47: // End: // Description: Calculates prices for Sales documents (Quotes, Sales Agreements, Orders). // Version 2 Comments: Calculates prices for Sales documents (Quotes, Sales Agreements, Orders). //===================================================================== variables { PriceRequest(ioType:'InOut', type:'dataobject', required:true, context:'pricinginternal.pricerequestinternal') PerformCurrencyConversion(ioType:'None', type:'boolean', required:false, default:false) IsNonGsaCustomer(ioType:'None', type:'boolean', required:false, default:true) CalculateGSAPrice(ioType:'None', type:'boolean', required:false, default:false) PassedInEntities(ioType:'None', type:'dataobject', required:false, context:'pricinginternal.pricerequestinternal') } // Step "Set Initial s" - block step('set Initial s'){ // Step "Initialize" - SubAlgorithm step('initialize'){ subalgorithm(name:'set Initial s').input ('EnableCache':false,'PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } 174

181 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes // Step "Process and Split Passed In Charges" - if step('process and Split Passed In Charges', if:{pricerequest.charge.size() > 0}){ // Step "Process Passed In Charges and Charge Components" - SubAlgorithm step('process Passed In Charges and Charge Components'){ subalgorithm(name:'process Passed In Charges').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } // Step "Split Passed In Charge Components" - Split // Moves all the passed-in charge components that have been retained after processing to a separate SDO. step('split Passed In Charge Components'){ splitdocument().from(pricerequest.chargecomponent).as('comp').to(passedinentities.chargecomponent).where{true} } // Step "Split Passed In Charges" - Split // Moves all the passed-in charges that have been retained after processing to a separate SDO. step('split Passed In Charges'){ splitdocument().from(pricerequest.charge).as('charge').to(passedinentities.charge).where{true} } } // Step "Derive and Validate Strategy" - block step('derive and Validate Strategy'){ // Step "Derive Pricing Strategy" - SubAlgorithm step('derive Pricing Strategy'){ subalgorithm(name:'get Sales Pricing Strategy').input ('InvokeFromPriceSalesTransactions':true,'PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } // Step "Validate Pricing Strategy" - SubAlgorithm step('validate Pricing Strategy'){ subalgorithm(name:'validate Pricing Strategy').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } // Step "Validate Passed Pricing Terms" - block step('validate Passed Pricing Terms'){ // Step "Validate Pricing Terms" - SubAlgorithm step('validate Pricing Terms'){ subalgorithm(name:'validate Pricing Terms').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } // Step "Validate Override Currencies" - block step('validate Override Currencies'){ // Step "Validate Override Currency" - SubAlgorithm // Invoke the sub-algorithm 'Validate Override Currencies' step('validate Override Currency'){ subalgorithm(name:'validate Override Currencies').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } // Step "Get Charge Candidates For Coverages Goods and Services" - block step('get Charge Candidates For Coverages Goods and Services'){ // Step "Get Price List and Charge Candidates" - SubAlgorithm step('get Price List and Charge Candidates'){ 175

182 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes subalgorithm(name:'get Base List Price for Goods and Services').input ('CreateChargesFlag':false,'DerivePriceListFlag':true,'ElementParam':'QP_BASE_LIST_PRICE','GetChargeCandidatesFlag':tru.output ('PerformCurrencyConversion':'PerformCurrencyConversion','PriceRequest':'PriceRequest').run() } } // Step "Calculate Pricing Charges For Covered Items" - block // This step invokes the algorithm to calculate pricing charges for covered items to derive the percentage-based coverage prices. step('calculate Pricing Charges For Covered Items'){ // Step "If CoverageAssociations Exist" - if // Calculate Covered Item Prices if there are CoverageAssociations step('if CoverageAssociations Exist', if:{pricerequest.coverageassociation.size() > 0}){ // Step "Calculate Covered Item Charges" - SubAlgorithm step('calculate Covered Item Charges'){ subalgorithm(name:'calculate Covered Item Charges').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } } // Step "Calculate Pricing Charges For Coverages Goods and Services" - block // Call Calculate Pricing Charges where in Get Base // skip Derive PL and Get Charge Candidates, only Create Charges, but process rest of the ListPrice thru Margin Calculations step('calculate Pricing Charges For Coverages Goods and Services'){ // Step "Calculate Pricing Charges" - SubAlgorithm // This step invokes the algorithm to calculate pricing charges. step('calculate Pricing Charges'){ subalgorithm(name:'calculate Pricing Charges').input ('CreateChargesFlag':true,'DerivePriceListFlag':false,'GetChargeCandidatesFlag':false,'PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } // Step "Merge If Charges Passed In" - if step('merge If Charges Passed In', if:{passedinentities.charge.size() > 0 && finer('merging back passed-in charges and charge components') == null}){ // Step "Merge Back Passed In Charges" - Merge // Merges back the passed in Charge Components into Price Request SDO step('merge Back Passed In Charges'){ mergedocument().from(passedinentities.charge).to(pricerequest.charge) } // Step "Merge Back Passed In Charge Components" - Merge // Merges back the passed in Charge Components into Price Request SDO step('merge Back Passed In Charge Components'){ mergedocument().from(passedinentities.chargecomponent).to(pricerequest.chargecomponent) } } // Step "Calculate Shipping Charges For Goods and Services" - block step('calculate Shipping Charges For Goods and Services'){ // Step "Calculate Shipping Charges" - SubAlgorithm // Call 'Calculate Shipping Charges' Algorithm step('calculate Shipping Charges'){ subalgorithm(name:'calculate Shipping Charges').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } 176

183 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes } // Step "Populate Charge Component Explanation Messages" - block // This step populates explanation messages on charge components. step('populate Charge Component Explanation Messages'){ // Step "Populate Explanation Messages" - SubAlgorithm // This step invokes the algorithm to populate explanation messages for charge components. step('populate Explanation Messages'){ subalgorithm(name:'populate Charge Component Explanation Message').input ('BaseCeilingPriceElementCode':'QP_BASE_CEILING_PRICE','BaseListPriceElementCode':'QP_BASE_LIST_PRICE','PriceRequest':P.output ('PriceRequest':'PriceRequest').run() } } // Step "Process Returns" - block step('process Returns'){ // Step "Process Returns With Reference" - SubAlgorithm // This step creates the refund charges for return lines. step('process Returns With Reference'){ subalgorithm(name:'process Returns with Reference').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } // Step "Set Final s" - block step('set Final s'){ // Step "Finalize" - SubAlgorithm step('finalize'){ subalgorithm(name:'set Final s').input ('PriceRequest':PriceRequest).output ('PriceRequest':'PriceRequest').run() } } Related Topics Oracle Fusion Pricing: Overview Modifying Pricing Algorithm Variables: Procedure You can modify the variables in a pricing algorithm that comes predefined with Oracle Fusion Pricing, or in an algorithm that you create. Predefined pricing algorithms provide a variety of pricing functionality. You might find it useful to modify some of these algorithms to implement the behavior that your deployment requires. For the example in this topic, assume you must allow your users to set the value for the Calculation GSA price, for segment price list charges, and to validate that segment prices that are greater than or equal to GSA prices. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work To manage a price list, do the following work: 1. Examine the current behavior. 177

184 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 2. Create a new version of the algorithm. 3. Examine the pricing strategy and pricing strategy assignment. 4. Verify your work. Examine the Current Behavior Examine the current behavior: 1. Log in to Order Management with a job role such as ORDER_MGR_OPERATIONS, that allows you to create a new sales order, and then, in the Navigator, click Order Management. 2. Click Tasks, and then click Create Order. 3. On the Create Order page, add a customer, and then add an item. For example, add a sales order that includes the following values, and then click Add. Customer Computer Service and Rentals Select Item AS In the Amount column, click the link, and then notice that the Amount dialog does not include pricing for GSA. This table shows an example of price components and their associated amounts. Price Component Amount List Price 2,500 Discount 100 Tax 200 Net Price Plus Tax 2, Log out of Order Management. Create a New Version of the Algorithm Create a new version of the algorithm: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Algorithms. 3. On the Manage Algorithms page, locate the algorithm you must modify. To locate the pricing algorithm you must modify, examine the links in the Name column, click one that looks promising, and then examine the steps. It might be necessary to examine multiple pricing algorithms. For this example, you must allow your users to modify a price for a sales transaction, so, select the row that includes Price Sales Transactions in the Name column. 4. Click Actions, and then click Create Version. 178

185 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Notice that Pricing creates a new version and sets the Status to In Progress. 5. In the Name column of the version you just created, click Price Sales Transactions. 6. On the Edit Algorithm page, examine the step names to verify that this pricing algorithm can implement the behavior your require. This algorithm includes step names that set the value for the GSA price, such as Calculate GSA Price, so it is likely you can modify it to implement the behavior that this example requires. 7. Click Variables. 8. In the row that contains CalculateGSAPrice in the Name column, set the following value, and then click Save and Close. Default Expression true 9. On the Manage Algorithms page, choose the row that contains the highest version of Price Sales Transaction, click Actions, and then click Publish. Examine the Pricing Strategy and Pricing Strategy Assignment Examine the pricing strategy and pricing strategy assignment: 1. Click Tasks, and then click Manage Pricing Strategy Assignment. 2. Select the Strategy Assignment header row, and then examine the line that includes GSA Corporate Segment in the Pricing Segment. You can examine the setup for the customer pricing profile, pricing segment, and pricing strategy assignment. For example, note how Pricing assigns GSA Corporate Strategy to the Corporate Segment pricing segment for customer Computer Service and Rentals. 3. Examine the price list and verify that it contains the following values. Item AS5488 Pricing Charge Definition Sale Price Charge Type One Time Charge Sub Type Price Calculation Method Price Base Price 200 Verify Your Work Verify your work: 1. Log in to Order Management, create a sales order, add a customer to this sales order, and then add an item. 179

186 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 2. In the Amount column, click the link, and then make sure that the Amount dialog does not include an amount for tax. The table shows an example of the Amount dialog. Price Component Amount List Price 2,500 Discount 100 Net Price Plus Tax 2,400 Related Topics Oracle Fusion Pricing: Overview Managing Price Lists: Procedure Mapping Pricing Operations to Pricing Algorithms: Procedure A pricing process assignment maps a pricing operation to a pricing algorithm. The predefined Price Request service mapping uses the pricing process assignment to identify and run the pricing algorithm at run time. Oracle Fusion Pricing runs the pricing algorithm when it requires the operation that you specify. The pricing algorithm calculates the prices, adjustments, totals, or profit margins that the pricing operation requires. For example, you can specify to call the Price Sales Transactions pricing algorithm for the Price Request service. Pricing comes predefined to primarily use the Price Sales Transactions pricing operation and the Calculate Sales Order Totals pricing operation. It also uses the Get Sales Pricing Strategy pricing operation. Pricing does not currently use the Validate Sales Price pricing operation. The predefined Price Request service mapping includes these pricing operations. For details about how Pricing uses a pricing process assignment, see Pricing Architecture: How it Works. This topic includes example values. You might use different values, depending on your business requirements. Manage a pricing process assignment: In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Process Assignments. On the Manage Pricing Process Assignments page, examine the pricing process assignments that come predefined with Pricing. To reduce maintenance, it is recommended that you use a predefined pricing process assignment instead of creating a new one. 5. If you cannot locate a pricing process assignment that meets your requirements, then click Actions, click Add Row, and then set the following values. Pricing Operation Choose the pricing operation. 180

187 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Process Name Choose the pricing algorithm that Pricing must run to meet the needs of the pricing operation. Note that the Update SDO button is not supported in the current release. 6. Click Save. Related Topics Oracle Fusion Pricing: Overview Promoting Pricing Algorithms Into the Current Release: Procedure You can use the Promote All action to incorporate changes that Oracle Fusion Pricing provides in new pricing algorithms in the current release into pricing algorithms from an earlier release. These changes include new features and corrections to features that already exist. Promote pricing algorithms into the current release. 1. Finish upgrading to your new release. 2. Evaluate the modifications that the upgrade made to your pricing processes and pricing algorithms. Pricing adds new features and corrections to features into version 0 of each predefined algorithm. Pricing also sets each new pricing algorithm to version 0 when you upgrade to a new release. Pricing uses version 0 as the baseline for each predefined pricing algorithm. This approach allows you to refer back to version 0 during your set up and administration so you can compare the baseline to your modified version if you must troubleshoot your work. It is recommended that you examine each new and updated pricing algorithm and decide when to promote new features and corrections into your current pricing algorithms. 3. In the Navigator, click Pricing Administration. 4. On the Overview page, click Tasks, and then click Manage Algorithms. 5. On the Manage Algorithms page, click Actions, and then click Promote All. Promote copies version 0 to version 1 for each pricing algorithm. Promote does not affect your extended algorithms. This approach allows you to evaluate the impact that new features and corrections have on your pricing algorithms. It is recommended that you promote all your pricing algorithms immediately after you upgrade to a new release. If you do not promote, then each of your current and extended algorithms will continue to work in the same way that they worked before the upgrade. However, these algorithms will not take advantage of new features and they will not include corrections to features that already exist. Note the following definitions. Type of Pricing Algorithm Description New A pricing algorithm that Pricing provides for the first time. A new pricing algorithm provides functionality that does not exist in prior releases, and that also corrects features that already exist. New pricing algorithms come predefined in the current release. The Manage Algorithms page uses version 0 to indicate a new pricing algorithm. You must manually promote new algorithms when you install a new release or upgrade from a prior release. Current A pricing algorithm that you promoted from a prior release to the current release. 181

188 Chapter 7 Type of Pricing Algorithm Managing Pricing Algorithms, Service Mappings, and Matrix Classes Description A current pricing algorithm is up-to-date with the current release. The Manage Algorithms page uses version 1 to indicate a current pricing algorithm. You can modify a current pricing algorithm. Extended Modified A pricing algorithm that you create so it meets your business requirements. You click Actions, and then click Create on the Manage Algorithms page to create an extended pricing algorithm. A predefined pricing algorithm that you modified. Managing Modifications You Made to Pricing Algorithms You must reconcile modifications that you made to pricing algorithms during an earlier release into the current release. The current release might include new features or corrections to features that affect your modifications. Reconcile means you must examine your modifications before you copy them into the current release to make sure they work as you expect and update them, as necessary, to achieve the results that you require. In this example, assume you created version 2 of the predefined Apply Pricing Terms pricing algorithm, modified version 2, and published it in an earlier release. Manage modifications you made to pricing algorithms. 1. Finish upgrading to your new release. 2. Click Promote All. 3. Select version 1 of Apply Pricing Terms, and then create a new version. The new version is version 3, it is In Progress, and it uses version 1 as the baseline. Note that each version 1 that Promote All creates includes the upgrade modifications. 4. Reconcile your modifications from version 2 of Apply Pricing Terms into version 3 of Apply Pricing Terms, and then publish version 3. Related Topics Oracle Fusion Pricing: Overview Matrix Classes Managing Matrix Classes: Explained A matrix class is a template that defines the structure of a pricing matrix. It allows you to use a declarative environment to define the conditions and results that you specify when you add a pricing matrix to a pricing entity. You can add a pricing matrix to the following pricing entities: Pricing strategy assignment Pricing segment Price list Cost list Currency conversion list 182

189 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Shipping charge list Returns price list Note the following points when using a matrix class: Oracle Fusion Pricing comes predefined with matrix classes that specify the conditions and results that these pricing entities display when you add a pricing matrix. You most commonly will define a new condition column. You will only rarely need to define a result column. You can use only a predefined result column with a predefined pricing algorithm. Removing a predefined result column might cause an error when the pricing algorithm runs. If you add a new result column, then you must modify the pricing algorithm in same way to make sure the pricing algorithm uses the new result. For example, if you add a Precedence column to the Strategy Assignment pricing matrix, then you must also modify the pricing algorithm so that it sequences data according to precedence. Examine a predefined matrix class: 1. Log in to Oracle Fusion Pricing with the Pricing Administrator job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Matrix Classes. 3. On the Manage Matrix Classes page, click Pricing Segment. 4. On the Edit Matrix Class page, notice the following values. Condition Columns Result Columns Revenue Potential Pricing Segment Customer Size Precedence Cost To Serve Customer Customer Rating 5. Click Tasks, and then click Manage Pricing Segments. 183

190 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 6. Notice that the predefined Pricing Segment matrix class that you examined in step 4 determines the following condition columns and result columns that you can specify for a pricing segment. 7. On the Edit Matrix Class page, in the Revenue Potential row, notice the following attributes. These attributes determine the values that you can choose for the Revenue Potential column in the pricing matrix on the Manage Pricing Segments page. Compare to CustomerPricingProfile. RevenuePotentialCode In this example, the pricing matrix gets the values from the RevenuePotentialCode attribute of the pricing profile named CustomerPricingProfile. 184

191 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Domain Lookup:ORA_ QP_ REV_ POTENTIAL_ VALUES The pricing matrix gets values from the ORA_ QP_ REV_ POTENTIAL_ VALUES lookup. Condition Column s Consider the following example: 1 2 These conditions implement the following logic: 1. If the user does not enter any quantity for a sales order, or if the user enters any quantity. 2. If the user does not choose a value for the customer on the sales order. Related Topics Oracle Fusion Pricing: Overview Managing Pricing Segments: Procedure Pricing Rules: Explained Managing Matrix Classes: Procedure You can use a matrix class to apply conditional logic on a pricing entity according to the value of an attribute that you specify. In this example, you modify a predefined pricing matrix so that you can add the following adjustments to a pricing rule according to the value of the Customer Region attribute: Customer Region Adjustment North 10% discount 185

192 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Customer Region Adjustment South 0% discount East 5% discount West 15% discount In this example, the Customer Region is the condition, and the Adjustment Type of % discount and Adjustment Amount are the results. For example, if the Customer Region contains North, then reduce the price by 10%. This topic includes example values. You might use different values, depending on your business requirements. To manage a matrix class, do the following work: 1. Define the condition column. 2. Test your work. Define the Condition Column Define the condition column: 1. Log in to Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Matrix Classes. 3. On the Manage Matrix Classes page, click Price List Charge Adjustments. You can modify the predefined Price List Charge Adjustments matrix class to determine the conditions and results that you can specify in the pricing matrix that you add to a price list. Oracle Fusion Pricing comes predefined with a number of matrix classes. To help reduce maintenance, it is recommended that you examine them, and then modify one of them to meet your business requirement rather than create a new matrix class. 4. On the Edit Matrix Classes page, notice the following values. Description Service Specifies a service that a service mapping references. For details, see Managing Service Mappings: Procedure. Public Allows applications other than Oracle Fusion Pricing to use this matrix class. Date Effectivity Enabled Allows the pricing rule that uses this matrix class to preserve a history of changes that Pricing makes to some attributes. This allows you to examine older versions of a pricing entity which might be helpful in some troubleshooting situations. Can Add New Columns Allows you to add new columns to a pricing rule. 5. Scan the Condition Columns area and the Result Columns area. Note that these areas determine the conditions and the results that the adjustment matrix displays when you add a pricing matrix. For an example of this matrix, see Adjusting Prices: Explained. 6. In the Condition Columns area, click Actions, click Add Row, and then set the following values. 186

193 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Name Geography ID Source Code Name GeographyID Comparison = Compare to For this example, choose Line. FulfillmentGeographyId. You can choose the attribute that Pricing examines to determine whether or not the condition is true. For example, assume a sales order in Order Management Cloud contains an attribute that stores a value for FulfillmentGeographyId. At run time, if Geography ID equals the value that the FulfillmentGeographyId attribute of the order line contains, then Pricing applies the result that the adjustment matrix specifies. Required Leave empty. If you add a check mark, then you must provide a value for the attribute that you choose in Compare to when you create the pricing rule. Allow Null Leave empty If you add a check mark, then Pricing does not require the user to provide a value for this attribute at run time. It allows an empty value or the string Null in the database. Null is Wildcard Leave empty. If you add a check mark, then Pricing allows the user to provide any value for this attribute at run time. If you add a check mark, to Allow Null and to Null is Wildcard, the Pricing will allow any null value, or any value. 7. In the row you just added, in the Domain column, click Edit Domain. 8. In the Edit Column Domain s dialog, set the following values. Domain Type Custom For details, see the Setting the Domain of a Result Column section of this topic. Data Type Text Default For this example, enter West. You can specify the value that Pricing displays in the Condition column in the Pricing Administration work area, by default. Default Is Fixed For this example, leave empty. If you add a check mark, then Pricing will not allow the administrator to modify the default value. 187

194 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 9. Click Add Row four times, and then add the following values. Domain Display 100 North 200 South 300 East 400 West 10. Set the following value, click OK, and then click Save. Default 100 This attribute sets the value that Pricing displays in the Geography condition column so that it defaults to North. Test Your Work Test your work: 1. Create a price list, and add item AS54888 to this list. To create this price list, do the work described in Managing Price Lists: Procedure up through the Add an Item to the Price List section, but do not click Approve. 2. On the Edit Price List page, in the AS Buy - Each Charge area, click the down arrow next to Create Charge, and then click Create Price Adjustment Matrix. 3. In the Create Price Adjustment Matrix dialog, add a check mark to Geography ID, and then click OK. 4. In the Sale Price: Price Adjustments area, add the following rows. Geography ID Adjustment Type Adjustment Amount North Discount Amount 10 East Discount Amount 5 West Discount Amount Click Save, and then click Approve. 188

195 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Setting the Domain of a Result Column Pricing uses the value that you set in the Domain column to get the value for each result column. You can choose the following domain types: Domain Type Description Lookup Get the value from a lookup. For example, to get values for approval status, choose CSD_ APPROVAL_ STATUS. Item Extensible Get the value from an attribute that you define on the Manage Item Groups and s page. View Object Query Get the value from an object that Pricing displays in the Pricing Administration work area. Custom Get the value from the configuration that you specify in the Edit Column Domain s dialog. If you use View Object Query, then set the following attributes: Description Domain Type Choose View Object Query. Application Module Choose the part of Pricing that displays the object that contains the value. For example, if the value: Configuration Resides in a pricing matrix, then choose MatrixDomainAM. Is part of the pricing process, such as a matrix class or pricing algorithm, then choose PricingProcess. If Application Module does not display the value your require, then enter it in the Configuration field. Tip: The dialog filters values that you can enter in Configuration according to the value you set for Application Module. To determine the values that are available, enter a percent symbol ( % ) in the Configuration attribute. View Object Choose the view object that displays the value. For example, to get the value from an object that is part of the pricing strategy, choose PricingStrategyPVO. PricingStrategyPVO displays objects that are part of the following pages: Manage Customer Pricing Profiles Manage Pricing Segments Manage Pricing Strategies Manage Pricing Strategy Assignments Manage Currency Conversion Lists Key Choose the attribute that the displays the value that this result column must use. For example, choose OrgId to get the value from the Business Unit attribute of the pricing strategy. Display Specify the display attribute. 189

196 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes Description View Criteria Specify the view criteria. Data Type Specify the data type. View Object Bind Variables Add a join condition that filters the results. You can use View Object Bind Variables to add a join condition. For example, assume you reference a view that displays the following rows: Row X Y 1 V1 R1 2 V2 R2 3 V3 R3 You can define a condition: if attribute y equals R1 and R2, then display only rows 1 and 2 in the Pricing Administration work area, such as on a price list. Related Topics Pricing Rules: Explained Managing Price Lists: Procedure Managing Pricing Matrix Types: Procedure Oracle Fusion Pricing uses the Manage Matrix Types page to map a matrix class to a matrix type to make sure each pricing entity in the Pricing Administration work area references the correct matrix class. You can use the Manage Matrix Types page to assign one matrix class to a matrix type. For example, Pricing maps the predefined Price List Charge Adjustment matrix class to the predefined Price List Charge Adjustment matrix type. This mapping makes sure that the condition columns and result columns of the matrix class named Price List Charge Adjustment display correctly in the Price List page in the Pricing Administration work area, and to make sure that you use these columns when you create a pricing rule that adjusts price according to an attribute. This topic includes example values. You might use different values, depending on your business requirements. Manage a pricing matrix type: In the Navigator, click Setup and Maintenance. On the Setup and Maintenance page, click Order Management, and then click Setup. On the Setup page, search for, and then open Manage Pricing Matrix Types. On the Manage Pricing Matrix Types page, examine the pricing matrix types that come predefined with Pricing. 190

197 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes To reduce maintenance, it is recommended that you use a predefined pricing matrix type instead of creating a new one. Examine the mapping of each matrix type to matrix class so you know which matrix class where Pricing will add the attribute. You must also know the details of the attribute, its domain, and mappings within the matrix class. After implementing the matrix class, you can define the matrix rules that will use the new attribute. 5. If you cannot locate a pricing matrix type that meets your requirements, then click Actions, click Add Row, and then set the following values. Matrix Type Code Enter text that Pricing can use to reference this pricing matrix type. Pricing assigns each pricing entity that it associates with a pricing matrix to this matrix type code. A QP_ (QP underscore) prefix identifies the predefined pricing matrix types. Name Enter text that describes this pricing matrix type. Pricing displays the text that you enter in the Pricing Administration work area. It is recommended that you use headline capitalization, such as My Pricing Matrix Type. Dynamic Matrix Class Choose the Dynamic Matrix Class that identifies the conditions, results, and domain values. Allow Multiple Matrixes Add a check mark to allow multiple matrixes for the pricing entity. Active Add a check mark to make this matrix available during run time. 6. Click Save. Related Topics Oracle Fusion Pricing: Overview Pricing Rules: Explained 191

198 Chapter 7 Managing Pricing Algorithms, Service Mappings, and Matrix Classes 192

199 8 Chapter 8 Performing Advanced Set Ups Performing Advanced Set Ups Defining Discounts That Accumulate or Cascade: Procedure You can use Oracle Fusion Pricing to apply one or more discounts that accumulate on a single price list. You can also apply one or more discounts that cascade. For example, on the running net price. You can apply discounts through a simple rule or through a pricing matrix according to the following types of adjustment. Discount Amount Discount Percent Markup Amount Markup Percent Price Override Note the following concepts. Cascading discount. A calculation that subtracts the discount that each discount rule applies on an item. It subtracts these discounts in alphabetic, ascending sequence according to rule name. Pricing uses Running Net Price as the basis when it applies each adjustment. It reduces the value of Running Net Price each time it applies the discount for each rule. The basis does not remain constant for each rule. Instead, the discount cascades from rule to rule. Cumulative discount. A calculation that subtracts the discount that each discount rule applies on an item. It subtracts these discounts in alphabetic, ascending sequence according to rule name. The total discount amount accumulates as Pricing applies each rule. Pricing uses List Price as the basis when it applies each adjustment. Pricing does not modify the value of List Price when it applies each discount. The basis remains constant for each discount rule. Running net price. An object that can vary up or down in value while Pricing applies discounts and performs other calculations on the price of an item. You cannot define a discount that accumulates or cascades on a configured item or with tier pricing. Summary of the Work Define discounts that accumulate or cascade Define price element and pricing basis. Modify pricing algorithms. Define discount rules. Test the Price Sales Transaction algorithm. Test your work. This topic includes example values. You might use different values, depending on your business requirements. 193

200 Chapter 8 Performing Advanced Set Ups Define Price Element and Pricing Basis Define the price element and pricing basis that you will use for the running net price Sign into Oracle Fusion Pricing with the Pricing Administrator job role. In the Navigator, click Setup and Maintenance. On the Setup page, click Tasks, click Search, search for, and then open Manage Price Elements. On the Manage Price Elements page, click Actions, click Add Row, set the following values, and then click Save and Close. Element Code PRICING_ ELEMENT_ FOR_ RUNNING_ NET_PRICE Element Name Running Net Price Type Price Active Contains a check mark. 5. On the Search page, search for, and then open Manage Pricing Bases. 6. On the Manage Pricing Bases page, click Actions, click Create, set the following values, click Save and Close, click Done, and then click Done again. Name Running Net Price Usage Adjustment Basis Price Element Running Net Price Description Pricing basis for cumulative and cascading discounts on running net price. Active Contains a check mark. Define Service Mapping s You modify the Sales service mapping differently, depending on whether you use a simple discount or discount according to attribute. Define service mapping attributes In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Service Mappings. On the Manage Service Mappings page, click Sales. On the Edit Service Mapping page, click Services, click Query by Example, enter the following value, and the press the Enter key on your keyboard. 194

201 Chapter 8 Performing Advanced Set Ups Service PriceRequestInternal describe PriceRequestInternal. What it is and how we use it Modify Service Mapping for Simple Discount You will modify the following Sales service mapping. You define the TermName_Custom attribute on the TermQueue entity of the PriceRequestInternal service. Modify the service mapping for simple discount. 1. In the Details area, in the Entities tab, click the row that includes the following value. 195

202 Chapter 8 Performing Advanced Set Ups Entity TermQueue 2. In the Details area, click Actions, click Add Row, and then set the following values. Entity TermQueue received error object already exists. So I used TermQueuex Read Contains a check mark. Write Contains a check mark. 3. In the Entities area, click View, click Columns, click Show All, click Actions, click Add Row, set the following values, and then click Save. TermName_ Custom Alias TermName Read Contains a check mark. Write Contains a check mark. Type String Modify Service Mapping for Discount According to You will modify the following Sales service mapping. You define the TermName_Custom attribute on the MatrixQueue entity of the PriceRequestInternal service. 196

203 Chapter 8 Performing Advanced Set Ups Modify the service mapping for discount according to attribute. 1. In the Details area, in the Entities tab, click the row that includes the following value. Entity MatrixQueue 2. In the Details area, click Actions, click Add Row, and then set the following values. Entity MatrixQueue received error object already exists. Read Contains a check mark. Write Contains a check mark. 197

204 Chapter 8 Performing Advanced Set Ups 3. In the Entities area, click View, click Columns, click Show All, click Actions, click Add Row, set the following values, and then click Save. TermName_ Custom Alias TermName Read Contains a check mark. Write Contains a check mark. Type String Modify Pricing Algorithms In this section you modify pricing algorithms that calculate the discounts. Modify the Pricing Algorithm That Applies Discounts 198

205 Chapter 8 Performing Advanced Set Ups You will modify the following algorithm. Modify the pricing algorithm that applies discounts. 1. Click Tasks, and then click Manage Algorithms. 2. On the Manage Algorithms page, click Query by Example, enter the following value, and the press the Enter key on your keyboard. Name Apply Discounts 3. Click Action, and then click Create Version. 4. In the Name column, click the link for the version you just created. 5. On the Edit Algorithm page, expand the steps until you locate the Write Pricing Terms step. 199

206 Chapter 8 Performing Advanced Set Ups 6. Click the row that includes Write Pricing Terms in the Name column. 7. In the Step Details area, in the First Row Actions area, locate the following code. //if (TermQuery.Name!=null) ts.name = TermQuery.Name 8. Remove the forward slashes ( // ) from the code. For example. if (TermQuery.Name!=null) ts.name = TermQuery.Name This step instructs the algorithm to examine the TermQuery attribute that you set up in the service mapping earlier in this topic. 9. Click Save and Close. 10. Click Actions, and then click Publish. Modify the Pricing Algorithm That Applies Pricing Terms Modify the pricing algorithm that applies pricing terms so it can process the running net price. 1. Click Tasks, and then click Manage Algorithms. 2. On the Manage Algorithms page, click Query by Example, enter the following value, and the press the Enter key on your keyboard. Name Apply Pricing Terms 3. Click Action, and then click Create Version. 4. In the Name column, click the link for the version you just created. 5. Click Variables, click Actions, click Add Row, set the following values, and then click Save. Name PricingElementForRunningNetPrice Data Type String Input/Output None Default Expression 'PRICING_ ELEMENT_ FOR_ RUNNING_ NET_PRICE' This value identifies the pricing element that you created earlier in this topic. You must include the single quotation marks (' ). 6. Click Algorithm. 7. In the Steps area, click the row that includes Find Applicable Charges in the Name column. 8. Add the step that creates the running net price. Click Add Step, click Composite Step, and then click If. 200

207 Chapter 8 Performing Advanced Set Ups You will add the following step. In the Step Details area, set the following values, and then click Save. Name Create the Running Net Price Condition 'DISCOUNT_ LINE' == TermType You must include the single quotation marks (' ). In the Steps area, click the row that includes Examine Create Running Net Price in the Name column. Click Add Step, and then click Subalgorithm. You can add a condition only on the step. Therefore, you create the step, and then add the subalgorithm that specifies the pricing algorithm to run and the variable to send to this algorithm. In the Step Details area, set the following values. Name Create the Running Net Price Description This step creates a charge component for a running net price. 201

208 Chapter 8 Performing Advanced Set Ups Algorithm Name Create ChargeComponent with RunningUnitPrice In the Input Variables area, set the following values. Variable Assignment PriceRequest PriceRequest PriceElementCode PricingElementForRunningNetPrice IsForCeilingPrice 0 BaseCeilingPriceElementCode 'QP_ BASE_ CEILING_ PRICE' RoundingAdjustmentElementCode 'QP_ ROUNDING_ ADJUSTMENT' PerformRounfing False IsForMargin False PriceElementUsageCode Leave empty ChargeAppliesToCode 'PRICE' RoundingAdjustmentElementUsageCode 'PRICE_ ADJUSTMENT' please confirm. Source doc doesn't include this, but Maintenance env has this as the default value. In the Output Variables area, set the following values. Variable Assignment PriceRequest PriceRequest 202

209 Chapter 8 Performing Advanced Set Ups 9. Add the following step that deletes the running net price. Add the step. Click the step that includes Process Custom Adjustment Flag in the Name column. Click Add Step, click Conditional Action, and then set the following values. Name Delete Running Net Price Description This step deletes a charge component for a running net price. Condition RunningNetPriceElem == Comp. PriceElementCode In the Data Sets area, click Add Row, and then set the following values. Name Variable Path Primary Comp PriceRequest. ChargeComponent Contains a check mark. In the Execute Condition area, click Add Condition, click Default Action, and then set the following values. Action //This action cascades the discounts. Comp.delete() Click Save. 203

210 Chapter 8 Performing Advanced Set Ups Apply Pricing Terms for a Simple Discount Perform this section only if you are applying a simple discount. Apply pricing terms for a simple discount. 1. Add a function. Click Functions. You will add the following function. You define a view object that the pricing algorithm can use in a function that gets the adjustment basis. Click Actions, click Add Row, and then set the following values. 204

211 Chapter 8 Performing Advanced Set Ups Name Query Type getadjustmentbasis View Object Lookup In the Arguments area, add the following arguments. Name Comments BasisId that identifies the adjustment basis. Language Abbreviation that identifies the language. Click View Object Query, click Add Row, and then set the following values. Application Module oracle. apps. scm. pricing. priceexecution. pricingprocesses. publicmodel. applicationmodule. PricingProcessAM Application Configuration ${(PriceRequest. PricingServiceParameter[0]. CacheEnabledFlag=null PriceRequest. PricingServiceParameter[0]. CacheEnabledFlag)? 'PricingProcessAMShared' : 'PricingProcessAMLocal'} View Object AdjustmentBasis1 Single Row Contains a check mark. In the Bind Variables area, add the following bind variables, and then click Save. Bind Variable Name Bind Variable basisid BasisId lang Language 2. Modify the step that gets values for the adjustment basis. Click Algorithm. In the Steps area, click that step that includes Retrieve Adjustment Basis s in the Name column. In the Step Details area, in the First Row Actions area, locate the following code. finer('\tfound '+Comp.PriceElementCode+' charge component '+Comp.ChargeComponentId+' with unit price '+Comp.UnitPrice.)TermQ.AdjustmentBasis = Comp.UnitPrice. Add the following code immediately after the code you just located, and then click Save. TermQ.TermName = TermSetup.Name 205

212 Chapter 8 Performing Advanced Set Ups For example. 3. Modify the step that applies the simple adjustment. In the Steps area, click that step that includes Apply Simple Adjustments in the Name column. In the Data Sets area, add the following data sets. Name Variable Path Cardinality RunningPriceComp PriceRequest. ChargeComponent Many 206

213 Chapter 8 Name Performing Advanced Set Ups Variable Path Cardinality This value specifies to use many charge components for the running prince to one term in the term queue. True? BasisComp PriceRequest. ChargeComponent Many This value specifies to use many pricing bases for the charge components one term in the term queue. True? In the Data Sets area, in the row that includes TermQ in the Name column, set the following value. Order By TermName In the Execute Condition area, in the Local Variables area, add the following local variables. Variable Name Default BasisElementCode Leave empty. RunningPrice Leave empty. In the Default Action area, locate the following lines at the beginning of the code. finer('\tadjustment type = '+TermSetup.AdjustmentTypeCode) finer('\tunit price = '+Charge.RunningUnitPrice) finer('\tadjustment amount = '+TermSetup.AdjustmentAmount) finer('\tbasis value = '+TermQ.AdjustmentBasis?:0) Add the following code immediately after the code you just located. This code cascades the discount according to the adjustment basis. // cascade your discount modifications according to the adjustment basis BasisElementCode = getadjustmentbasis(termsetup.adjustmentbasisid, defaultlanguagecode())?.priceelementcode if (BasisElementCode!= null) TermQ.AdjustmentBasis = BasisComp.locate([ChargeId: TermQ.ChargeId, PriceElementCode: BasisElementCode])?.UnitPrice?.) Make sure you add this code before the following line. Adjustment = pricingutil.computeunitadjustment(termsetup.adjustmenttypecode, Charge.RunningUnitPrice, TermSetup.AdjustmentAmount, TermQ.AdjustmentBasis?:0) Locate the following code. // Adjust running unit price Charge.RunningUnitPrice += Comp.UnitPrice. finest('\tadjusted running unit price by ' + Comp.UnitPrice.) 207

214 Chapter 8 Performing Advanced Set Ups Add the following code immediately after the code you just located. This code cascades the discount onto the running price. //cascade your discount modifications onto the running price RunningPrice = RunningPriceComp.locate(ChargeId: Charge.ChargeId, PriceElementCode: RunningNetPriceElem) if (RunningPrice?.UnitPrice?.!= null) { RunningPrice.UnitPrice. = Charge.RunningUnitPrice } Here's the entire modified code. finer('\tadjustment type = '+TermSetup.AdjustmentTypeCode) finer('\tunit price = '+Charge.RunningUnitPrice) finer('\tadjustment amount = '+TermSetup.AdjustmentAmount) finer('\tbasis value = '+TermQ.AdjustmentBasis?:0) // Cascade your discount modifications according to the adjustment basis BasisElementCode = getadjustmentbasis(termsetup.adjustmentbasisid, defaultlanguagecode())?.priceelementcode if (BasisElementCode!= null) TermQ.AdjustmentBasis = BasisComp.locate([ChargeId: TermQ.ChargeId, PriceElementCode: BasisElementCode])?.UnitPrice?.) Adjustment = pricingutil.computeunitadjustment(termsetup.adjustmenttypecode, Charge.RunningUnitPrice, TermSetup.AdjustmentAmount, TermQ.AdjustmentBasis?:0) finer('\tunit price adjustment = '+Adjustment) Comp = ChargeComponent.insert([ChargeComponentId:++ServiceParam.ChargeComponentIdCntr]) Comp.createDataObject('UnitPrice') Comp.UnitPrice. = Adjustment Comp.UnitPrice.CurrencyCode = Charge.CurrencyCode Comp.CurrencyCode = Charge.CurrencyCode // currency conversion if ( TermSetup.PricingCurrencyCode!=Line.AppliedCurrencyCode ) { if ( 'ERROR'==ConvRate?.MessageTypeCode ) { finest('creating line message') Line.MessageTypeCode = 'ERROR' Charge.MessageTypeCode = 'ERROR' Term.MessageTypeCode = 'ERROR' msg = Message.locate([ParentEntityCode:'LINE',ParentEntityId:Line.LineId,MessageText:ConvRate.PrcErrorMessage]) if ( msg==null ) { // create new error message for Line msg = Message.insert([PricingMessageId:getNextId()]) msg.messagename = ConvRate.PrcMessageName msg.messagetext = ConvRate.PrcErrorMessage msg.parententitycode = 'LINE' msg.parententityid = Line.LineId msg.messagetypecode = Term.MessageTypeCode } } else { Comp.UnitPrice. *= ConvRate.ConversionRate?:1 finer('\tconverted currency, 1 '+TermSetup.PricingCurrencyCode+' = '+ConvRate.ConversionRate?:1+' '+Line.AppliedCurrencyCode) } } // end currency conversion if ( Charge.PricedQuantity!=null ) { 208

215 Chapter 8 Performing Advanced Set Ups Comp.createDataObject('ExtendedAmount') Comp.ExtendedAmount. = Comp.UnitPrice.*Charge.PricedQuantity. Comp.ExtendedAmount.CurrencyCode = Comp.UnitPrice.CurrencyCode if (Line.ItemType in ['STANDARD', 'COMPONENT', 'ROOT'] && null!= Line.ServiceDuration?. && null!= Line.ServiceDurationPeriodCode ) { Comp.createDataObject('CoverageExtendedAmount') if ('ONE_TIME' == Charge.PriceTypeCode) { Comp.CoverageExtendedAmount. = Comp.ExtendedAmount. } else if ('RECURRING' == Charge.PriceTypeCode) { if (Charge.PricePeriodicityCode!= Line.ServiceDurationPeriodCode) { // Partial Price Period with Conversion Rate from OKC tables Comp.CoverageExtendedAmount. = Comp.ExtendedAmount?. * Charge.PartialPeriodDurationConversionRate?:0 } else { //no partial Period pricing based on ServiceDuration Comp.CoverageExtendedAmount. = Comp.ExtendedAmount. * Line.ServiceDuration?. } } Comp.CoverageExtendedAmount.CurrencyCode = Comp.ExtendedAmount.CurrencyCode } } assert Charge.CompSeqCntr!= null Comp.SequenceNumber = (Long) Charge.CompSeqCntr++ Comp.PriceElementCode = TermElementCode Comp.PriceElementUsageCode = priceelementusagecode Comp.ExplanationMessageName = TermExplanationMsg /* // Set price element code in order of setup value, step parameter, then hard-coded if (TermSetup.AdjustmentElementCode!=null) { Comp.PriceElementCode = TermSetup.AdjustmentElementCode } else { if (ElementCodeParam!=null) { Comp.PriceElementCode = ElementCodeParam } else { if ('PROMOTION'==TermSetup.ParentEntityTypeCode) { Comp.PriceElementCode = 'PROMOTIONAL_ADJUSTMENT' } else if ('SALES_AGREEMENT'==TermSetup.ParentEntityTypeCode) { Comp.PriceElementCode = 'CONTRACTUAL_ADJUSTMENT' } else if ('DISCOUNT_LINE'==TermSetup.ParentEntityTypeCode) { Comp.PriceElementCode = 'DISCOUNT_LIST_ADJUSTMENT' } } }*/ Comp.PriceValidFrom = Line.PricingDate Comp.PriceValidUntil = TermSetup.EndDate Comp.SourceId = TermQ.TermId Comp.SourceTypeCode = 'PRICING_TERM' finest('\tcreated ' + Comp.PriceElementCode + ' charge component ' + Comp.ChargeComponentId + ' with unit adjustment ' + Comp.UnitPrice. + ' ' + Comp.UnitPrice.CurrencyCode) // Adjust running unit price Charge.RunningUnitPrice += Comp.UnitPrice. finest('\tadjusted running unit price by ' + Comp.UnitPrice.) //Cascade your discount modifications onto the running price RunningPrice = RunningPriceComp.locate(ChargeId: Charge.ChargeId, PriceElementCode: RunningNetPriceElem) if (RunningPrice?.UnitPrice?.!= null) { RunningPrice.UnitPrice. = Charge.RunningUnitPrice } 209

216 Chapter 8 Performing Advanced Set Ups Modify the Pricing Algorithm That Applies Discounts Modify the pricing algorithm that applies the discount according to attribute. 1. On the Manage Algorithms page, click Query by Example, enter the following value, and the press the Enter key on your keyboard. Name Apply Matrices 2. Click Action, and then click Create Version. 3. In the Name column, click the link for the version you just created. 4. Disable the step that gets the adjustment basis. On the Edit Algorithm page, click the row that includes Process Pricing Matrices in the Name column. Click Add Step, click Composite Step, click If, set the following values, and then click Save. Name Disable the Retrieve Adjustment Basis Step Description Disable the step that gets the adjustment basis. Condition False In the Steps area, use Move Up and Move Down repeatedly until you achieve the following hierarchy. Process Pricing Matrices Disable the Retrieve Adjustment Basis Step Retrieve Adjustment Basis 5. Modify the step that applies the discount according to attribute. Click the row that includes Process Matrix Queue in the Name column. In the Data Sets area, add the following data sets. Name Variable Path Cardinality RunningPriceComp PriceRequest. ChargeComponent Many BasisComp PriceRequest. ChargeComponent Many In the row that includes MatrixQ in the Name column, set the following value. Order By TermName 210

217 Chapter 8 Performing Advanced Set Ups In the Execute Condition area, in the Local Variables area, add the following local variables. Variable Name Default RunningNetPriceElement 'PRICING_ ELEMENT_ FOR_ RUNNING_ NET_PRICE' This value identifies the pricing element that you created earlier in this topic. You must include the single quotation marks (' ). BasisElementCode Leave empty. RunningPrice Leave empty. In the Conditional Actions area, locate the following condition. If the Following Condition is True Then Perform These Actions!MatrixQ. ApplyToRollupFlag & 'CURRENCY_ CONVERSION'!= MatrixType finest('\tunit price adjustment = '+MatrixQ. Adjustment) In the code for Then Perform These Actions, locate the following lines. They are the first two lines in the code. finest('\tunit price adjustment = '+MatrixQ.Adjustment) finest('basis : '+MatrixQ.AdjustmentBasis) Comment the lines you just located. Add the following code immediately after the lines you just commented. //Cascade the discount. BasisElementCode = getadjustmentbasis(matrixq.adjustmentbasisid, defaultlanguagecode())?.priceelementcode if (BasisElementCode!= null) MatrixQ.AdjustmentBasis = BasisComp.locate([ChargeId: MatrixQ.ParentEntityId, PriceElementCode: BasisElementCode])?.UnitPrice?. Locate the following code. if ('PRICE_OVERRIDE' == MatrixQ.AdjustmentTypeCode) MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, Charge.RunningUnitPrice?:0, MatrixQ.Adjustment, Charge.RunningUnitPrice?:0) else MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, MatrixQ.AdjustmentBasis, MatrixQ.Adjustment, Charge.RunningUnitPrice?:0) Replace the contents of the else statement of the code you just located with the following code. //MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, MatrixQ.AdjustmentBasis, MatrixQ.Adjustment, Charge.RunningUnitPrice?:0) MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, Charge.RunningUnitPrice?:0, MatrixQ.Adjustment, MatrixQ.AdjustmentBasis) You are commenting the existing else statement that uses the adjustment basis to calculate the adjustment and adding a new else statement that uses the running unit price to calculate the adjustment. 211

218 Chapter 8 Performing Advanced Set Ups Add the following code immediately before the last line of code, which is a closing curly bracket ( } ). //Cascade the discount. RunningPrice = RunningPriceComp.locate(ChargeId: MatrixQ.ParentEntityId, PriceElementCode: RunningNetPriceElement) if (RunningPrice?.UnitPrice?.!= null) { RunningPrice.UnitPrice. = Charge.RunningUnitPrice } Here's the entire modified code. //finest('\tunit price adjustment = '+MatrixQ.Adjustment) //finest('basis : '+MatrixQ.AdjustmentBasis) //Cascade the discount. BasisElementCode = getadjustmentbasis(matrixq.adjustmentbasisid, defaultlanguagecode())?.priceelementcode if (BasisElementCode!= null) MatrixQ.AdjustmentBasis = BasisComp.locate([ChargeId: MatrixQ.ParentEntityId, PriceElementCode: BasisElementCode])?.UnitPrice?. if ('PRICE_OVERRIDE' == MatrixQ.AdjustmentTypeCode) MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, Charge.RunningUnitPrice?:0, MatrixQ.Adjustment, Charge.RunningUnitPrice?:0) else //MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, MatrixQ.AdjustmentBasis, MatrixQ.Adjustment, Charge.RunningUnitPrice?:0) MatrixQ.Adjustment = pricingutil.computeunitadjustment(matrixq.adjustmenttypecode, Charge.RunningUnitPrice?:0, MatrixQ.Adjustment, MatrixQ.AdjustmentBasis) // currency conversion if (MatrixQ.FromCurrencyCode!=Charge.CurrencyCode ) { if ( 'ERROR'==ConvRate?.MessageTypeCode ) { finest('creating line message') Line.MessageTypeCode = 'ERROR' Charge.MessageTypeCode = 'ERROR' Term.MessageTypeCode = 'ERROR' msg = Message.locate([ParentEntityCode:'LINE',ParentEntityId:Line.LineId,MessageText:ConvRate.PrcErrorMessage]) if ( msg==null ) { // create new error message for Line msg = Message.insert([PricingMessageId:getNextId()]) msg.messagename = ConvRate.PrcMessageName msg.messagetext = ConvRate.PrcErrorMessage msg.parententitycode = 'LINE' msg.parententityid = Line.LineId msg.messagetypecode = ConvRate.MessageTypeCode } } else { MatrixQ.Adjustment *= ConvRate.ConversionRate?:1 finest('\tconverted currency, 1 '+MatrixQ.FromCurrencyCode+' = '+ConvRate.ConversionRate?:1+' '+Charge.CurrencyCode) finest('adjustment : '+MatrixQ.Adjustment) } } // end currency conversion if ( 'ERROR'!= Line.MessageTypeCode ) { Comp = ChComp.insert([ChargeComponentId:++Param.ChargeComponentIdCntr]) Comp.createDataObject('UnitPrice') Comp.UnitPrice. = MatrixQ.Adjustment Comp.UnitPrice.CurrencyCode = Charge.CurrencyCode Comp.CurrencyCode = Charge.CurrencyCode Comp.PriceElementCode = MatrixElementCode 212

219 Chapter 8 Performing Advanced Set Ups if(!(matrixtype in ['PRICE_LIST_ATTR_ADJ','PRICE_LIST_TIER'])) Comp.PriceElementUsageCode=priceElementUsageCode Comp.SourceTypeCode ='MATRIX_RULE' Comp.SourceId = MatrixQ.DynamicMatrixRuleId Comp.ChargeId = Charge.ChargeId Comp.MatrixConditionString = MatrixQ.ConditionString Comp.MatrixResultString = MatrixQ.ResultString Comp.ExplanationMessageName = MatrixExplanationMsg if ( Charge.PricedQuantity!=null ) { Comp.createDataObject('ExtendedAmount') Comp.ExtendedAmount. = Comp.UnitPrice?.*Charge.PricedQuantity?. Comp.ExtendedAmount.CurrencyCode = Comp.UnitPrice?.CurrencyCode //Populate CoverageExtendedAmount for Subscription for selling services. if ( Line.ItemType in ['STANDARD', 'COMPONENT', 'ROOT'] && null!= Line.ServiceDuration?. && null!= Line.ServiceDurationPeriodCode) { Comp.createDataObject('CoverageExtendedAmount') if ('ONE_TIME' == Charge.PriceTypeCode) { Comp.CoverageExtendedAmount. = Comp.ExtendedAmount. } else if ('RECURRING' == Charge.PriceTypeCode) { if (Charge.PricePeriodicityCode!= Line.ServiceDurationPeriodCode) { // Partial Price Period with Conversion Rate from OKC tables Comp.CoverageExtendedAmount. = Comp.ExtendedAmount?. * Charge.PartialPeriodDurationConversionRate?:0 } else { //no partial Period pricing based on ServiceDuration Comp.CoverageExtendedAmount. = Comp.ExtendedAmount. * Line.ServiceDuration?. } } Comp.CoverageExtendedAmount.CurrencyCode = Comp.ExtendedAmount.CurrencyCode } } assert Charge.CompSeqCntr!= null Comp.SequenceNumber = (Long) Charge.CompSeqCntr++ Charge.RunningUnitPrice += MatrixQ.Adjustment //Cascade the discount. RunningPrice = RunningPriceComp.locate(ChargeId: MatrixQ.ParentEntityId, PriceElementCode: RunningNetPriceElement) if (RunningPrice?.UnitPrice?.!= null) { RunningPrice.UnitPrice. = Charge.RunningUnitPrice } } 6. Click Save and Close. 7. On the Manage Algorithms page, click Actions, and then click Publish. Define Discount Rules In this example, you define discount rules for item AS Define discount rules. 1. In the Pricing Administration work area, click Tasks, and then click Manage Discount Lists. For this example, assume you already created a discount list named Discount List for Sentinel Standard Desktop, and added a discount line for AS For details, see Managing Discount Lists: Procedure. 2. On the Manage Discount Lists page, search for, and then open Discount List for Sentinel Standard Desktop for editing. 3. On the Edit Discount List page, in the Discount Lines area, in the Name attribute, search for AS Define Simple Discount Rules 213

220 Chapter 8 Performing Advanced Set Ups The adjustment basis you use depends on the type of discount that you implement. Type of Discount Adjustment Basis Cumulative If the adjustment type is according to percent, then you must use list price as the adjustment basis. Cascade You must use running net price as the adjustment basis. Define simple discount rules. 1. In the Item - AS Each - Buy area, add the following rules. Click Action, click Create, and then click Simple Rule to create each rule. Rule Name Adjustment Amount discount rule 1 50 discount rule 2 10 discount rule 3 5 Set the following attributes for each rule. Rule Type Simple Price Type One Time Charge Type Sale Charge Subtype Price Adjustment Basis Running Net Price Adjustment Type Discount Percent 214

221 Chapter 8 Performing Advanced Set Ups For example. Note that the Pricing Administration work area runs each rule in the sequence that the Discount Rules list displays them, according to Rule Name. To set the sequence, click View, click Sort, click Advanced, set the sequence, such as Sort By to Rule Name in Ascending sequence, and then click OK. Assume the list price is $ for the AS Pricing will perform the following calculations for a cascading discount. Rule Name Adjustment Running Net Price discount rule 1 $ $1, $2, running net price multiplied by 50% adjustment amount equals $ $2, running net price minus $1, discount equals $1, $ $ $1, running net price multiplied by 10% adjustment amount equals $ $1, running net price minus $ discount equals $ $56.25 $ $ running net price multiplied by 5% adjustment amount equals $ $ running net price minus $56.25 discount equals $ discount rule 2 discount rule 3 Net Price equals $

222 Chapter 8 Performing Advanced Set Ups Assume you modify the Adjustment Basis for each of the discount rules to List Price. Pricing will perform the following calculations. Rule Name Adjustment Running Net Price discount rule 1 $ $1, $2, list price multiplied by 50% adjustment amount equals $ $2, running net price minus $1, discount equals $1, $ $1, $2, list price multiplied by 10% adjustment amount equals $ $1, running net price minus $ discount equals $1, $56.25 $ $2, list price by 5% adjustment amount equals $ $1, running net price minus $ discount equals $ discount rule 2 discount rule 3 Net Price equals $ Define Discount Rules According to Define discount rules according to attribute. In the Item - AS Each - Buy area, add the following rules. Click Action, click Create, and then click Based Rule to create each rule. Rule Name Adjustment Amount discount rule 1 10 discount rule 2 5 discount rule 3 10 discount rule 4 2 Set the following attributes for each rule. Rule Type Based Price Type All Charge Type All 216

223 Chapter 8 Performing Advanced Set Ups Charge Subtype All Adjustment Basis Running Net Price Adjustment Type Discount Percent For example. Assume the list price is $3, for the AS Pricing will perform the following calculations for a cascading discount. Rule Name Adjustment Running Net Price discount rule 1 $ $3, $3, running net price multiplied by 10% adjustment amount equals $ $3, running net price minus $ discount equals $3, $ $2, $3, running net price multiplied by 5% adjustment amount equals $ $3, running net price minus $ discount equals $2, $ $2, discount rule 2 discount rule 3 217

224 Chapter 8 Performing Advanced Set Ups Rule Name discount rule 4 Adjustment Running Net Price $2, running net price multiplied by 10% adjustment amount equals $ $2, running net price minus $ discount equals $2, $53.87 $2, $2, running net price multiplied by 2% adjustment amount equals $ $2, running net price minus $53.87 discount equals $2, Net Price equals $2, Assume you modify the Adjustment Basis for each of the discount rules to List Price. Pricing will perform the following calculations for a cumulative discount. Rule Name Adjustment Running Net Price discount rule 1 $ $3, $3, list price multiplied by 10% adjustment amount equals $ $3, running net price minus $ discount equals $3, $ $2, $3, list price multiplied by 5% adjustment amount equals $ $3, running net price minus $ discount equals $2, $ $2, $3, list price running net price multiplied by 10% adjustment amount equals $ $2, running net price minus $ discount equals $2, $70.00 $2, $3, list price multiplied by 2% adjustment amount equals $ $2, running net price minus $70.00 discount equals $2, discount rule 2 discount rule 3 discount rule 4 Net price equals $2, Define Simple Discount Rules and Discount Rules In some deployments you might need to define simple discount rules and discount rules according to attribute on the same item. Assume you define the following rules. Rule Name Rule Type Adjustment Basis Adjustment Type Adjustment Amount discount rule 1 Simple Running Net Price Discount Percent 50 discount rule 2 Pricing Running Net Price Discount Percent

225 Chapter 8 Performing Advanced Set Ups Rule Name Rule Type Adjustment Basis Adjustment Type Adjustment Amount discount rule 3 Simple Running Net Price Discount Percent 10 discount rule 4 Simple Running Net Price Discount Percent 5 For example. If you define a simple rule and an attribute rule on running net price, then Pricing uses the following sequence regardless of when you define the rules or the sequence that the Discount Rules list displays them. 1. Apply all simple rules. 2. Apply all rules according to attribute. Assume the list price equals $ Pricing will apply adjustments in the following sequence. Rule Name Rule Type Adjustment Running Net Price discount rule 1 Simple $1, $1, $2,500 running net price multiplied by 10% equals $1, $2,500 list price minus $1, discount equals $1, $ $1, $1, running net price multiplied by 10% equals $ $1, running net price minus $ discount equals $1, $56.25 $1, $1, running net price multiplied by 5% equals $ $1, running net price minus $56.25 discount equals $1, $ $ discount rule 3 discount rule 4 discount rule 2 Simple Simple Pricing 219

226 Chapter 8 Rule Name Performing Advanced Set Ups Rule Type Adjustment Running Net Price $1, running net price multiplied by 10% equals $ $1, running net price minus $ discount equals $ Net Price equals $ Test the Price Sales Transaction Algorithm Test the Price Sales Transaction algorithm. 1. Get details for your test input payload. Sign into the Order Management work area, create a sales order, add item AS54888, click Submit, and then note the order number that displays in the dialog. For this example, assume the order number is Run the following SQL query on the database that stores the sales order. 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 = OrderNumber; where OrderNumber is the sales order number you noted after you clicked Submit. For example, run the following query for sales order 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 = 5678; Run the following SQL query: 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 = $OrderNumber; where CustomerId, SellingBusinessUnitId, and SellingLegalEntityId are each an attribute on the order header. For example, run the following query for sales order 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 = $5678; Verify the query returns value 5678 for header_id. Run the following 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 = $header_id; 220

227 Chapter 8 Performing Advanced Set Ups where InventoryItemId, InventoryOrganizationId, LineQuantity.UOMCode, and LineQuantityUOMCode are each an attribute on the order line. Add the values that your query returned into the test input payload. See the Test Input Payload section later in this topic. 2. Test the pricing algorithm. On the Edit Algorithms page, click Test. In the Test Input area, click the pencil icon in the row that includes PriceRequest in the Variable Name column. In the Edit Variable dialog, delete all the code lines. Copy and paste the input payload into the dialog, and then click OK. Click Run Test. Wait for the test to finish, and then verify that Last Execution Status contains a check mark. If you encounter the following error, then paste the full contents of the test payload into an XML editor and make sure the XML format is correct. Error: Unable to parse the variable[pricerequest] using the service definition [Sales.PriceRequestInternal]. Please check the variable value or service schema Click Test Output, and then verify that the output includes the following. Discounts applied on ChargeComponent entries are correct. Calculation for UnitPrice on each ChargeComponent is correct. Calculation for UnitPrice on ChargeComponent where PriceElementCode equals QP_NET_PRICE is correct. 3. Click Save and Close. 4. On the Manage Algorithms page, click Actions, and then click Publish. Test Input Payload Use the following input payload to test your sales order. <?xml version="1.0" encoding="utf-8"?> <PriceRequestInternal:PriceRequestInternalType xmlns:ns0=" types/" xmlns:pricerequestinternal=" pricingprocesses/pricerequestinternal" xmlns:xsi=" xsi:type="pricerequestinternal:pricerequestinternaltype"> <PriceRequestInternal:Header> <PriceRequestInternal:CustomerId>customer_id</PriceRequestInternal:CustomerId> <PriceRequestInternal:HeaderId>101</PriceRequestInternal:HeaderId> <PriceRequestInternal:CalculatePricingChargesFlag>true</PriceRequestInternal:CalculatePricingChargesFlag> <PriceRequestInternal:CalculateShippingChargesFlag>false</PriceRequestInternal:CalculateShippingChargesFlag> <PriceRequestInternal:CalculateTaxFlag>false</PriceRequestInternal:CalculateTaxFlag> <PriceRequestInternal:SellingBusinessUnitId>selling_business_unit_id </ PriceRequestInternal:SellingBusinessUnitId> <PriceRequestInternal:SellingLegalEntityId>selling_legal_entity_id </ PriceRequestInternal:SellingLegalEntityId> <PriceRequestInternal:TransactionTypeCode>ORA_SALES_ORDER</PriceRequestInternal:TransactionTypeCode> </PriceRequestInternal:Header> <PriceRequestInternal:PricingServiceParameter> <PriceRequestInternal:PricingContext>SALES</PriceRequestInternal:PricingContext> </PriceRequestInternal:PricingServiceParameter> 221

228 Chapter 8 Performing Advanced Set Ups <PriceRequestInternal:Line> <PriceRequestInternal:HeaderId>101</PriceRequestInternal:HeaderId> <PriceRequestInternal:InventoryItemId>inventory_item_id </PriceRequestInternal:InventoryItemId> <PriceRequestInternal:InventoryOrganizationId>inventory_organization_id </ PriceRequestInternal:InventoryOrganizationId> <PriceRequestInternal:LineId>1001</PriceRequestInternal:LineId> <PriceRequestInternal:LineCategoryCode>ORDER</PriceRequestInternal:LineCategoryCode> <PriceRequestInternal:LineQuantity unitcode="unit_code" xmlns:tns=" errors/">2</pricerequestinternal:linequantity> <PriceRequestInternal:LineQuantityUOMCode>line_quantity_uom_code </PriceRequestInternal:LineQuantityUOMCode> <PriceRequestInternal:LineTypeCode>ORA_BUY</PriceRequestInternal:LineTypeCode> </PriceRequestInternal:Line> <PriceRequestInternal:ChangeSummary logging="false" xmlns:sdo="commonj.sdo"/> </PriceRequestInternal:PriceRequestInternalType> Make the following replacements. Variable in Code from SQL Query You Can Use to Replace the Variable customer_id CustomerId selling_ business_ unit_id SellingBusinessUnitId selling_ legal_ entity_id SellingLegalEntityId inventory_ item_id InventoryItemId inventory_ organization_ id InventoryOrganizationId unit_code LineQuantityUOMCode line_ quantity_ uom_code LineQuantityUOMCode Test Your Work Test your work. 1. Log into Order Management and create a sales order. 2. Set the Customer to a value, such as PennyPack Systems. 3. Click Actions, click View Pricing Segment and Strategy, and then verify the Segment is the default segment and that the Strategy is correct for PennyPack Systems. 4. In the Order Lines area, search for item AS54888, wait for the results, tab out of the search attribute, and then verify that Order Management gets the price from the price list for PennyPack Systems. 5. Add item AS54888, click Amount on the order line, and then verify that Pricing correctly calculated the Net Price and applied the discounts. Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Pricing Segments: Procedure Assigning Pricing Strategies: Procedure 222

229 Chapter 8 Performing Advanced Set Ups Managing Price Lists: Procedure Managing Pricing Guidelines: Described Assigning Pricing Strategy According to Order Type: Procedure You can set up Oracle Fusion Pricing so it assigns the pricing strategy according to the type of sales order. In this example, assume you must assign a different pricing strategy depending on the level of service you provide regarding how quickly you deliver the item to your customer. You set up pricing so it assigns the following pricing strategies according to order type. Order Type Pricing Strategy Standard Corporate Pricing Strategy Expedite Expedite Delivery Pricing Strategy This example assumes you already defined these pricing strategies. This topic includes example values. You might use different values, depending on your business requirements. Summary of the Work Assign pricing strategy according to order type Define the order types. Modify the service mapping. Modify the matrix class. Assign the pricing strategy. Test your work. Define the Order Types Define the order types Sign into Order Management with administrative privileges. In the Navigator, click Setup and Maintenance. On the Setup page, click Order Management. Search for, and then open Manage Order Lookups. On the Manage Order Lookups page, in the Search area, enter the following value, and then click Search. Lookup Code ORA_ DOO_ ORDER_TYPES 6. In the Lookup Codes area, click Actions, and then click New to add each of the following lookup codes. 223

230 Chapter 8 Performing Advanced Set Ups Lookup Code Meaning Standard Sales Orders Standard sales order Expedited Sales Orders Sales order that must deliver as soon as possible For details, see Managing Order Types: Procedure. 7. Sign out of Order Management. Modify the Service Mapping You modify the Sales service mapping so it can examine the type of sales order. For details about service mappings, see Managing Service Mappings: Explained. Modify the service mapping. 1. Sign into Oracle Fusion Pricing with the Pricing Manager job role, and then, in the Navigator, click Pricing Administration. 2. On the Overview page, click Tasks, and then click Manage Service Mappings. 3. On the Manage Service Mappings page, click Sales. 4. On the Edit Service Mappings page, in the Entities area, click Query by Example, and then query for the Header entity. 5. In the Details area, click Actions, click Add Row, and then set the following values. OrderTypeCode_ Custom Type String Primary Key Does not contain a check mark. Alternate Key Does not contain a check mark. Allow Null Contains a check mark. You add this attribute so the Pricing Administration work area can examine the value of the order type. 6. Add your new attribute to the service that gets order header details. Click Services, click Query by Example, and then query for the PriceRequestHeader service. In the Details area, on the Entities tab, click the row that includes Header in the Entity column. In the Entities area, click Actions, click Add Row, and then set the following values. OrderTypeCode_ Custom 224

231 Chapter 8 Performing Advanced Set Ups Read Contains a check mark. Write Does not contain a check mark. 7. Add your new attribute to the order header source. Click Sources, click Query by Example, and then query for the OrderHeader source. In the Details area, on the Entity Mapping tab, click the row that includes Header in the Entity column. On the Mappings tab, click Actions, click Add Row, and then set the following values. OrderTypeCode_ Custom View Object OrderTypeCode The OrderTypeCode is a predefined view object that Order Management Cloud uses to communicate the value of the order type. This view object gets values from the ORA_ DOO_ ORDER_ TYPES lookup. The Order Entry Specialist uses the Order Type attribute on the order header in the Order Management work area to set the value for this lookup. 225

232 Chapter 8 Performing Advanced Set Ups For example. 8. Click Save and Close. Modify the Matrix Class Modify the matrix class that assigns the pricing strategy so it can reference your new attribute. Modify the matrix class. 1. Click Tasks, and then click Manage Matrix Classes. 226

233 Chapter 8 Performing Advanced Set Ups 2. On the Manage Matrix Classes page, click Sales Pricing Strategy Assignment. 3. On the Edit Matrix Classes page, in the Condition Columns area, click Actions, click Add Row, and then set the following values. Name Order Type Code Source Code Name OrderTypeCode Comparison = Compare to Header. OrderTypeCodeCustom Note that OrderTypeCode_ Custom is the attribute you added to the header entity on the service mapping earlier in this topic. Allow Null Contains a check mark. Null Is Wildcard Contains a check mark. 4. In the Domain Column, click Edit Domain, set the following values, click OK, and then click Save and Close. Name Order Type Code Domain Type Lookup Lookup ORA_ DOO_ ORDER_TYPES Default Leave empty. Assign the Pricing Strategy You assign the pricing strategy according to the value of the order type. Assign the pricing strategy. 1. Click Tasks, and then click Manage Pricing Strategy Assignments. 2. On the Manage Pricing Strategy Assignments page, click the row that contains the following values. Assignment Level Header Pricing Context Sales Transaction Type All 227

234 Chapter 8 Performing Advanced Set Ups 3. In the Assignment Rules area, click Edit Rules Table Columns, add a check mark to Order Type Code, and then click OK. Note that you created the Order Type Code attribute when you modified the matrix class. 4. In the Assignment Rules area, click Actions, click Add Row, and then set the following values. Channel Method Leave empty. Transaction Type Sales Order Pricing Segment Corporate Pricing Segment Order Type Code Standard Sales Orders Pricing Strategy Corporate Pricing Strategy 5. Click Actions, click Add Row, set the following values, and then click Save and Close. Channel Method Leave empty. Transaction Type Sales Order Pricing Segment Corporate Pricing Segment Order Type Code Expedited Sales Orders Pricing Strategy Expedite Delivery Pricing Strategy Test Your Work Test your work. 1. Sign out of Pricing. 2. Sign into Order Management with a privilege that allows you to create a sales order. You must sign out, and sign back in so Pricing can apply your set up. 3. In the Navigator, click Order Management, and then click Create Order. 4. Set the Order Type to Standard Sales Orders, click Actions, click View Pricing Strategy and Segment, and then verify that the View Pricing Strategy and Segment dialog displays Corporate Pricing Strategy. 5. Set the Order Type to Expedited Sales Orders, and then verify that the View Pricing Strategy and Segment dialog displays Expedite Delivery Pricing Strategy. 228

235 Chapter 8 Performing Advanced Set Ups Related Topics Profiles, Segments, and Strategies: How They Work Together Managing Pricing Segments: Procedure Assigning Pricing Strategies: Procedure Managing Price Lists: Procedure Managing Pricing Guidelines: Described Assigning Pricing Strategy According to Precedence: Procedure You can define pricing strategies that reference different pricing segments according to pricing precedence, but still use a default pricing strategy, such as Corporate Pricing Strategy. In this example, assume you must set up pricing so it assigns the pricing strategy according to the following precedence. Pricing Segment Pricing Strategy Pricing Precedence Corporate Pricing Segment Corporate Pricing Strategy 10 International Pricing Segment International Pricing Strategy 20 Domestic Pricing Segment Domestic Pricing Strategy 30 Assume you have already done the following set up. Defined a pricing strategy assignment for the Corporate Pricing Strategy for all of your customers. Created the following pricing segments. For details, see Managing Pricing Segments: Procedure. Created Corporate Pricing Segment Created Domestic Pricing Segment and assigned it to Computer Service and Rentals Created International Pricing Segment and assigned it to Computer Associates International Created the following pricing strategies. For details, see Managing Pricing Strategies: Procedure. Corporate Pricing Strategy International Pricing Strategy Domestic Pricing Strategy Summary of the Work Assign pricing strategy according to precedence. 1. Modify the matrix class. 2. Assign the pricing strategy. 229

236 Chapter 8 Performing Advanced Set Ups 3. Modify the pricing algorithm. 4. Test your work. This topic includes example values. You might use different values, depending on your business requirements. Modify the Matrix Class You modify the matrix class that assigns each pricing strategy. You add a result dimension that you can use to determine the precedence that Pricing uses when it assigns each strategy. Modify the matrix class In the Navigator, click Pricing Administration. On the Overview page, click Tasks, and then click Manage Matrix Classes. On the Manage Matrix Classes page, click Sales Pricing Strategy Assignment. On the Edit Matrix Class page, in the Result Columns area, click Actions, click Add Row, and then set the following values. Name Precedence Source Code Name Precedence Allow Null Contains a check mark. 5. In the Domain column, click Edit Domain, set the following values, click OK, and then click Save and Close. Name Precedence Domain Type None Data Type Number Default 10 Default Is Fixed Does not contain a check mark. Assign the Pricing Strategy To specify how Pricing must assign the pricing strategy, you define an assignment matrix in a pricing strategy assignment. You set up the assignment matrix so it specifies the precedence to use when assigning the pricing strategy. Assign the pricing strategy. 1. Click Tasks, and then click Manage Pricing Strategy Assignments. 2. On the Manage Pricing Strategy Assignments page, immediately under the page title, click Actions, click Add Row, set the following values, and then click Save. 230

237 Chapter 8 Performing Advanced Set Ups Assignment Level Header Pricing Context Sales Transaction Type Sales Order As an alternative, if you already defined a strategy assignment, then open it for editing, click Actions, click Edit Rules Table Columns, and then add your rules. 3. Click Create Assignment Matrix. 4. In the Create Assignment Matrix dialog, add a check mark to Pricing Segment, click Next, add a check mark to Precedence, and then click Finish. 5. In the Pricing Strategy Assignment Rules area, add the following rules, and then click Save. Pricing Segment Pricing Strategy Pricing Precedence Corporate Pricing Segment Corporate Pricing Strategy 10 International Pricing Segment International Pricing Strategy 20 Domestic Pricing Segment Domestic Pricing Strategy 30 Note that Pricing gives the highest precedence to the rule with the lowest value in the Precedence attribute. 231

238 Chapter 8 Performing Advanced Set Ups Modify the Pricing Algorithm You modify the pricing algorithm that Pricing uses to determine the pricing segment and pricing strategy it references when calculating price for each sales order, sales agreement, quote, and so on. You make the following modification so the algorithm sequences the assignments that Pricing gets from the assignment matrix according to precedence. Modify the pricing algorithm. 1. Click Tasks, and then click Manage Algorithms. 2. On the Manage Algorithms page, query for the Get Sales Pricing Strategy pricing algorithm. 3. Click the row that includes the highest version of Get Sales Pricing Strategy, click Actions, and then click Create Version. 4. Click the row that includes the version you just created. 5. On the Edit Algorithm page, set the following value. Description This pricing algorithm determines the pricing segment and pricing strategy to use when calculating price according to precedence. 6. On the Algorithm tab, in the Steps area, click the row that includes the following value. Name Get Header Strategy It might be necessary to expand steps so that you can locate the Get Header Strategy step. 7. In the Data Sets area, click the row that includes the following value. 232

239 Chapter 8 Performing Advanced Set Ups Name Matrix 8. Enter the following value, click Save and Close, and then click Done. Order By Precedence Test Your Work Test your work. 1. Sign out of Pricing. 2. Sign into Order Management with a privilege that allows you to create a sales order. You must sign out, and sign back in so Pricing can apply your set up. 3. In the Navigator, click Order Management, and then click Create Order. 4. Do not set the customer. Instead, click Actions, click View Pricing Strategy and Segment, and then verify that the View Pricing Strategy and Segment dialog displays Corporate Pricing Strategy. Recall that you applied Corporate Pricing Strategy to All customers. Therefore, if you do not specify a value in the Customer attribute, then Pricing uses Corporate Pricing Strategy, by default. 5. Set the customer to Computer Service and Rentals, and then verify that the View Pricing Strategy and Segment dialog displays Domestic Pricing Segment. 6. Set the customer to Computer Associates International, and then verify that the View Pricing Strategy and Segment dialog displays International Pricing Segment. Related Topics Managing Pricing Algorithms: Explained Managing Pricing Algorithms: Procedure Mapping Pricing Operations to Pricing Algorithms: Procedure Pricing Architecture: How It Works Managing Service Mappings: Explained Defining Price Lists for Each Customer: Procedure You can implement price list logic that defines price lists according to the requirements for each customer. In the following examples, assume your implementation services about 4,000 customers, each customer requires a different percent discount according to the value of one or more attributes, and you use a single pricing strategy for each customer. 233

240 Chapter 8 Performing Advanced Set Ups Example Description Define pricing according to customer and line of business. The following work occurs. Define pricing according to customer, sales channel, and business unit. The following work occurs. Define pricing according to customer and ship-to address. You define an extensible flexfield on the order header that implements your own Line of Business attribute, and you set up pricing to apply a percent discount according to customer and line of business. The Order Entry Specialist, creates a new sales order, sets the Customer attribute and Line of Business attribute on the order header, and then adds an order line. Pricing applies a percent discount for each item according to customer and line of business. You define an extensible flexfield on the order header that implements your own Sales Channel attribute, and you set up pricing to apply a percent discount according to customer, sales channel, and business unit. The Order Entry Specialist, creates a new sales order, sets the Customer attribute, Sales Channel attribute, and the Business Unit attribute on the order header, and then adds an order line. Pricing applies a percent discount for each item according to customer, sales channel, and business unit. The following work occurs. You you set up pricing to apply a percent discount according to customer and the ship-to address. The Order Entry Specialist, creates a new sales order, sets the Customer attribute and ShipTo Address attribute on the order header, and then adds an order line. Pricing applies a percent discount for each item according to customer and ship-to address. Implementing the Line of Business Example Assume customer Computer Service and Rentals includes four lines of business, and each line of business requires a different percent discount. The sales channels are Retail, Corporations, Governments, and Universities. The following set up illustrates how you can implement this example. Set Up Description Extensible flexfield Define an extensible flexfield named Line of Business on the order header. Customer pricing profile Define a customer pricing profile that references _ Number1 for the extensible flexfield. Price list You use the following values for each price list that you define. Price Type equals One Time Charge Type equals Sale Charge Subtype equals Price Adjustment Type equals Discount Amount Condition references the Line of Business extensible flexfield You set up three separate price lists, one for all items that Computer Service and Rentals sells, one for item AS54888 Desktop Computer with a sale price of $100, one for item AS54999 Sentinel Desktop Computer with a sale price of $200. You define the following pricing matrixes for each price list. 234

241 Chapter 8 Performing Advanced Set Ups Line of Business Adjustment Amount for All Items Adjustment Amount for AS54888 Adjustment Amount for AS54999 Retail Corporations Governments Universities Implementing the Sales Channel and Business Unit Example Assume customer Spruce Hospitals places sales orders through one of four different sales channels and through one of two business units. You must apply a different price and a different discount according to each sales channel and each business unit. The lines of business are Retail, Corporations, Governments, and Universities. The following set up illustrates how you can implement this example. Set Up Description Extensible flexfield Define an extensible flexfield named Sales Channel on the order header. Customer pricing profile Define a customer pricing profile that references _ Number1 for the extensible flexfield. You set up a price list for item Forest Medical Trillium 3000 with a sale price of $130, Access Set equals Common, and Business Unit equals Care Operations and Care Sales. You define the following pricing matrix. Header.SellingBusinessUnitId defines the business unit. Sales Channel references the Sales Channel extensible flexfield. You set the Adjustment Type to Discount Amount. Business Unit in Condition Column Sales Channel in Condition Column Adjustment Amount Care Operations Hospitals 10 Care Sales Outpatient Clinics 15 Care Operations Hospitals 12 Care Sales Outpatient Clinics 11 You set up another price list for all items that Spruce Hospitals sells. You set Price Type to One Time, Charge Type to Sale, and Charge Subtype to Price. You define the following pricing matrix. Header.SellingBusinessUnitId defines the business unit. You set the Adjustment Type to Discount Percent, and the Adjustment Basis to List Price. Business Unit in Condition Column Adjustment Amount Care Operations 10 Care Sales

242 Chapter 8 Business Unit in Condition Column Performing Advanced Set Ups Adjustment Amount Implementing the Ship-To Example Assume customer Musical Scores sells full sets of orchestral notation to orchestras throughout the world. They provide different discounts according to ship-to country. You set up a price list for item Orchestral Favorites with a sale price of $100. You define the following pricing matrix. You set the Adjustment Type to Discount Amount. Ship-To Address in Condition Column Adjustment Amount United States 10 Japan 12 Korea 14 China 16 Introduction to the Example That You Implement in This Topic You will implement a combination of the examples described above. Assume you are a system administrator who works for Vision Operations, a company that sells computers. Your business analysis indicates you must define different discounts depending on the following 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 has requested that you associate each discounted sale only with the Vision Operations business unit. Your technical analysis indicates you must implement the following functionality. 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. Define a separate price list that allows you 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 236

243 Chapter 8 Performing Advanced Set Ups 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. You have worked with your product and financial teams to determine the following discounts. Note that 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). Channel Percent Discount Apply the following percent discounts. Line of Business Apply the following percent discounts. Ship to Country Sell through peripheral line-of-business, 0% Sell through desktop line-of-business, 0% Sell through laptop line-of-business, 10% Apply the following percent discounts. Customer Sell through broker, 0% Sell through broker in China, 5% Sell through call center, 5% Sell through internet, 10% Sell into United States, 0% Sell into Japan, 5% Sell into Korea, 10% Sell into China, 20% Apply the following percent discounts. Sell to Fantastic Laptops, 5% Sell to Computer Service and Rentals, 10% Sell to PennyPack Systems, 20% 237

244 Chapter 8 Performing Advanced Set Ups You will implement the following service data object. For details about service data objects, see Pricing Architecture: How It Works. Note the following points. 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. 238