Magento如何在结账时保存额外的运费信息

时间:2012-09-07 09:03:49

标签: php magento

我是magento的新手,我的版本是1.6.2.0 我正在尝试添加自己的自定义运输方法模块,我遇到了一些问题。 我的magento已经有自定义结账模块 - 三人行检查,我正在尝试做的是保存我在第3步(付款和运输)(类似商店取货地点)选择引用的其他运输信息,然后在审查反向报价数据并将其保存到订单。
我正在使用事件来做到这一点:
checkout_controller_onepage_save_shipping_method将数据保存到引用
checkout_type_onepage_save_order将数据保存到订单
  问题是Quote和Order没有任何可以保存数据的空闲位置,所以我为我的模块创建了安装程序:

$installer = $this;
$installer->startSetup();
$packboxName = array(
    'type'              => 'varchar',
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'packboxname',
    'input'             => '',
    'class'             => '',
    'source'            => '',
    'global'            => 1,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => '',
    'searchable'        => false,
    'filterable'        => false,
    'comparable'        => false,
    'visible_on_front'  => false,
    'visible_in_advanced_search' => false,
    'unique'            => false
);
$installer->addAttribute('order', "packboxname", $packboxName);
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'packboxname', 'varchar(255) DEFAULT NULL');
$installer->addAttribute('quote', "packboxname", $packboxName);
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'packboxname', 'varchar(255) DEFAULT NULL');

$installer->endSetup();

我发错了,说

  

$ installer->的addAttribute( '报价'

有错误的实体ID。 所以我检查了数据库,表:eav_entity_type并且没有任何“引用”类型(希望有一个'命令')我真的不知道我该怎么做,我试着谷歌的东西,我发现教程和修改我的安装人员。

$installer->addEntityType('quote', array(
        'entity_model'    => 'sales/quote',
        'table'           =>'sales/quote',
    ));

现在它正在工作我有额外的地方可以保存我的信息,但我的朋友告诉我,我不应该使用addEntityType,还有其他方法来实现我需要的东西吗?

1 个答案:

答案 0 :(得分:0)

我想也许你正在寻找的是这个答案:https://stackoverflow.com/a/4389786/823549

该答案中的一个重点是被触发的事件sales_convert_quote_to_order - 当报价被转换为订单时会被触发,并且无论您的其他结账模块做什么,都会发生这种情况。此答案也很有用,因为您可以在订单网格页面中查看自定义列的详细信息。