Using Current Product Prices vs Original Product Prices
The OriginalPrice property of a product is set when the product is created. If the product price is changed through direct pricing, the original price is also changed.
While the OriginalPrice property contains the original/backup price of a product, the cy_list_price field contains the current price for the product. At run time, you mostly need to be concerned with cy_list_price.
The code in the Catalog API ensures that cy_list_price is either the product's direct price or the pricing-category's indirect price. You do not need to pay attention to the OriginalPrice value, because it is an internal implementation detail and typically you will not need to directly read or write it.
- You create a product P1 with price $5. It sets both cy_list_price and OriginalPrice to $5.
- If you now assign this product indirect pricing (that is, assign it to a pricing category C1 with price = $2), then cy_list_price for P1 is changed to $2. The original price for P1 is not changed.
- Finally, if you change P1 to be directly priced (that is, remove its pricing-category assignment), then cy_list_price is set to the OriginalPrice (which is the new direct price), in this case, $5.
The OriginalPrice property is used to store a backup of the "original" product price so that you can revert the price when the product is changed from indirect to direct pricing.