我目前正在使用网上商店的重量表价格,但我需要自定义计算方式。
目前,邮资费用是由订单的总重量决定的,但我希望计算一下,以确定购物车中最重的商品的邮费。
你知道如何覆盖这个模块的计算吗?帮助会让我非常感激。
提前致谢。
答案 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!)。
希望有所帮助!
谢谢, 乔