LineItem PlacedPrice (cy_placed_price) 101

PlacedPrice is a property of a basket line item in the Commerce Server object model.  The name suggests (IMO) that it contains the price of the item at the time the order was placed.  However, PlacedPrice actually contains the list price of the item at the time it was placed in the basket.  The property exists to track the list price of an item, so that if it changes during the lifetime of the basket the customer can be informed (if required).

How is the Placed Price Populated?

The PlacedPrice property is populated after you run a pipeline that contains the component RequiredItemAdjustPriceCy.  Pipeline components operate on IDictionary types rather than the CS object model.  Therefore, the RequiredItemAdjustPriceCy actually populates the cy_placed_price value of each line item dictionary.  If cy_placed_price is empty the value of cy_iadjust_current_price is copied into it.  Once you save the basket with populated cy_placed_price values the value is left untouched on future runs. 

RequiredItemAdjustPriceCy is configured in the the basket.pcf pipeline that is provided with the Starter Site and the other installed PUP sites.  Therefore, it is likely you have this component configure in your site.  The image below shows the component and describes it’s PlacedPrice behaviour:

Image of a Commerce Server basket pipeline with the RequiredItemAdjustPriceCy component highlighted and an explanation of how this component populates the cy_placed_price property of a line item dictionary.

The description text on this image is taken from the documentation for RequiredItemAdjustPriceCy.  Below are other excerpts relating to PlacedPrice taken from the Commerce Server 2007 documentation.

Additional Commerce Server Documentation on PlacePrice