Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在magento中取消发货并重新计算总计_Php_Magento_Shipping - Fatal编程技术网

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