Wednesday, July 7, 2010

Implementing Stackable product promotions site wide

Out of the box, product promotions can not be stacked, which means only 1 product promotion per item.
Production promotions can be stacked with the following configuration and updates in database. I would strongly recommend testing all different kind of custom and out of box promotions.

Step1 disable the policy 'Product: Any order item can only participate in one promotion' from px_policy

Disabling the policy lets multiple product promotions be evaluated, otherwise just the one with the highest priority goes in (or in the case of equal priorities, whichever happened to be evaluated first.)

update px_policy set status=1 where px_policy_id in (select px_policy_id from px_policy where name like 'Product: Any order item can only participate in one promotion')

update px_policy set xmlparam=replace(xmlparam,'Active','Inactive') where px_policy_id in (select px_policy_id from px_policy wherename like 'Product: Any order item can only participate in one promotion')

Step2: Modify WCSPromotionEnginConfig.xml

Modifying the XML lets promotions stack, instead of just evaluating all of them, and picking the best one.

In the WCSPromotionEngineConfig.xml, you have to disable the behavior true to false This change will allow all the price adjustment based on discounted price (or contract price displayed in the shopcart).

Step3: Update all promtions from accelerator. If you want this to affect your exisiting promotions.

you have to update all the promotions ( don't need to change anything, but need to resave the promotion in order to get promotion XML updated). After that, all the promotions for the same product can be combined.


  1. typo:
    Step2: Modify WCSPromotionEnginConfig.xml
    should be
    Step2: Modify WCSPromotionEngineConfig.xml

  2. Thank you for correcting the typo.

  3. Dear Raj,

    as you mention in step2: modify WCSPromotionEnginConfig.xml
    "you have to disable the behavior true to false "

    did you mean for this line only?

    Many Thanks,

  4. PriceAdjustmentBasedOnStandardOfferPrice>true</PriceAdjustmentBasedOnStandardOfferPrice

  5. if u don't change the parameter in WCSPromotionEnginConfig.xml

    what will be the output
    will all the promotions stack one after the other

  6. There is a scenario where PROMOTION STACKING is happening during cart merge.(From GUEST CART to REGISTERED CART)

    Does any one have an idea to stop this during CART MERGE

  7. you should pass moveOrderPromotionCode=0 so that CART Merge will not happen