Shopify技术问题:编辑订单后如何修正装箱单已删商品的价格计算
解决Shopify订单移除多件商品后总价修正问题
你可以通过对比订单的原始商品列表(order.subtotal_line_items)和当前剩余商品列表(order.line_items),找出所有被移除的商品并累加它们的总金额,再以此修正订单的小计和总价。
具体实现代码
替换你现有代码中计算修正价格的部分,改为以下逻辑:
{% unless includes_all_line_items_in_order %} {% assign removed_total = 0 %} {% for original_item in order.subtotal_line_items %} {% unless order.line_items contains original_item %} {% assign removed_total = removed_total | plus: original_item.final_price %} {% endunless %} {% endfor %} {% assign modified_subtotal = order.subtotal_price | minus: removed_total %} {% assign modified_total = order.total_price | minus: removed_total %} {% endunless %}
代码说明
- 初始化
removed_total变量,用于累加所有被移除商品的总价 - 遍历订单的原始商品列表
order.subtotal_line_items - 对每个原始商品,判断它是否不在当前剩余商品列表
order.line_items中——如果不在,说明该商品已被移除,将其final_price加到removed_total中 - 用订单原始的
subtotal_price和total_price分别减去removed_total,得到修正后的小计和总价
完整整合后的代码
将上述逻辑替换你原代码中的对应部分,完整代码如下:
{% unless includes_all_line_items_in_order %} {% assign removed_total = 0 %} {% for original_item in order.subtotal_line_items %} {% unless order.line_items contains original_item %} {% assign removed_total = removed_total | plus: original_item.final_price %} {% endunless %} {% endfor %} {% assign modified_subtotal = order.subtotal_price | minus: removed_total %} {% assign modified_total = order.total_price | minus: removed_total %} {% endunless %} <div class="price-info text-align-right"> <p> <span class="subtitle-bold to-uppercase">Sub Total: </span> <span> {% unless includes_all_line_items_in_order %} {{modified_subtotal | money}} {% else %} {{order.subtotal_price | money}} {% endunless %} </span> </p> </div> <div class="price-info text-align-right"> <p> <span class="subtitle-bold to-uppercase">Shipping: </span> <span> {{order.shipping_price | money}}</span> </p> </div> <div class="price-info text-align-right"> <p> <span class="subtitle-bold to-uppercase">Total Paid: </span> <span> {% unless includes_all_line_items_in_order %} {{modified_total | money}} {% else %} {{order.total_price | money}} {% endunless %} </span> </p> </div> </div>
这个方案会自动识别所有被移除的商品,无论移除数量多少,都能正确修正订单显示的小计和总价。
内容的提问来源于stack exchange,提问作者jmliberty
相关产品推荐
相关产品推荐

