[rules-users] rules for promotional offers

Sandeep Bandela gibsosmat at gmail.com
Thu Sep 8 17:04:38 EDT 2011


Hi,
I am new to rules engine, after going through the examples shipped
(shopping.drl, petstore.drl)
I am trying to implement promotional discounting using drools 5.2.0 final,
stateful session. assume cart has all the items that customer wants to buy,
I am trying to bundle them together with the existing offers

rule "Buy X units of Product A and Get Y units of Product B Free"
    dialect "java"
when
    $itemsA : ArrayList( size >= 2) from collect( CartItem( getProductId()
== "A", !isProcessed()))
    $itemsB : ArrayList( size >= 1) from collect( CartItem( getProductId()
== "B", !isProcessed()))
then
    // current scenario buy 2*A and get 1*B
    int x = 2;
    int y = 1;
    for(int i=0 ; i < x ; i++){
        CartItem $ci = (CartItem) $itemsA.get(i);
        // modify($ci){setProcessed(true) ... } dosent work
        $ci.setProcessed(true);
        $ci.setItemDiscount(0.0);
        $ci.setBundleId(bundler.getId());
    }

    for(int i=0 ; i < y  ; i++){
        CartItem $ci = (CartItem) $itemsB.get(i);
        $ci.setProcessed(true);
        $ci.setItemDiscount($ci.getPrice());
        $ci.setBundleId(bundler.getId());
    }
    // global counter to identify bundled items
    bundler.increment();
end

the above rule calculates only for 1 set of offer i.e first 2*A & 1*B are
considered, rest in the cart are not bundled.
if customer buys 4*A + 2*B it dosent consider it. am I missing anything? is
this the right way to do it?
any feedback is appreciated.




-- 
Regards,
Sandeep Bandela.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110909/32e5db9e/attachment.html 


More information about the rules-users mailing list