Magento: таблица ставок по весу, редактировать расчет - PullRequest
2 голосов
/ 16 марта 2011

В настоящее время я использую Таблицу тарифов по весу для интернет-магазина, но мне нужно настроить способ расчета.

В настоящее время стоимость доставки определяется общим весом заказов,но я бы хотел, чтобы расчет просто определял стоимость поста по самому тяжелому предмету в корзине.

Знаете ли вы, как я могу переопределить вычисления, сделанные этим модулем?Помощь сделает меня очень благодарным.

Заранее спасибо.

1 Ответ

5 голосов
/ 16 марта 2011

Переопределить класс Magento, используемый для расчета этих показателей Mage_Shipping_Model_Shipping.Когда делается запрос скорости, этот метод класса collectRates вызывается с использованием объекта Mage_Shipping_Model_Rate_Request, в котором предварительно заполнены элементы и вес.Однако, создав подкласс этого класса с помощью нашего переопределения, мы можем быть хитрыми и получить желаемую скорость.

class MyNamespace_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping {

    public function collectRates(Mage_Shipping_Model_Rate_Request $request) {
        $maxWeight = 0;
        foreach($request->getAllItems() as $item) {
            $maxWeight = max($maxWeight, $item->getRowWeight());
        }
        $request->setPackageWeight($maxWeight);

        return parent::collectRates($request);
    }
}

Обратите внимание, что здесь мы минимизировали количество измененного кода и наш модуль может быть чисто удален (и мы даже можем обновить Magento!) с низким риском.

Надеюсь, это поможет!

Спасибо, Джо

...