Magento结账观察员

时间:2015-08-27 16:16:36

标签: php magento magento-1.9 observers

我创建了一个自定义模块,允许我添加和管理多个商店位置。我已设法添加自定义付款方式,当用户选择此选项时,会出现一个显示所有可用商店的下拉列表。我添加了一个安装程序脚本,该脚本在以下数据库中添加了一列: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

任何人都知道如何将这些自定义数据保存到报价和订单中?

1 个答案:

答案 0 :(得分:0)

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

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

我发现以下link非常有帮助,希望它有助于其他人