私はこれに2日間を費やしました、私はすべてを試したように感じます、それでも私は壁にぶつかり続けます。
見積もりと注文に追加したい2つの属性(module_job_id、module_channel_id)があります。私がなんとか取得したのは、quote属性が正常に機能し、データベースに保存されていることを確認でき、正常に取得できることです。
残っているのは、値を見積もりから注文に移動することだけです。私は何が間違っているのですか?
これが私のモジュール設定ファイルです:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Company_Module>
<version>0.1.9</version>
</Company_Module>
</modules>
<global>
<fieldsets>
<sales_convert_quote>
<module_job_id>
<to_order>*</to_order>
</module_job_id>
<module_channel_id>
<to_order>*</to_order>
</module_channel_id>
</sales_convert_quote>
</fieldsets>
<resources>
<company_module>
<setup>
<module>Company_Module</module>
<class>Mage_Sales_Model_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</company_module>
</resources>
</global>
</config>
インストールファイルsql/company_module / mysql4-install-0.1.0.php:
<?php
$installer = $this;
$installer->startSetup();
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'module_job_id',
'VARCHAR(255) NULL DEFAULT NULL');
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'module_channel_id',
'VARCHAR(255) NULL DEFAULT NULL');
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'module_job_id',
'VARCHAR(255) NULL DEFAULT NULL');
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'module_channel_id',
'VARCHAR(255) NULL DEFAULT NULL');
$installer->addAttribute('order', 'module_job_id', array('type' => 'varchar'));
$installer->addAttribute('quote', 'module_job_id', array('type' => 'varchar'));
$installer->addAttribute('order', 'module_channel_id', array('type' => 'varchar'));
$installer->addAttribute('quote', 'module_channel_id', array('type' => 'varchar'));
$installer->endSetup();
インストールファイルでaddAttributeとaddColumnsの可能なすべての組み合わせを試しました。その結果、sales_flat_quoteとsales_flat_orderの両方の列として両方の属性を取得しました。ただし、eav_attributeにはどの属性もありません。それでいいのかわかりません。
私が試したもう1つのことは、sales_convert_quote_to_orderオブザーバーでorder属性値を明示的に設定することです。これは機能しませんでした:
public function salesConvertQuoteToOrder($observer)
{
$order = $observer->getEvent()->getOrder();
$order->setModuleJobId('123');
$order->setModuleChannelId('456');
}
それが重要かどうかはわかりませんが、これらは私のシステムのエンティティタイプです(注文のみ、見積もりなし...):
mysql> SELECT entity_type_id, entity_type_code FROM eav_entity_type;
+----------------+------------------+
| entity_type_id | entity_type_code |
+----------------+------------------+
| 3 | catalog_category |
| 4 | catalog_product |
| 7 | creditmemo |
| 1 | customer |
| 2 | customer_address |
| 6 | invoice |
| 5 | order |
| 8 | shipment |
+----------------+------------------+
また、eav_entityは空です。それも大丈夫だといいのですが。
mysql> select * from eav_entity;
Empty set (0.00 sec)
これはMagento1.6.2.0にあります。ヒープに感謝します!