Magento 2: Добавьте товар в корзину программно с пользовательской ценой


Я хочу добавить товар с пользовательской ценой только в корзину/при оформлении заказа, но на первоначальную цену товара это не должно повлиять.

До сих пор я добивался этого.Я добавляю продукт программно на основе некоторого условия. Не используя никакого наблюдателя или что-то в этом роде, я просто передаю идентификатор продукта своему пользовательскому контроллеру и добавляю этот продукт в корзину.

public function execute(){
    ....
    $productObj->setData('_edit_mode', true);
    $productObj->setPrice(8000);
    $productObj->setFinalPrice(8000);
    $productObj->save();
    $this->cart->addProduct($productObj, $product);
    ....
    $this->cart->save();
}

Используя вышеуказанную функцию, изменяется только первоначальная цена товара, но не в корзине, так что можно сделать, чтобы сделать итак?

Author: Kaushal Suthar, 2017-03-16

1 answers

Я решил, следуя

public function execute(){
    ....
    $finalPrice =  $totalQty * $product->getKrat() * $price;
    $item->setCustomPrice($product->getKrat() * $price);
    $item->setOriginalCustomPrice($finalPrice);
    $item->getProduct()->setIsSuperMode(true);
    $item->setQty(0);
    $item->save();
}
 0
Author: Kaushal Suthar, 2017-06-22 11:42:12