我正在使用4个域名的单一目录建立一个Magento商店:1个用于美国,3个用于欧洲(英国,法国和德国)。欧洲有1个履行仓库,美国有1个履带仓库,美国有一个非官方/内部“仓库”,其中有赠品等,我们没有跟踪Magento的库存水平。我们需要跟踪特定交易类型,如普通网络销售以及内部/管理订单,如非网络销售,赠品,贸易展示订单等。我的计划是扩展核心订单模型并添加某种“订单/交易类型”然后,在下订单时,处理订单数据并根据商店ID和“订单类型”值指示将其发送到哪个仓库以供履行。
作为Magento的新手,我想知道这种设置是否是出于任何原因的坏主意。我在脚下射击自己了吗?单个目录可能有问题吗?是否有更简单或更好的方法来处理此流程?有没有办法像产品一样向订单添加自定义属性?
答案 0 :(得分:15)
你正朝着正确的方向前进,但(和Magento的大多数事情一样),有几个选择。这里最重要的原则是修改的体系结构不得导致核心上的升级/补丁受到损害的情况。有趣的是,Magento已经摆脱了当前版本中Mage_Sales_Model_Order
(和相关对象)的高度可扩展和升级安全(大多数)EAV模型。这使得以升级安全的方式添加属性变得更加困难,恕我直言。
我建议您使用Observer系统添加新属性值,但要添加到相关模型中。也就是说,不是将属性添加到Order模型本身,而是创建一个包含order_id
和您的自定义属性的模型。挂钩相应的事件(所有订单可能sales_convert_quote_to_order
或前端订单checkout_type_onepage_save_order_after
)并检查报价项目以设置自定义模型中的值。当您执行将订单传输到履行公司的流程时,您可以通过order_id
查找自定义属性。
答案 1 :(得分:6)
另一个(更好?)选项是遵循Ivan在Magento - Adding a new column to sales_flat_quote_item and sales_flat_order_item的建议并使用Magento的销售设置类以升级安全的方式将您的数据添加到sales_flat_order表中。