Estoy creando un módulo personalizado en magento 2 que tiene un descuento personalizado. Estoy tratando de copiar el descuento de la cotización, la cotización del artículo al pedido y el artículo del pedido. En magento 1, declaro config.xml
así:
<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>
y mi cantidad de descuento personalizada se copió en tablas: sales_flat_order
y sales_flat_order_item
como se esperaba.
En Magento 2, creé un nombre de archivo: fieldset.xml
con este código:
<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>
Pero no hay éxito. ¿Qué más necesito hacer en magento 2 para que funcione? ¿Pueden ustedes ayudarme por favor?
Las ventas de Magento2 se convierten de cotización a pedido y su artículo no funciona
cotización Convertir el modelo de cotización a orden y su artículo se mueve del módulo de ventas al módulo de cotización en Magento2 Pero no funciona
convertir de pedido y artículo de pedido a factura, envío y Creditmemo funciona bien en Magento2
a continuación se encuentra la solución para convertir la cotización al pedido en magento2; de lo contrario, debe escribir el evento para mover todo el valor archivado de la cotización a la tabla de pedidos magento2a \ app \ code \ Sugarcode \ Test \ etc \ fieldset.xml
app \ code \ Magento \ Quote \ Model \ QuoteManagement.php (línea no 428)
antes de
en la función submitQuote () agregue el siguiente código
cambio en app \ code \ Magento \ Quote \ Model \ Quote \ Item \ ToOrderItem.php (lin no alrededor de 78)
después
en la función convert () agregue el siguiente código
funcionará bien, pero
asegúrese de que, como mencioné anteriormente, fieldset.xml debe estar allí en su módulo personalizado y también debe escribir el evento para establecer el atributo del producto una vez que el producto se agrega al carrito como en magento1.x y también debe configurar el archivo personalizado en la tabla de cotizaciones, solo se copiará de la cotización y el artículo al pedido y su artículo
fuente
He estado investigando esto, y en el módulo Magento \ GiftMessage, también hay conversión de campos (fieldset.xml):
La forma en que lo agregan al pedido es a través del observador (Observer / SalesEventQuoteSubmitBeforeObserver.php, registrado en etc / frontend / events.xml):
Entonces, supongo, esta es una opción viable a considerar.
fuente
<event name="sales_model_service_quote_submit_before"> <observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" /> </event>