UPS et XML.. que fait exactement le plugin .?

  • Posts: 24
  • Thank you received: 4
11 years 6 months ago #71634

Bonjour,

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.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 6 months ago #71704

Bonjour,

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.

The following user(s) said Thank You: patrickdumoncel

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 4
11 years 6 months ago #71765

.

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.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 6 months ago #72116

Par de problème. Nous pourrons répondre à vos questions.

The following user(s) said Thank You: patrickdumoncel

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #73009

Bonjour Nicolas,

Je me lances :

J'ai donc modifié order export par un petit quelquechose de simple .

<?php
/**
...
 */
defined('_JEXEC') or die('Restricted access');
?>

<?php
    header('Content-type: text/plain');
    header('Content-Disposition: attachment; filename="default-filename.txt"');
?>Hello, world.

exit;

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 ?

Last edit: 11 years 5 months ago by patrickdumoncel. Reason: Rajout d'info

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 5 months ago #73048

Non, ce que vous avez fait ne crée pas de fichier sur le serveur.

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.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #73053

Merci pour la réponse :)

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.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 5 months ago #73063

C'est une vue du backend.
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.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #73066

ME sens nul de suite ! MDR ! Évidemment ! J'ai choisi mon template ! :silly:

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.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 5 months ago #73077

Il n'y a pas de telle liste.

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.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #73383

J'avance sur mon projet.

Quand je fais par exemple :

echo $user_id;

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

Last edit: 11 years 5 months ago by patrickdumoncel.

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 5 months ago #73446

j'ai parlé d'un var_dump de $this.
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.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #74185

Bonjour !:)

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.

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
11 years 5 months ago #74398

D'après votre var_dump $this->orders contient un array de commandes.

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.

The following user(s) said Thank You: patrickdumoncel

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #74769

Merci Nicolas :)

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.

Last edit: 11 years 5 months ago by patrickdumoncel.

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 4
11 years 5 months ago #75343

MERCI POUR TOUT NICOLAS : T'ES UN CHAMPION !! :) :) :)

JE poste mon trouvaille dans un nouveau fil... ça poura sans doute aider d'autres utilisateurs !

Enzo24

The following user(s) said Thank You: nicolas

Please Log in or Create an account to join the conversation.

Time to create page: 0.085 seconds
Powered by Kunena Forum