Ich erstelle ein benutzerdefiniertes Modul in Magento 2, das einen benutzerdefinierten Rabatt hat. Ich versuche, den Rabatt von Angebot, Angebotsposition zu Bestellung und Bestellposition zu kopieren. In Magento 1 erkläre ich in config.xml
etwa so:
<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>
und mein benutzerdefinierter Rabattbetrag wurde in Tabellen kopiert: sales_flat_order
und sales_flat_order_item
wie erwartet.
In Magento 2 habe ich einen Dateinamen erstellt: fieldset.xml
mit diesem 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>
aber es gibt keinen Erfolg. Was muss ich in Magento 2 noch tun, damit es funktioniert? Könnt ihr mir bitte helfen?
Magento2-Verkauf konvertiert von Angebot zu Bestellung und sein Artikel funktioniert nicht
Angebot Modell für Angebot zu Bestellung konvertieren und sein Artikel wird in Magento2 vom Verkaufsmodul zum Angebotsmodul verschoben Aber es funktioniert nicht
Umstellung von Bestellung und Bestellposition auf Rechnung, Versand und Creditmemo funktioniert in Magento2 einwandfrei
Im Folgenden finden Sie das Update zum Konvertieren des Angebots in eine Bestellung in Magento2. Andernfalls müssen Sie ein Ereignis schreiben, um den gesamten abgelegten Wert aus dem Angebot in die Bestellungstabelle Magento2a \ app \ code \ Sugarcode \ Test \ etc \ fieldset.xml zu verschieben
app \ code \ Magento \ Quote \ Model \ QuoteManagement.php (Zeile Nr. 428)
Vor
Fügen Sie in der Funktion submitQuote () den folgenden Code hinzu
Änderung in App \ Code \ Magento \ Quote \ Model \ Quote \ Item \ ToOrderItem.php (Lin-Nr. ca. 78)
nach
in function convert () füge den folgenden Code hinzu
es wird gut funktionieren, aber
stellen Sie sicher, wie oben erwähnt, dass fieldset.xml in Ihrem benutzerdefinierten Modul vorhanden sein sollte und Sie sollten auch ein Ereignis schreiben, um das Produktattribut festzulegen, sobald das Produkt wie in magento1.x in den Warenkorb gelegt wurde In der Angebotstabelle wird dann nur von Angebot und Artikel zu Bestellung und seinem Artikel kopiert
quelle
Ich habe dies untersucht und im Magento \ GiftMessage-Modul gibt es auch eine Konvertierung von Feldern (fieldset.xml):
Die Art und Weise, wie sie es zur Bestellung hinzufügen, erfolgt über Observer (Observer / SalesEventQuoteSubmitBeforeObserver.php, registriert in etc / frontend / events.xml):
Ich denke, dies ist eine realisierbare Option.
quelle
<event name="sales_model_service_quote_submit_before"> <observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" /> </event>