Php 在magento中取消发货并重新计算总计
我的问题是: 当我将电子课程(无配送)和常规产品(有配送)添加到我的购物车中,并在结账时选择配送时,成本将在报价中设置。如果我在设置后离开签出,然后删除有发货的产品,发货成本仍然在报价中设置,我无法取消设置…即使删除报价中的所有项目Php 在magento中取消发货并重新计算总计,php,magento,shipping,Php,Magento,Shipping,我的问题是: 当我将电子课程(无配送)和常规产品(有配送)添加到我的购物车中,并在结账时选择配送时,成本将在报价中设置。如果我在设置后离开签出,然后删除有发货的产品,发货成本仍然在报价中设置,我无法取消设置…即使删除报价中的所有项目 我正在试图弄清楚如何取消发货方法,并在产品从购物车中移除后重新计算总计。如果您是以编程方式执行此操作,则可以尝试以下操作: $quote->collectTotals() $quote->getShippingAddress()->collectT
我正在试图弄清楚如何取消发货方法,并在产品从购物车中移除后重新计算总计。如果您是以编程方式执行此操作,则可以尝试以下操作:
$quote->collectTotals()
$quote->getShippingAddress()->collectTotals()
Quote和Shipping Address模型中缓存了一些内容,因此,如果您更改qoute项目或装运,则必须执行此操作以使Magento重新计算总计:
$quote->setTotalsCollectedFlag(false);
$quote->getShippingAddress()->unsetData('cached_items_all');
$quote->getShippingAddress()->unsetData('cached_items_nominal');
$quote->getShippingAddress()->unsetData('cached_items_nonnominal');
$quote->collectTotals();
这对我有用。Magento通常会在任何报价更改后将客户重定向到购物车或其他页面,因此通常每页加载时必须计算一次总计。我还希望从购物车中清除装运和搬运(因为装运是在购物车之后的一步签出模块中设置的)。我应该将您发布的代码放在哪里?如果您在下订单后以编程方式清除报价,那么您还应该将
is\u active
标志设置为false