отменить доставку и пересчитать итоги в magento - PullRequest
2 голосов
/ 15 апреля 2011

Вот моя проблема:

Когда я добавляю E-курс (нет доставки) и обычный продукт (есть доставка) в мою корзину и выбираю доставку во время оформления заказа, стоимость указывается в предложении. если я оставляю оформление заказа после того, как это было установлено, а затем удаляю товар, который имеет доставку, стоимость доставки по-прежнему устанавливается в предложении, и я не могу отменить ее ... даже путем удаления всех элементов в предложении.

Я пытаюсь выяснить, как сбросить способ доставки и пересчитать итоги после того, как товар удален из корзины.

Ответы [ 2 ]

15 голосов
/ 15 октября 2012

В модели квотирования и адреса доставки кешируется несколько вещей, поэтому вы должны сделать это, чтобы 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 перенаправляет клиента в корзину или на другую страницу после любого изменения котировки, поэтому обычно приходится рассчитывать итоговые значения один раз на загрузку страницы.

1 голос
/ 15 апреля 2011

Если вы делаете это программно, то вы можете попробовать это:

$quote->collectTotals()
$quote->getShippingAddress()->collectTotals()
...