- Posts: 24
- Thank you received: 4
UPS et XML.. que fait exactement le plugin .?
- patrickdumoncel
-
Topic Author
- Offline
Je suis en train de finaliser un site avec la version business de hikashop. Le client utilise UPS comme transporteur. Il me demandes de pouvoir exporter en XML la commande selon le formatage UPS afin de pouvoir transmettre l'info sur le site d'UPS sans perdre du temps a remplir 'n' champs chez eux.
Je ne suis pas (encore) familier avec Hikashop (c'est mon premier site avec Hikashop, et travailler avec UPS est une première pour moi aussi!) mais en faisant lecture ici et là sur le forum, je m’aperçois que le plugin de transport UPS communique déjà avec UPS ; apparament via un échange XML... Donc la demande de mon client ferait peut-etre double-emploi si la négociation avec UPS est déjà fait!
J'aimerais en connaitre plus sur le plugin UPS, comment il fonctionne exactement. Par exemple, lors de la confirmation d'une commande, envoi-t-il l'information directement a UPS (ça serait trop beau!) ? ou faut il en effet générer un fichier XML compatible avec le site d'UPS ?
Merci
Enzo24 (pour patrickdumoncel - le client acheteur d'hikashop business)
Please Log in or Create an account to join the conversation.
Le plugin UPS communique effectivement en XML avec UPS pour récupérer les frais de livraison automatiquement lors du passage en caisse. Mais cela s'arrête là. Il ne transmet pas les information des commandes à UPS. Cela nécessiterait le développement d'un autre plugin (ou de l'ajout de la fonction à celui existant) car c'est une autre API qui est proposée par UPS pour faire cela. Une solution plus simple sera de générer le XML manuellement.
Si vous êtes un développeur, vous pouvez utiliser le bouton d'export des commandes qui génère actuellement un CSV et transformer le fichier généré en XML compatible avec UPS. Pour cela, il faudra éditer le fichier "export" de la vue "order" pour votre template backend via le menu Affichage->Vues.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Je ne suis pas un grand dev, mais je veux bien tenter la modif. JE risque de poser quelques questions, et si j'arrive a le faire, je partagerais ici.
Merci pour la réponse !
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Je me lances :
J'ai donc modifié order export par un petit quelquechose de simple .
Cela devrait me faire un fichier du nom de 'default-filename.txt' à télécharger avec le texte 'Hello, world'.
Quand je vais sur une commande et que je fais exporter, il me propose d'enregistrer le fichier 'hikashop_export.csv' ! On dirait que mon fichier export est ignoré. Porqué ? :blush:
--EDIT--
Apparament le fichier n'a pas été crée dans /templates/mon_template/html/com_hikashop/... alors qu'il y a d'autres fichiers qui y sont bien écrits...(modifs grace aux posts précédents). C'est normal ?
Please Log in or Create an account to join the conversation.
Votre code affiche le fichier (et donc le navigateur le télécharge directement.
Pour créer un fichier en PHP il faut utiliser la commande file_put_contents avec en argument le contenu du fichier et le chemin du fichier:
php.net/manual/en/function.file-put-contents.php
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Je pensais ne pas créer de fichier sur le serveur, mais simplement de créer un contenu et l'envoyer comme expliqué ici :
stackoverflow.com/questions/4371748/crea...-download-on-the-fly
De toute façon, comment se fait-il que l'ancien export est utilisé alors que j'ai modifié comme dessus ? Hikashop aurait du me créer un fichier dans template/html/com_hika... non ?
Please Log in or Create an account to join the conversation.
Etes vous sure d'avoir modifié le fichier pour votre template du backend ? Sinon, c'est normal que vous ne voyez pas la modification.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Je vais potasser ton lien, je laisses tomber ce que j'avais fait.
Ou peut-on trouver la liste de tout les variables utilisés dans Hikashop (avec leur correspondance)? En principe les tables sont déjà ouverts et j'ai accès aux variables, non ?
MErci !
Please Log in or Create an account to join the conversation.
Par contre, nous avons un schéma de la base de données ici:
www.hikashop.com/en/support/documentatio...ocumentation.html#db
Mais oui, il suffit récup les données car elles sont déjà chargées et de les afficher comme vous le voulez.
Un vardump de $this vous donnera toutes les données/Variables disponibles dans le fichier export.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Quand je fais par exemple :
Je n'ai pas d'erreur, mais rien en sortie. Pourtant le var dump plus haut a bien vu ce variable et sa valeur... Ou est l'erreur (de ma part, oui! mais où ?)
Comment faire apparaitre la valeur de $user_id ?
Merci
Please Log in or Create an account to join the conversation.
Si user_id est dans $this, il faut faire comme cela:
echo $this->user_id;
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Le var_dump($this); me donne ceci :
....../...
["paramBase"]=>
string(18) "com_hikashop.order"
["orders"]=>
array(1) {
[17]=>
object(stdClass)#498 (95) {
["user_id"]=>
string(1) "1"
....../...
J'ai beau essayer echo $this->user_id, j'ai rien en sorti.
Si je fais var_dump($this->user_id) j'ai en retour : NULL
Je ne suis pas un grand connaisseur en php, mais je sais ce que je veux récupérer.
Si je pouvais au moins récupérer le $order_id, a la limite, je me débrouilles pour faire une requête à la bdd pour qu'il me files les infos nécessaires.
Le tout c'est de savoir comment récupérer les données que je vois dans le var_dump... de toute évidence c'est un array de données, mais comment faire pour les récupérer ? Est-il possible de m'aiguiller sur une ressource qui m'en dira plus ?
Sinon, je suis pret a payer pour la dev d'un export xml (au format de la pièce jointe) qui correspond au besoin de WorldShip ( le logiciel UPS ) mais j'aimerais savoir combien cela va me couter et combien de temps il faudrait... je n'ai pas prévu de budget pour ça, mais la demande deviens impérieux et il va bien falloir trouver une solution.
Please Log in or Create an account to join the conversation.
Je suppose que vous avez déjà un foreach($this->orders as $order){ //votre code générant le xml } ou quelque chose du genre ?
Et bien dans le foreach, il suffit de faire comme cela pour avoir l'order_id:
$order->order_id
et $order->order_user_id pour l'id de l'utilisateur dans HikaShop.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
Par contre, la BDD est en UTF, et lors de l'export, j'ai des caractères étranges à la place des accents... on exporte en ISO ? (j'avais déjà ce phénomène remarqué lors de l'export csv.)
J'ai réussi a avancer mon projet d'export XML, mais comme il me faut des valeurs supplémentaires (poids, nombre de colis, etc..) je suis en train de faire des requêtes aux tables concernées. Du coup, pour apprendre le PHP, j'apprends : (arrays, récupérer les variables dans l'array, etc... WOW!)
Bref, comment faire pour avoir des accents correctement lors de l'export?? Merci encore pour tes tuyaux ! Ça m'a bien aidé.
Je retourne me perdre dans mes boucles ! :silly:
edit: Je m’aperçois qu'il me faut un encodage en windows-1252 pour être compatible avec WorldShip d'UPS.
Please Log in or Create an account to join the conversation.
- patrickdumoncel
-
Topic Author
- Offline
- Posts: 24
- Thank you received: 4
JE poste mon trouvaille dans un nouveau fil... ça poura sans doute aider d'autres utilisateurs !
Enzo24
Please Log in or Create an account to join the conversation.