我可以使用自定义模块以编程方式创建订单。
我希望添加一个标记来区分可以从管理员/网站创建的各种类型的订单以及从我的自定义模块创建的订单。
我了解管理员和网站订单可以通过
区分if(!empty($order->getRemoteIp()){
//place online
}
else{
// place by admin
}
但是,我仍然希望区分从admin手动下的订单和从我的自定义模块下的订单。
以下是我想到的一些解决方案
1)在订单或订单增量ID中添加前缀。
2)在创建模块期间创建新商店,并使用该商店从我的自定义模块添加所有订单。但是,我不确定这可能会带来什么影响。
3)我可以在创建订单时使用
更改商店名称$order->setStoreName('customName');
但是,这在管理网格或订单详细信息页面中不可见。我猜他们是为了获取"购买自"来自商店id。
我正在寻找,可能是上述最佳解决方案,或者更好的解决方案。
注意:我的模块目前与magento v1.4及更高版本兼容。所以我需要一个涵盖大多数版本的解决方案。
答案 0 :(得分:0)
您可以创建订单属性并在创建订单时进行设置。
要创建订单属性,您可以在模块文件夹中的sql/mymodule_setup/mysql4-upgrade-VNUMBER.php
中执行此操作:
$installer = $this;
$installer->startSetup ();
$setup = new Mage_Eav_Model_Entity_Setup ( 'core_setup' );
$installer->getConnection()
->addColumn (
$installer->getTable ( 'sales_flat_order' ),
'my_attribute_code', // this is where you set the attribute code
'varchar(255) DEFAULT NULL' );
$setup->startSetup ();
$setup->addAttribute (
'order',
'my_attribute_code',
array (
'type' => 'int', // or text or whatever
'label' => 'My attribute Label'
));
$installer->endSetup ();
然后在处理订单时,只需使用
$order->setMyAttributeCode($value);