Я создал пользовательскую модель для создания заказа из цитаты; Я использую fieldset.xml для копирования пользовательских кодов цитат на заказ. Я создал пользовательские столбцы в кавычках и порядке с соответствующими полями. При размещении заказа значения сохраняются в пользовательских полях цитаты, но не копируются в заказ. Ниже мой fieldset.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:DataObject/etc/fieldset.xsd">
<scope id="global">
<!--quote convert to order-->
<fieldset id="sales_convert_quote">
<field name="preorder_number">
<aspect name="to_order" />
</field>
<field name="purchase_order_number">
<aspect name="to_order" />
</field>
<field name="reference_number">
<aspect name="to_order" />
</field>
</fieldset>
<!--quote item convert to order item-->
<fieldset id="quote_convert_item">
<field name="preorder_number">
<aspect name="to_order_item" />
</field>
<field name="purchase_order_number">
<aspect name="to_order_item" />
</field>
<field name="reference_number">
<aspect name="to_order_item" />
</field>
</fieldset>
</scope>
Что еще мне нужно сделать?
Ответы:
Если вы посмотрите на текущую кодовую базу magento2.1, то заметите, что в папке moduleName / etc есть файл fieldset.xml с командой для копирования информации из одной таблицы в другую. Однако это НЕ работает. Если вы посмотрите поближе, вы также заметите, что есть наблюдатель, который делает то же самое. Посмотрите на https://github.com/magento/magento2/issues/5823
Для копирования из таблицы * в заказ * вам потребуется использовать наблюдателя и / или плагин.
В свой пользовательский модуль events.xml добавьте
затем
Чтобы скопировать элемент из quote_item в order_item, magento, похоже, удалил лучшего наблюдателя, чтобы получить работу, которая была
sales_convert_quote_item_to_order_item
. Посмотрите на этот пример, который должен помочь вам скопировать поле из quote_item в таблицу order_item. Как «добавить в корзину» товар с настраиваемым полем ввода и сохранить его в базе данных?источник
Ответ Ренона Стюарта мне очень помог, но я мог бы улучшить его с помощью официальной документации разработчика magento ( http://devdocs.magento.com/guides/v2.1/ext-best-practices/tutorials/copy-fieldsets.html )
В свой пользовательский модуль events.xml добавьте:
И в saveOrderBeforeSalesModelQuoteObserver.php:
источник