2014-04-23 42 views
6

Nella lista dei prodotti ho bisogno di visualizzare il prezzo del prodotto con e senza tasse alla volta.Come visualizzare il prezzo del prodotto con e senza imposte alla volta nell'elenco dei prodotti per Prestashop?

Sto usando la versione 1.6 di Prestashop.

In questo momento il prezzo al lordo delle imposte viene visualizzato nell'elenco dei prodotti. Voglio visualizzare anche il prezzo al netto delle tasse.

Come posso farlo? Ho cercato una soluzione e non sono riuscito a trovare una soluzione funzionante per me.

risposta

9

Trovare il seguente blocco in product-list.tpl:

{foreach from=$products item=product name=products} 

Aggiungere questo prezzo per visualizzare IVA esclusa:

{convertPrice price=$product.price_tax_exc} 

Assicurarsi che durante lo sviluppo Template compilation è impostato su Force compilation e Cache è impostato su No in Backoffice PrestaShop ->Advanced Parameters ->Performance.

2

Nel mio caso si lavora per imposta di default escl .:

{convertPrice price=$product->getPrice(false, $smarty.const.NULL)} ({l s='tax excl.'}) 
0

È possibile utilizzare lo strumento professionale con molte opzioni per visualizzare doppio prezzo (IVA compresa e Iva escl insieme). Puoi trovarlo nel negozio di add-on di prestashop con il nome di modulo "Doppia visualizzazione di tasse incluse e tasse escluse".

0

Ho un problema simile in lista ordine prima del checkout. Il messaggio di errore visualizza l'importo totale e l'importo del prodotto senza tasse. Così ho modificato il file in controller> anteriore> OrderController.php (PS 1.6) Alla linea 63

// Check minimal amount 
    $currency = Currency::getCurrency((int)$this->context->cart->id_currency); 

    $orderTotal = $this->context->cart->getOrderTotal(); 
    $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); 

    if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) { 
     $_GET['step'] = $this->step = 0; 
     $this->errors[] = sprintf( 
      Tools::displayError('A minimum purchase total of %1s (tax excl.) is required to validate your order, current purchase total is %2s (tax excl.).'), 
      Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS), $currency)  
     );      
    } 

con il seguente codice

// Check minimal amount 
    $currency = Currency::getCurrency((int)$this->context->cart->id_currency); 

    $orderTotal = $this->context->cart->getOrderTotal(); 
    $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); 

    # modified (total amount included tax - only for screen error) 

    $minimal_purchase_2 = round(Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency)*1.22,1);  
    $productTotal = round($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)*1.22,1); 

    if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) { 
     $_GET['step'] = $this->step = 0; 
     $this->errors[] = sprintf(     
      Tools::displayError('A minimum purchase total of %1s (tax incl.) is required to validate your order, current purchase total is %2s (tax incl.).'), 
      Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($productTotal, $currency) 
     );      
    } 

che devo risolvere per ottenere il valore fiscale effettivo (al momento ho inserito 1.22 per il valore fiscale dell'Italia).

Alla fine è necessario tradurre in localizzazione la nuova frase. Spero che qualcuno possa completare o meglio risolvere questa domanda.

+0

C'è una soluzione molto più semplice per mostrare in PHP quei valori. Avrai bisogno di id_product e id_product_attribute e con questo dovrai creare un nuovo oggetto prodotto da $ p = nuovo prodotto (tuo_prodotto_di_prodotto) e successivamente $ p-> getPrice (true, id_product_attribute) e questo è per il prezzo con tasse. Per senza tasse usa falso nel primo parametro. –

-1

Soluzione semplice

Vai su Clienti -> Gruppi e fare clic su Modifica sul gruppo che si desidera modificare: opzione di metodo di visualizzazione prezzo

Trova e selezionare Prezzo incluso o escluso come si desidera quindi Salva modifiche:

selezionare con ctrl + f5. Fine

+0

Vuole mostrare i prezzi con e senza tasse in una sola volta. Non uno di loro. – Smokinggunz

0

So che esiste già una risposta accettata ma avevo bisogno di ulteriori informazioni su come ottenere un prezzo del prodotto.

La classe di prodotto integrata Prestashop ha il metodo getPrice.

/** 
* Get product price 
* Same as static function getPriceStatic, no need to specify product id 
* 
* @param bool $tax With taxes or not (optional) 
* @param int $id_product_attribute Product attribute id (optional) 
* @param int $decimals Number of decimals (optional) 
* @param int $divisor Util when paying many time without fees (optional) 
* @return float Product price in euros 
*/ 
public function getPrice($tax = true, $id_product_attribute = null, $decimals = 6, 
    $divisor = null, $only_reduc = false, $usereduc = true, $quantity = 1) 
{ 
    return Product::getPriceStatic((int)$this->id, $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity); 
} 

Come si può vedere è possibile specificare se si desidera che con le tasse, il numero di decimali dato come risultato, e il numero divisore.

Quindi, se si vuole ottenere il prezzo del prodotto per ID con e senza tasse si può raggiungere in questo modo

$product = new Product($id_product, $id_language) // Fill with your info 
$price_with_taxes = $product->getPrice(true); 
$price_wout_taxes = $product->getPrice(false); 

Come altri commenti dicono, se sei all'interno di un modello, è possibile ottenere il prodotto id in base alla vista che stai modificando.

In product.tpl (la vista del singolo prodotto) è presente una variabile del prodotto $. In product-list.tpl hai la variabile $ products, una matrice che contiene tutti i prodotti mostrati nella lista.

Spero che questo aiuti.