定制总计收集:在结账汇总概述汇总重新排序(Custom totals collector: Reor

2019-09-17 13:30发布

我创建了一个自定义的总计收集授予符合条件的客户的购物车的小计3%的折扣。 我收集的代码如下所示:

class My_Module_Model_DiscountCollector
    extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
    // ...
    public function collect(Mage_Sales_Model_Quote_Address $address)
    {
        if($this->userIsQualified())
        {
            parent::collect($address);

            // $this->_inclTax tells the collector to either calculate the actual discount amount 
            // based on the subtotal including or excluding tax
            $baseCalcValue = ($this->_inclTax) ? $address->getBaseSubtotalTotalInclTax() : $address->getBaseSubtotal();
            $calcValue = ($this->_inclTax) ? $address->getSubtotalInclTax() : $address->getSubtotal();

            $baseDiscountAmount = $baseCalcValue * 0.03;
            $discountAmount = $calcValue * 0.03;

            $this->_setBaseAmount(-$baseDiscountAmount);
            $this->_setAmount(-$discountAmount);
        }
        return $this;
    }
    public function fetch(Mage_Sales_Model_Quote_Address $address)
    {
        if($this->userIsQualified())
        {
            $discountAmount = (($this->_inclTax) ? $address->getSubtotalInclTax() : $address->getSubtotal()) * 0.03;
            $address->addTotal(
                array(
                    "code"  => $this->getCode(),
                    "title" => "My Discount (3%)",
                    "value" => -$discountAmount
                )
            );
        }
        return $this;
    }
    // ...
}

我的问题是(查看购物车当例如)改变总计上市总数的顺序。 目前的顺序是“小计,航运,我折扣,...,总计”,但我宁愿“小计,我的折扣,送货,...”。 目前我config.xml文件看起来是这样的:

<config>
    <!-- ... --->
    <global>
        <!-- ... -->
        <sales>
            <quote>
                <totals>
                    <my_discount>
                        <class>My_Module_Model_DiscountCollector</class
                        <after>shipping</after>
                        <!--<before>grand_total</before>-->
                        <!--<after>shipping</after>-->
                        <!--<before>shipping</before>-->
                    </my_discount>
                </totals>
            </quote>
        </sales>
        <!-- ... -->
    </global>
</config>

我尝试不同的设置为“前” - 和“之后” -elements,但是这并没有影响到总计列出的顺序,只影响了grand_total的计算。 这很奇怪,但我总只包括在上面的设置grand_total的计算。 例如,如果我“后”到“小计”,或者如果设置我设置“之前”到“grand_total”,我总不影响grand_total计算的。 也许有人可以解释给我。

那么,如何改变总数的顺序? 为什么结果如此怪异,当我“之后”设置为别的什么,只是“送货”? 有我误解了这两个配置元素的功能?

Answer 1:

你有上面的XML片段是在为了在后端总计收藏家火灾。 前端顺序控制在不同的地方。 从法师/核心/销售/等config.xml文件:

...
<default>
...
    <sales>
        <totals_sort>
            <discount>20</discount>
            <grand_total>100</grand_total>
            <shipping>30</shipping>
            <subtotal>10</subtotal>
            <tax>40</tax>
        </totals_sort>
...
</default>

如果添加<my_discount>为节点下的<totals_sort>在你的模块config.xml文件中你喜欢的地方,你可以将其插入。



文章来源: Custom totals collector: Reorder totals in totals overview in checkout