Plugin Author
Halyra
(@harasse)
Bonjour,
On utilise le bouton “automatique” de la passerelle pour récupérer le numéro de suivi, ( l’impression devrait elle se lancer automatiquement à la reception du numéro ? )puis en utilise le bouton “Etiquette” et ca ne marche pas toujours pas
:
Le bouton “Etiquette” ne sert que pour produire des étiquettes adresse (non Colissimo) pour enveloppes et non pour les étiquettes d’affranchissement Colissimo.
Après avoir cliqué sur le bouton “automatique” de la passerelle, le code de suivi doit apparaître dans la passerelle. Ensuite vous devez retourner dans la liste des commandes et ouvrir la commande où vous trouverez alors un bouton d’impression dans la métabox Colissimo.
Vos logs NGINX
:
Les étiquettes d’affranchissements et les CN23 sont stockés dans un répertoire ‘/wp-content/uploads/cdistore’ et non dans une table DB pour ne pas encombrer inconsidérément vos bases de données.
L’erreur que vous avez signifie que votre système a refusé d’accorder les droits nécessaires à CDI quand celui-ci les a demandé pour stocker une étiquette d’affranchissement.
C’est de ce coté la qu’il faudrait regarder. Ce n’est pas en rapport avec votre imprimante.
Bonjour,
Tout d’abord merci pour votre réponse rapide. Hier j’ai décortiqué le code et effectivement il y a avait un problème pour créer le dossier cdistore dans uploads/.
CDI a t’il des droits particuliers ??? WordPress possède les droits pour mettre à jour les plugins, ainsi qu’écrire dans uploads/ pour les dossiers photos : 2017/11/….
Je ne l’ai pas précisé mais nous sommes en php7.0.24 et n’ayant pas l’imprimante DataMax à proximité pour les tests à domicile, je suis en mode “PDF 10×15”. Mais dès Lundi je regarderai à nouveau en mode “ZPL_10x15 203dpi”
J’ai édité le fichier [includes/WC-function-Colissimo.php] :
Dans la fonction cdi_uploads_put_contents() les références à request_filesystem_credentials() de WordPress sont en erreurs. aîe! Finalement après recherche je les ai mis en commentaire, idem pour $wp_filesystem->put_contents(). J’ai utilisé à la place la fonction file_put_contents() et le fichier c’est créé OK 🙂
J’ai reporté ce type de modification dans les fonctions :
cdi_uploads_get_contents() => file_get_contents()
cdi_delete_order() => unlink($filename);
Le bouton “Print label” apparaît à présent en éditant la commande ( après avoir bien évidement utiliser le bouton “automatique pour récupérer un numéro de suivi )
Et de nouveau un soucis, en cliquant dessus, je n’ai que du texte[code pdf] qui apparaît à l'écran. Est ce que ca devrait lancer l’aperçu d'impression Windows ? Je ne vois pas de code javascript document.print sur le bouton
J'ai cherché alors dans le fichier WC_print-localpdf-labelandcn23.php() et j'ai certainement pas saisi la mécanique pour : header('Content-type: text/pdf' ); Je l'ai remplacé par :
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $thepdffile . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
Ce qui me permet de récupérer le pdf en forçant le téléchargement.., mais au final on s'éloigne du principe d'impression car grace au lien donné dans la Passerelle d'expédition, je peux récupérer aussi le fichier ici, pas sur que ce soit utile comme code.
Vous l'aurez compris, je suis un peu perdu, mais optimiste 😉 Votre code est très clair et bien écrit, je devrais pouvoir arriver à lui faire faire ce que je souhaite. Nous sommes à plus de 100 commandes jours, l'automatisation de certaine tache en minimisant les interactions dans l'admin WordPress va devenir crucial pour nous.
Bon Weekend
Yohann
Plugin Author
Halyra
(@harasse)
La référence url vers une étiquette va disparaitre très prochainement selon LaPoste-Colissimo.
Vérifiez qu’il n’y a pas une constante FS_METHOD forcée dans wp-config.php.
Nous utilisons sur tout nos sites : FS_METHOD = ‘ssh2’ avec les paramètres qui vont avec, à savoir : FTP_BASE / FTP_USER / FTP_PASS / FTP_HOST
Est ce que ca pourrait être à l’origine du soucis pour l’utilisation des fonctions request_filesystem_credentials() et la classe wp_filesystem ? Je n’ai jamais eu de soucis avec jusqu’à present.
merci pour vos retours.
Je continue dans le debug intensif et nous sommes repassés en mode “ZPL” pour tester l’imprimante.
PHP message: *** LOG CDI – LINE:328 FILE:/includes/WC-gateway-colissimo-auto.php ***:” while reading response header from upstream.
La classe ColissimoAFServiceGenerate() qui permet de créer la variable $ok
$ok = $ColissimoAFServiceGenerate->getResult();
Renvoie le champ vide ‘pdfUrl’ de plus alors que précédement en mode ‘PDF’ dans uploads/cdistore j’obtenais CDI-label-13865.txt avec comme contenu un pdf. Maintenant je n’ai que “JVBERiUlRU9G” la meme séquence quelque soit les commandes .
Est ce un mauvais réglage ?
ex:
ColissimoAFStructGenerateLabelResponse Object
(
[return] => ColissimoAFStructGenerateLabelResponseType Object
(
[labelXmlReponse] =>
[labelResponse] => ColissimoAFStructLabelResponse Object
(
[label] =>
[cn23] =>
[parcelNumber] => 6C13649963551
[parcelNumberPartner] => 0092140116C1364996355802250Y
[pdfUrl] =>
[result:ColissimoAFWsdlClass:private] =>
[lastError:ColissimoAFWsdlClass:private] =>
[internArrayToIterate:ColissimoAFWsdlClass:private] =>
[internArrayToIterateIsArray:ColissimoAFWsdlClass:private] =>
[internArrayToIterateOffset:ColissimoAFWsdlClass:private] =>
)
[messages] => Array
(
[0] => ColissimoAFStructMessage Object
(
[id] => 0
[messageContent] => La requête a été traitée avec succès
[type] => INFOS
[result:ColissimoAFWsdlClass:private] =>
[lastError:ColissimoAFWsdlClass:private] =>
[internArrayToIterate:ColissimoAFWsdlClass:private] =>
[internArrayToIterateIsArray:ColissimoAFWsdlClass:private] =>
[internArrayToIterateOffset:ColissimoAFWsdlClass:private] =>
)
)
[result:ColissimoAFWsdlClass:private] =>
[lastError:ColissimoAFWsdlClass:private] =>
[internArrayToIterate:ColissimoAFWsdlClass:private] =>
[internArrayToIterateIsArray:ColissimoAFWsdlClass:private] =>
[internArrayToIterateOffset:ColissimoAFWsdlClass:private] =>
)
[result:ColissimoAFWsdlClass:private] =>
[lastError:ColissimoAFWsdlClass:private] =>
[internArrayToIterate:ColissimoAFWsdlClass:private] =>
[internArrayToIterateIsArray:ColissimoAFWsdlClass:private] =>
[internArrayToIterateOffset:ColissimoAFWsdlClass:private] =>
)