Magento:表格按重量计算,编辑计算

时间:2011-03-16 13:03:44

标签: magento module shipping

我目前正在使用网上商店的重量表价格,但我需要自定义计算方式。

目前,邮资费用是由订单的总重量决定的,但我希望计算一下,以确定购物车中最重的商品的邮费。

你知道如何覆盖这个模块的计算吗?帮助会让我非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:5)

覆盖用于计算这些费率的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!)。

希望有所帮助!

谢谢, 乔