2013-09-29 3 views
0

В Magento 1.7, есть ли способ показать единовременную доставку только в том случае, если график превышает определенную сумму? По правилу единственным вариантом, по-видимому, является бесплатная доставка, но моя цель - иметь Flat Rate, если итоговая сумма в графике равна xx (если общая сумма ниже, будут использоваться обычные ставки). Благодаря! -EspenMagento Flat Rate Доставка только в том случае, если график превышает определенную сумму

ответ

1

Не по умолчанию. Для этого легко расширить способ доставки с фиксированной ставкой. Просто создайте новый модуль, расширьте систему доставки system.xml с фиксированной скоростью, чтобы появилась новая опция для минимальной цены на корзину (это позволит вам настроить ее через admin). Расширьте класс Mage_Shipping_Model_Carrier_Flatrate и переопределите метод collectRates, чтобы проверить общий объем корзины против значения конфигурации администратора. Верните значение false, если значение корзины недостаточно, и оно не будет отображаться в качестве опции, иначе оно вернет стоимость, установленную администратором.

Редактировать: Что-то вроде следующего будет делать это. Расширьте класс, не модифицируйте ядро!

public function collectRates(Mage_Shipping_Model_Rate_Request $request) 
{ 
    // Get The Minimum Order Value From Admin Config & Compare To Cart Subtotal (Base Prices) 
    if (!$this->getConfigFlag('minimum_order') || $request->getBaseSubtotalInclTax() < $this->getConfigFlag('minimum_order')) { 
     return false; 
    } else { 
     return parent::collectRates($request); 
    } 
} 
+0

Hi. Мне удалось создать новый модуль и добавить опцию для цены на корзину (называемую «minimum_order»). И заставьте его работать в интерфейсе. Но не удалось подделать collectRates, чтобы новая фиксированная ставка показывалась только тогда, когда график равен или больше, чем значение «minimum_order». Не могли бы вы мне помочь? Большое спасибо! – Espen

+0

Обновлен с примерами. Обратите внимание на метод $ this-> getConfigFlag(). Это то, что получает значение конфигурации администратора для вашего нового параметра для данного носителя. Затем мы просто сравниваем с подтелом корзины. Если мы вернем false, метод недоступен. – Ashley

+0

Привет. Я не могу заставить функцию getConfigFlag работать, кажется, что она не извлекает значение из admin. Тем не менее, мне не нужно будет некоторое время изменять это значение, поэтому попробовал более жесткую кодировку вашего кода: 'if ($ request-> getBaseSubtotalInclTax() <= ('699')) { return false ; \t} 'Это поможет мне достичь моей цели, но, к сожалению, не в идеальном варианте. Большое спасибо за вашу помощь :) – Espen