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.