如何以编程方式在 Magento 中的订单项上设置自定义选项

How can I set custom options on an order item in Magento programmatically

我正在以编程方式根据报价创建订单,并希望将产品的自定义选项传递给订单。为此,我试图在我创建的 orderItem 上设置自定义选项。我正在使用 $options = $itemValue->getOptions() 成功获取自定义选项数组,但我无法使用任何函数(如 setCustomOptions()、setOptions()、setProductOptions()、 setItemOptions() 等。我在这里遗漏了什么吗?

foreach ($itemsData as $itemIds => $itemValue) {
        $products[$itemValue->getProductId()] = array('qty' => $itemValue->getQty());
        $rowTotal = $itemValue->getPrice() * $itemValue->getQty();        
        $options = $itemValue->getOptions();   
        $orderItem = Mage::getModel('sales/order_item')
                ->setStoreId($storeId)
                ->setQuoteItemId(0)
                ->setQuoteParentItemId(NULL)
                ->setProductId($itemValue->getProductId())
                ->setProductType($itemValue->getTypeId())
                ->setQtyBackordered(NULL)
                ->setTotalQtyOrdered($itemValue->getRqty())
                ->setQtyOrdered($itemValue->getQty())
                ->setName($itemValue->getName())
                ->setSku($itemValue->getSku())
                ->setPrice($itemValue->getPrice())
                ->setBasePrice($itemValue->getPrice())
                ->setOriginalPrice($itemValue->getPrice())
                ->setRowTotal($rowTotal)
                ->setBaseRowTotal($rowTotal)->setItemOptions($options);
        $subTotal += $rowTotal;
        $order->addItem($orderItem);
    }

我刚刚通过以下方式从报价项目中获取了自定义选项。

$helper = Mage::helper('catalog/product_configuration');
            $options['additional_options'] = $helper->getCustomOptions($itemValue);

然后使用 setProductOptions($options)

将其设置在订单商品上

干杯!

     $orderItem = Mage::getModel('sales/order_item')
                    ->setStoreId($storeId)
                    ->setQuoteItemId(0)
                    ->setQuoteParentItemId(NULL)
                    ->setProductId($itemValue->getProductId())
                    ->setProductType($itemValue->getTypeId())
                    ->setQtyBackordered(NULL)
                    ->setTotalQtyOrdered($itemValue->getRqty())
                    ->setQtyOrdered($itemValue->getQty())
                    ->setName($itemValue->getName())
                    ->setSku($itemValue->getSku())
                    ->setPrice($itemValue->getPrice())
                    ->setBasePrice($itemValue->getPrice())
                    ->setOriginalPrice($itemValue->getPrice())
                    ->setRowTotal($rowTotal)                        ->setBaseRowTotal($rowTotal)->setProductOptions($options);