关于在Magento中创建订单总额的问题

时间:2011-09-21 15:31:26

标签: php magento

我正在尝试创建一个订单总额模块来进行一些自定义价格调整。只是为了开始这个,我只是想让它为每一个订单增加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;
}
}

2 个答案:

答案 0 :(得分:1)

关于“双重”问题,据我了解,这是因为magento会收集您的总数两次,一次是收货地址,一次是收款地址。
我确信必须有更好的方法来管理它,但是现在我已经在我的收集方法的第一行添加了:

    if ($address->getData('address_type')=='billing') return $this;

对于“展示位置”,您是否尝试使用“之后”代替“之前”(更改总别名,当然,让我们说“税”,例如“)” HTH

答案 1 :(得分:0)

添加自定义总计时,您无法触及任何其他总计。有关更多信息,请参阅此主题:Magento upfront payment