Modifica del prezzo in virgola mentre aggiungi il prodotto al carrello: magento

Voglio cambiare il prezzo del prodotto mentre aggiungo quel prodotto al carrello.

Come è ansible fammi sapere …

Il modo per farlo è aggiungere un osservatore che cerca questo evento 'sales_quote_add_item' :

     singleton mymodule/observer updatePrice     

L’osservatore dovrebbe avere un metodo che faccia qualcosa del genere:

 public function updatePrice($observer) { $event = $observer->getEvent(); $quote_item = $event->getQuoteItem(); $new_price =  $quote_item->setOriginalCustomPrice($new_price); $quote_item->save(); } 

Puoi utilizzare una class observer per ascoltare checkout_cart_product_add_after e utilizzare la “Modalità Super” di un prodotto per impostare i prezzi personalizzati rispetto all’elemento del preventivo.

Nel tuo /app/code/local/{namespace}/{yourmodule}/etc/config.xml:

  ...  ...     {{modulename}}/observer modifyPrice     ...  ...  

E quindi creare una class Observer su /app/code/local/{namespace}/{yourmodule}/Model/Observer.php

  __Model_Observer { public function modifyPrice(Varien_Event_Observer $obs) { $customPrice = Mage::getSingleton('core/session')->getCustomPriceCalcuation(); // Provide you price i have set with session $p = $obs->getQuoteItem(); $p->setCustomPrice($customPrice)->setOriginalCustomPrice($customPrice); } } 

Il problema relativo al prodotto configurabile è stato risolto. Basta rimuovere il

$ quote_item-> save ();

e quindi per il prodotto non verrà aggiunto al carrello due volte. Ma un altro problema molto serio rimane in questa funzione. Cioè, con questa funzione possiamo aggiornare il prezzo dell’articolo nel carrello ma dopo averlo aggiunto al carrello, il prezzo del prodotto non viene cambiato in base alla valuta differente. Quindi questa funzione non può essere utilizzata per un negozio con più valute.

Se qualcuno trova una soluzione su quel problema, per favore condividi con noi …

Zuppa di noci

File: /app/etc/modules/config.xml

     local true    

File: /app/code/local/Ajax/ProductAdjust/etc/config.xml

     1.0.1      Ajax_ProductAdjust_Model       singleton Ajax_ProductAdjust_Model_Observer updatePrice       

File: /app/code/local/Ajax/ProductAdjust/Model/Observer.php

 getEvent(); $quote_item = $event->getQuoteItem(); $new_price = $this->getNewPrice(); $quote_item->setOriginalCustomPrice($new_price); $quote_item->save(); } } 

Saluti,

Come onesti ha risposto Gershon Herczeg, Jürgen Thelen e Xman Classical. Dovrai scrivere un osservatore dell’evento sales_quote_add_item. Quando un prodotto viene aggiunto al carrello, verrà triggersto il tuo osservatore. Se il prodotto è configurabile, questo evento verrà triggersto due volte. Dovrai fare qualcosa del genere solo per ottenere un prodotto semplice.

  $item = $observer->getEvent()->getQuoteItem(); $quote = $item->getQuote(); $product = $item->getProduct(); if ($product->getTypeId() != "configurable") { //Do your thing here } 

La domanda non dice se questo dovrebbe essere fatto aggiungendo qualche logica al codice oppure no. Quindi, dato che hai le risposte per lo sviluppatore, c’è anche qualcosa che si chiama regole del prezzo del carrello (nel pannello di amministrazione vai a Promozioni> Regole del prezzo del carrello acquisti) dove puoi creare regole diverse per effettuare vendite e sconti (con o senza coupon).

  To change product price while adding product to cart, use an observer event. Follow the steps given below 1. Add an observer in your module config.xml file. 2. Create an observer file in your model 3. add checkout_cart_product_add_after event 

File: app / code / local / Namespace / Module / etc / config.xml

es .: app / code / local / MGS / Rileytheme / etc / config.xml

     standard  MGS_Rileytheme rileytheme       rileytheme.xml        rileytheme/observer modifyPrice      

File: app / code / local / MGS / Rileytheme / Modello / Observer.php

 class MGS_Rileytheme_Model_Observer { public function modifyPrice(Varien_Event_Observer $observer) { //$order = Mage::registry('current_order'); For getting current order //$orderid = $order->getRealOrderId(); For getting orderid $quote_item = $observer->getQuoteItem(); $payment = 30; //add your custom product price here and do your logic here $quote_item->setOriginalCustomPrice($payment); $quote_item->save(); return $this; } }