我有一个奇怪的问题,似乎没有人得到。让我离开了:) 我添加了一个新的/自定义促销规则(app / code / core / Mage / SalesRule / Model / Validator.php) 一切正常,但我想更新购物车数量。所以,如果我在购物车中添加10个产品,我想免费添加一个产品。所以,买10送11产品。
case 'buy_x_get_y_free':
$x = $rule->getDiscountStep(); // 10
$y = $rule->getDiscountAmount(); // 1
$free = 0;
for( $i=$x; $i<=$qty; $i+=$x ){
$free+=$y;
}
$discountAmount = $free*$itemPrice;
$baseDiscountAmount= $free*$baseItemPrice;
$newQty = $qty + $free; // Should be 11 right?
$item->setQty($newQty);
break;
脚本有效。坚果'新'数量是12而不是11.有人可以帮助我吗?
答案 0 :(得分:0)
与原始海报讨论后,这是一个新想法
当调用验证脚本时,它显然再次运行整个脚本,并使用$qty
设置的$item
对象中的$item->setQty($newQty);
,这样脚本第二次运行{{1然后再添加1以将其添加到12而不是将数量存储在2个单独的变量中,例如$qty=11
和$qty
$free
您需要将case 'buy_x_get_y_free':
$x = $rule->getDiscountStep(); // 10
$y = $rule->getDiscountAmount(); // 1
$free = 0;
for( $i=$x; $i<=$qty; $i+=$x ){
$free+=$y;
}
$discountAmount = $free*$itemPrice;
$baseDiscountAmount= $free*$baseItemPrice;
$item->setQty($qty);
$item->setFree($free);
break;
添加到$free
目标代码
试试