改变购物车中的数量

时间:2012-03-26 15:21:33

标签: php magento

我有一个奇怪的问题,似乎没有人得到。让我离开了:) 我添加了一个新的/自定义促销规则(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.有人可以帮助我吗?

1 个答案:

答案 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目标代码

试试