Magento 2: как преобразовать пользовательское поле предложения в поле заказа
Я правильно добавил новое поле "management_fee" в таблицу "цитата". Я также добавляю это поле в поле "sales_order". Я хотел бы обновить это поле в таблице sales_order, пока предложение преобразуется в заказ.
Я знаю, как работать с цитатами, используя плагин и класс Magento\Quote\Model\Quote\Item\ToOrderItem
, но я не нашел класс для цитаты на заказ.
2 answers
Добавьте поля в обе таблицы quote
и sales_order
с помощью сценария настройки в вашем модуле.
Затем добавьте событие в свой модуль (см. Ниже)
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_model_service_quote_submit_before">
<observer name="quote_submit_before" instance="Vendor\Module\Observer\QuoteSubmitBefore" />
</event>
</config>
Наконец, сохраните данные котировки в соответствии с вашим заказом
class QuoteSubmitBefore implements ObserverInterface
{
/**
* @param Observer $observer
* @return void
*/
public function execute(Observer $observer)
{
$quote = $observer->getQuote();
$order = $observer->getOrder()
$order->setData('field_custom', $quote->getData('field_custom'));
}
}
Я на самом деле не в курсе этой вещи, но вы можете попробовать, я надеюсь, что это сработает для вас. Создайте fieldset.xml в папке etc вашего модуля.
Fieldset.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:DataObject/etc/fieldset.xsd">
<scope id="global">
<fieldset id="sales_convert_quote">
<field name="management_fee">
<aspect name="to_order" />
</field>
</fieldset>
</scope>
</config>
Вы также должны проверить ссылку ниже https://devdocs.magento.com/guides/v2.2/ext-best-practices/tutorials/copy-fieldsets.html