我正在尝试创建一个订单总额模块来进行一些自定义价格调整。只是为了开始这个,我只是想让它为每一个订单增加20美元(最终放入真正的逻辑)。
我遇到了我创建的模块的问题。第一个问题是它似乎运行了两次(所以它需要40美元而不是只需20美元 - Logging向我展示了collect和fetch方法都运行了两次)
第二个问题是折扣行项目显示在总计行的下方。
有人能告诉我这里做错了什么吗?我的config.xml和订单总类的内容如下。
config.xml内容
<global>
<sales>
<quote>
<totals>
<mud>
<class>Wpe_Multiunitdiscount_Model_Multiunitdiscount</class>
<before>grand_total</before>
</mud>
</totals>
</quote>
</sales>
</global>
Wpe_Multiunitdiscount_Model_Multiunitdiscount内容
class Wpe_Multiunitdiscount_Model_Multiunitdiscount extends Mage_Sales_Model_Quote_Address_Total_Abstract {
public function collect(Mage_Sales_Model_Quote_Address $address) {
$address->setGrandTotal($address->getGrandTotal() + 20 );
$address->setBaseGrandTotal($address->getBaseGrandTotal() + 20);
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address) {
$address->addTotal(array(
'code' => $this->getCode(),
'title' => Mage::helper('sales')->__('Super Tax'),
'value' => 20,
));
return $this;
}
}
答案 0 :(得分:1)
关于“双重”问题,据我了解,这是因为magento会收集您的总数两次,一次是收货地址,一次是收款地址。
我确信必须有更好的方法来管理它,但是现在我已经在我的收集方法的第一行添加了:
if ($address->getData('address_type')=='billing') return $this;
对于“展示位置”,您是否尝试使用“之后”代替“之前”(更改总别名,当然,让我们说“税”,例如“)” HTH
答案 1 :(得分:0)
添加自定义总计时,您无法触及任何其他总计。有关更多信息,请参阅此主题:Magento upfront payment