【问题标题】:Magento checkout ObserverMagento 结账观察者
【发布时间】:2015-08-27 16:16:35
【问题描述】:

我创建了一个自定义模块,允许我添加和管理多个商店位置。我设法添加了一种自定义付款方式,当用户选择此方式时,会出现一个下拉菜单,显示所有可用的商店。我添加了一个安装程序脚本,该脚本在以下数据库中添加了一个列:sales_flat_ordersales_flat_order_gridsales_flat_order_quote。该列称为store_pickup_id。我想做的是让销售报价和销售订单保存商店取货 ID,但我似乎做不到。我创建了以下扩展 sales_quote_save_after 事件的观察者

public function saveCustomData(Varien_Event_Observer $observer) {
        $event = $observer->getEvent();
        $order = $event->getOrder();
        $quote = $event->getQuote();

        $post = Mage::app()->getFrontController()->getRequest()->getParams();

        if (isset($post["store_pickup"])) {
            $quote->setStorePickupId($post["store_pickup"]);
        }

        Mage::log("Store pickup id: ".$quote->getStorePickupId());

        return $this;
    }

当我进行测试事务时,我可以在 sales_flat_quote 中看到 store_pickup_id 正在设置,因为它在步骤之间保存。但是,当我处理订单时,另一个条目被添加到同一个表中,但没有 store_pickup_id 并且订单也无法设置 store_pickup_id

有谁知道我怎样才能将这些自定义数据保存到报价和订单中?

【问题讨论】:

  • 您可能需要在转换报价时将同一观察者添加到订单中...您可能需要在交易过程的每个步骤中执行此操作。不确定您需要添加哪个特定观察者,但这里是事件列表:nicksays.co.uk/magento-events-cheat-sheet-1-9
  • 感谢您的评论和链接。我实际上已经在使用这个链接并且已经尝试了 sales_convert_quote_to_order 事件,但仍然是相同的结果

标签: php magento magento-1.9 observers


【解决方案1】:

我找到了解决方案,结果发现我的配置中缺少以下关键行,这些行会将我的自定义数据转换为订单

<fieldsets>
    <sales_convert_quote>
        <store_pickup_id>
            <to_order>*</to_order>
        </store_pickup_id>
    </sales_convert_quote>
</fieldsets>

我发现以下link 很有帮助,希望对其他人有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多