在Checkout更新购物车商品价格

时间:2015-03-26 08:03:41

标签: php mysql magento

我正在尝试通过以下代码更新购物车商品价格,' sales_flat_order_item'表显示我的代码执行时的价格变化但是一旦我进入下一步或重新加载页面,则所有商品价格都会变回其先前的价值。 这是我通过checkout_controller_onepage_save_shipping_method event / observer

使用的代码
foreach($quote->getAllVisibleItems() as $u_item){
          $u_item->setPrice(100);
          $u_item->setCustomPrice(100);
          $u_item->save();
}

我还尝试使用直接sql更新sales_flat_order_item行值,但是一旦我进入下一步,它也会恢复。我正在使用Magento EE,任何想法我在这里做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

为什么你的折扣没有留下来的原因是当Magento在报价上收集总计时,它会重新填充原始价格,覆盖任何自定义。

您需要将折扣应用到保留的sales_flat_quote,并在sales_flat_order中使用,一旦报价转换为订单(实际复制),就会反映购物车。< / p>

  

您想要加入的事件是:

sales_quote_collect_totals_after

有些事情:

   $quote->setSubtotalWithDiscount(0);
   $quote->setBaseSubtotalWithDiscount(0);

话虽如此,使用购物车价格规则是这里使用内置管理面板UI功能的惯例。

如果您正在寻找额外的折扣功能,您可以随时以编程方式创建一次性优惠券,将其应用到购物车中,然后将其删除以进行细粒度控制。