Magento |应用后自定义价格(购物车更新)

时间:2015-01-09 21:06:30

标签: php magento product

我使用以下方法将定制价格应用于产品:

  • 使用了事件" checkout_cart_product_add_after"并分别为它创建了一个函数。

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

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

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

  • 如果我在Magento的后台选择以下税务选项"在目录中显示产品价格:包含税和#34;,价格未经任何修改。

  • 如果我不在目录产品价格中加税,价格会更新。但是,总数仍然使用旧的自定义价格。

我不知道我是否使用了错误的事件。目前我觉得我唯一的解决方案是删除产品并以新的定制价格再次添加到购物车。我相信,这不是正确的方法。

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

修改

我会添加一些可能有用的细节:

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);
}

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

2 个答案:

答案 0 :(得分:0)

这可以解决您的问题:

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

答案 1 :(得分:0)

你需要使用观察者事件checkout_cart_product_add_after和checkout_cart_update_items_after

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