Magento – удалите доставку и обработку при использовании Freeshipping

У меня есть следующая проблема: у меня есть основные методы доставки. Первый взимает плату за доставку в размере 10 долларов США за заказы ниже 200 долларов США. Второй метод – это freeshipping по умолчанию, который применяется для заказов более 200 долларов США.

Когда применяется freeshipping, промежуточная сумма Shipping & Handling отображает 0.00, и я не хочу, чтобы эта строка не отображалась ни в кассе, ни в счете-фактуре.

Есть ли способ полностью удалить линию доставки и обработки при использовании freeshipping?

Заранее благодарим за любые мысли.

Мне не нравится фильтровать подобные вещи кодом. Поэтому я придумал решение, переопределяющее Mage_Sales_Model_Quote_Address_Total_Shipping :: fetch (Mage_Sales_Model_Quote_Address $ address)

Приложение / код / ​​местные / Me / MyModule / модель / Продажа / Quote / Адрес / Total / Shipping.php:

<?php class Me_MyModule_Model_Sales_Quote_Address_Total_Shipping extends Mage_Sales_Model_Quote_Address_Total_Shipping { /** * Add shipping totals information to address object * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Sales_Model_Quote_Address_Total_Shipping */ public function fetch(Mage_Sales_Model_Quote_Address $address) { if ($address->getShippingAmount() == 0) { return $this; } return parent::fetch($address); } } 

Приложение / код / ​​местные / Me / MyModule / и т.д. / config.xml:

 <?xml version="1.0"?> <config> <modules> <Me_MyModule> <version>0.0.1</version> </Me_MyModule> </modules> <global> <models> <me_mymodule> <class>Me_MyModule_Model</class> </me_mymodule> <sales> <rewrite> <quote_address_total_shipping>Me_MyModule_Model_Sales_Quote_Address_Total_Shipping</quote_address_total_shipping> </rewrite> </sales> </models> </global> </config> 

приложение / и т.д. / модули / Me_MyModule.xml:

 <?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Me_MyModule> <active>true</active> <codePool>local</codePool> </Me_MyModule> </modules> </config> 

удалите линию доставки из корзины и вы можете переопределить этот метод Mage_Checkout_Block_Cart_Totals :: renderTotal ()

 public function renderTotal($total, $area = null, $colspan = 1) { $code = $total->getCode(); if ($total->getAs()) { $code = $total->getAs(); } if ($code == 'shipping' && $total->getValue() == 0) { return ''; } return $this->_getTotalRenderer($code) ->setTotal($total) ->setColspan($colspan) ->setRenderingArea(is_null($area) ? -1 : $area) ->toHtml(); } 

Для получения дополнительной информации обратитесь к этой ссылке http://www.magentocommerce.com/boards/viewthread/295412/#t410854