2010-12-21 52 views

回答

9

虽然可能,但它不是为懦夫。这里粗略地列出了在总计区域添加一行的步骤,然后这些步骤会将您的费用添加到总计。

在配置节点<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> 

另外在​​3210以下内容添加到<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_quotesales_flat_orderadd a payment_fee column

<after>配置中的<after>值负责确定计算顺序,它可以是包含“税收”,“折扣”等的总计代码的逗号分隔列表。您还可以指定<before>值相同的目的。 $address->addTotal,fetch()方法将完成更新总计的工作,这是客户将收取的费用。有必要更改报价单和订单表,以便记录您收取的费用并向管理员显示。

也可以指定你自己的渲染器,如果默认不行,我也这样做了,但更加复杂。

+0

不错的一段代码...我会建议你遵循伊万的建议(这里:http://stackoverflow.com/questions/4378394/magento-adding-a-new-column-to-sales-flat-quote-item -and-sales-flat-order-item/4378681#4378681)以非SQL方式修改'sales_flat'表。 – 2010-12-23 04:16:18

+0

我不得不多次添加总计行数,所以要记录方法。 – clockworkgeek 2010-12-23 10:03:01

+0

没问题,我只是建议它为未来的读者的答案:) – 2010-12-24 03:05:22

0

如果您之前没有使用过Magento的代码库,我不会建议您从此开始,这相当复杂。使用扩展名可能是最安全的选择。

我还没有使用它,但我相信这extension应该做的工作。

标准免责声明:我不以任何方式隶属于供应商。 注意空虚

+0

使用另一个扩展不是一个选项。 – 2010-12-22 09:49:44

相关问题