【问题标题】:Magento | Apply a custom price after it has already been applied (Cart Update)Magento |应用自定义价格后应用(购物车更新)
【发布时间】:2015-01-09 21:06:29
【问题描述】:

我一直在使用以下方法为产品应用自定义价格:

  • 使用事件“checkout_cart_product_add_after”并分别为其创建函数。

  • 在那个函数中,我使用了 $item->setCustomPrice($value) 方法。

该产品以自定义价格成功添加到购物车,并且一切正确。包括适用的税款和总额。 但是,当我在购物车中更新相同的产品数量并设置另一个自定义价格时,事情就不那么顺利了。

我正在使用事件“checkout_cart_save_after”,做与我之前提到的完全相同的事情,但遇到了以下问题:

  • 如果我在 Magento 的后台“显示目录中的产品价格:含税”中选择以下税收选项,则价格不会被修改。

  • 如果我不包括目录产品价格税,价格会更新。但是,总计仍使用旧的自定义价格。

我不知道我是否为此使用了错误的事件。目前我觉得我唯一的解决方案是删除产品并以新的自定义价格将其再次添加到购物车中。我认为这不是正确的方法。

提前感谢所有花时间研究这个问题的人。 如果我不清楚我的问题,我很乐意澄清任何问题。

编辑

我将添加更多可能有帮助的细节:

FOREACH($observer->getCart()->getQuote()->getAllVisibleItems() AS $item){
  $productPrice = $item->getProduct()->getPrice();

  $discountValue = 20; //This will be a custom value that I load with a Web Service

  $value = $productPrice - ($productPrice * $discountValue / 100);

  $item->setCustomPrice($value);
  $item->setOriginalCustomPrice($value);
}

这适用于我的第一次自定义价格更新,而不是前面提到的我的购物车更新。

【问题讨论】:

    标签: php magento product


    【解决方案1】:

    您需要同时使用观察者事件 checkout_cart_product_add_after 和 checkout_cart_update_items_after

    checkout_cart_update_items_after 当您更新购物车中的数量时触发此事件所以您也需要使用此事件。

    【讨论】:

    • 使用 checkout_cart_update_items_after 成功了,非常感谢你。非常感谢。
    【解决方案2】:

    这应该可以解决您的问题:

    $item->setCustomPrice($value);
    $item->setOriginalCustomPrice($value);
    

    【讨论】:

    • 这是我在第一次自定义价格更新和第二次自定义价格更新中已经在做的事情。不幸的是,它并没有解决问题。对不起,我之前没有提到它,谢谢你的帮助。
    • 添加了一些可能有帮助的细节。
    • Sagar 给出的答案成功了。非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多