Jump to content

Restreindre à la devise locale


Recommended Posts

Bonjour,

 

A défaut d'avoir trouvé une réponse sur le net, j'ai recours à vous.

 

Ce que je cherche à faire est assez simple à expliquer et je m'étonne de ne pas pouvoir le faire facilement dans prestashop (à moins d'avoir mal regardé ?).

 

J'aimerais qu'on ne puisse passer de commande que dans la devise du pays où le visiteur se trouve.

 

C'est à dire que j'ai des prix dans deux devises qui ne sont pas le fruit d'un ratio, mais ce sont bien deux prix différent plus avantageux dans une devise que dans l'autre. J'aimerais qu'au final, en france seul l'achat en euros soit possible.

 

On peut restreinte deux modules de paiement différents selon la devise mais je serai amené à utiliser le meme module de paiement. Un réglage est aussi disponible au niveau des groupes d'utilisateurs, mais ca ne réponds pas à mon besoin. Je n'ai rien concernant une restriction pays -> devise.

 

Version 1.5.4.1.

 

Une idée ?

 

Je vous en remercie d'avance.

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

J'ai mené mon petit bout de chemin, voici deux solutions.

 

Si qqn voit une faiblesse dans mon système (pour sûr il y en a ), je lui serait grandement reconnaissant de les pointer :)

 

 

J'ai tout d'abord trouvé ce lien (mais je n'ai pas utilisé cette technique) : http://www.prestasho...nction-du-pays/

 

Pour ma part, j'ai simplement surchargé la méthode FrontController->init() ainsi :

 

public function init()
{
 parent::init();

 // si l'utilisateur est connecté, on force les CHF pour les suisses et l'EUR pour tous les autres
 if( isset($this->context->customer->id) )
 {
  if( $this->context->country->id == 19 ) // le 19 est l'id de la suisse
  {
// le 1 est l'id de la devise CHF
$this->context->smarty->assign('forced_currency', 1); // assignation à smarty pour le module bloccurrencies
$this->context->currency = new Currency( 1 );
$this->context->cart->id_currency = 1;
  }
  else
  {
// le 2 est l'id de la devise EUR
$this->context->smarty->assign('forced_currency', 2); // assignation à smarty pour le module bloccurrencies
$this->context->currency = new Currency( 2 );
$this->context->cart->id_currency = 2 ;
  }

 }

}

 

Et ensuite mon /modules/blockcurrencies/blockcurrencies.tpl :

 

{if !isset($forced_currency) } <!-- si on a forcé la devise, alors le visiteur ne peux plus choisir la devise -->
<form  id="setCurrency" action="{$request_uri}" method="post">
 {foreach from=$currencies key=k item=f_currency}
  <a  class="devise {if $id_currency_cookie == $f_currency.id_currency} deviseCourante{/if}" href="javascript:setCurrency({$f_currency.id_currency});" title="{$f_currency.name}">{$f_currency.iso_code}</a>
 {/foreach}
 <input type="hidden" name="id_currency" id="id_currency" value=""/>
 <input type="hidden" name="SubmitCurrency" value="" />
</form>
{/if}

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

  • 3 months later...

Bonjour,

 

Avec prestashop 1.5.5 et la géolocalisation activée, la devise s'ajuste de façon automatique par pays.

 

Une fois le pack importé pour l'Argentine, la devise locale s'affiche. J'ai aussi forcé la devise pour avoir un dollar argentin avec un taux de conversion faux pour absorber les taxes d'importation, j'ai donc des prix majorés.

 

Par contre j'ai voulu appliquer ce dollar majoré pour toute l'Amérique latine et bien que j'ai choisi cette devise pour chaque pays, la devise qui s'affiche dans un deuxième pays d'Amérique est l'euro.

Vraisemblablement si l'on n'importe pas le pack du pays la devise par défaut reste l'euro.

Je n'arrive pas encore à la gérer à 100% la localisation.

Si vous avez des pistes sont les bienvenues.

 

Bonne journé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...