Buduję moduł niestandardowy w Magento 2, który ma niestandardową zniżkę. Próbuję skopiować rabat z oferty, wycenić przedmiot na zamówienie i zamówić przedmiot. W magento 1 deklaruję w config.xml
następujący sposób:
<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>
a moja niestandardowa kwota rabatu została skopiowana do tabel: sales_flat_order
i sales_flat_order_item
zgodnie z oczekiwaniami.
W Magento 2 stworzyłem nazwę pliku: fieldset.xml
z tym kodem:
<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>
ale nie ma sukcesu. Co jeszcze muszę zrobić w Magento 2, aby działało? Czy możecie mi pomóc?
Sprzedaż Magento2 konwertuje z oferty na zamówienie, a jej produkt nie działa
oferta Konwertuj model oferty z oferty na zamówienie, a jej produkt jest przenoszony z modułu sprzedaży do modułu oferty w Magento2 Ale nie działa
Konwertuj z zamówienia i pozycji zamówienia na fakturę, wysyłkę i Creditmemo działa dobrze w Magento2
poniżej znajduje się poprawka do konwersji wyceny na zamówienie w magento2, w przeciwnym razie musisz napisać zdarzenie, aby przenieść całą zapisaną wartość z wyceny do tabeli zamówień magento2a \ app \ code \ Sugarcode \ Test \ etc \ fieldset.xml
app \ code \ Magento \ Quote \ Model \ QuoteManagement.php (linia nr 428)
przed
w funkcji submQuote () dodaj poniższy kod
zmiana w aplikacji \ code \ Magento \ Quote \ Model \ Quote \ Item \ ToOrderItem.php (nr linii około 78)
po
w funkcji convert () dodaj poniższy kod
będzie działał dobrze, ale
upewnij się, że jak wspomniałem powyżej, fieldset.xml powinien być w twoim module niestandardowym, a także powinieneś napisać zdarzenie, aby ustawić atrybut produktu, gdy produkt zostanie dodany do koszyka, jak w magento1.x, a także powinieneś ustawić niestandardowe pole w tabeli wycen tylko wtedy skopiuje wycenę i przedmiot na zamówienie oraz jego przedmiot
źródło
Patrzyłem na to, aw module Magento \ GiftMessage jest także konwersja pól (fieldset.xml):
Dodają go do zamówienia za pośrednictwem obserwatora (Observer / SalesEventQuoteSubmitBeforeObserver.php, zarejestrowanego w etc / frontend / events.xml):
Myślę, że jest to realna opcja do rozważenia.
źródło
<event name="sales_model_service_quote_submit_before"> <observer name="giftmessage" instance="Magento\GiftMessage\Observer\SalesEventQuoteSubmitBeforeObserver" shared="false" /> </event>