You are on page 1of 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
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
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:

Pricing
Contract
Transactions
Agreement

Price List

Pricing Engine Modifiers


Requisitions
Formula
Oracle
Advanced Pricing

Leverage Oracle Advanced Pricing


to Model Complex Pricing Scenarios
Orders

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.

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 3
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
tables, or use the existing price adjustment tables that are used by Oracle Order
Management/Oracle Order Capture:

TABLE NAME PURPOSE


Holds the price list and
OE_PRICE_ADJUSTMENTS/ASO_PRICE_ADJUSTMENTS
modifier information.
Holds the qualifier information
OE_PRICE_ADJ_ATTRIBS/ASO_PRICE_ADJ_ATTRIBS 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_or
der_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_n
ame,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
, 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:
Attribute
Column Mapped in Context Context Type
QP
Purchasing PRICING_ATTRIBUT
org_id PO_PRICING_ATTRIBUTES
Org E
p_order_header_id
supplier_id PO Vendor PO_SUPPLIER QUALIFIER
PO Vendor
supplier_site_id PO_SUPPLIER QUALIFIER
Site
PO Creation
creation_date PO_ORDER QUALIFIER
Date
PO Order
order_type PO_ORDER QUALIFIER
Type
ship_to_location_id PO Ship To PO_BUYER QUALIFIER

Oracle Purchasing Integration with Oracle Advanced Pricing - Release 11.5.10 Page 23
Attribute
Column Mapped in Context Context Type
QP
Location
PO Ship To
ship_to_org_id PO_BUYER QUALIFIER
Org

The following table shows the definition of the


PO_ADVANCED_PRICE_PVT.G_LINE PL/SQL structure:
Attribute
Column Context Context Type
Mapped in QP
order_line_id
agreement_type PO Agreement PO_BUYER QUALIFIER
Type
agreement_id PO Agreement PO_BUYER QUALIFIER
Number
agreement_line_id PO Agreement PO_PRICING_ATTRI
PRICING_ATTRIBUTE
Line Number BUTES
supplier_id PO Vendor PO_SUPPLIER QUALIFIER
supplier_site_id PO Vendor Site PO_SUPPLIER QUALIFIER
ship_to_location_id PO Ship To PO_BUYER QUALIFIER
Location
ship_to_org_id PO Ship To Org PO_BUYER QUALIFIER
supplier_item_num PO Vendor Item PO_PRICING_ATTRI
Number BUTES PRICING_ATTRIBUTE
item_revision Item Revision PO_PRICING_ATTRI
BUTES 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
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 X
New Price List
Price List Maintenance – Add Items in Bulk to an X
Existing Price List
Price List Maintenance – Mass Adjust Prices for a X
Price List
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 X
discount/surcharge price adjustment to a pricing
request based on meeting the condition of a
break type. Supports both point and range type
breaks.)
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
FEATURE NAME SUPPORTED NOT
SUPPORTED
Other Item Discount (Buy A and B, get a 10% X
discount on C)
Promotional Goods (Buy x, get y at n%) X
Terms Substitution (Buy > $100, get free X
shipping)
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, X
or a recurring volume)
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 X
to New Modifier List
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
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
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.

You might also like