Jump to content

[Résolu] Affichage prix dans différentes devises


Recommended Posts

Bonjour,

 

Je souhaiterai afficher le prix sur mes fiches produits dans différentes devises avec notamment d'abord le prix en euros et entre parenthèses le prix convertit en dollar.

 

Voici le code que j'utilise :

{convertPriceWithCurrency price=$product->getPrice(true, $smarty.const.NULL, 2) currency=$currencies.0}

 

Cependant, le résultat obtenu n'est pas le bon car j'obtiens 9,90 € et $9.90. La conversion en dollar n'est pas effectuée car je devrais obtenir $13.42.

 

Merci d'avance pour votre aide

 

Petit up pour préciser que je suis sur la version 1.5 :)

Edited by Fanyyy974 (see edit history)
Link to comment
Share on other sites

Dans la variable $currencies, il y a les différentes devises. Et plus précisemment :

$currencies->value = Array (2)
 0 => Array (12)
id_currency => "2"
name => "Dollar"
iso_code => "USD"
iso_code_num => "840"
sign => "$"
blank => "0"
format => "1"
decimals => "1"
conversion_rate => "1.355420"
deleted => "0"
active => "1"
id_shop => "1"
 1 => Array (12)
id_currency => "1"
name => "Euro"
iso_code => "EUR"
iso_code_num => "978"
sign => "€"
blank => "1"
format => "2"
decimals => "1"
conversion_rate => "1.000000"
deleted => "0"
active => "1"
id_shop => "1"

 

Je cible le 0 pour avoir la conversion en dollar

Edited by Fanyyy974 (see edit history)
Link to comment
Share on other sites

Et avec ça :

 

{assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)}
{displayPrice price=$price currency=$currencies.0.id_currency}

 

La fonction displayPrice attends un int (id_currency) en argument, et pas un tableau...

Sinon elle se content d'afficher le prix, sans faire de conversion :

 

    public static function displayPriceSmarty($params, &$smarty)
   {
       if (array_key_exists('currency', $params))
       {
           $currency = Currency::getCurrencyInstance((int)($params['currency']));
           if (Validate::isLoadedObject($currency))
               return Tools::displayPrice($params['price'], $currency, false);
       }
       return Tools::displayPrice($params['price']);
   }

Edited by DrÿSs' (see edit history)
Link to comment
Share on other sites

En fait displayPrice en smarty ne fait aucune conversion non plus :D

Il n'y a aucun alias smarty dans PrestaShop à ma connaissance qui fait de la conversion...

 

L'alias convertPrice appel Product::convertPrice(), qui lui même appel Tools::displayPrice(), qui lui même ne fait aucune conversion !

 

Bref le seul moyen c'est de passer par Tools::convertPrice() qui n'a aucun alias smarty dans PrestaShop :D

Link to comment
Share on other sites

J'étais partie sur la fonction convertPriceWithCurrency car effectivement le nom était trompeur :P

 

Cependant avec

{assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)}
{displayPrice price=$price currency=$currencies.0.id_currency}

 

J'obtiens toujours $9,90.

 

C'est un grand mystère :blink:

Link to comment
Share on other sites

Héhé,

 

Alors soit tu fais ta conversion en PHP dans ton contrôleur en utilisant Tools::convertPrice(), et ensuite tu assigne ta variable à Smarty pour la récupérer dans ton template, par exemple :

 

    $this->context->smarty->assign(
	    array(
		    'price' => Tools::convertPrice($price, (int)$this->context->currency->id),
	    )
    );

 

Sinon, tu peux aussi essayer d'appeler directement la fonction dans smarty, par exemple :

 

{assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)}
{assign var="convertedPrice" value=Tools::convertPrice($price, $currencies.0.id_currency)}
Prix : {$convertedPrice}

 

Ou alors tu créé ton propre register function dans config/smarty.config.inc.php :

 

smartyRegisterFunction($smarty, 'function', 'realConvertPrice', array('Tools', 'convertPrice'));

 

Et tu l'appel dans ton template :

 

{assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)}
Prix : {realConvertPrice price=$price currency=$currencies.0.id_currency}

Link to comment
Share on other sites

  • 3 months later...

Bonjour DrÿSs' et Fanyyy974,

je suis votre post et essai d'afficher les prix dans 2 devises, pour la page produit.

Je précise que je suis sous 1.4 j'ai réussi les modifs, sauf l'arrondi.

DrÿSs' penses tu que c'est possible de faire le même affichage dans la liste de produit ?

Edited by Tramber (see edit history)
Link to comment
Share on other sites

  • 1 year later...
Bonjour

j'ai le même problème qui est expliqué, je veux afficher le prix en dinar(devise par défaut) et en entre parenthèses le prix en dollars.

​je suis débutante en développement :( quelqu'un m'aider SVP  urgent

Merci

Link to comment
Share on other sites

  • 8 months later...
  • 1 year later...
  • 2 weeks later...
  • 5 months later...

Hello, cela marche, sauf lorsque on fait une règle spécifique pour le prix en Dollars ? Une idée de comment l'afficher ?

 

Petit up... Avec un prix spécifique dans une autre devise impossbile à afficher... une idée ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...