【问题标题】:Update Cart items price at Checkout在结帐时更新购物车商品价格
【发布时间】:2015-03-26 08:03:41
【问题描述】:

我正在尝试通过下面的代码更新购物车商品价格,“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,知道我在这里做错了什么吗?谢谢。

【问题讨论】:

    标签: php mysql magento


    【解决方案1】:

    您的折扣没有持续存在的原因是,当 Magento 调用收集报价的总计时,它会重新填充原始价格,覆盖任何自定义。

    您需要将折扣应用到sales_flat_quote,它将保留并在sales_flat_order 中使用,这反映了一旦报价转换为订单(实际上是复制过来)的购物车。

    你要挂钩的事件是:

    sales_quote_collect_totals_after
    

    类似的东西:

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

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

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

    【讨论】:

    • 感谢您的回答,但我不能通过折扣来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多