objectCopyService = $objectCopyService; $this->quoteItemCollection = $quoteItemCollection; } public function execute(\Magento\Framework\Event\Observer $observer) { /* @var $order \Magento\Sales\Model\Order */ $order = $observer->getEvent()->getData('order'); /* @var $quote \Magento\Quote\Model\Quote */ $quote = $observer->getEvent()->getData('quote'); $order->setData('customer_discount', $quote->getData('customer_discount')); $order->setData('salesperson_id', $quote->getData('salesperson_id')); $order->setDiscountAmount($quote->getData('discount_amount') + $order->getDiscountAmount()); $orderItems = $order->getItems(); $quoteItemsId = $items = []; foreach ($orderItems as $item) { $quoteItemsId[] = $item->getQuoteItemId(); } $quoteItems = $this->quoteItemCollection->addFieldToFilter('item_id', ['in'=>$quoteItemsId]) ->setItemObjectClass(\Magento\Quote\Model\Quote\Item::class) ->load(); foreach ($quoteItems as $item) { /* @var $item \Magento\Quote\Model\Quote\Item */ $items[$item->getItemId()] = $item; } $fields = ['lab_id', 'lab_code', 'pi_sap_id', 'cd', 'quote', 'pi', 'company', 'user', 'user_tel', 'user_email', 'note', 'user_type', 'customer_discount_percent', 'salesperson_id', 'item_sort' ]; foreach ($orderItems as $item) { foreach ($fields as $field) { $item->setData($field, $items[$item->getQuoteItemId()]->getData($field)); } } return $this; } }