This section explains how to create a new implementation of a pricing calculator interface and how to use the new calculator.
Creating a New Pricing Calculator
Use the following interfaces to create a new pricing calculator that fits into the existing Oracle ATG Web Commerce pricing architecture:
atg.commerce.pricing.ItemPricingCalculator
atg.commerce.pricing.OrderPricingCalculator
atg.commerce.pricing.ShippingPricingCalculator
atg.commerce.pricing.TaxPricingCalculator
Implement the interface that corresponds to the type of price you want to calculate. For example, if you want to make calculations on order prices, implement OrderPricingCalculator
.
In the following example, assume you have identified a need for a calculator that sets an item’s price to half its current price plus one. The existing Oracle ATG Web Commerce tools include an ItemDiscountCalculator
that discounts items. It can give a percent off a price or an amount off, or it can set an item’s price to a fixed amount. None of these three options, however, easily gives a “half off plus one” discount. To achieve that result, you would have to use two different discounts: one to give 50 percent off, and another to add 1 to that total. A better alternative would be to create a new calculator that discounts an item’s price to half its current price plus one.
To create the new calculator, you create a class called HalfPlusOneItemDiscountCalculator
that implements the ItemPricingCalculator
interface. The HalfPlusOneDiscountCalculator
is an example of a discount calculator that leverages existing Oracle ATG Web Commerce functionality to perform its own unique task.
In addition to modifying an item’s price, the Commerce item discount calculators also do the following:
Maintain an audit trail of the changes made to the price using the
PricingAdjustments
property in theAmountInfo
price object.Mark items that have been discounted and therefore may not be eligible for additional discounts.
Maintain
DetailedItemPriceInfo
objects.
The HalfPlusOneDiscountCalculator
leverages all the above functionality from the ItemDiscountCalculator
. The only method it overrides is the findAdjustedPrice
method, which modifies an input DetailedItemPriceInfo
to be the right amount. In this case, the class modifies the price of the detail to half its current price plus one.
Using a New Pricing Calculator
After you have created a new calculator, you must associate it with its corresponding pricing engine. You can do this in one of the following ways:
Add the calculator to an engine’s list of pre- or post-calculators. The configuration invokes the calculator on the price of every item that passes through the engine.
Add the calculator to the
PricingEngineService CalculatorType
map, along with the type of calculation it provides.