Ich habe ein benutzerdefiniertes Modell erstellt, um eine Bestellung aus dem Angebot zu erstellen. Ich verwende fieldset.xml, um benutzerdefinierte Angebotscodes auf Bestellung zu kopieren. Ich habe benutzerdefinierte Spalten in Angebot und Reihenfolge mit übereinstimmenden Feldern erstellt. Wenn eine Bestellung aufgegeben wird, werden Werte in benutzerdefinierten Angebotsfeldern gespeichert, jedoch nicht in die Bestellung kopiert. Unten ist meine 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>
Was muss ich noch tun?
Antworten:
Wenn Sie sich die aktuelle magento2.1-Codebasis ansehen, werden Sie feststellen, dass sich im Ordner moduleName / etc eine fieldset.xml mit dem Befehl befindet, Informationen von einer Tabelle in eine andere zu kopieren. Dies funktioniert jedoch NICHT. Wenn Sie genauer hinschauen, werden Sie auch feststellen, dass es einen Beobachter gibt, der genau das Gleiche tut. Schauen Sie sich https://github.com/magento/magento2/issues/5823 an
Um von der Angebots- * zur Bestell * -Tabelle zu kopieren, müssen Sie einen Beobachter und / oder ein Plugin verwenden.
Fügen Sie in Ihrem benutzerdefinierten Modul events.xml hinzu
Dann
Um den Artikel von quote_item nach order_item zu kopieren, hat magento anscheinend den besten Beobachter entfernt, um den Job zu erhalten, der war
sales_convert_quote_item_to_order_item
. Schauen Sie sich dieses Beispiel an, das Ihnen beim Kopieren des Felds von quote_item in die Tabelle order_item helfen soll. Wie kann ich ein Produkt mit einem benutzerdefinierten Eingabefeld in den Warenkorb legen und in der Datenbank speichern?quelle
Die Antwort von Renon Stewart hat mir sehr geholfen, aber ich konnte sie mit der offiziellen Magento-Entwicklerdokumentation verbessern ( http://devdocs.magento.com/guides/v2.1/ext-best-practices/tutorials/copy-fieldsets.html ).
Fügen Sie in Ihrem benutzerdefinierten Modul events.xml Folgendes hinzu:
Und in der Datei saveOrderBeforeSalesModelQuoteObserver.php:
quelle