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

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

Когда применяется бесплатная доставка, в промежуточном итоге по доставке и обработке отображается 0,00, и я не хочу, чтобы эта строка отображалась ни в кассе, ни в счете.

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

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


person alexius    schedule 18.10.2012    source источник


Ответы (2)


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

app/code/local/Me/MyModule/Model/Sales/Quote/Address/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);
    }
}

app/code/local/Me/MyModule/etc/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>
person Mario    schedule 24.03.2014

удалить строку доставки из корзины и оформить заказ, вы можете переопределить этот метод 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

person Mohammed Waseem Mohideen    schedule 21.03.2013