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.