【问题标题】:change quantity in shopping cart更改购物车中的数量
【发布时间】:2012-04-10 02:52:01
【问题描述】:

我有一个似乎没人能解决的奇怪问题。除了我之外:) 我添加了一个新的/自定义促销规则(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。有人可以帮我吗?

【问题讨论】:

    标签: php magento


    【解决方案1】:

    在与原始海报讨论后,这里是一个新想法

    当调用验证脚本时,它显然再次运行整个脚本并使用$item 对象中的$qty $item-&gt;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 目标代码中

    试试看

    【讨论】:

    • 那么你的 setQty() 函数是什么样的?也许先将函数内部的 Qty 设置为 0,然后再添加 newQty ?
    • 问题是(我认为)validator.php 在更新购物车时被调用了 2 次。 checkout/cart/updatePost/ 和这里 checkout/cart/ 一切正常(价格、税收等)除了数量。我是唯一一个有这个问题的人吗?它让我发疯。在这个“小”问题上工作 2 天。 :(
    • 我们不知道您是否是唯一一个有问题的人,因为我们看不到您发布的代码之外的任何内容,也许问题出在 validator.php 但我们没有要查看的文件,如果您可以将其发布在您的主要问题中,那么我们可以对此做出更好的判断,如果您的代码都是手写的,那么您可能是唯一遇到此问题的人,如果在另一方面,您在某处下载了此代码并且其他人正在使用它,那么他们可能遇到了同样的问题
    • 它只是在magento核心(1.4.1.1)app/code/core/Mage/SalesRule/Model/Validator.php我只是修改它来改变数量。
    • 很酷,希望它有效,如果可以,请投票给我或给我一个绿色的大复选标记:) 祝你好运
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2015-06-01
    • 2010-12-03
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多