<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Quote\Model\Quote\Item\ToOrderItem">
<plugin name="unique_name" type="Vendor\ModuleName\Plugin\ToOrderItem" sortOrder="1" />
</type>
</config>
<?php
namespace Vendor\ModuleName\Plugin;
use Magento\Quote\Model\Quote\Item\ToOrderItem as QuoteToOrderItem;
class ToOrderItem
{
/**
* aroundConvert
*
* @param QuoteToOrderItem $subject
* @param \Closure $proceed
* @param \Magento\Quote\Model\Quote\Item $item
* @param array $data
*
* @return \Magento\Sales\Model\Order\Item
*/
public function aroundConvert(
QuoteToOrderItem $subject,
\Closure $proceed,
$item,
$data = []
) {
// Get Order Item
$orderItem = $proceed($item, $data);
// Get Quote Item's additional Options
$additionalOptions = $item->getOptionByCode('additional_options');
// Check if there is any additional options in Quote Item
if ($additionalOptions->getValue()) {
// Get Order Item's other options
$options = $orderItem->getProductOptions();
// Set additional options to Order Item
$options['additional_options'] = json_decode($additionalOptions->getValue());
$orderItem->setProductOptions($options);
}
return $orderItem;
}
}
Top comments (0)