Eu criei um modelo personalizado para criar pedidos a partir de cotações; Estou usando o fieldset.xml para copiar códigos personalizados de cotação para solicitar. Criei colunas personalizadas na cotação e na ordem com os campos correspondentes. Quando o pedido é feito, os valores são armazenados nos campos personalizados de cotação, mas não são copiados no pedido. Abaixo está o meu 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>
O que mais eu preciso fazer?
Respostas:
Se você der uma olhada na base de código atual do magento2.1, notará que na pasta moduleName / etc existe um fieldset.xml com comando para copiar informações de uma tabela para outra. No entanto, isso NÃO funciona. Se você olhar mais de perto, também notará que existe um observador que faz exatamente a mesma coisa. Dê uma olhada em https://github.com/magento/magento2/issues/5823
Para copiar da tabela de cotação * para pedido *, você precisará usar um observador e / ou plugin.
No seu módulo events.xml personalizado, inclua
Então
Para copiar o item de quote_item para order_item, o magento parece ter removido o melhor observador para conseguir o trabalho que era
sales_convert_quote_item_to_order_item
. Dê uma olhada neste exemplo que deve ajudá-lo a copiar o campo da tabela quote_item para order_item. Como "adicionar ao carrinho" um produto com campo de entrada personalizado e salvá-lo no banco de dados?fonte
A resposta de Renon Stewart me ajudou muito, mas eu poderia melhorá-la com a documentação oficial do desenvolvedor do magento ( http://devdocs.magento.com/guides/v2.1/ext-best-practices/tutorials/copy-fieldsets.html )
No seu módulo customizado events.xml, adicione:
E no saveOrderBeforeSalesModelQuoteObserver.php:
fonte