Magento 2: aggiornamento articolo preventivo


10

Sto cercando di aggiornare l'articolo di preventivo in magento2. Ma ogni volta che sto salvando l'articolo, crea un nuovo oggetto con lo stesso ID preventivo anziché aggiornarlo. Ecco il mio codice

    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();
    }
 }

Ma ogni volta che si salva un oggetto ... viene generato un nuovo oggetto. Non so perché. Inoltre I couldn't find any class which explicitly load qoute item in magento2. L'aiuto sarà apprezzato.

In questa domanda /magento/139298/how-to-save-quote-items-in-magento-2stanno impostando l'intero prodotto ... non stanno provando ad aggiornarlo. Quando si imposta un prodotto, verrà sicuramente generato un nuovo articolo di preventivo. Ma perché fa lo stesso in caso di aggiornamento.



1
Non uguale. Ho modificato la mia domanda. @AnkitShah, controlla.
Kingshuk Deb,

Per Magento 2.2+ fai riferimento a questo - magento.stackexchange.com/a/182152/4492
Rohan Patil

Risposte:


16

Non sono sicuro della mia soluzione di seguito:

  • Potrebbe essere necessario caricare l' oggetto oggetto preventivo per ID articolo
  • Poiché desideri impostare il prezzo, quindi utilizzando setPrice () non puoi impostare il prezzo desiderato per l'articolo del carrello
$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
come aggiornare opzioni aggiuntive
sivakumar

ciao @Amit, Come aggiornare taxAmount per l'articolo?, possiamo impostare un importo fiscale personalizzato per il singolo articolo preventivo?
jafar pinjar

2

La funzionalità di cui stai chiedendo è già stata eseguita e Magento\Checkout\Controller\Cart\UpdatePost viene eseguita quando aggiorniamo il carrello nella pagina del carrello di magento. Esegue la updateItems()funzione di Magento\Checkout\Model\Cartaggiornamento degli elementi nella quote_itemtabella. Prende il parametro sotto forma di matrice $data ['item id of product']['attribute you want to update'].

Quindi, puoi chiamare updateItems()l'oggetto modello carrello e passare i dati di conseguenza per aggiornare gli articoli. Inoltre, se non ricevi l'ID articolo, puoi ottenerlo come $this->cart->getQuote()->getAllItems()e quindi chiamare getItemId()ogni articolo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.