Magento 2 – How to Convert Custom Quote Field to Order Field

convertcustom-fieldmagento2quote

I added a new field "management_fee" on table "quote" properly. I add this field on "sales_order" field too.
I would like to update this field on sales_order table while quote is converting to order.

I know how to do with quote items using plugin and Magento\Quote\Model\Quote\Item\ToOrderItem class, but I did not find a class for quote to order.

Best Answer

add the fields to both table quote and sales_order via a setup script in your module.

Then add an event in your module (see below)

 <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
        <event name="sales_model_service_quote_submit_before">
            <observer name="quote_submit_before" instance="Vendor\Module\Observer\QuoteSubmitBefore" />
        </event>
    </config>

Finally save the quote data against your order

class QuoteSubmitBefore implements ObserverInterface
{

    /**
     * @param Observer $observer
     * @return void
     */
    public function execute(Observer $observer)
    {
       $quote = $observer->getQuote();
       $order = $observer->getOrder()

        $order->setData('field_custom', $quote->getData('field_custom'));      
    }
}
Related Topic