Je crée un module personnalisé dans magento 2 qui a une remise personnalisée. J'essaie de copier la remise du devis, de l'article de devis sur la commande et de l'article de commande. Dans magento 1, je déclare config.xml
comme ceci:
<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>
et mon montant de remise personnalisé a été copié dans les tableaux: sales_flat_order
et sales_flat_order_item
comme prévu.
Dans Magento 2, j'ai créé un nom de fichier: fieldset.xml
avec ce code:
<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>
mais il n'y a pas de succès. Que dois-je faire d'autre dans magento 2 pour que cela fonctionne? Pouvez-vous m'aider s'il vous plaît?
Les ventes de Magento2 convertissent de devis en commande et son article ne fonctionne pas
devis convertit le modèle de devis en commande et son article est déplacé du module de vente en module de devis dans Magento2 Mais cela ne fonctionne pas
convertir de la commande et du poste de commande en facture, expédition et Creditmemo fonctionne bien dans Magento2
ci-dessous est le correctif pour convertir le devis en commande dans magento2 sinon vous devez écrire l'événement pour déplacer toutes les valeurs déposées du devis vers la table de commande magento2a \ app \ code \ Sugarcode \ Test \ etc \ fieldset.xml
app \ code \ Magento \ Quote \ Model \ QuoteManagement.php (ligne n ° 428)
avant
dans la fonction submitQuote () ajoutez le code ci-dessous
changement dans app \ code \ Magento \ Quote \ Model \ Quote \ Item \ ToOrderItem.php (lin no 78 environ)
après
dans la fonction convert () ajoutez le code ci-dessous
cela fonctionnera bien, mais
assurez-vous que, comme je le mentionne ci-dessus, fieldset.xml doit être présent dans votre module personnalisé et vous devez également écrire un événement pour définir l'attribut du produit une fois le produit ajouté au panier comme dans magento1.x et vous devez également définir un fichier personnalisé dans le tableau des devis alors seulement il copiera du devis et de l'article à la commande et son article
la source
J'ai étudié cela, et dans le module Magento \ GiftMessage, il y a aussi la conversion des champs (fieldset.xml):
La façon dont ils l'ajoutent à la commande est via Observer (Observer / SalesEventQuoteSubmitBeforeObserver.php, enregistré dans etc / frontend / events.xml):
Donc, je suppose que c'est une option viable à considérer.
la source
<event name="sales_model_service_quote_submit_before"> <observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" /> </event>