This content has been marked as final. Show 5 replies
A calculator which determines the list price of an item and sets the itemPriceInfo to be that amount. The pricing scheme for that item is list pricing.
Edited by: RMishra on Nov 2, 2012 2:23 PM
ItemPriceListCalculator is a pre-calculator for list pricing and typically used via /atg/commerce/pricing/ItemPricingEngine as:
ItemListPriceCalculator is calculator to determine the list price of an item which internally calls the getPrice() on the PriceListManager to retrieve the list price of the CommerceItem. It then multiplies the price by the quantity returned by the getQuantity method of CommerceItem to get the total price.
Info about itemlistpricecalculator and itemsalepricecalculator: http://docs.oracle.com/cd/E24152_01/Platform.10-1/ATGCommProgGuide/html/s1307implementingsalepricesusingprice01.html
ItemListPriceCalculator :Price List ItemPriceCalculator
The ItemPriceCalculator class can either price a single commerce item or price a list of commerce items. It first selects the priceList to use based on the profilePriceListPropertyName property. The ItemPriceCalculator then delegates the pricing to different ItemSchemePriceCalculators based on the item’s pricing scheme by the pricingSchemePropertyName property.
The ItemPriceListCalculator component is located in the ACC at /atg/commerce/pricing/calculators/ItemPriceListCalculator. It has the following properties:
loggingIdentifier: the ID that this class uses to identify itself in logs.
pricingSchemePropertyName: the property name in the repository for the pricing scheme.
profilePriceListPropertyName: the property name in the repository for the user’s price list.
useDefaultPriceList: If true and ProfilePriceListPropertyName is null, then the value of the automaticallyUseDefaultPriceList property of the PriceListManager determines if the default price list is used. If false, then the default price list is never used.
noPriceIsError: If true, and the price list is null or there is no price in the price list, then an error is thrown. If false, and the price list is null, then nothing happens.
priceListManager: points to the location of the PriceListManager.
pricingSchemeNames: the Map whose key is the allowed scheme names and whose value is the corresponding calculators.
Let me try to explain this differently. As you would know that ATG supports 3 pricing models: SKU based, price-list based and hybrid (combination of SKU & price-list based). Now in order to use price-list, the ItemPricingEngine has to be configured to use the appropriate calculator like: preCalculators=calculators/ItemPriceListCalculator
ItemPriceListCalculator contains all functionality common to all pricing schemes for list price. ItemPriceListCalculator has a pricingSchemeNames property which is a map holding pricing scheme names as key and the corresponding calculator as value like following:
tieredPrice => ItemTierPriceCalculator
In the hybrid case, the pricing system is configured to use price lists but in case no price is found in the lists you have specified, it falls back to the catalog price. To use combination of price-lists and SKU based pricing we can configure the ItemPriceListCalculator as:
Here the ItemListPriceCalculator can have the configuration as:
When a CommerceItem is passed to the ItemListPriceCalculator for determining the price, ItemListPriceCalculator will look at the item's catalogRef property (SKU) and retrieve the value of that object's listPrice property.
So, in terms of your question: ItemListPriceCalculator is used for listPrice SKU property while ItemPriceListCalculator is used for price lists.