The Oracle E-Business Suite uses the Advanced Pricing module to help ensure accurate pricing across the organization. Accurate pricing of a transaction is key to maintaining a good relationship with your customers and ensuring accurate financial reporting. It removes the responsibility from the user, who may not be aware of organisation pricing policy, or margin considerations.
Applying the correct price up-front improves efficiency, and reduces the need to revisit transactions to adjust the price at a later stage. Accurate pricing improves communication in outsourcing, contract manufacturing and Back-to-Back environments. It also provides tangible benefits in communicating with customers and partners.
Using Oracle’s Advanced Pricing module helps achieve accurate pricing by allowing great flexibility in choosing what price to apply. The application uses the technology to enable standard pricing models such as Volume discounting, Promotions and Price breaks.
Oracle also allows extending the standard functionality using fully supported customizations, and allows detailed reporting on the price charged at a particular time, and the reasons why that price was charged.
This document discusses some of the possible applications of Advanced Pricing in business situations. Various scenarios are outlined, along with practical examples of how Advanced Pricing has been used to help implementation.
Advanced Pricing allows the use of complex pricing models and configuration of other useful pricing options. For instance, the system will allow the creation of adjustments using modifiers to create pricing models such as · Discounts
· Surcharges · Promotions
Apply the modifiers using various methods:
· New Price · Formula · Percentage uplifts
Selectively apply the modifiers using conditions based on seeded or custom attributes:
· Customer · Order Type · Supplier · Item · Contents of customer flexfield
Apply the modifiers at various phases in a transaction cycle. In Order Management for instance, apply the modifiers at:
· Fetch List Price · Book Order · Ship Order
Options that are more complicated are available, such as:
· Range Pricing · Price Breaks · Other Item Discount
Most of the above options are available as part of standard Advanced Pricing functionality. Whatever pricing policy your company requires, Oracle can implement that policy across the enterprise.
2. Using Advanced Pricing when the price is different every time
Some business scenarios require a sales price that changes often, in which case, maintenance of price lists and modifiers requires a lot of effort. Basic pricing cannot easily manage this kind of pricing model, as the price changes too often.
Advanced Pricing provides a very flexible solution to this by allowing each call to the pricing engine to generate a custom price. This price does not have to relate to a price list, it can depend on any number of factors.
For instance, the following scenarios all require that the same product can have a different price, depending on the timing of the transaction.
· Create a discount scheme based on the amount ordered in a single calendar month. Customers achieve increasing levels of discount as they order more of a particular product class. · Calculate a sales price based on 10% uplift over the average cost of an item. · Calculate sales price based on 10% uplift over the average purchase price for that item.
Since Oracle can generate a custom price, it can perform this kind of once-off pricing, and record what adjustments have been applied on each transaction line.
Generating a custom price allows total flexibility in which price to apply, and reduces the time spent maintaining price lists and modifiers.
3. Using Advanced Pricing in outsourced manufacturing
Outsourced manufacturing has become the norm as businesses leave the manufacturing and distribution to specialists, and concentrate on core business. As part of good customer relationship management, it is important to know who your customers are and what they are ordering. This allows the seller to better understand the identity and buying patterns of its customers.
In order to achieve this, we could interface products sold by the manufacturing partner onto Oracle as sales orders.
An outsourced manufacturing model consists of the seller, the manufacturing partner, and the end customer. The manufacturing partner ships the goods on behalf of the seller, and transmits shipping details electronically. In this case, the sales order could have the manufacturing partner as the ship from party, and the end customer as the ship to party.
Consider a scenario where the seller wishes to give additional discounts to the end customers depending on the volume of goods ordered, in addition to the true sales price. Advanced Pricing allows the seller to create internal adjustments, at time of sales order creation, without informing the manufacturing partner as part of the sales price.
These line-by-line adjustments are stored in standard pricing adjustment tables at the time of pricing. Later the adjustments can be reviewed to allow additional discounts to the end customers based on a discount policy.
4. Using Advanced Pricing in Back to Back
The term “Back to Back” represents a situation where products sold to customers, are purchased directly from suppliers. The goods may be bundled with services, or require configuration before being sold onto the end customer.
To represent this transaction in Oracle, a sales order and a purchase order are required. We need to determine both a purchase price and sales price for each order.
The sales and buy prices are related, but Order Management and Purchasing are different modules, and normally need separate price lists. This is, in effect, duplicate information and increases maintenance or interface effort.
Integrating Order Management with Advanced Pricing, you could generate a sales order price from a supplier contract, plus an uplift percentage. In this way, the business need only maintain a single price list to perform purchasing and selling.
Using Advanced Pricing the system can generate a price based on related information in another part of the business. This ability allows great flexibility in choosing which price to apply to a transaction.
5. Using Advanced Pricing in Procurement
Integrating Procurement with Advanced Pricing allows a business to assign variable prices to items on purchase orders or requisitions; so managing changes in supplier pricing policies. This feature also allows a business to negotiate complex pricing deals, and ensure the Oracle system can apply the best possible purchase price.
Integrating Procurement with Advanced Pricing and using contract purchase agreements can be used to satisfy the following scenarios:
If a supplier offers a discount during a slow sales month, the system should apply the discounted price, without affecting the standard price.
The details entered on each purchase order dictate the supplier price for an item. The grade or colour could affect the purchase price of cardboard, for instance. This would allow operation with a single item representing cardboard, reducing item and price list maintenance considerably.
This structure allows the dynamic adjustment of agreement prices based on reference fields such as:
· Purchase Order Need by Date · Purchase Order Deliver To location · Supplier Name · Supplier Site · Buyer Name · Contents of Supplier Flexfield · Contents of Purchase order flexfield
Modifying the pricing date, and purchase order or requisition price is possible by using fully supported PL/SQL hooks to extend standard functionality. A further discussion is available in section two, “Using Advanced Pricing when the price is different every time“.
6. Using Advanced Pricing when list price frequently changes
Accurate transactions require up-to-date pricing data; this presents problems when the price changes often. To maintain the correct price list, the business needs to perform frequent price list maintenance, or import using the standard price list interface.
Accurate sales order pricing depends on up-to-date price lists; delays in loading price lists using an interface can result in the further delays to subsequent sales orders.
A selling company may want to import a price from an external pricing system; a contract manufacturer may need to import their price lists from a sales partner; companies using outsourced partners may require the import of sales price lists.
Using the High-Volume price list loader program is the fastest method to load large volume price lists. This fully supported interface loads pricing data files into Oracle, and reports on any exceptions.
Those customers who make extensive use of modifiers can import these at the same time via the High-Volume price list loader program.
7. Using Advanced Pricing in configuration of Bills of Material
Advanced Pricing allows the system to price items based on items chosen at run-time using the configurator. This avoids the need to have separate items and price list entries for similar items with different configurations.
Oracle allows entry of the top-level item onto a price list using standard Bills of Material and Order Management. For products sold with different optional items, where the user chooses one of a set number of options, how does the system adjust the price according to the option chosen?
Advanced Pricing allows a company to be more complex in its pricing using assemble to order items. A pc, for instance, normally contains mandatory items and optional items. When a customer orders a pc, the user selects the optional items using the configurator; these optional items can be included in the sales price on the order line.
A pc supplier could add a surcharge if extra memory was required, or allow a discount if no options chosen had to be purchased.
Once again, Oracle applies an adjustment to the sales order line; the user can then review and understand a particular price.
8. Using Advanced Pricing in Intercompany Transactions
Oracle uses an intercompany transaction to represent the scenario where a business unit in one country sells product sourced from a business unit in another country.
The end customer, the selling organisation and the shipping organisation are the three parties in the relationship. Oracle creates a sales order against the selling organisation for the end customer. Advanced Pricing can adjust the selling price on the external sales order, using any of the methods discussed elsewhere in this document.
The shipping organization charges the products shipped at a “transfer price” to the selling organization, as business units charge other business units at a preferential price.
In terms of accounting, the shipping organisation needs to invoice the selling organisation at the transfer price, and the selling organisation needs to create an invoice payable to the shipping organisation, also at the same transfer price. There is no sales order, as such, between the shipping and selling organisations.
Transfer pricing therefore, is a key part of implementing this scenario in Oracle Financials. Standard Oracle configuration allows the naming of a particular price list as the transfer price list, associated with the selling organisations invoice to address.
Oracle allows adjusting the transfer price charged between the selling and shipping operating units using the reference fields such as
· Selling Organisation · Shipping Organisation
In this way, each combination of selling and shipping organisation can have a different transfer price.
It is also possible to derive the transfer price between the shipping and selling operating units using a customised set of rules. This is similar to the scenario discussed in section two, “Using Advanced pricing when the price is different every time “.
9. Using Advanced Pricing in custom applications
Sometimes it is necessary to design a completely custom application, when the standard functionality cannot be configured to fit the business process. Re-using the look-and-feel of the standard application ensures a consistent experience for the user.
For instance, the user could use a custom screen to create a quote before creating a sales order, and offer an initial discount to the customer. Further volume pricing could then apply if a sales order results from a quote.
Alternatively, comparing and contrasting supply options in a custom Procurement form would allow the entry clerk to choose the most suitable supplier.
Advanced Pricing allows the creation of a new pricing area, and associates it with the custom application. The new pricing area can re-use some of the standard pricing configuration.
This means pricing will operate in the same way across these modules, so the user sees consistent application behaviour. This also allows operation of separate pricing policies at different stages in the transaction life cycle.
10. Using Advanced Pricing with other Oracle modules
As part of applications version 11.5.10, Oracle provides a range of pricing options in areas including
· Oracle Order Capture · Oracle Order Management · Oracle Procurement · Oracle Contracts · Oracle Service Contracts · Demand Planning · Logistics
Oracle defines a set of pricing rules for each of these modules. The separation of the pricing rules in these modules allows operation of pricing policies in separate parts of the organisation.
For example, Oracle Order Capture is designed to allow quick entry of customer quotes. It may be necessary to offer a certain discount at quote stage; a further volume discount scheme could be applied when an actual sales order is created from the quote.
11. Oracles extension methodology – “Extend, don’t customize”
One of the reassuring features of working with Advanced Pricing, is that it follows Oracle’s preferred ‘Don’t customize, extend’ policy. As the Oracle product set has developed, the need for customizations has lessened. Companies who have had Oracle installed for a long time, and have many customizations do not always appreciate this.
In many areas, standard functionality has replaced the need for customizations. Oracle suggests the use of custom extensions where the latest standard functionality is not enough to achieve the business requirement. This allows writing custom code, while staying within a fully supported framework.
Before Advanced Pricing, adjusting the sales or purchase prices meant one of three options:
· Maintain up to the minute sales and purchase price lists · Assign the responsibility of the choosing the correct price to the order entry clerk · Design a heavy-duty customization to adjust prices, after the transaction had been created.
The first option has associated maintenance issues, the second will only be reliable in the simplest of pricing models and both can cause other problems; once a price has been quoted to a customer, the price is effectively set. This can make it difficult for an organization to implement pricing policy, and result in commitments to low margin business.
The effort in changing transaction prices once already applied is best avoided if possible. These types of customizations can be complex to design, create and maintain.
Using Advanced Pricing allows you to operate complex pricing models and record the adjustments applied on a transaction-by-transaction basis, all the while staying fully supported by Oracle.
There is also a business case for revisiting old pricing customizations already in operation, as the standard package may now provide the required functionality. If not, extension of Advanced Pricing can satisfy the business requirement.
Replacement of an interface with standard functionality can provide operational and support cost savings into the future. If an existing customisation requires complex logic, in most cases it will be beneficial to move it into the extension framework, to take advantage of the Oracle support.
12. Advanced Pricing and Release 12
Oracle has not changed the functionality to a large extent in release 12. A couple of extra features are part of the standard package. In terms of extending the functionality, similar configuration and techniques apply to the new release. Any design or development effort spent in previous versions would need to be revisited, but not re-written in the event of an upgrade.
The following is a selection of the extra standard features available in release 12
Multicurrency conversion list:- Maintain a single price list for multiple currencies
Price Books:- Generate and communicate price lists to internal or external customers using pre-defined formats, or via an email server or XML gateway.
As described above Advanced Pricing can be used to good effect in many business scenarios. It allows the organization to formalise its pricing policy within Oracle, apply a price to a transaction once only based on a set of rules, and review the reasons why that price was applied.
Before Advanced Pricing, generating the sales or purchase prices meant one of three options:
· Reliance on up to the minute sales and purchase price lists · Assigning the responsibility of the choosing the correct price to the order entry clerk · Design a heavy-duty customization to adjust prices, after the transaction had been created.
The first option has associated maintenance issues, the second option will only be reliable in the simplest of pricing models and both can cause other problems; once a price has been quoted to a customer, the price is effectively set. This can make it difficult for an organization to implement pricing policy, and result in commitments to low margin business.
Advanced Pricing provides an alternative to the above methods as it allows the generation of a price based on data in another part of the business, data interfaced from outside the business, or based on a set of rules configured to any specification.
In the author’s experience, Advanced Pricing is being used to calculate complex pricing models, and reduce the dependency on offline calculation tools. Companies can modify and stretch the standard functionality, and still achieve confidence that the price applied to a transaction is the correct one. It has allowed companies to outsource manufacturing to competitors, and operate internal discounting schemes to protect competitive pricing advantage.
It has been possible, with a little effort, to demonstrate the Advanced Pricing functionality to clients to their satisfaction. Once the functional consultant or super user achieves a level of comfort with the configuration, it is possible to make subtle changes to achieve something slightly different in a short space of time. The author also found the extendibility, when the customer asks for something a little bit different, to be very powerful.
Nevertheless, there are considerations to be taken into account:
As shown, it is possible to create very complex pricing models with Advanced Pricing functionality. However, with complex models, it can be difficult to determine the accuracy of what has actually happened.
When the adjustment amount has been applied to the transaction price, can we be sure the correct amount has been applied? Where does the adjustment applied fit in the greater scheme of things?
In order to lessen this risk a detailed design phase should be carried out, and the requirements agreed with the business. A method of validation of the adjustments created should be decided early in the design process.
Close cooperation will be required between functional, technical and business users during the development and unit testing cycles. Provided these guidelines are followed it is possible to leverage the power of Advanced Pricing to add value to the pricing model.
The complexity of Advanced Pricing means that if you encounter a problem during implementation, it can be difficult to determine exactly what is happening in a pricing engine call. There are trouble-shooting tools to help if a problem occurs but they are not very intuitive. In the author’s experience the amount of time spent troubleshooting decreases as more familiarity with Advanced Pricing is gained.
Advanced Pricing is now extendible so that it is possible to write large amounts of code to calculate the correct price for every transaction. There is a risk of introducing bad performance into your pricing calls if this is taken to extremes. Considering the data the pricing engine has to consider for each pricing call, it is not surprising the standard pricing response is not instant. If you greatly increase this response time by adding a lot of custom code, the user will experience considerable wait times when entering transactional data.
The same theory applies when adding extended pricing calls to concurrent requests or interfaces. If the volumes are very large, it is necessary to fine-tune the custom code or be creative in scheduling the batch jobs. Moving the pricing call to a later point in the order cycle is also an option, as I’ve referred to earlier in section one, “Using Advanced pricing for smarter discounting”.
In summary, it is possible to achieve a very positive result using Advanced Pricing to:
· Apply the correct price once only, transactions need not be re-priced · Enhance existing pricing policy relatively quickly and easily · Formalize pricing inside Oracle Financials to replace external pricing systems · Create complex pricing models like:
o Discounts o Surcharges o Promotions o Price Breaks
Using techniques/calculations such as
o New Price o Percentage uplifts o Formulae
· Create adjustments based on reference data such as
o Customer information o Order information o Item information o Customized information such as contents of flexfields
And apply these adjustments at various times including:
o Pricing a transaction o Importing sales order o Booking sales order o Shipping sales order o Creating intercompany invoices
· Enhance existing interfaces with non-Oracle or external systems · Improve external communication with customers, suppliers and sales or manufacturing partners
Advanced Pricing is based on a data model similar to other standard modules, with its own terminology applying. The following is a list of useful terms in reading this document:
Oracle provides a number of standard fields used to hold information about an object. For instance, a customer has fields to hold address data and tax registration information. In order to store extra information than is available in the standard reference fields, however, it is common to use Flexfields. A customer flexfield might be used to indicate if the customer prefers invoices in paper or electronic format.
Price lists are used to store the list prices of products sold by the business. The list price is added to a transaction line.
An adjustment is variance applied to the list price on a transaction line, to give the selling price
A modifier is used to describe an adjustment to the price. A modifier could detail a percentage discount to be applied to the list price. The modifier causes an adjustment to the list price to achieve the correct selling price
A qualifier is used to restrict a modifier only to apply to a selected group of transactions.
A Formula is used to represent mathematical calculations on variables or constants to derive a result.
The pricing engine searches through all price lists and modifiers, determining what price is relevant, and any modifiers that should be applied to the transaction.
There are five basic stages in a pricing engine call
Select the relevant list prices and modifier lists