1
我打算做哪些可以使用我们店里的信用打折定制信贷模块。查看一些示例之后,我成功添加了结帐步骤到onepage结帐。然后我伸出Mage_Sales_Model_Quote_Address_Total_Abstract有一个自定义的收集计算总。目前,我硬编码了一些折扣值,看看它是如何工作的:定制Mage_Sales_Model_Quote_Address_Total_Abstract计算两次:结算与送货地址
public function collect(Mage_Sales_Model_Quote_Address $address) {
parent::collect ($address);
//if($address->getData('address_type')=='billing') return $this;
try {
$this->_setAmount (-10)->_setBaseAmount (-10);
} catch (Exception $e) {
Mage::throwException ($e->getMessage());
//do nothing.
}
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address) {
parent::fetch ($address);
//if($address->getData('address_type')=='billing') return $this;
$title = Mage::helper ('sales')->__ ('Credittest');
$address->addTotal (array ('code' => $this->getCode(), 'title' => $title, 'value' => -10));
return $this;
}
config.xml中的部分看起来像这样:
<sales>
<quote>
<totals>
<credittest>
<class>sales/quote_address_total_credit</class>
<after>tax_subtotal,subtotal,freeshipping</after>
<before>grand_total</before>
</credittest>
</totals>
</quote>
</sales>
但是结果出来与-20扣除。一些调试跟踪后,我的自定义收集器被称为两次,一次是地址类型为“计费”,另一个是“发货”。所以我加了注释代码上面的计算,送货地址进来,只有当。但我不知道这是正确的道路要走。
为什么Mage_Sales_Model_Quote_Address其他类将不计算两次?根据我的追踪,它们实际上被调用了两次。什么是正确的方式解决我的问题?
预先感谢您。