THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Merci pour les conseils,

Je me suis fait avoir par le cache de Chrome... Je suis dégouté... En ouvrant dans "navigation privée" cela fonctionne. Bref, tant mieux.

J'ai par contre un Alert() :
L'adresse sélectionné ne peut être géolocalisée, merci de vérifier qu'elle est correcte.
et
Oups, quelque chose n'a pas fonctionné correctement. Merci de recommencer.

dès que je lance une recherche sur le map.

Probleme connu ? (Avant que je me plonge dedans...)

Offline


Ce n'est pas un problème. Il faut juste que tu rentres une clef d'API Google Maps valide dans la config du module.

download


OpenStudio Toulouse

Offline


Tout est déja correctement configuré, la clé est correcte (Je peux voir les acces dans la console google), et la clé est sans restrictions. D'ailleurs, la carte charge bien (Au milieu du pacifique)

Offline


Ah oui. Ajoute la Geocoding API à ton projet Google Cloud


OpenStudio Toulouse

Offline


Bien vu ! Ca me supprime le premier message d'erreur. Merci wink

Par contre, le second est toujours la.
il declenche : 

error: function() {
                alert("{intl d="mondialrelay.fo.default" l="Oops, something goes wrong, please try again." js=1}")
            }

J'ai aussi un truc bizarre, malgré

public function isValidDelivery(Country $country)
    {
        return false ;
    }

Le module s'affiche systématiquement...

Offline


Le module utilise l'event TheliaEvents::MODULE_DELIVERY_GET_POSTAGE qui remplace isValidDelivery() et getPostage().

Pour le reste, ça marche sur mon install standard. Regarde le détail de la réponse ajax dans la console du navigateur pour voir le détail de l'erreur.


OpenStudio Toulouse

Offline


Ah super, je n'ai donc qu'à ajouter mon code dans l'Event listener...

Erreur 500...

Failed to load resource: the server responded with a status of 500 ()
https://www.URLSITE.fr/MondialRelay/rel … &radius=10 (Le routing est correct, je ne l'ai pas changé)

Offline


download
Si ça ne marche pas pour toi, c'est dans l'onglet Réponse qu'il faut regarder la cause, en mode développement.

Tu peux aussi regarder dans les logs, logs/log-thelia.txt, l'exception y est peut-être.


OpenStudio Toulouse

Offline


Merci Roadster31, toujours au top !

Si cela peut etre utile, je vais synthétiser les difficultés sur ce module :

1) API GOOGLE : Selectionner GEOCODING API
2) Vérifier les espaces avant/aprés les données copiés-collées dans le back office
3) L'url du Webservice est "https://api.mondialrelay.com/web_services.asmx?wsdl" SANS MAJUSCULES (Je regarderai plus tard pourquoi ca plante pour moi... Car le code est correctement fait pour que ce genre de soucis n'arrivent pas)
4) Il faut tester en navigation privée sous chrome et vider le cache de thelia en cas d'erreurs.

Mise en route un peu bancale mais au final tout fonctionne.

Dans les prochains jours je vais faire en sorte de générer l'etiquette PDF via un lien cliquable dans le back office. A+ et encore merci.

Offline


@roadster31, comment geres-tu ton impression d'etiquettes toi ? automatiquement, ou tu crées un expé a chaque fois ?

Offline


Je ne gère pas d'étiquettes personnellement smile


OpenStudio Toulouse

Offline


Bonsoir/Bonjour,

Je créé une classe dans le module Mondial relay pour generer l'etiquette en 1 clic depuis le backoffice. Quel est le meilleur moyen d'aller récupérer les données (Numéro du point relais, nom, numero....) en fonction du numéro de commande ?

je pense qu'il y a plus simple que de toucher a la BDD.

Offline


Tu vas trouver l'information dans l'adresse de livraison de la commande. Le champ "firstname" contient le numéro du point relais, après le # :

Exemple : Point relais  #97713

Donc le plus simple est bien d'accéder à la base de données. Par exemple, si $orderId contient l'ID de la commande, tu vas écrire :

$deliveryAddress = OrderQuery::create()->findPk($orderId)->getDeliveryAddress();
$numeroPointRelais = preg_replace('/.*#/', '', $deliveryAddress->getFirstname());

Le reste des infos sur le point relais se trouve aussi dans l'adresse de livraison.

Si tu modifies le module, tu devrais contribuer sur le repository Github (https://github.com/thelia-modules/MondialRelay), et faire une pull request pour que ton travail puisse profiter à tout le monde.

Comment faire une pull request => https://blog.zenika.com/2017/01/24/pull … emystifie/


OpenStudio Toulouse

Offline


Ok très bien, je vais bosser sur ca wink

Je reviendrai ici poster quand ca sera fonctionnel, mais vu mon niveau je pense qu'un pro comme toi va devoir verifier avant de soumettre la contribution... wink

Offline

Offline


Ok !

Je corrige juste ton code, y'avais un soucis sur getadresseid(), et le point relais n'est pas aprés un #, j'ai donc selectionné les 6 derniers caractères du prenom.

$OrderAddressRelated = OrderQuery::create()->findPk($orderId)->getOrderAddressRelatedByDeliveryOrderAddressId();
$numeroPointRelais = preg_replace('/.*#/', '', $OrderAddressRelated->getFirstname());
$numeroPointRelais = substr(rtrim($numeroPointRelais),-6);