PO Integration With QP Whitepaper

28
Oracle Purchasing Integration with Oracle Advanced Pricing – Release 11.5.10 An Oracle White Paper September 2006 Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 1

Transcript of PO Integration With QP Whitepaper

Page 1: PO Integration With QP Whitepaper

Oracle Purchasing Integration with Oracle Advanced Pricing – Release 11.5.10

An Oracle White Paper September 2006

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 1

Page 2: PO Integration With QP Whitepaper

Oracle Purchasing Integration with Oracle Advanced Pricing – Release 11.5.10

EXECUTIVE SUMMARY The purpose of this document is to highlight the ways in which enterprises can leverage Oracle Advanced Pricing to price requisitions and purchase orders.

INTRODUCTION Historically, contractual pricing for items was maintained in the following entities:

• Blanket agreement lines

• Blanket agreement price breaks

• Contract purchase agreement with pricing from the item master or iProcurement catalog

While these static pricing capabilities were sufficient for the majority of business processes, some purchasing scenarios required more complex pricing models. To handle these scenarios, Oracle Purchasing introduced Custom Pricing Hooks that customers could leverage to incorporate their own business specific pricing rules. These hooks allowed customers to override any price calculated by the pricing terms on the agreement. For more information on these pricing hooks, refer to Metalink Note 360121.1 - Custom Hooks in Oracle Purchasing.

In release 11.5.10, Oracle Purchasing built integration with Oracle Advanced Pricing to allow customers to model their complex pricing scenarios in the application without having to write custom code. This document explains how the integration works and provides examples of how various types of business scenarios can be satisfied through the use of Oracle Purchasing with oracle Advanced Pricing.

INTEGRATING WITH ORACLE ADVANCED PRICING Oracle Advanced Pricing is a flexible and extensible pricing engine that supports a variety of pricing models – from very simple to complex. Using Oracle Purchasing with Oracle Advanced Pricing allows buying organizations to create pricing rules and execute these rules during requisition and purchase order creation.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 2

Page 3: PO Integration With QP Whitepaper

Examples of pricing scenarios that can be modeled in Oracle Advanced Pricing include:

• Capturing the purchase price for a specific item.

• Supporting a 10% promotional discount on items offered by one of your suppliers for a given date range.

• Pricing items based on user-defined attributes, such as the width or thickness of an item.

The figure below illustrates the interaction between Oracle Purchasing and Oracle Advanced Pricing:

Integration is enabled through the use of contract purchase agreements. If the requisition line or purchase order line references a contract purchase agreement, Oracle Advanced Pricing will be invoked to determine the correct price.

Within Oracle Advanced Pricing, there exists a powerful set of tools in the form of price lists, modifiers and formulas to model the most challenging pricing scenarios. Price lists allow enterprises to capture and maintain the purchase price of an item, while modifiers are used to create price adjustments, such as discounts and surcharges. Formulas are mathematical expressions that let you define rules to dynamically determine the price on a transaction based on attribute values on the transaction.

Below are several examples that illustrate different procurement scenarios that can be modeled in Oracle Advanced Pricing. For further information on specific functionality, refer to the Oracle Advanced Pricing User’s Guide and the Oracle Advanced Pricing Implementation Guide. Please note that line types with a purchase basis of either Services or Temp Labor are not eligible to be priced by Oracle Advanced Pricing.

Requisitions

Pricing Transactions Contract

Agreement

Orders

Pricing Engine

Oracle Advanced Pricing

Price List

Modifiers

Formula

Leverage Oracle Advanced Pricing to Model Complex Pricing Scenarios

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 3

Page 4: PO Integration With QP Whitepaper

General Setup The following setup steps apply to all of the business cases in this document.

Define Profile Options

The following profile options should be set accordingly in order to integrate Oracle Purchasing with Oracle Advanced Pricing:

a. QP: Pricing Transaction Entity = Procurement (profile option can be set at site, application, and user levels)

b. QP: Source System Code = Oracle Purchasing (profile option can be set at site and responsibility levels)

c. QP: Item Validation Org = Inventory Organization specified in Financial Options (profile option can be set at site and responsibility levels)

Example Business Case 1 – Using Price Lists to Capture Prices

Scenario

Office Solutions is your company’s preferred vendor for general office supplies. You have several contract purchase agreements in place with Office Solutions to cover the various types of products you purchase from them. The prices for items in each of these categories are captured in price lists in Advanced Pricing.

Setup in Oracle Advanced Pricing

Setup Price List Header

In this example, we will setup a price list for printers. 1. Navigate to the ‘Create Price List’ page

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 4

Page 5: PO Integration With QP Whitepaper

2. Enter a Name for the price list Note: The price list Name should be unique across PTEs (Pricing Transaction Entities), otherwise an error occurs. For example, if a price list named "Corporate" is created in the Order Management PTE, an error message displays if you create a "Corporate" price list in the Purchasing PTE.

3. To activate the price list, select the Active box. 4. Enter a Description of the price list 5. Select a price list Currency. 6. If the profile, QP: Multi-Currency Installed is set to Yes, select the Multi-

Currency Conversion List. Note: Multi-currency enabled price lists are set up in a base currency and associated with a currency conversion list containing the base currency and other currencies with conversion criteria. Refer to the Oracle Advanced Pricing User’s Guide for more information on creating and using Multi-currency conversion lists.

7. Enter a Round To value that is applied to the price list. A positive number indicates the number of places to the left of the decimal point. A negative number indicates number of places to the right of the decimal point. The default is -2. The pricing engine rounds the base price and all discount amounts before using them in calculations. The value returned depends on the value that was set for the profile option QP: Unit Price Precision Type:

• Standard: The rounding factor defaults to the currency's precision value. You can override the rounding factor to any value greater than or equal to the currency's precision value.

• Extended: The rounding factor defaults to the currency's extended precision value. You can override the rounding factor to any value greater than or equal to the currency's extended precision value.

Note: If multi-currency is enabled, the Round To field will be disabled and will reflect the Round To value defined for the Multi-Currency Conversion window.

8. Optionally enter the starting and ending Effective Dates for the price list. If these dates are populated, and a need-by date exists on the req or PO line, the need-by date must be within the start/end dates of the price list. If a need-by date doesn’t exist on the req/PO line, then the system date must be within the start/end dates of the price list.

9. Enter any comments – these are used for informational purposes only. 10. On the Others tab, ensure that the Pricing Transaction Entity is set to PO

(based on the profile, QP: Pricing Transaction Entity) and the Source System is set to PO (based on the profile, QP: Source System Code). Oracle Purchasing does not use any of the other fields on this tab.

Setup Price List Lines

1. Select the List Lines tab in the Advanced Pricing - Price Lists window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 5

Page 6: PO Integration With QP Whitepaper

2. Select Item from the Product Context field. 3. Select a Product Attribute for the Item such as Item Number, Item

Category, or All Items. In this example, we will select Item Category. 4. Enter a Product Value for the selected product attribute. In our example,

the item category we want to price is OFFICE.PRINTERS. 5. Select the UOM of the item. 6. Select Price List Line as the Line Type. 7. Choose Unit Price as the Application Method and enter a Value that

corresponds to the base list price of the item. 8. Enter the Start Date and End Dates for the price list line. The dates

should be within the effective start and end dates of the price list. The Need-By Date on the req/PO line or the system date must be within the start/end dates of the price list line.

9. Repeat these steps for each printer that should be captured on this price list.

Enter Pricing Attributes for Price List Line in Oracle Advanced Pricing

1. Click the Pricing Attributes button in the List Lines tab to display the Pricing Attributes window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 6

Page 7: PO Integration With QP Whitepaper

2. Select a Pricing Context and Attribute for the selected product. For our

example, we’ll select PO Pricing Attributes as the Pricing Context and PO Vendor Item Number as the Pricing Attribute.

3. Select = as the Operator value. 4. Enter the supplier part number. 5. Since pricing attributes are specific to a single price list line, repeat these

steps for each price list line.

Define Qualifiers

1. Select the Qualifiers tab in the Advanced Pricing - Price Lists window

2. Enter a qualifier Grouping Number. • Qualifiers with the same grouping number are evaluated as a

Boolean AND condition (an entity must meet all of the conditions to qualify).

• Qualifiers with different grouping numbers are evaluated as a Boolean OR condition (an entity must meet one of the conditions to qualify).

• If -1 is used as a qualifier grouping number, the qualifier becomes mandatory for all qualifier groups.

3. For the first qualifier, select Supplier as the Qualifier Context and PO Vendor as the Qualifier Attribute. Use an Operator of = and a Value From of Office Solutions.

4. For the second qualifier, select Buyer as the Qualifier Context and PO Agreement Number as the Qualifier Attribute. In this example, the value 9147 corresponds to the Contract Purchase Agreement that governs the terms and conditions for purchasing printers from Office Solutions.

5. The Precedence values default from the qualifier attribute. 6. Optionally enter Start and End dates for the qualifiers.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 7

Page 8: PO Integration With QP Whitepaper

Using Advanced Pricing to Price Requisitions and Purchase Orders in Oracle iProcurement and Oracle Purchasing

In order to leverage the Advanced Pricing setup in Oracle Purchasing and Oracle iProcurement, the requisition/purchase order line must reference a contract purchase agreement. Once this association is made, Purchasing sends information from the req/PO line to Advanced Pricing in order to fetch the correct price. Using the previous example, Advanced Pricing would use the source document number, supplier, supplier site, item category, system date or need-by date, and the supplier part number to find an applicable price. To associate a purchase order line with a contract purchase agreement, simply select the agreement number from the Contract field on the Reference Documents subtab of the purchase order. See: Entering Purchase Order Reference Document Information, Oracle Purchasing User’s Guide. To associate a requisition line with a contract purchase agreement, choose any of the following methods:

1. Manually select the agreement when creating the requisition or non-catalog request. See: Entering Requisition Lines, Oracle Purchasing User’s Guide. Also see the online help for iProcurement.

2. Configure the system to find the most current contract purchase agreement for the item/supplier combination on the requisition line. See: Overview of Automatic Sourcing, Oracle Purchasing User’s Guide. Also see the Oracle iProcurement Implementation Guide.

3. Configure the system to automatically associate the requisition line with a specific contract purchase agreement. See: Approved Supplier List, Oracle Purchasing User’s Guide. Also see the Oracle iProcurement Implementation Guide.

Example Business Case 2 – Applying a Modifier to a Price

Scenario

Building on the previous example, let’s assume that Office Solutions is offering a 15% discount on all printers that are purchased in the month of June. We can model this discount as a modifier in Advanced Pricing.

Setup in Oracle Advanced Pricing

Define Profile Options

Refer to the steps documented for the first business case.

Setup Modifier Header

1. Navigate to the Advanced Pricing-Define Modifier window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 8

Page 9: PO Integration With QP Whitepaper

2. In the Main tab, select a modifier Type of either Discount List or Surcharge.

3. Enter a modifier list Number. 4. Select Active to activate the modifier. 5. Select the Automatic box – at this time, Oracle Purchasing does not

support manual modifiers. 6. Enter a Name to identify the modifier.

Note: The modifier Name should be unique across all PTEs (Pricing Transaction Entities) otherwise an error occurs. For example, if a modifier named "Corporate" is created in the Order Management PTE, an error message displays if you create a "Corporate" modifier in the Purchasing PTE.

7. A Global box displays if the Pricing Security Control Profile is set to ON. If the box is selected, the modifier list can be used by all operating units for pricing transactions. If cleared, the modifier’s use is restricted to the operating unit of the user creating the modifier list.

8. Choose one of the following: Select a Currency. If a currency is selected such as US dollars (USD), the requisition and/or purchase order must match the modifier currency to determine pricing for the order. The modifier can then be used with a matching base currency or "to currency" (for a multi-currency price list). Optionally, select Optional Currency to leave the Currency field in the modifier list blank. This option can be selected for modifiers where currency is not used as criteria to select modifiers for the order.

9. Enter the Start and End Date range for the modifier. The Need-By Date on the req/PO line or the system date must be within the start/end dates of the modifier.

10. Enter a Description for the modifier list.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 9

Page 10: PO Integration With QP Whitepaper

Setup Modifier Line

1. Select the Modifiers Summary tab in the Advanced Pricing – Define Modifier window.

2. The Modifier No field displays a default modifier number to identify the modifier line. You can change this value; however, the Modifier No for each modifier line must be unique within the modifier list.

3. Select Line as the Level that the modifier is applied: Note: At this time, Oracle Purchasing only supports Line Level modifiers

4. Oracle Purchasing supports the following Modifier Types: Discount, Surcharge, and Price Break Header, which allows you to define discounts or surcharges for either point or range price breaks. For this example, we’ll select Discount.

5. Enter the Start and End Dates for the modifier line. In this example, this modifier line applies to purchases made between June 1, 2005 and June 30, 2005. Note: The start and end date for the modifier line must be between the start and end date on the modifier list. The pricing engine confirms that the dates for the modifier line are valid so that the modifier line can be applied.

6. Select the Automatic box – at this time, Oracle Purchasing does not support manual modifiers.

7. The only Pricing Phase supported by Oracle Purchasing is PO List Line Adjustment.

8. Select a Product Attribute for the Item such as Item Number, Item Category, or All Items. In this example, we will select Item Category.

9. Enter a Product Value for the selected product attribute. In our example, the item category we want to price is OFFICE.PRINTERS.

Setup Discount Information

1. Select the Discounts/Charges tab in the Advanced Pricing – Define Modifier window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 10

Page 11: PO Integration With QP Whitepaper

2. Select any of the available Application Methods. For this example, we’ll select Percent to indicate a percentage discount.

3. Enter the Value of the Application Method. In our example, the value is 15.

Setup List Qualifiers

1. Select the List Qualifiers button in the Advanced Pricing – Define Modifier window to display the Qualifier Groups window. If qualifiers are associated with the modifier list, then the Qualifier Groups window does not display.

2. Either select a pre-defined Qualifier Group or press OK to add individual qualifier lines.

3. Select the same qualifiers as selected in the previous example.

Using Advanced Pricing to Price Requisitions and Purchase Orders in Oracle iProcurement and Oracle Purchasing

Refer to the steps documented for the first business case. When Oracle Purchasing passes attributes to Advanced Pricing during the pricing call, the pricing engine will find both a price list and a modifier list that match the

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 11

Page 12: PO Integration With QP Whitepaper

parameters sent by Purchasing. As a result, the pricing engine will fetch the price from the price list, $199.99, and apply a 15% discount to this price, resulting in a net price of $169.99.

Example Business Case 3 – Pricing PO Lines Based on DFFs

Scenario

In this example, the purchase price for an item is based on its length, width, thickness, and rating. In order to model this in Oracle Advanced Pricing, we will first need to create descriptive flexfields to capture these attributes on the purchase order. Then, we’ll use Oracle Advanced Pricing to create pricing attributes for these flexfields and a formula to calculate the price. Finally, we’ll attach the formula to a price list line in order to generate the final purchase price for the item.

Define Descriptive Flexfields for PO Lines

For this example, 4 flexfields have been created at the PO line level: Length, Width, Thickness, and Rating. Refer to the Oracle Applications Flexfield Guide for detailed instructions on creating flexfields.

Create PL/SQL Specification and Body Files

Create the following PL/SQL spec and body files in the database. We will refer to these files later while setting up Oracle Advanced Pricing. Spec File CREATE OR REPLACE PACKAGE widget_pricing AS FUNCTION get_length(p_line_id IN NUMBER) RETURN varchar2; FUNCTION get_width(p_line_id IN NUMBER) RETURN varchar2; FUNCTION get_thickness(p_line_id IN NUMBER) RETURN varchar2; FUNCTION get_rating(p_line_id IN NUMBER) RETURN varchar2; END widget_pricing; commit; exit; Body File CREATE OR REPLACE PACKAGE BODY widget_pricing AS FUNCTION get_length(p_line_id IN NUMBER) RETURN varchar2 is l_length varchar2(150); begin select attribute1 into l_length from po_lines_all where po_line_id = p_line_id; return l_length; end; FUNCTION get_width(p_line_id IN NUMBER) RETURN varchar2 is l_width varchar2(150); begin select attribute2 into l_width from po_lines_all

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 12

Page 13: PO Integration With QP Whitepaper

where po_line_id = p_line_id; return l_width; end; FUNCTION get_thickness(p_line_id IN NUMBER) RETURN varchar2 is l_thickness varchar2(150); begin select attribute3 into l_thickness from po_lines_all where po_line_id = p_line_id; return l_thickness; end; FUNCTION get_rating(p_line_id IN NUMBER) RETURN varchar2 is l_rating varchar2(150); begin select attribute4 into l_rating from po_lines_all where po_line_id = p_line_id; return l_rating; end; END widget_pricing; / show err; commit; exit; Setup in Oracle Advanced Pricing

Define Profile Options

Refer to the steps documented for the first business case.

Setup Pricing Context and Attributes

1. Navigate to the Context and Attributes page.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 13

Page 14: PO Integration With QP Whitepaper

2. Select Pricing Context as the Context Type. 3. Enter a Code which is a short name for the context. Once created, it

cannot be updated. In this example, the code is WIDGET. 4. Enter a Name and Description for the context. The Name you create will

be available from the pricing context fields in the Price List and Modifier windows.

5. Select the Enabled box to make this context available. 6. In the Attributes region, enter the Code which is a short name for the

attribute. This is an internal name that is unique for a given attribute. Once created, it cannot be updated.

7. Enter a display Name and optionally a Description for the attribute. 8. Enter a numeric Precedence value which decides the processing sequence

of the pricing attributes. The precedence is restricted to a maximum of 3 digits (any number between 1 and 999).

9. Select Purchasing as the Application Name that created this attribute. 10. Select a Column Mapped value to which an attribute will be mapped –

such as Pricing_Attribute1. The list displays the names of the unused columns only.

11. Select a value from the Value Set field to define a domain of valid values for an attribute. The Datatype value indicates if the Value Set is numeric (Number) or alphabetic (Char). In this example, the value set for length, width, and thickness is QP: Number while the value set for Rating is QP: Text.

Link Attributes to the Purchasing Pricing Transaction Entity

1. Navigate to the Pricing Transaction Entity-Attribute Linking window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 14

Page 15: PO Integration With QP Whitepaper

2. Select Procurement as the Pricing Transaction entity. 3. Select Pricing Context for the Context Type 4. In the Context region, find and select the pricing context that was created

in the previous section. 5. Click the Link Attributes button to display the Link Attributes window.

6. Select the attributes that were created previously. 7. Choose Line as the attribute Level. 8. Select Attribute Mapping as the Attribute Mapping Method. 9. Select LOV Enabled to display the attribute in the list of values in

modifier, qualifier, price list, and formula windows. 10. Select the Attribute Mapping Enabled box to enable the attribute to be

mapped successfully. This enables the concurrent program Build_context API to generate code for this attribute.

11. Click the Attribute Mapping button to display the Attribute Mapping window.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 15

Page 16: PO Integration With QP Whitepaper

12. In the Request Types region, select Purchasing as the Application name

that created the mapping rule. 13. Since the attribute mapping level for our attributes was set to Line, we

need to complete the information in the Line Level region. 14. Select PL/SQL as the User Source Type 15. In the User Value String, enter the following text based on the packages

we created and applied to the database at the beginning of this example and based on the attribute for which we are defining the mapping: widget_pricing.get_length(po_advanced_price_pvt.g_line.order_line_id)

16. Repeat steps 11-15 for the other attributes, replacing ‘get_length’ with

‘get_width’, ‘get_thickness’, and ‘get_rating’, accordingly.

Create a Formula in Oracle Advanced Pricing

1. Navigate to the Pricing Formulas window

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 16

Page 17: PO Integration With QP Whitepaper

2. Enter a Name and Description for the formula 3. Enter a Formula expression and the formula lines. In our example, the

price of the widget is the base, or list, price plus individual adjustments based on the length, width, and thickness of the widget. The constant is included in case no values are populated for the length, width, or thickness.

4. For each of the factor lists, select the Factors button to create the factor list.

5. Once all the factor lists have been created, select Build Formula Package from the Tools menu to generate the formula package. A Dialog box displays a message if the formula package generation was successful. Alternately, you can also run the Build Formula Package concurrent program.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 17

Page 18: PO Integration With QP Whitepaper

6. For the Base Pricing Attribute Context, select the pricing context Pricing

Widgets that was created previously. 7. The Base Pricing Attribute will be Thickness, Length, or Width, depending

on which factor list you’re creating. 8. Enter the Operator, Value From, Value To, and Adjustment Factor. 9. In the Associate Pricing Attributes region, select Pricing Widgets and

Rating as the Associated Pricing Attribute Context and Associated Pricing Attribute, respectively. This will link the Associated Pricing Attribute with the Base Pricing Attribute in an AND condition. Essentially, the first line of this factor list says: If the thickness is between 0 and 0.5, AND the Rating is A, adjust the price by 0.9.

10. The second factor list line says: If the thickness is between 0 and 0.5, AND the Rating is B, adjust the price by 0.7. This is shown in the following screenshot:

11. Additional factor list lines can be added for thicknesses ranging from 0.5

to 1.0, 1.0 to 1.5, and so on. For each range, the adjustment can vary based on the Rating of the widget.

12. Create similar factor lists for Length and Width as shown in the following screenshots. As with the Thickness factor list, assume there are factor list lines covering a wide array of ranges and adjustments based on the Rating.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 18

Page 19: PO Integration With QP Whitepaper

Associate Formula to a Price List in Oracle Advanced Pricing

1. Now that our attributes, formula and factor lists have been created, we need to associate the formula with a price list.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 19

Page 20: PO Integration With QP Whitepaper

2. Create a price list and price list line for the widget (Refer to Business Case 1 for instructions on which fields to populate)

3. In the Dynamic Formula field for the price list line, select the Widgets formula that was created above.

4. Notice that the list price for the widget is $25.00

Run Concurrent Program to Build Mapping Rules

Once the setup in Oracle Advanced Pricing is complete, run the concurrent program, ‘Build Attribute Mapping Rules’.

Using Advanced Pricing to Price Purchase Orders in Oracle Purchasing

1. Navigate to the Enter Purchase Order screen

2. Create a Standard Purchase Order for supplier Puget Production Maintenance and Item W13579, which corresponds to our widget.

3. The price of $30.00 defaults from the item master list price. 4. Enter values for the descriptive flexfields that were defined as pricing

attributes in Oracle Advanced Pricing.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 20

Page 21: PO Integration With QP Whitepaper

5. Save the PO. This is required in order to generate a line ID. When we performed the attribute mapping in Oracle Advanced Pricing, we specified that we would use the line ID in order to get the values of the flexfields.

6. Navigate to the Reference Documents tab and associate the PO line with the Contract Purchase Agreement for Puget Production Maintenance.

7. The price is updated based on the following formula:

a. List Price + Length Factor + Width Factor + Thickness Factor b. 25 + 0.75 + 0.09 + 2 = $27.84

8. If you need to re-trigger a pricing call, save the document and navigate to Tools > Recalculate Price to regenerate the price.

DETAILS OF THE PRICING CALL When Oracle Purchasing sends a pricing request to Oracle Advanced Pricing, the following information is returned:

• The list, or undiscounted base price, is captured as the unit_price of the line

• The discounted price is captured as the base_unit_price of the line

The supporting details of how the list and discounted prices were determined are captured in the following temporary tables:

• Matching price lists and modifiers are stored in qp_preq_ldets_tmp

• Matching qualifiers are stored in qp_preq_qual_tmp

• Matching product and pricing attributes are stored in qp_preq_line_attrs

Since this information is stored in temporary tables, it is not persistent and only remains for the duration of the session. However, Oracle Purchasing provides an audit hook to allow users to store the price adjustment information returned by the pricing engine into transactional tables. Customers can either define their own

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 21

Page 22: PO Integration With QP Whitepaper

tables, or use the existing price adjustment tables that are used by Oracle Order Management/Oracle Order Capture:

TABLE NAME

PURPOSE

OE_PRICE_ADJUSTMENTS/ASO_PRICE_ADJUSTMENTS Holds the price list and modifier information.

OE_PRICE_ADJ_ATTRIBS/ASO_PRICE_ADJ_ATTRIBS Holds the qualifier information that was used to determine the price.

The following code snippet demonstrates how the audit hook could be used to store the adjustment information into a user-defined table called CUST_PRICE_ADJUSTMENTS. The structure of this table is based on OE_PRICE_ADJUSTMENTS. PROCEDURE PO_CUSTOM_PRICE_PUB.audit_qp_price_adjustment(p_api_version

IN NUMBER, p_order_type IN

VARCHAR2, p_order_line_id IN NUMBER, p_line_index IN NUMBER, x_return_status OUT NOCOPY

VARCHAR2, x_msg_count OUT NOCOPY

NUMBER, x_msg_data OUT NOCOPY

VARCHAR2) IS l_api_version NUMBER := 1.0; l_api_name VARCHAR2(60) := 'AUDIT_QP_PRICE_ADJUSTMENT'; l_log_head CONSTANT varchar2(100) := g_log_head || l_api_name; l_progress VARCHAR2(3) := '000'; BEGIN IF g_debug_stmt THEN PO_DEBUG.debug_begin(l_log_head); PO_DEBUG.debug_var(l_log_head,l_progress,'p_order_type',

p_order_type);

PO_DEBUG.debug_var(l_log_head,l_progress,'p_order_line_id',p_order_line_id);

PO_DEBUG.debug_var(l_log_head,l_progress,'p_line_index',p_line_index);

END IF; -- Check for the API version IF ( NOT

FND_API.compatible_api_call(l_api_version,p_api_version,l_api_name,G_PKG_NAME) )

THEN x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; END IF; /* This is where you need to enter your own custom logic. The following lines will have to be replaced with your custom

code determining the value of the OUT parameters. */ INSERT INTO CUST_PRICE_ADJUSTMENTS ( PRICE_ADJUSTMENT_ID , HEADER_ID

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 22

Page 23: PO Integration With QP Whitepaper

, LINE_ID , LIST_HEADER_ID , LIST_LINE_ID , LIST_LINE_TYPE_CODE , APPLIED_FLAG , operand , Arithmetic_operator , ADJUSTED_AMOUNT ) ( SELECT ldets.price_adjustment_id , lines.header_id , lines.line_id , ldets.LIST_HEADER_ID , ldets.LIST_LINE_ID , ldets.LIST_LINE_TYPE_CODE , ldets.APPLIED_FLAG , ldets.order_qty_operand , ldets.operand_calculation_code , ldets.order_qty_adj_amt FROM QP_LDETS_v ldets , QP_PREQ_LINES_TMP lines WHERE AND ldets.line_index= lines.line_index ); x_return_status := FND_API.G_RET_STS_SUCCESS; x_msg_count := 0; x_msg_data := NULL; IF g_debug_stmt THEN PO_DEBUG.debug_end(l_log_head); END IF; END audit_qp_price_adjustment;

THE GLOBAL STRUCTURE The global record structure in Oracle Advanced Pricing holds information about the PO header and PO line for which qualifier and pricing attribute information needs to be built.

The following table shows the definition of the PO_ADVANCED_PRICE_PVT.G_HDR PL/SQL structure:

Column Attribute Mapped in QP

Context Context Type

org_id Purchasing Org PO_PRICING_ATTRIBUTES PRICING_ATTRIBUT

E

p_order_header_id supplier_id PO Vendor PO_SUPPLIER QUALIFIER

supplier_site_id PO Vendor Site PO_SUPPLIER QUALIFIER

creation_date PO Creation Date PO_ORDER QUALIFIER

order_type PO Order Type PO_ORDER QUALIFIER

ship_to_location_id PO Ship To PO_BUYER QUALIFIER

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 23

Page 24: PO Integration With QP Whitepaper

Column Attribute Mapped in QP

Context Context Type

Location

ship_to_org_id PO Ship To Org PO_BUYER QUALIFIER

The following table shows the definition of the PO_ADVANCED_PRICE_PVT.G_LINE PL/SQL structure:

Column Attribute Mapped in QP

Context Context Type

order_line_id agreement_type PO Agreement

Type PO_BUYER QUALIFIER

agreement_id PO Agreement Number

PO_BUYER QUALIFIER

agreement_line_id PO Agreement Line Number

PO_PRICING_ATTRIBUTES

PRICING_ATTRIBUTE

supplier_id PO Vendor PO_SUPPLIER QUALIFIER

supplier_site_id PO Vendor Site PO_SUPPLIER QUALIFIER

ship_to_location_id PO Ship To Location

PO_BUYER QUALIFIER

ship_to_org_id PO Ship To Org PO_BUYER QUALIFIER

supplier_item_num PO Vendor Item Number

PO_PRICING_ATTRIBUTES PRICING_ATTRIBUTE

item_revision Item Revision PO_PRICING_ATTRIBUTES PRICING_ATTRIBUTE

item_id Item Number ITEM PRODUCT

category_id Item Category ITEM PRODUCT

need_by_date PO Need By Date PO_ORDER QUALIFIER

SUPPORTED PRICING FUNCTIONALITY IN PURCHASING The following table lists the Oracle Advanced Pricing features that can be leveraged with Oracle Purchasing. Refer to the Oracle Advanced Pricing User’s Guide and Oracle Advanced Pricing Implementation Guide for additional details on each of these features.

FEATURE NAME SUPPORTED NOT

SUPPORTED

QUALIFIER GROUPS

Qualifier Groups X

Qualifier Groups Report X

PRICE LISTS

Price Lists X

Secondary Price Lists X

Multi-Currency Price Lists X

List Level Qualifiers/Qualifier Groups X

Precedence X

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 24

Page 25: PO Integration With QP Whitepaper

FEATURE NAME SUPPORTED NOT

SUPPORTED

Price Breaks (point and range for unit/block Pricing) X

Pricing Attributes X

UOM Conversion X

Static Formulas X

Dynamic Formulas X

Load Price Lists in Batch X

Price List Maintenance – Copy Existing Price List to New Price List

X

Price List Maintenance – Add Items in Bulk to an Existing Price List

X

Price List Maintenance – Mass Adjust Prices for a Price List

X

Price List Details Report X

Archive/Purge X

FORMULAS/FORMULA TYPES

Function X

List Price X

Factor List X

Modifier Value X

Numeric Constant X

Price List Line X

Pricing Attribute X

Formula Details Report X

MODIFIERS

MODIFIER LINE TYPES

Discounts X

Surcharges X

Price Breaks (Apply a variable discount/surcharge price adjustment to a pricing request based on meeting the condition of a break type. Supports both point and range type breaks.)

X

Coupon Issue X

Freight and Special Charges X

Item Upgrade (Buy x, get x’ instead) X

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 25

Page 26: PO Integration With QP Whitepaper

FEATURE NAME SUPPORTED NOT

SUPPORTED

Other Item Discount (Buy A and B, get a 10% discount on C)

X

Promotional Goods (Buy x, get y at n%) X

Terms Substitution (Buy > $100, get free shipping)

X

Non Currency Specific Modifiers X

Manual Modifiers (applying modifiers manually) X

Order Level Modifiers X

Line Level Modifiers X

Group of Lines Level Modifiers X

Modifier Buckets X

Discounts Based on a Percentage X

Discounts Based on an Amount X

Lump Sum Discounts X

Override the Price with a New Price X

Exclude Items X

List Level Qualifiers/Qualifier Groups X

Line Level Qualifiers/Qualifier Groups X

Precedence X

Volume Pricing (pricing based on a specific volume, or a recurring volume)

X

Net Amount Price Break X

Pricing Attributes X

Formulas X

Accruals X

Cross Order Volume Discounts X

Promotional Limits X

Modifier Maintenance – Copy Existing Modifier List to New Modifier List

X

Modifier Details Report X

Archive/Purge X

PRICING ORGANIZER X

PRICING ENGINE REQUEST VIEWER SCREEN X

PRICING SECURITY X

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 26

Page 27: PO Integration With QP Whitepaper

FEATURE NAME SUPPORTED NOT

SUPPORTED

ATTRIBUTE MANAGEMENT

Attribute Mapping Attributes X

Custom Sourced X

Attribute Mapping Rules Error Report X

CONCLUSION Oracle Advanced Pricing combined with Oracle Purchasing provides powerful capabilities to price requisitions and purchase orders, ranging from simple price adjustments to complex pricing structures.

Prior to release 11.5.10, agreements with dynamic or complex pricing structures were manually maintained. Oracle Purchasing’s integration with Oracle Advanced Pricing allows companies to bring these agreements and their pricing structures online. Buyers can now negotiate the best possible agreement without worrying about the system’s capability to handle complex pricing structures. As a result, the cost to manage the agreement is significantly reduced.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 27

Page 28: PO Integration With QP Whitepaper

Oracle Purchasing Integration with Oracle Advanced Pricing September 2006 Author: Manjula Evans Contributing Authors: Vivian Lee, Siddesh Colvenkar, Manish Bhargava, Suman Guha Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. Worldwide Inquiries: Phone: +1.650.506.7000 Fax: +1.650.506.7200 www.oracle.com Oracle Corporation provides the software that powers the Internet. Oracle is a registered trademark of Oracle Corporation. Various product and service names referenced herein may be trademarks of Oracle Corporation. All other product and service names mentioned may be trademarks of their respective owners. Copyright © 2002 Oracle Corporation All rights reserved.