This chapter covers the following topics:
Pricing events and phases enable you to configure Oracle Advanced Pricing so that transaction pricing occurs when it is required by the application process flow. Pricing events and phases also enable you to define which pricing data is considered for application to a request at the pricing point in your transaction process flow. You can separate the pricing of your transaction, rather than pricing a whole transaction at once. Events and phases allow for the implementation of the following types of pricing business rules:
Freight and special charges are calculated at time of shipping.
Cross order volume discounts apply at end-of-day (once total order volumes have been derived) in a high volume batch environment.
Coupons are awarded only after all items in the shopping cart are priced and the user proceeds to final checkout.
A pricing event is a point in the transaction life cycle when you want to price the transaction (or certain transaction lines), or when you want to apply price adjustments, benefits, or charges to the whole transaction or specific transaction lines.
Note: The calling application must pass the events. The pricing engine searches the set of data belonging to the phases for the events that are passed. Multiple events can be concatenated in a single pricing engine call.
The following table outlines the action for each of the seeded events in Oracle Advanced Pricing:
Event Code | Meaning | Function Which Calls the Pricing Engine |
---|---|---|
BATCH | Batch Processing | Order is imported. |
BOOK | Book Order | Order is booked. |
FTE_APPLY_MOD | FTE: Apply Modifiers to Price | This event is used only by the Oracle Transportation Execution application to price transactions. |
FTE_PRICE_LINE | FTE: Price a Transportation Line | This event is used only by the Oracle Transportation Execution application to price transactions. |
ICBATCH | INV: Batch Processing for Intercompany Transfer Pricing | This event is used only by the Oracle Inventory application to price transactions. |
LINE | Enter Order Line | User exits the order line. |
ORDER | Save Order Line | User saves order. |
PO_BATCH | PO Batch Processing | Note: If you include the freight charge phases or some custom phases in the PO: BATCH event, the freight charges will not impact the unit selling price on the purchase order, but will not compute the freight charges on the purchase order. |
PRICE | Fetch List Price | User enters item quantity and unit of measure. |
PRICE_LOAD | Price a Logistics Load | This event is used to price a logistics load. |
REPRICE_LINE | Reprice line | Order is shipped, prior to invoice. |
RETROBILL | Retrobill | Event occurs during retrobilling. |
SHIP | Enter Shipments | Order is ship confirmed. |
Note: The Price a Logistics Load event is only used by the Oracle Transportation Execution application for pricing their transactions.
A pricing phase controls which list types (prices and modifiers) are considered by the search engine and the sequence in which they are applied to a pricing request. The attributes of a pricing phase enable you to control which modifiers are placed in a phase. When you assign a modifier to a pricing phase, the Modifier Setup window matches the attributes of the modifier with the attributes of the available pricing phases to validate which pricing phase or phases a modifier can be placed in. A modifier can be assigned only to one phase.
The following table summarizes selected seeded pricing phases in Oracle Advanced Pricing (you can review all the event phases in the Event Phases window):
Phase Sequence | Name | Level | List Type | Incompatibility Resolve Code | Freeze Override |
---|---|---|---|---|---|
0 | List Line Base Price | Line | Standard Price List | Precedence | NA1 |
10 | List Line Adjustment | Line | NA | Best Price | NA |
30 | All Lines Adjustment | NA | NA | Best Price | NA |
40 | Header Levels Adjustments | Order | NA | Precedence | NA |
50 | Line Charges | Line | Freight and Special charge List | Precedence | Yes |
60 | Line Charges - Manual | Line | Freight and Special charge List | Precedence | Yes |
70 | Charges: Header/All lines | NA | Freight and Special charge List | Precedence | Yes |
80 | Modifiers for BOOK Event | NA | NA | Precedence | NA |
Note: 1NA = Not applicable
Key Implementation Decision: What phases and events meet my business requirements?
Pricing events and phases help you exercise control over what pricing actions are taken and when they occur. Pricing events separate the order cycle into points that are associated with pricing actions, for example, the PRICE event (Fetch List Price) and LINE event (Enter Order Line). When setting up a modifier line such as a discount or promotions modifier line, you can select a pricing phase to control when the modifier adjustment is applied. When the pricing event occurs, the modifier adjustment is applied.
You can map a pricing event to several pricing phases, and each pricing phase can have one or more pricing events. This helps to define which pricing phases are to be processed and in which pricing event.
Note: Do not add any modifier phase to the pricing event. Do not assign Group of Lines and Other Item Discount modifier phase to a line level event; the pricing engine may not have all the necessary order lines. If you add any phase to line or order events, those phases must be added to the batch event.
When assigning a pricing phase to a modifier line, remember to:
Place line level discounts in List Line Adjustment phase.
Place modifiers that span multiple lines in the All Lines phase.
Place modifiers that apply to shipping in Ship Event phase.
Warning: You cannot set up a Promotional Goods (PRG) type of modifier in the User Freeze Override phase.
Event Phases window
The following list describes the fields in the Event Phases window:
Sequence: This field is required. Its numerical value is equivalent to the phase number. The pricing engine uses this number to determine the starting order of the phases if there are multiple phases are in an event.
Name: The phase Name field also appears in Modifier Setup windows when you assign a modifier to a phase. The field name should describe the timing and contents of a phase.
Level: This field is optional. To restrict the modifiers in a particular phase to modifiers of a particular modifier level, enter the level in this field.
List Type: This field is optional. To restrict the modifiers in a phase to modifiers on a modifier list, enter the list type in this field.
OID Exists: This check box (view-only) is selected if any modifiers are of the type Other Item Discount for a particular phase.
Additional Buy Products Exist: This check box (view-only) is selected if you defined modifiers for Promotional Goods or Other Item Discounts and you will define Additional Buy Products.
Line Group Exists: This check box (view-only) is selected if modifiers are in the level Group of Lines for a particular phase.
Seeded and User regions
These two regions differentiate the seeded values from the user-entered values. In the User section, you can update the Freeze Override check box and Incompatibility Resolve Code.
Freeze Override check box: Provides additional control over freezing order lines on your transaction. When a calculate price call is sent from the calling application, the pricing engine evaluates the Freeze Override check box that is set up for the associated phase. If the Freeze Override check box is selected, then the pricing engine applies eligible modifiers in this phase to the request line. If it is not selected, the modifiers in this phase are not considered for application to the request line. This check box can also be updated on seeded pricing phases.
Important: Optionally, to prevent order level modifiers from being applied unintentionally, place Order level adjustments in a phase in which the Freeze Override check box is deselected. Otherwise, if you have an order line with Calculate Price Flag as Freeze, an order level discount will still be applied on Reprice if the Freeze Override check box for the phase is selected.
Incompatibility Resolve Code: Enables a pricing engine to evaluate which modifier to select if multiple modifiers in the same exclusivity or incompatibility group are eligible to be applied to the same pricing request line:
Best price: The modifier that gives the lowest price (most advantageous) to a customer on the given pricing request line is applied. For Freight and Special charges, the modifier that gives the highest price to a customer on the given pricing request line is applied, not the lowest.
Precedence: The modifier with the lowest precedence (the lower the number the higher the priority) on the given pricing request line is applied
The incompatibility resolve code value can be updated for seeded pricing phases.
Event Phases region
Pricing Event: Select one or more pricing events to be linked to the selected phase. Select from the available values (these values are defined as pricing event in the Lookups window).
Note: In Event Phases window, if you select the PRICE event (Fetch List Price) for a phase, and the phase is already attached to a promotional modifier type such as Coupon Issue, Item Upgrade, Other Item Discount, Promotional Goods, or Term Substitution, then the following error message appears:
The PRICE event cannot be attached to this phase because one or more of the following modifiers types has already been defined for this phase: Promotional Good, Other Item Discount, Item Upgrade, Term Substitution, or Coupon.
Seeded Search Flag: Determines whether the pricing engine should search for price or modifier lists in addition to those that the calling application has requested. The search flag should be set to No when the calling application has already identified which price and modifier lists it will use to price the request. The pricing engine then uses the lists that are passed and does not attempt to find any other lists. For example, a number of discounts have been negotiated and recorded on a customer's service contract. When applying discounts to the service order, the application already knows which discount list should be used to price the order.
The search flag should be set to No only in the circumstances just described; in all other cases, the search flag should be set to Yes. If you set the flag to No and the calling application does not pass all the required pricing information, the prices and modifiers may not be applied to the transaction.
Price List Search Based on Search Flag (Extended Search)
The pricing engine first tries to find the price from a price list after doing all the qualifications that are necessary to qualify for this passed price list. If the price is not found, the pricing engine attempts to get the price from a secondary price list (if present).
If the price is not found on the secondary list, the pricing engine searches for the price across all available price lists and tries to give the price from a price list with highest precedence. For the pricing engine to do this extended search across all price lists in the system, the Search Flag on the pricing phase under ALL the Pricing Events (which include the pricing phase sequence = 0) needs to be consistently set to Yes. You can do this by setting the User Search Flag to Yes.
Example
Step 1: The pricing engine searches for the price from the Corporate price list. If the price is not found, the pricing engine tries to find a price from all the secondary price lists from the Corporate price list. If the price is still not found, the pricing engine completes Step 2.
Step 2: If your business requires that the pricing engine searches across all the price lists in the system, set the User Search Flag to Yes on all the pricing phases in all pricing events.