Jump to content

Comment mettre en évidence les coupons avec une Prestashop qui est dans un fuseau horaire différent de celui du serveur MYSQL ?


Recommended Posts

Bonjour à tous !

J'ai un problème que je n'arrive pas à résoudre depuis plusieurs semaines avec les fuseaux horaires.

La configuration de mon serveur :

  • Prestashop est configuré avec le fuseau horaire de Paris.
  • Le serveur Debian qui héberge mon PHP et MYSQL est configuré avec le fuseau horaire de Londres.
  • PHP et MYSQL sont configurés avec le fuseau horaire de Londres.

Lorsqu'un coupon est généré automatiquement, sa date de début de validité correspond à l'heure actuelle de Paris.

Cependant, ce coupon n'est pas mis en évidence (dans la page de paiement) sur Prestashop car depuis Prestashop 1.7.4, la fonction de mise en évidence récupère tous les coupons entre l'heure actuelle du serveur MYSQL (avec la fonction NOW()) et la fin de la journée.

Fonction mise en évidence dans Prestashop < 1.7.4 dans /classes/CartRule.php:384 :

$sql_part2 = ' AND cr.date_from < "' . date('Y-m-d H:i:59') . '"
				AND cr.date_to > "' . date('Y-m-d H:i:59') . '"
				' . ($active ? 'AND cr.`active` = 1' : '') . '
				' . ($inStock ? 'AND cr.`quantity` > 0' : '');

Fonction mise en évidence dans Prestashop > 1.7.4 :

$sql_part2 = ' AND NOW() BETWEEN cr.date_from AND cr.date_to
				' . ($active ? 'AND cr.`active` = 1' : '') . '
				' . ($inStock ? 'AND cr.`quantity` > 0' : '');

Il y a donc manifestement un décalage horaire, mais si mon Prestashop était configuré avec le fuseau horaire de la Californie, le décalage serait encore plus important.

Que dois-je faire ? Remplacer la fonction (avec le dossier overrides) ? Configurer mon serveur SQL pour qu'il soit dans le même fuseau horaire que mon Prestashop ?

Merci d'avance !

Link to comment
Share on other sites

On 3/25/2021 at 8:53 PM, Remy FRK Corp said:

Bonjour.

Souvent moi aussi je me pose cette question, finir de tabasser la victime ou corriger le bourreau ?

Bon ok c'est pas drôle...

changer le réglage serveur semble une bonne option.

Salut, merci pour la réponse :-).

Non c'était pas mal :D.

Je pense aussi que c'est la bonne solution, mais du coup, nativement, Prestashop n'est pas conçu pour des utilisateurs qui seraient sur plusieurs fuseaux horaires ?

Je m'explique :

Quand on passe un commande sur Prestashop, l'email de confirmation de commande indique une heure de commande est cette heure est formée suivant le fuseau horaire qui est en paramètre globale du Prestashop.

Cela pose problème si l'utilisateur est dans un autre fuseau horaire car l'heure dans l'email de confirmation sera forcément fausse.

Link to comment
Share on other sites

41 minutes ago, Mediacom87 said:

Ce choix est simplement logique.

Le propriétaire d'une boutique travaille en fonction de son fuseau horaire et non celui de ses potentiels clients.

Difficile de programmer des choses en fonction du fuseau horaire d'un philippin que l'on ne connait pas.

Merci pour votre réponse.

Je pensais naïvement qu'il était possible d'afficher la date aux clients (par exemple sur une facture ou commande) en prenant en compte leur fuseau horaire (particulièrement utile aux US avec plus de 6 fuseaux).

Link to comment
Share on other sites

Bonjour.

Après au pire vous pouvez modifier votre template d'email pour ajouter entre parenthèses (heure de paris) à la façon du fameux (GMT) qu'on voit souvent.

Rassurez vous aussi, à l’inverse si vous passer commande sur un site US, fort à parier que ce soit leur heure, leur langue, leur lois, leurs envies et volontés qui priment sur les mails qu'ils vous enverront...

 

 

Link to comment
Share on other sites

1 minute ago, Remy FRK Corp said:

Bonjour.

Après au pire vous pouvez modifier votre template d'email pour ajouter entre parenthèses (heure de paris) à la façon du fameux (GMT) qu'on voit souvent.

Rassurez vous aussi, à l’inverse si vous passer commande sur un site US, fort à parier que ce soit leur heure, leur langue, leur lois, leurs envies et volontés qui priment sur les mails qu'ils vous enverront...

 

 

Bonjour, encore merci pour vos réponses.

La grande question est : Les dates seront sur quel fuseau horaire  ? Chicago ? Los Angeles ? ou plutôt Honolulu ?

Link to comment
Share on other sites

Just now, Remy FRK Corp said:

arf c'est tout le problème des pays taille "continent" !

 

 

Mais du coup il y a quelque chose de prévu dans Prestashop pour ce cas ? Ou je dois couper la poire en deux, prendre le fuseau horaire médian (ou le fuseau du siège) et l'indiquer dans les emails ? 

Link to comment
Share on other sites

à vous lire il semble que le souci soit entre le serveur mysql et votre serveur web.

Votre boutique ne bougeant pas, quelque soit le fuseau horaire un visiteur américain verra la même chose q"un visiteur chinois (si il a accès à votre site).

Donc je en comprends pas où se trouve votre souci.

Link to comment
Share on other sites

 

Merci pour la réponse.

Le problème est plutôt, comment afficher la date en prenant en compte le fuseau horaire d'un client ?

En pièce jointe, un email de confirmation de commande de Prestashop, il indique la date avec les heures et minutes de la commande.

988022995_Capturedecran2021-03-29a12_52_50.png.aebf5903adf56bd419960a1ca7da276a.png

Hors, cette date est sur le fuseau horaire du Prestashop et non pas sur le fuseau horaire du client.

De ce que je comprends, rien n'est prévu dans Prestashop pour gérer ce cas, à savoir afficher une date en fonction du fuseau horaire du client.

Si je voulais prendre en compte le fuseau horaire des clients, je devrais sans doute réécrire beaucoup de choses ?

Link to comment
Share on other sites

à l’instant, Florian_29298 a dit :

Si je voulais prendre en compte le fuseau horaire des clients, je devrais sans doute réécrire beaucoup de choses ?

Vous prendriez surtout la décision de mentir au client.

Installez une entreprise dans le pays en question avec votre gestion là bas, mais ne faites pas croire à vos clients que vous y êtes et surtout ne vous amusez pas à mettre des dates et horaire fictif sur vos factures, cela serait considéré comme de la fraude.

Et comment prendre le bon fuseau horaire d'un américain de Los Angeles qui se trouve au philippine et qui a un ordi qui passe par un VPN situé en Australie pour une livraison de sa tante à Miami ?

  • Like 1
Link to comment
Share on other sites

2 minutes ago, Mediacom87 said:

Vous prendriez surtout la décision de mentir au client.

Installez une entreprise dans le pays en question avec votre gestion là bas, mais ne faites pas croire à vos clients que vous y êtes et surtout ne vous amusez pas à mettre des dates et horaire fictif sur vos factures, cela serait considéré comme de la fraude.

Et comment prendre le bon fuseau horaire d'un américain de Los Angeles qui se trouve au philippine et qui a un ordi qui passe par un VPN situé en Australie pour une livraison de sa tante à Miami ?

Merci pour votre réponse encore une fois.

Il n'est pas du tout question de mentir à qui que ce soit, il est bien question d'une entreprise aux US qui est par exemple basé à New York et qui a des clients qui sont en Californie.

Comment afficher correctement la date aux clients Californiens ?

Et justement dans les factures, et les emails de confirmations, il faut indiquer la bonne date et pas avec 2 heures de décalage (voir plus). 

Link to comment
Share on other sites

5 minutes ago, Remy FRK Corp said:

L'idée c'est qu'à un moment vous avez le temps "juridique" qui au niveau légal fait que...

Imaginez une période de garantie appliquée au pied de la lettre : vous avez vendu à telle heure heure de Paris, le client lui est à 20h de là et on va dire que c'est l'heure d'achat qui fait foi.

comment vous faites si pour le client c'est son heure et que pour vous c'est la votre qui compte qui gagne et qui perd 20h de garantie? (parce que vous légalement et comptablement vous avez vendu heure de Paris donc ca vous n'y pouvez rien )

Et bien, toutes les dates devraient être en UTC (en particulier coté SQL, ce qui n'est pas le cas actuellement avec Prestashop), puis c'est le front qui convertie les dates dans la timezone voulue.

En cas de litige, la date UTC prime sur le reste.

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

20 minutes ago, Mediacom87 said:

Le temps est relatif, croire qu'en changeant un fuseau horaire on change le temps est à mon avis un non sens.

Mais bon,je vous laisse discuter car pour le moment je ne comprends toujours pas la question.

Merci pour votre réponse, je suis désolé que vous n'ayez pas compris ma question, aussi je la reformule plus simplement.

Comment afficher dans l'email de confirmation de commande la date et l'heure en prenant en compte le fuseau horaire du client ?

Exemple, nous somme lundi matin 14h00 (heure de Paris), le Prestashop est configuré avec l'heure de Paris.

Un utilisateur californien passe commande sur mon site, il est 05h00 pour lui, le temps UTC est 12h00.

Comment faire en sorte que dans son email de confirmation de commande la date soit 05h00 et pas 14h00.

Link to comment
Share on other sites

Clairement pas faisable nativement.

Si la solution du 14h00 (heure de paris) ne convient pas, il doit être aussi faisable de retirer purement et simplement l'heure pour les modèles de mail qui sont par exemple en anglais.

 

Du coup je viens de passer commande sur amazon usa (annulé juste après)  pour voir comment eux gèrent le truc avec un client France, ils gèrent comme ça:

 

 

Capture d’écran 2021-03-29 à 14.49.42.png

Link to comment
Share on other sites

34 minutes ago, Remy FRK Corp said:

Clairement pas faisable nativement.

Si la solution du 14h00 (heure de paris) ne convient pas, il doit être aussi faisable de retirer purement et simplement l'heure pour les modèles de mail qui sont par exemple en anglais.

 

Du coup je viens de passer commande sur amazon usa (annulé juste après)  pour voir comment eux gèrent le truc avec un client France, ils gèrent comme ça:

 

 

Capture d’écran 2021-03-29 à 14.49.42.png

Encore merci pour vos réponses :-).

J'ai fait exactement le même test ce matin :-).

C'est une solution qui a une limite, en effet, si le Prestashop est configuré avec l'heure de Paris et qu'un client de Californie passe commande à 16h heure locale de Californie, il va avoir la date de commande avec un jour de décalage.

Je pense qu'il n'y a aucune solution à ce problème sauf à apporter de nombreuses modifications à Prestashop.

Edited by Florian_29298 (see edit history)
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...