我創建了自定義總計收藏家,以向合格顧客提供購物車小計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的計算。也許有人可以向我解釋這一點。
那麼如何改變總數的順序呢?爲什麼當我將「之後」設置爲「運送」之外的結果時,結果如此奇怪?我誤解了這兩個配置元素的功能嗎?