Magento - 区分以编程方式创建的正常订单和订单

时间:2015-10-14 15:23:57

标签: php magento

我可以使用自定义模块以编程方式创建订单。

我希望添加一个标记来区分可以从管理员/网站创建的各种类型的订单以及从我的自定义模块创建的订单。

我了解管理员和网站订单可以通过

区分
if(!empty($order->getRemoteIp()){
  //place online
}
else{
  // place by admin
}

但是,我仍然希望区分从admin手动下的订单和从我的自定义模块下的订单。

以下是我想到的一些解决方案

1)在订单或订单增量ID中添加前缀。

2)在创建模块期间创建新商店,并使用该商店从我的自定义模块添加所有订单。但是,我不确定这可能会带来什么影响。

3)我可以在创建订单时使用

更改商店名称
$order->setStoreName('customName');

但是,这在管理网格或订单详细信息页面中不可见。我猜他们是为了获取"购买自"来自商店id。

我正在寻找,可能是上述最佳解决方案,或者更好的解决方案。

注意:我的模块目前与magento v1.4及更高版本兼容。所以我需要一个涵盖大多数版本的解决方案。

1 个答案:

答案 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);