Я бы хотел получить цену товара с ценой опциона с помощью пользовательского модуля, который рассчитывает цену товара по формуле, я хотел бы использовать функцию, не добавляя товар в корзину.
Функция получения элемента цитаты paramter
public function getProductFinalPrice($item, $forReindex = false, $storeId = null)
Так что я подумал добавить цитату с запросом на покупку info_buyRequest Я попробовал это
$product = $this->_objectManager->create('Magento\Catalog\Model\Product')->load(5862);
$customOptions = $this->_objectManager->get('Magento\Catalog\Model\Product\Option')->getProductOptionCollection($product);
$item = $this->_objectManager->create('Magento\Quote\Model\Quote\Item');
$options = $this->_objectManager->get('Magento\Quote\Model\ResourceModel\Quote\Item\Collection');
$quote = $this->cart->getQuote();
$quote->addProduct($product);
$quote->save();
$options->setQuote($quote);
//$options->addItemFilter($item->getId());
$item->setQuote($quote)->setProduct($product)->setQty($qty);
foreach ($options as $option) {
$item->addOption($option);
}
$infoBuyRequest = [
"info_buyRequest" => [
"uenc" => "aHR0cHM6Ly93d3cud2V0YWcuY2EvZW5fY2EvbmFtZS10YWdzL25hbWUtdGFncy1pbnNwaXJhdGlvbi9jdXN0b20tbmFtZS10YWctb3JkZXIv",
"product" => 5862,
"qty" => $qty
]
];
$option = $this->_objectManager->create(
\Magento\Quote\Model\Quote\Item\Option::class,
['data' => $infoBuyRequest]
);
$item->addOption($option);
$item->setProductOptions($infoBuyRequest);
var_dump($this->_getBuyRequest($item));
var_dump($this->_getBuyRequest($item)); return
object(Magento\Framework\DataObject)#3647 (1) {
["_data":protected]=>
array(2) {
["original_qty"]=>
NULL
["qty"]=>
int(100)
}
}
Мне нравится получать что-то с info_buyrequest
[
"info_buyRequest" => [
"uenc" => "aHR0cHM6Ly93d3cud2V0YWcuY2EvZW5fY2EvbmFtZS10YWdzL25hbWUtdGFncy1pbnNwaXJhdGlvbi9jdXN0b20tbmFtZS10YWctb3JkZXIv",
"product" => 5862,
"qty" => $qty
]
]
Это функция _getBuyRequest
public function _getBuyRequest($item) {
$option = $item->getOptionByCode('info_buyRequest');
if ($option) {
$value = json_decode($option->getValue(), true); //in M2.2 json used for the buy request
if (is_null($value))
$value = unserialize($option->getValue()); //in M<2.2 the buy request is serialized
} else
$value = [];
$buyRequest = new \Magento\Framework\DataObject($value);
// Overwrite standard buy request qty, because item qty could have changed since adding to quote
$buyRequest->setOriginalQty($buyRequest->getQty())
->setQty($item->getQty() * 1);
return $buyRequest;
}
Так как добавить info_buyRequest? Я хотел бы загрузить параметры в элементе цитаты.