57 lines
2.2 KiB
PHP
57 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Stemcell\Checkout\Observer;
|
|
|
|
use Magento\Framework\App\ObjectManager;
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class FieldCopy implements ObserverInterface
|
|
{
|
|
protected $objectCopyService;
|
|
private \Magento\Quote\Model\ResourceModel\Quote\Item\Collection $quoteItemCollection;
|
|
|
|
public function __construct(
|
|
\Magento\Framework\DataObject\Copy $objectCopyService,
|
|
\Magento\Quote\Model\ResourceModel\Quote\Item\Collection $quoteItemCollection
|
|
) {
|
|
$this->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;
|
|
}
|
|
}
|