Jump to content

Problème mise à jour automatique taux de change en multiboutique


Recommended Posts

Bonjour à tous,

 

J'utilise le service automatique de mise à jour des taux de change à l'aide du lien "http://www.maboutique.com/admin8877/cron_currency_rates.php?secure_key=56857kgkk898474978Yhhgj898via tache cron.

Le problème est qu'en mode multi-boutique, la boutique 1 est bien mise à jour mais pas la 2.

 

Une idée !!!!

 

Merci

Link to comment
Share on other sites

  • 2 years later...

Bonjour,

 

Je suis confrontée au même problème avec un Prestashop 1.6.1.3 !

 

La mise à jour des taux de change fonctionne quand on clique sur le bouton de mise à jour manuelle :

- MAJ quand je suis paramétrée en "Toutes les boutiques" -> la MAJ se répercute bien sur chaque boutique.

- Même manipulation quand je suis dans ma "Boutique A " -> la MAJ ne se fait que dans celle-ci, et ne s'applique pas à ma "Boutique B".

Ce qui est très bien.

 

Je refais ces tests en faisant cette fois appel au webservice via l'url fournie dans l'admin, du type :

http://monsite.com/admin****/cron_currency_rates.php?secure_key=**********************

- MAJ quand je suis paramétrée en "Toutes les boutiques" -> la MAJ ne s'applique pas du tout sur ma Boutique B. Et sur la boutique A, elle ne s'applique qu'aux Livres sterling, et pas aux Dollards, dont le taux de change ne bouge pas... Par contre quand je me remets en "Toutes les boutiques", les deux devises sont mises à jour.

- Même manipulation quand je suis dans ma "Boutique A " -> mêmes résultats qu'à partir de Toutes les boutiques ! (donc aucun effet sur la boutique A, une seule devise MAJ sur la boutique B, les 2 MAJ sur "Toutes mes boutiques").

 

J'en déduis donc que le webservice appelé ne prend pas du tout en compte le contexte multiboutique. Et je ne m'explique pas du tout la différence de traitement entre les 2 devises, qui sont pourtant, sauf erreur, paramétrées de la même façon, et qui sont correctement mises à jour avec la MAJ manuelle...

 

Quelqu'un aurait-il une explication ? Ou un début de réponse ?

 

Merci d'avance aux contributeurs/trices :)

Link to comment
Share on other sites

Problème non résolu, mais j'ai réussi à le contourner à l'aide d'un trigger !

 

En effet après quelques tests et observations de la BDD, il s'est avéré que la MAJ des taux de change via webservice s'applique bien sur toutes les devises, mais uniquement sur la première boutique sur laquelle chaque devise est activée.

En d'autres termes : la table currency était bien mise à jour, mais la table currency_shop ne l'était pas en entier.

J'ai donc créé un trigger pour modifier automatiquement le taux de change de la table currency_shop (avec une ligne par boutique), à chaque fois qu'il est modifié dans la table currency.

 

Code de création du trigger :

CREATE TRIGGER after_update_currency AFTER UPDATE ON ps_currency
FOR EACH ROW
UPDATE ps_currency_shop
SET conversion_rate = NEW.conversion_rate 
WHERE id_currency = NEW.id_currency

Ou si vous préférez passer par l'interface phpMyAdmin, sélectionnez votre BDD puis cliquez sur le menu Déclencheurs > Ajouter un déclencheur :

 

Nom du déclencheur : after_update_currency

Table : ps_currency

Moment : AFTER

Evénement : UPDATE

Définition :

UPDATE ps_currency_shop 
SET conversion_rate = NEW.conversion_rate  
WHERE id_currency = NEW.id_currency

Par contre cette solution ne fonctionne que si vous avez le droit de créer des triggers. En hébergement mutualisé OVH par exemple cela n'est pas possible. Pour ce site je travaille sur un serveur dédié donc pas de souci.

Evidemment, cela fonctionne aussi parce que je dois appliquer le même taux de change à chaque boutique.

 

Voilà qui pourra peut-être aider quelqu'un d'autre.

^_^

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...