尽管有可能,但这并不适合胆怯的人。以下是向总计区域添加一行的粗略步骤,然后将您的费用添加到总计中。
在配置节点中<global><sales><quote><total>
添加一个新条目(参见app/code/core/Mage/Sales/etc/config.xml
欲了解更多示例)
<paymentFee>
<class>yourmodule/quote_address_total_paymentFee</class> <!-- A model -->
<after>subtotal</after>
</paymentFee>
也在config.xml
将以下内容添加到<global>
...
<fieldsets>
<sales_convert_quote>
<payment_fee><to_order>*</to_order></payment_fee>
</sales_convert_quote>
</fieldsets>
创建模型来计算费用。
class Your_Module_Model_Quote_Address_Total_Warranty extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
public function __construct()
{
$this->setCode('paymentFee');
}
public function collect(Mage_Sales_Model_Quote_Address $address)
{
// Check the payment method in use, if it is yours do...
$address->setPaymentFee($fee);
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
if ($address->getPaymentFee()) {
$address->addTotal(array(
'code' => $this->getCode(),
'title' => 'Your module payment message',
'value' => $address->getPaymentFee()
));
}
return $this;
}
}
在模块的设置中,修改sales_flat_quote
and sales_flat_order
表到添加 payment_fee 列.
The <after>
配置中的 value 负责确定计算顺序,它可以是逗号分隔的总计代码列表,包括“tax”、“discount”等。您还可以指定<before>
相同目的的价值。这$address->addTotal
in fetch()
方法将完成更新总计的工作,这是向客户收取的费用。有必要更改报价和订单表,以便记录您收取的费用并向管理员显示。
如果默认渲染器不起作用,也可以指定您自己的渲染器,我也这样做了,但更加复杂。