Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 自定义图像\销售\型号\报价\地址\总计\摘要计算两次:账单和发货地址_Magento_Module_Checkout_E Commerce - Fatal编程技术网

Magento 自定义图像\销售\型号\报价\地址\总计\摘要计算两次:账单和发货地址

Magento 自定义图像\销售\型号\报价\地址\总计\摘要计算两次:账单和发货地址,magento,module,checkout,e-commerce,Magento,Module,Checkout,E Commerce,我打算做一个自定义的信用模块,可以使用我们商店的信用折扣。在研究了一些示例之后,我成功地将签出步骤添加到onepage签出中。然后我扩展了Mage_Sales_Model_Quote_Address_Total_Abstract,让它有一个自定义的收集器来计算Total。目前,我硬编码了一些折扣值,以了解其工作原理: public function collect(Mage_Sales_Model_Quote_Address $address) { parent::collect

我打算做一个自定义的信用模块,可以使用我们商店的信用折扣。在研究了一些示例之后,我成功地将签出步骤添加到onepage签出中。然后我扩展了Mage_Sales_Model_Quote_Address_Total_Abstract,让它有一个自定义的收集器来计算Total。目前,我硬编码了一些折扣值,以了解其工作原理:

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。在一些调试跟踪之后,我的自定义收集器会被调用两次,一次是地址类型为billing,另一次是shipping。因此,我添加了上面的注释代码,以仅在收到发货地址时进行计算。但我不确定这是不是正确的方式

为什么Mage_Sales_Model_Quote_Address中的其他类不会计算两次?根据我的跟踪,它们实际上被调用了两次。什么是解决我问题的正确方法

提前谢谢。

看一看@