Magento 2:見積もりアイテムの更新


10

magento2の見積もりアイテムを更新しようとしています。しかし、アイテムを保存するたびに、更新するのではなく、同じ引用IDで新しいアイテムを作成します。これが私のコードです

    public function __construct(
            \Magento\Quote\Model\QuoteRepository $quoteRepo
        ){
            $this->_quoteRepo = $quoteRepo;
        }

public function updateItem(){
    $quote = $this->_quoteRepo->get('id here');
    foreach($quote->getAllVisibleItems() as $itemq){
    $itemq->setQty(5);
    $itemq->setPrice(20);
    $itemq->save();
    }
 }

ただし、アイテムを保存するたびに新しいアイテムが生成されます。理由がわからない。またI couldn't find any class which explicitly load qoute item in magento2。助けていただければ幸いです。

この質問/magento/139298/how-to-save-quote-items-in-magento-2では、彼らは製品全体を設定しています...それを更新しようとはしていません。製品を設定すると、新しい見積もりアイテムが確実に生成されます。しかし、なぜ更新の場合に同じことをするのか。



1
同じではありません。質問を編集しました。@AnkitShahを確認してください。
Kingshuk Deb 2017

Magento 2.2+については、これを参照してください-magento.stackexchange.com/a/182152/4492
Rohan Patil

回答:


16

私の以下の解決策についてはわかりません:

  • アイテムIDでQuoteアイテムオブジェクトをロードする必要があるかもしれません
  • セット価格が必要なのでsetPrice()を使用して、そのカートアイテムの希望価格を設定することはできません。
$item = $quote->getItemById($item->getId());
if (!$item) {
  continue;
}
$item->setQty((double) $qty);
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
$item->getProduct()->setIsSuperMode(true);
$item->save(); 

1
追加オプションの更新方法
sivakumar 2018

こんにちは@Amit、アイテムのtaxAmountを更新する方法?、個別の見積もりアイテムにカスタム税額を設定できますか?
jafar pinjar

2

Magento\Checkout\Controller\Cart\UpdatePost magentoのカートページでカートを更新したときに実行される機能は、すでに実行されています。テーブル内のアイテムを更新するupdateItems()機能を実行Magento\Checkout\Model\Cartquote_itemます。配列の形式でパラメーターを受け取ります$data ['item id of product']['attribute you want to update']

したがって、updateItems()カートモデルオブジェクトを呼び出し 、それに応じてデータを渡してアイテムを更新できます。$this->cart->getQuote()->getAllItems()また、アイテムIDを取得していない場合は、同様に取得しgetItemId()て各アイテムを呼び出すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.