【问题标题】:Magento - How do I add an invoice fee to an order during checkout processMagento - 如何在结帐过程中向订单添加发票费用
【发布时间】:2011-05-28 19:01:48
【问题描述】:

如何使用我的支付模块向订单添加发票费用?我想这应该通过我的付款方式模型在结帐过程中完成。也许我应该创建一个项目/产品并将其添加到购物车/报价/订单对象?

我不知道如何做这些事情。请帮忙

【问题讨论】:

    标签: php magento magento-1.4


    【解决方案1】:

    虽然有可能,但它不适合胆小的人。以下是在总计区域添加一行的粗略步骤,然后将您的费用添加到总计中。

    在配置节点<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 中添加以下内容到&lt;global&gt;...

    <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_order 表修改为add a payment_fee column

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

    如果默认不做,也可以指定自己的渲染器,我也做过,但更复杂。

    【讨论】:

    • 一段不错的代码...我建议您按照 Ivan 的建议(此处:stackoverflow.com/questions/4378394/…)以非 SQL 方式修改 sales_flat 表。
    • 我不得不多次添加总计行,因此该方法有据可查。
    • 没问题,我只是向未来的读者推荐答案:)
    • 我已经完成了这一切。发票费用包含在结帐页面上,我已将字段添加到 sales_flat_order 和 sales_flat_quote 表中。但是,报价单/订单不会在这些字段中存储我的发票费用。 (我将费用添加到地址对象)
    • 刚刚意识到我错过了一个重要的转换部分。答案已更新。
    【解决方案2】:

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

    我没有使用过它,但我相信这个extension 应该可以完成这项工作。

    标准免责声明:我与供应商没有任何关联。 告诫购买者

    【讨论】:

    • 不能使用其他扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2017-02-20
    • 1970-01-01
    • 2017-05-23
    • 2013-04-17
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多