2013-04-01 19 views
5

Ho un negozio Magento con due valute, e i miei articoli nel carrello hanno un prezzo dinamico. Ho con successo calcolare mio prezzo quote_item, con un osservatore e setCustomPrice e prezzo setOriginalCustomCome gestire il prezzo di oggetti di quotazioni multiple e personalizzate su Magento?

$quote_item->setCustomPrice($price); 
$quote_item->setOriginalCustomPrice($price); 

E il mio osservatore:

<sales_quote_add_item> 

Ma ho un problema, quando cambio la valuta del mio negozio, la il subtotale non è aggiornato. Come gestire il prezzo degli articoli con quotazioni multiple e personalizzate?

+0

ho lo stesso problema qui, qualsiasi soluzione hai trovato? –

+0

Ciao @Guillaume, ho lo stesso problema. Hai trovato qualche soluzione? per favore condividi qui –

risposta

-3

Probabilmente perdere una chiamata a:

$quote->collectTotals()->save(); 
0

maniglia attraverso osservatore

< sales_quote_item_set_product>

$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode(); 
$currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode(); 
if($currentCurrencyCode!=$baseCurrencyCode) 
    $price= Mage::helper('directory')->currencyConvert($baseprice, $baseCurrencyCode, $currentCurrencyCode); 
else 
    $price = $baseprice; 

$item->setPrice($baseprice); 
$item->setRowTotal($item->getQty() * $price); 
1

Ho avuto questo stesso problema nel corso della la settimana scorsa. Usare il metodo -> setOriginalCustomPrice va bene per un sito a moneta unica, ma con il cambio di valuta, la sua rigidità significa che è necessario aggiornare gli articoli del carrello e il prezzo di listino ogni volta che si cambia valuta, il che è molto inefficiente secondo me.

Mi è venuta una soluzione più elegante. Crea un modulo e all'interno della sezione del modello della tua configurazione aggiungi questo;

<models> 
     <catalog> 
      <rewrite> 
       <product>PixieMedia_CustomPrice_Model_Product</product> 
      </rewrite> 
     </catalog> 
</models> 

Counter intuitivamente, la funzione principale -> getFinalPrice si trova nel modello del prodotto e non nel modello di prezzo.

Ora create il vostro nuovo modello Product.php in /app/code/local/Namespace/Module/Model/Product.php

class PixieMedia_CustomPrice_Model_Product extends Mage_Catalog_Model_Product { 

public function getFinalPrice($qty=null) 
// REWRITTEN FUNCTION TO RETURN THE SPECIAL PRICE AND ENSURE CURRENCY CONVERSION 
{ 
    $qBreak = false; 
    $customPrice = Mage::Helper('pixiemedia_customprice')->getCustomerPrice($this); 

    if($qty) { 
     $qBreak = $this->getQtyBreakPrice($this->getSku(),$qty,$customPrice[0]); 
     } 

    if($qBreak) { return $qBreak; } else { return $customPrice[0]; } 

} 

} 

In particolare progetto su cui stavo lavorando, il client utilizza multipla listini prezzi per i prezzi specifici del cliente, il cui scopo renderebbe Magento orrendamente lento all'indice dei prezzi. Pertanto, abbiamo caricato tutti i dati su una tabella personalizzata ed eseguito una ricerca per restituire il prezzo corretto o l'interruzione per clic del cliente.

È facile agganciare la propria logica e restituire qualsiasi prezzo desiderato. Questo supporta pienamente la conversione di valuta, quindi non c'è bisogno di smanettare per riconvertire i prezzi.

Spero che questo aiuti qualcuno fuori. Divertiti :)

Problemi correlati