Я создаю пользовательский модуль в magento 2, который имеет пользовательскую скидку. Я пытаюсь скопировать скидку из цитаты, цитата товара на заказ и заказ товара. В magento 1 я заявляю config.xml
так:
<fieldsets>
<sales_convert_quote_address>
<custom_discount_amount><to_order>*</to_order></custome_discount_amount>
<base_custom_discount_amount><to_order>*</to_order></base_custome_discount_amount>
</sales_convert_quote_address>
<sales_convert_quote_item>
<custome_discount_amount><to_order_item>*</to_order_item></custome_discount_amount>
<base_custom_discount_amount><to_order_item>*</to_order_item></base_custom_discount_amount>
</sales_convert_quote_item>
</fieldsets>
и моя сумма скидки была скопирована в таблицы: sales_flat_order
и, sales_flat_order_item
как и ожидалось.
В Magento 2 я создал имя файла: fieldset.xml
с этим кодом:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Object/etc/fieldset.xsd">
<scope id="global">
<fieldset id="sales_convert_quote_item">
<field name="custom_discount_amount">
<aspect name="to_order_item" />
</field>
<field name="base_custom_discount_amount">
<aspect name="to_order_item" />
</field>
</fieldset>
<fieldset id="sales_convert_quote_address">
<field name="custom_discount_amount">
<aspect name="to_order" />
</field>
<field name="base_custom_discount_amount">
<aspect name="to_order" />
</field>
</fieldset>
</scope>
но успеха нет. Что еще мне нужно сделать в magento 2, чтобы это работало? Ребята, не могли бы вы мне помочь?
Продажи в Magento2 конвертируются из предложения в заказ, и его элемент не работает.
Предложение преобразует модель для предложения в заказ, и его элемент перемещается из модуля продаж в модуль Quote в Magento2, но он не работает.
конвертировать из заказа и позиции заказа в накладную, отгрузку и Creditmemo отлично работает в Magento2
ниже приведено исправление для преобразования котировки в заказ в magento2, в противном случае вам нужно написать событие для перемещения всех значений поля из цитаты в таблицу заказов magento2a \ app \ code \ Sugarcode \ Test \ etc \ fieldset.xml
app \ code \ Magento \ Quote \ Model \ QuoteManagement.php (строка № 428)
перед
в функции submitQuote () добавьте ниже код
изменить в приложении \ code \ Magento \ Quote \ Model \ Quote \ Item \ ToOrderItem.php (номер строки около 78)
после
в функции convert () добавьте код ниже
он будет работать нормально, но
убедитесь, что, как я упоминал выше, в вашем пользовательском модуле должен присутствовать fieldset.xml, а также вы должны написать событие для установки атрибута продукта, как только продукт будет добавлен в корзину, как в magento1.x, а также вы должны установить пользовательский файл в таблице котировок, то только он будет копировать из цитаты и товара в заказ и его товар
источник
Я изучал это, и в модуле Magento \ GiftMessage есть также преобразование полей (fieldset.xml):
Они добавляют его в заказ через наблюдателя (Observer / SalesEventQuoteSubmitBeforeObserver.php, зарегистрированный в etc / frontend / events.xml):
Так что, я думаю, это жизнеспособный вариант для рассмотрения.
источник
<event name="sales_model_service_quote_submit_before"> <observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" /> </event>