Как пользовательский атрибут таблицы "товар заказа на продажу" будет сохранен также в "заказе на продажу"
Я использую плагин для преобразования "quote_item" в "sales_order_item" снизу, чтобы код работал.
public function aroundConvert(
\Magento\Quote\Model\Quote\Item\ToOrderItem $subject,
\Closure $proceed,
\Magento\Quote\Model\Quote\Item\AbstractItem $item,
$additional = []
) {
/** @var $orderItem \Magento\Sales\Model\Order\Item */
$orderItem = $proceed($item, $additional);
$orderItem->setCurrentSellerId($item->getCurrentSellerId());
return $orderItem;
}
Но теперь я хочу преобразовать данные своего пользовательского атрибута ("current_seller_id") в пользовательский столбец "sales_order".
2
Author: Tajveez Rehman, 2019-02-18
1 answers
Вы можете создать наблюдателя для события sales_model_service_quote_submit_before
. Это происходит непосредственно перед размещением преобразованного заказа. В своем наблюдателе вы можете получить доступ к предложению и объекту заказа и можете перенести значение пользовательского атрибута из предложения в заказ.
Попробуйте сделать что-то подобное в своем наблюдателе:
public function execute(\Magento\Framework\Event\Observer $observer)
{
$quote = $observer->getData('order');
$order = $observer->getData('order');
//get the current_seller_id from quote
$order->setCurrentSellerId($quote->getCurrentSellerId());
//alternative: get the current_seller_id from the first quote_item where it is set
$quoteItems = $quote->getItems();
foreach ($quoteItems as $quoteItem){
if ($quoteItem->getCurrentSellerId() != ""){
$order->setCurrentSellerId($quoteItem->getCurrentSellerId());
break;
}
}
return $this;
}
1
Author: HelgeB, 2019-02-18 14:49:43