【问题标题】:Questions About Creating An Order Total In Magento关于在 Magento 中创建订单总计的问题
【发布时间】:2011-09-21 15:31:26
【问题描述】:

我正在尝试创建一个订单总计模块来进行一些自定义价格调整。只是为了开始这个,我只是想让它为每个订单增加 20 美元(最终放入真正的逻辑)。

我创建的模块有问题。第一个问题是它似乎运行了两次(因此它节省了 40 美元,而不是仅 20 美元——日志记录显示,收集和获取方法都运行了两次)

第二个问题是折扣行项目出现在总计行下方。

谁能告诉我我在这里做错了什么?我的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;
}
}

【问题讨论】:

    标签: php magento


    【解决方案1】:

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

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

    对于“安置”,您是否尝试过使用“之后”而不是“之前”(更改总别名,当然,比如说“税”)?
    高温

    【讨论】:

    • 谢谢。这似乎有效。我觉得 Magento 以这种方式工作很奇怪,但这不是我第一次想到 Magento。
    • 我宁愿认为有一天我会明白为什么:)
    • 你还是走错了路,只是为了让你知道,你不能修改总计!
    【解决方案2】:

    添加您自己的自定义总计时,您不能触及任何其他总计。更多信息请查看此主题:Magento upfront payment

    【讨论】:

    • 在 magento 中定义了函数 "getInvoiceTaxAmount", "getBaseInvoiceFeeExcludedVat" 我在 magento 中找不到这些函数,谁能解释它们是什么以及它们是如何使用的
    • 你能告诉我在哪里或如何知道magento中的所有魔术函数及其含义
    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多