我创建了一个自定义的总计收集授予符合条件的客户的购物车的小计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计算的。 也许有人可以解释给我。
那么,如何改变总数的顺序? 为什么结果如此怪异,当我“之后”设置为别的什么,只是“送货”? 有我误解了这两个配置元素的功能?