Problème affichage horaires
-
Bonjour,
Quand les points relais sont fermés pour une journée ou ouvert sans pause le midi, l’affichage montre des “:-:”…
Pour reproduire, il faut choisir 69003 Lyon FRANCE dans la popup.
On voit très bien le soucis sur ces captures :
https://www.crealya.fr/wc-multishipping/bug1.png
https://www.crealya.fr/wc-multishipping/bug2.png
https://www.crealya.fr/wc-multishipping/bug3.pngPlusieurs point relais sont concernés :
MOBILIFE
224 RUE PAUL BERT
69003 LYONL’ENJOLIVEUSE LYON 3
83 RUE ETIENNE RICHERAND
69003 LYONCALL CENTER
34 AVENUE LACASSAGNE
69003 LYON
-
Bonjour,
Comme je vous le disais par email, c’est très étonnant car ces points relais ne me sont pas retournés de mon c?té.
Auriez-vous un contrat spécifique ?
Je vous recontacte par email afin de voir cela directement avec vos détails de compte.Cordialement.
Je pense qu’il y a un bug de votre c?té.
Ces points relais sont les mêmes qui ressortent sur le site officiel Mondial Relay pour 69003 Lyon. Le Call Center est probablement le plus gros point relais du 3ème…
https://www.mondialrelay.fr/trouver-le-point-relais-le-plus-proche-de-chez-moi/
C’est le code dans
inc/front/pickup/mondial_relay/mondial_relay_pickup_widget.php
au sein de la fonctionget_pickup_point
qui n’est pas bon.Apparemment, dans le
foreach
le code s’attend à avoir des ‘0000’ dans les index [‘1’] et [‘3’] du tableaustring
mais ?a n’arrive jamais. Si je fais un bon vieuxvar_dump
de la variable$one_pickup
, j’ai juste des variables vides quand le point relais n’est pas ouvert.["Horaires_Lundi"]=> object(stdClass)#41709 (1) { ["string"]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } } ["Horaires_Mardi"]=> object(stdClass)#41708 (1) { ["string"]=> array(4) { [0]=> string(4) "1000" [1]=> string(4) "1800" [2]=> string(0) "" [3]=> string(0) "" } }
Bonjour,
Quelle version de notre extension utilisez-vous ?
Je n’arrive pas à reproduire le problème …https://ibb.co/ykXLW3y
https://ibb.co/mqqfpqCJe vous ai contacté par email, cela sera plus simple et plus efficace ??
Je ne re?ois plus vos mails sur mon adresse protonmail.com depuis un certain temps (pas dans mes spams non plus).
Intéressant que le problème ne soit pas reproductible chez vous. J’ai bien la dernière version 1.8.6
Le point d’entrée est pourtant le même dans les 2 cas vu qu’il est en dur dans le plugin… Peut-être que la version de PHP et donc du SoapClient utilisé pour les appels API Mondial Relay a un impact sur le résultat… Ou alors, ce sont les identifiants qui font différer la version de l’API chez eux mais le compte Mondial Relay que j’utilise est un compte des plus banals mais très récents.
Parceque, concrètement, il n’y a pas mille possibilités pour que je ne re?oive les ‘0000’… Idem pour le problème de la profondeur avec décimale.
Le problème est assez fantastique.
J’ai modifié l’appel au SOAPClient dans la méthode
get_pickup_point
du fichierinc\admin\classes\mondial_relay\mondial_relay_api_helper.php
pour pouvoir utiliser les fonctions de débogage du SOAPClient et je ne vois absolument pas comment le code du plugin qui affiche les horaires peut marcher avec le retour de l’API.Dans le retour brut XML de l’API, j’ai bien
<Horaires_Lundi><string /><string /><string /><string /></Horaires_Lundi><Horaires_Mardi><string>1000</string><string>1800</string><string /><string /></Horaires_Mardi>
qui implique bien, que dans l’objet PHP, j’ai des chaines de caractères vides et non une série de 4 zéros comme l’attend le code qui affiche les horaires.Ce code, dans la méthode
get_pickup_point
du fichierinc/front/pickup/mondial_relay/mondial_relay_pickup_widget.php
, ne laisse aucune ambigu?té : il attend bien ‘0000’ soit dans l’index 1, soit dans l’index 3, il y a même une égalité stricte. C’est bien ?a qui va permettre de faire disparaitre un jour (continue
) s’il n’a aucun horaire ou une plage horaire (if
) si elle est vide.foreach ($days as $day_num => $one_day) { if ('0000' === $one_pickup->$one_day->string['1']) continue; if ('0000' === $one_pickup->$one_day->string['3']) { $additional_pickup['opening_time'][] = wms_display_value(substr_replace($one_pickup->$one_day->string['0'], ':', 2, 0).' - '.substr_replace($one_pickup->$one_day->string['1'], ':', 2, 0)); } else { $additional_pickup['opening_time'][] = wms_display_value(substr_replace($one_pickup->$one_day->string['0'], ':', 2, 0).'-'.substr_replace($one_pickup->$one_day->string['1'], ':', 2, 0).' - '.substr_replace($one_pickup->$one_day->string['2'], ':', 2, 0).'-'.substr_replace($one_pickup->$one_day->string['3'], ':', 2, 0)); } }
Avez-vous la même chose ? Si vous avez bien des
<string>0000</string>
au lieu de mes<string />
c’est que l’API se comporte différement selon les identifiants…Paramètres envoyés (en plus de
Enseigne
etSecurity
) :["Pays"]=> string(2) "FR" ["Ville"]=> string(0) "" ["CP"]=> string(5) "69003" ["Poids"]=> string(3) "100" ["NombreResultats"]=> string(2) "10"
Voici le code dirty pour récupérer toutes les données brutes :
$client = new SoapClient(self::API_URL, array('trace' => 1)); $result = $client->WSI4_PointRelais_Recherche($params); echo "====== REQUEST HEADERS =====" . PHP_EOL; var_dump($client->__getLastRequestHeaders()); echo "========= REQUEST ==========" . PHP_EOL; var_dump($client->__getLastRequest()); echo "========= RESPONSE HEADERS =========" . PHP_EOL; var_dump($client->__getLastResponseHeaders()); echo "========= RESPONSE =========" . PHP_EOL; var_dump($client->__getLastResponse()); echo "========= RESPONSE OBJECT =========" . PHP_EOL; var_dump($result->WSI4_PointRelais_RechercheResult); var_dump($params, phpversion()); die;
-
This reply was modified 2 years, 10 months ago by
tristanleboss.
Bonjour,
Je vous confirme bien avoir des “0000”
https://ibb.co/b5vdxprCe qui se vérifie d’ailleurs dans leur documentation : https://ibb.co/WkzvjhJ
Pour être bien certain, j’ai même retesté avec le logiciel SoapUI en utilisant exactement les mêmes paramètres que le plugin et je n’ai pas les zéros… https://ibb.co/SKJ3hhW
Je vois vraiment pas pourquoi vous les auriez… à part que les identifiants conditionneraient une version du webservice.
Après, moi, je ne comprends pas la documentation comme vous. Pour moi, “Tableau de chaines de caractères de dimension 4” veut dire que le tableau a une dimension de 4 (ce qui est le cas) et ils ne donnent aucune info sur le contenu réel des chaines de caractères. D’ailleurs, on parle plus de
dimension
pour un tableau et delongueur
pour une chaine de caractères.Je vais essayer d’avoir des infos auprès de Mondial Relay car bon, ?a rend le plugin inutilisable pour moi et, probablement, pour d’autres.
-
This reply was modified 2 years, 10 months ago by
tristanleboss.
-
This reply was modified 2 years, 10 months ago by
tristanleboss.
Question bête mais vous utilisez des identifiants de PROD pour vos tests ? Si ?a se prouve, leurs identifiants de tests ne tombent pas sur les mêmes versions que les versions de PROD.
TROUVé !
Vous utilisez les identifiants de test (BDTEST13) pour vos développements / tests….
Malheureusement, le webservice ne se comporte pas de la même fa?on que les serveurs de production ! Quelle merde de la part de Mondial Relay !
Je viens de tester exactement la même requête avec SOAP UI en changeant seulement les paramètres
Enseigne
etSecurity
et, en effet, les points relais ne sont pas exactement les mêmes et surtout, j’ai bien les ‘0000’ => https://ibb.co/4VCRvsWBon, du coup, suffit de changer les
=== '0000'
par des=== '0000' || === ''
pour que le plugin fonctionne aussi bien avec les identifiants de test que des identifiants de production.?a doit être exactement le même soucis avec l’histoire de la longueur avec des décimales… le webservice de test doit pas checker que c’est un integer alors que sur la production la vérification doit être faite.
-
This reply was modified 2 years, 10 months ago by
tristanleboss.
Bonjour
Je viens de faire une nouvelle version qui devrait corriger tous les problèmes.
Je vous laisse me confirmer que tout est bon ?Cordialement,
Alexandre. -
This reply was modified 2 years, 10 months ago by
- The topic ‘Problème affichage horaires’ is closed to new replies.