изменить количество в корзине - PullRequest
1 голос
/ 26 марта 2012

У меня странная проблема, которую никто не может решить.За исключением меня, конечно. :) Я добавил новое / пользовательское правило продвижения (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 голосов
/ 26 марта 2012

после обсуждения этого с оригинальным постером вот новая идея

когда вызывается сценарий проверки, он, по-видимому, снова запускает весь сценарий и использует $qty из объекта $item, установленного в $item->setQty($newQty);, так что при втором запуске сценария $qty=11 и затем снова добавляется 1 чтобы привести его к 12, вместо этого сохраните величины в 2 отдельных переменных, таких как $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 в $item код объекта

попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...