2011-07-02 42 views
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其他类将不计算两次?根据我的追踪,它们实际上被调用了两次。什么是正确的方式解决我的问题?

预先感谢您。

回答