Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Contributions _ [CONTRIBUTION] Reclamaposte

Écrit par : delete 25 Jan 2009, 17:46

1ère ébauche de Réclamaposte !

Pour donner suite à ce post qui stagnait : http://www.oscommerce-fr.info/forum/index.php?showtopic=59046

Un petit clin d'oeil à Regne au passage (où es tu ?) et à Mosaïc qui nous ont aidé à automatiser au maximum wink.gif

Après avoir essuyé des déboires avec des logiciels payants, voici une contrib permettant de générer automatiquement une demande de remboursement auprès des services postaux français.

- Un fichier de réclamation est automatiquement généré au format PDF avec papier à entête et listing détaillé demande de remboursement
Sauts de pages gérés
Numéros de commandes, de colis, date d'expedition, de réception du colis, jours de retard etc...

Nécessite les fichiers images (je ne m'étale pas... mrgreen.gif) qui sont la clé de la contrib.

Me les demander ou les demander à Regne. J'invite les prochains intervenants dans ce topic à faire savoir qu'ils ont a disposition ces fichiers afin de se partager les envois wink.gif

PHP 5 Requis - Merci de ne pas me parler de file_put_contents, PHP4 est obsolète tongue.gif

Nécessite l'excellente contribution http://www.fpdf.org/ (testé avec la version v1.53)

C'est un premier jet, fonctionnel, mais il y a des amélioration à faire, notamment sur la gestion des remboursements reçus.

Mode d'emploi :

Dézipper à la racine de votre admin.
Installer fpdf dans ce même répertoire (ce qui fera admin/fpdf)

Executer la requête SQL qui rajoutera un champ laposte dans orders_history.

La contrib a été fait pour fonctionner avec Tracking in order history 1.0 de CHAVEIRO. Mais un simple champ track_num avec le numéro de colis dans l'historique suffit.

Editer au besoin dans reclamapost.php et reclamapost_pdf.php le chemin vers votre répertoire temporaire.

Editer votre menu préféré (par exemple admin/includes/boxes/tools.php) et ajouter reclamapost.php.

Editer le fichier includes/languages/french/reclamaposte_pdf.php pour personnaliser votre document PDF.

Les utilisateurs de admin access level devront bien entendu autoriser les fichiers reclamapost.php et reclamapost_pdf.php.

Lien vers la contrib : http://addons.oscommerce.com/info/6502

Edit : Premier petit bug connu cry.gif créer un fichier vide laposte.list.txt avec les droits en écriture dans le répertoire temporaire précité blush.gif

Écrit par : regne 26 Jan 2009, 10:14

Salut,

Je me cache...lol... beaucoup de boulot et de développement... donc je suis toujours la mais incognito...


Je vais tester tout ça des que j'ai un peu de temps et je ferai un retour...


Écrit par : Phocea 26 Jan 2009, 13:44

Ton projet m interesse, j'y pensais d'ailleurs dernierement quand j ai du retaper à la main les colissimo en retard afin de faire une réclamation smile.gif

Bref, pas le temps cette semaine pour cause de ski intensif, mais je regarde dès que je peu. Par contre je vais utiliser file_put_content avec le hack php5->php4, donc pas d impact sur la contrib.

Pour les images, je ne les ai pas, mais faut il rendre la contrib compatible avec e-como qui utilise toujours du texte pour le moment ?

Pour le fichier, peut etre un file_exists et création du fichier si négatif??

Je reviens dès les test réels.

Écrit par : Phocea 26 Jan 2009, 15:06

Bon je me réponds car j ai eu un peu pus de temps libre que prévu smile.gif

D'abord pour PHP4, ajouter en début du fichier reclamaposte.php:


Code
if(!function_exists('file_put_contents')) {
    function file_put_contents($filename, $data, $file_append = false) {
        $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
        if(!$fp) {
            trigger_error('file_put_contents - erreur écriture dans.', E_USER_ERROR);
            return;
        }
        fputs($fp, $data);
        fclose($fp);
    }
}


J'ai aussi rajouter

define(TRACKING_DB_FIELD, 'tracking_id'); et utiliser la variable TRACKING_DB_FIELD dans les requetes plus loin car mon champ de tracking ne s'appelle par track_num!!

Après une petite config de fpdf plus d'erreur, par contre je suppose qu'il faut le cron de regne pour que cela fonctionne ?

reclamaposte scanne le fichier laposte.list.txt qui doit contenir les info des colissimo. Mais quand est ce que ce fichier est créé. Si un lien doit etre fait avec le cron de regne, ne faudrait pas plutot recuperer ces informations dans orders_suivi_colissimo ?

Écrit par : Rogers 26 Jan 2009, 15:56

J'ai installé aussi ce matin la contrib. Un peu long (php 4, donc j'ai du mettre la même fonction qui va bien sur les put_content), installé la librairie cURL qui m'a valu une mise jour de php et d'Apache.

Fpdf s'installe en 2 secondes. Aucun problème. Bien renseigner le répertoire temporaire je lui ai rajouté la variable serveur SERVER['root']. A faire dans reclamaposte.php et reclamaposte_pdf.php.

Tout fonctionne donc. 3 étapes. On vérifie l'état des commande, une liste sort avec des flags. On génère le pdf pour imprimer (et sauvegarder) la réclamation. Enfin, on met à jour la base de données pour indiquer les colis que l'on a réclamé. Pourquoi utiliser un CRON ? L'outil prend en compte les colis des 30 derniers jours. La contrib de Regne étant intéressante, mais ayant développé mon système il y a un an, il ne me fallait qu'une contrib de réclamation. Celle de Delete est donc complémentaire.

Écrit par : Phocea 26 Jan 2009, 16:27

Pour le cron c'était une question. Si on l'utilise pour stocker les états du colissimo alors pourquoi ne pas s'en servir dans cette contrib.

J'avais un autre soucis en raison de la ligne if ( strlen($track_num) != 13 ) continue; car je track non seulement du colissimo mais aussi des lettre max, distingo et poste suisse !! A remplacer peut être par un regex vérifiant les 2 premiers caractères.

Pour le repertoire tmp j'ai mis

Code
$tmp_dir = DIR_FS_ADMIN.'/tmp';


pour rester un peu plus standard avec osc et pouvoir visionner le répertoire (ce qui n est pas le cas du tmp de mon serveur mutualisé)

Écrit par : Phocea 26 Jan 2009, 17:08

Je spamme mais bon smile.gif

Petit ajout pratique dans reclamaposte_pdf.php

changer

Code
$this->Cell(0,10, RECLAMAPOSTE_FOOTER, 0,0,'C');


par
Code
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');


et ajouter
Code
$pdf->AliasNbPages();


juste avant
Code
$pdf->Output();


Ce qui permet d'afficher le nb de page total.

Écrit par : delete 26 Jan 2009, 17:08

Voilà

- Ajout de l'adresse du client (obligatoire pour obtenir remboursement)

- Ajout du support PHP4 sad.gif

- Correctif du fichier texte qui n'était pas créé par défaut

- Ajout de la constante TRACKING_DB_FIELD merci à Phocea pour cette idée wink.gif

http://addons.oscommerce.com/info/6502

Comme me l'a fait remarqué Phocea ne pas oublier de changer le papier à entête dans admin/includes/languages/french/reclamaposte_pdf.php laugh.gif biggrin.gif

Écrit par : tchaoo 26 Jan 2009, 18:52

Bjr,

Petite question de béotien...

La finalité de cette contrib ? se faire rembourser tous les colis qui mettent plus de 48 heures ?
Ca marche ? et ça fait beaucoup en % de colis ?

Merci !

Bruno

Écrit par : regne 26 Jan 2009, 19:05

Bon voila j'ai testé ... et ca marche pas !! wink.gif

Alors j'ai d(abord eu un bug en generant le pdf : Some data has already been output, can't send PDF file

donc voila j'ai corrigé en ajoutant : ob_end_clean(); dans reclamaposte_pdf.php


Maintenant ca me genere le pdf tout bien... sauf que la liste des colis est vide. aucun colis listé alors que dans la page reclamaposte.php j'ai bien un colis (??) listé...

je ne sais pas trop qu'elle resultat ca doit donner dans la page reclamaposte.php, mais il me semble que 1 seul colis de lsité ca fait un peu legé... a moins que ca les liste un par un ??

Quelqu'un peut il m'eclairer ?

Merci d'avance

Regne

Écrit par : delete 26 Jan 2009, 21:27

Citation (tchaoo @ 26 Jan 2009, 18:52) *
La finalité de cette contrib ? se faire rembourser tous les colis qui mettent plus de 48 heures ?
Ca marche ? et ça fait beaucoup en % de colis ?

Les logiciels payants annoncent 20%, moi, factuel, j'annonce 10 points.

Citation (regne @ 26 Jan 2009, 19:05) *
Bon voila j'ai testé ... et ca marche pas !! wink.gif

Je t'envoie un R.I.B. tongue.gif

Citation (regne @ 26 Jan 2009, 19:05) *
Alors j'ai d(abord eu un bug en generant le pdf : Some data has already been output, can't send PDF file

donc voila j'ai corrigé en ajoutant : ob_end_clean(); dans reclamaposte_pdf.php


Les réponses classiques sont dans la FAQ.

Le ob_end_clean, c'est du Mercurochrome sur une jambe de bois. cool.gif

Écrit par : Rogers 26 Jan 2009, 23:25

Regne > As-tu bien renseigné la variable $tmpdir dans reclamaposte_pdf.php comme dans reclamaposte.php ? Je dis ça car ça m'est arrivé ce matin tongue.gif


Écrit par : delete 27 Jan 2009, 00:04

Citation (Phocea @ 26 Jan 2009, 17:08) *
Je spamme mais bon smile.gif

Non wink.gif

Nickel impec ! j'avais pas vu avant de poster.

Ce sera pour la prochaine version smile.gif

Écrit par : azra28 27 Jan 2009, 01:24

Bravo à tous,

J'avais de mon coté développé un système de ce type depuis plusieurs mois et je dois dire que le nombre de colis remboursé est assez impressionnant.

Mon code ne fonctionne pas par tache cron, j'y vais de temps à autre et vérifie les colis en retard, puis les faxes (au 0329421588, numéro trouvé sur le forum).
Le listing des colis en retard ne doit pas comporter plus de 5 réclamations(infos trouvés sur le forum) car sinon le traitement est semble t'il beaucoup plus long
La date de mes demandes ainsi que celle de réponse de la poste sont aussi enregistré (pratique pour faire des re-réclamations).

@+

Écrit par : delete 27 Jan 2009, 01:32

Citation (azra28 @ 27 Jan 2009, 01:24) *
Car sinon le traitement est semble t'il beaucoup plus long

Je ne me suis pas géné aujourd'hui pour envoyer une demande de 70 remboursements.

Hormis ça tu as certainemment raison et il est mieux de traiter les demandes régulièrement.
Citation (azra28 @ 27 Jan 2009, 01:24) *
La date de mes demandes ainsi que celle de réponse de la poste sont aussi enregistré (pratique pour faire des re-réclamations).

C'est prévu dans la contrib, il n'y a plus qu'à faire !

wink.gif wink.gif

Écrit par : azra28 27 Jan 2009, 01:35

Citation (delete @ 27 Jan 2009, 02:32) *
C'est prévu dans la contrib, il n'y a plus qu'à faire !

wink.gif wink.gif


Disons que pour l'instant je conserve mon système qui fonctionne malgré tout et j'ai d'autres trucs à régler(une meilleure gestion de mes retours)

@++

Écrit par : regne 27 Jan 2009, 11:07

Salut,

Bon je sais pas si ce que je vais dire est c** ou pas....

J'ai retirer dans la requete sql de reclamapost.php le where statut!= livré, car avec le cron de suivi les commandes passe toutes seules en livré...

Donc elles peuvent etre notifié comme livrée, mais avec du retard ??

Je suis dans le juste ou pas ?

du coup j'ai une liste un peu plus consequente de commandes...

(j'ai honte de le dire mais mon premier bug viens du faite que je n'avais pas changer le numero du statut livre et expedié... meaculpa !)

Écrit par : delete 27 Jan 2009, 11:27

J'ai eu le même problème que toi et j'ai supprimé ce champ ridicule.

Etant donné que cette contribution je la fait cohabiter avec une similaire à la tienne (Envoi automatique des N° Colissimo Suivi)

mes commandes étaient donc en statut livré et donc n'apparaissaient non pas non plus dans la contribution reclamaposte en l'état !

Donc tu as fait la bonne manip wink.gif

Écrit par : regne 27 Jan 2009, 12:00

Je suis trop fort wink.gif lol le mec modeste...

Sinon j'ai vu un autre petit bug, dans la liste des colis dans le pdf, si le client a une adresse avec complement d'adresse la fin de l'adresse empiète sur la ligne du dessous...

Écrit par : Rogers 27 Jan 2009, 12:41

Bug remonté.

Pour ma part, cela me fait un décalage sur une des page qui est toute blanche.

Écrit par : Rogers 27 Jan 2009, 13:05

Nouvelles modifications :

- Pour ne récupérer que les colis envoyés en France, car comme vous le savez les réclamations sont impossibles en International et en DOM.

remplacer dans reclamaposte.php ligne 415 :

Code
$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`  from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_purchased and orders_status = "' . $status_sent  . '" or orders_status = "'. $status_shipping_progress . '" and orders_status != "'. $status_delivery . '";';


par

Code
$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`  from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_purchased and delivery_country = "France" and orders_status = "' . $status_sent  . '" or orders_status = "'. $status_shipping_progress . '" and orders_status != "'. $status_delivery . '";';


Si vous avez déjà installé la contrib, que vous avez déjà lancé la recherche de colis en retard et que vous expédiez à l'étranger (et que la contrib a trouvé des colis en retards en international), il va falloir vider laposte.remboursements.txt et laposte.list.txt pour que cette modification soit prise en compte.

Ensuite, si comme moi vous utilisez le format d'adresse standard français dans votre boutique "Code Postal Ville" au lieu de (par défaut) "Ville, Code Postal", le pdf n'en tient pas compte.

Il faut donc modifier dans reclamaposte_pdf.php la ligne 190 :

Code
$pdf->MultiCell(70, 5, tep_address_format(1, $order->delivery, '', '', "\n"), 0, 'L');


par

Code
$pdf->MultiCell(70, 5, tep_address_format($order->delivery['format_id'], $order->delivery, '', '', "\n"), 0, 'L');


Voila, vos adresses s'affichent correctement dans le pdf.

Écrit par : scarlaty 27 Jan 2009, 15:02

Bonjour,

Je ne suis pas propriétaire d'un site de commerce mais je me suis intéressé au suivi colis...

http://www.oscommerce-fr.info/forum/index.php?showuser=4314 sur un autre sujet traitant des dates avait effectué une modification du code pour pouvoir lire les états ( sans nécessité d'images supplémentaire ) et les dates.

J'ai fait quelque modification de son code et j'ai ajouté les statuts que je connaissais.. une 20ene pour moi...

Mon code permet seulement de voir les statuts des colis et non pas faire des réclamation mais puisque le script "reclamaposte" s'inspire du statut et des dates.. je poste ici !

Un exemple est disponible ici : http://tfourn.free.fr/colissimo/ ( ne pas mettre trop de colis car free ne permet pas d'augmenter le set time limite..

et mes sources sont dispo ici : http://tfourn.free.fr/colissimo/Suivilaposte.rar

Le traitement par php_ocr est beaucoup plus fiable et permet un gain de temps...

Mon code est normalement complètement commenté..

Si vous avez des remarques ou des demandes n'hésitez pas


Edit : n'oubliez pas que cela est interdit par la charte du site coliposte...

Écrit par : Phocea 27 Jan 2009, 15:26

2 petits trucs

On peut remplacer la ligne

Code
if ( strlen($track_num) != 13) continue;

par

Code
if (preg_match("/(8N|8U)[a-z0-9]{1,11}$/i", $track_num) == 0) continue;


Ce qui permet de ne prendre en compte que les colissimo nationaux, et tracking de 13 de longueur. Il faudra peut être ajouter des cas autres que (8N|8U), je ne sais pas ce que ca donne pour colissimo expert etc... Une clef de config en haut de fichier peut faire l'affaire.

Petit bug avec la colonne de tracking en define

Code
$order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" and laposte != "' . REMBOURSEMENT_DEMANDE . '";';

au lieu de

Code
$order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and  track_num != "" and laposte != "' . REMBOURSEMENT_DEMANDE . '";';


ET 2 questions:

Écrit par : regne 27 Jan 2009, 15:39

Citation (phocea)
# Pourquoi mettre les images dans le repertoire image coté catalogue?


Je pense qu'il a fait ca car ca part de la precedente contrib qui utilise deja ces images....


Écrit par : scarlaty 27 Jan 2009, 16:02

Citation (Phocea @ 27 Jan 2009, 16:26) *
#Faut il prendre en compte les cas ou le statut n'a pas été mis à jours malgré le dépassement de date?


Je pense qu'il faut mieux attendre que le statut soit livré pour envoyer la réclamation... Le site de laposte ne doit pas être mis à jour en temps réel mais plutôt 1 à 2 fois par jour...

Écrit par : Phocea 27 Jan 2009, 16:10

Citation (scarlaty @ 27 Jan 2009, 17:02) *
Citation (Phocea @ 27 Jan 2009, 16:26) *
#Faut il prendre en compte les cas ou le statut n'a pas été mis à jours malgré le dépassement de date?


Je pense qu'il faut mieux attendre que le statut soit livré pour envoyer la réclamation... Le site de laposte ne doit pas être mis à jour en temps réel mais plutôt 1 à 2 fois par jour...


je ne parle pas des colis en instance de livraison mais ceux qui ne sont jamais mis à jours. J'en ai en ce moment qui sont depuis une semaine à "Colis en cours d'acheminement..."

Écrit par : scarlaty 27 Jan 2009, 16:13

Peut être voir directement avec la poste pour des colis comme cela !
Le colis a peut etre été volé ou perdu..

Écrit par : scarlaty 27 Jan 2009, 16:18

Citation (Phocea @ 27 Jan 2009, 16:26) *
Code
if ( strlen($track_num) != 13) continue;

par

Code
if (preg_match("/(8N|8U)[a-z0-9]{1,11}$/i", $track_num) == 0) continue;


Ce qui permet de ne prendre en compte que les colissimo nationaux, et tracking de 13 de longueur. Il faudra peut être ajouter des cas autres que (8N|8U), je ne sais pas ce que ca donne pour colissimo expert etc... Une clef de config en haut de fichier peut faire l'affaire.


Personnellement, j'ai du 7A, 8L,8V... en direction de la france !

Écrit par : Phocea 27 Jan 2009, 16:28

Citation (scarlaty @ 27 Jan 2009, 17:13) *
Peut être voir directement avec la poste pour des colis comme cela !
Le colis a peut etre été volé ou perdu..


Arf ce n'est justement pas le but de cette automation...
Je reviens à l'idée de coupler cela au CRON de règne qui permet une traçabilité et s'occupe en amont de stocker les différents états du colis, et de notifier le client.

Le processus de réclamation, devrait lui uniquement avoir l'intelligence de savoir si un colis est arrivé en retard ou pas. Perso si l'état est pas mis à jours je réclame, ils n'avaient qu'à faire le boulot correctement et je ne m'amuse pas à faire du cas par cas.

La contrib de réclamation doit donc juste avoir des règles pour calculer le nb de jours ouvrées entre la date d'expédition enregistrée dans OSC (et pas celle notifié par La Poste car j'ai vu des cas de déaprt le lendemain du dépot, meme avant 16h!).
Le code doit aussi être assez intelligent pour traiter les cas non livré ou le suivi n'a pas été fait correctement tout en finalisant ceux qui sont passé par un état "à disposition, destinataire absent etc...", dans les temps imparti bien entendu.

D'ailleurs on peut aussi se retrouver avec un colis en retard qui reste à "Colis en instance à la poste, destinataire avisé disposant de 15 jours pour aller le retirer" ... Dans le cas présent, le cas contraire est en réclamation il me semble: je parle du cas d'un colis en instance, que le client récupère 5 jours plus tard et qui passe à "Livré"

Citation
Personnellement, j'ai du 7A, 8L,8V... en direction de la france !

Ce pourquoi j'ai écrit qu'il fallait prévoir de rajouter des cas .... faut lire jusqu'au bout smile.gif

Écrit par : delete 27 Jan 2009, 16:35

Citation (Phocea @ 27 Jan 2009, 16:28) *
Le processus de réclamation, devrait lui uniquement avoir l'intelligence de savoir si un colis est arrivé en retard ou pas. Perso si l'état est pas mis à jours je réclame, ils n'avaient qu'à faire le boulot correctement et je ne m'amuse pas à faire du cas par cas.


C'est géré :
Code
                //
                // Cas dans lesquels la commande n'est pas remboursable
                //
                case 2 :
                case 4 :
                case 5 :
                case 9 :
                        curl_close($ch);
                        return(-1);

Écrit par : Rogers 27 Jan 2009, 16:35

Il faut surtout comprendre 7A c'est pour les DOM et que ma modifs tiens compte uniquement des départements FRANCE METROPOLITAINE. Donc pas besoin de faire une REGEX avec l'identification du début des numéros de colis...

Écrit par : Phocea 27 Jan 2009, 16:38

Citation (delete @ 27 Jan 2009, 17:35) *
Citation (Phocea @ 27 Jan 2009, 16:28) *
Le processus de réclamation, devrait lui uniquement avoir l'intelligence de savoir si un colis est arrivé en retard ou pas. Perso si l'état est pas mis à jours je réclame, ils n'avaient qu'à faire le boulot correctement et je ne m'amuse pas à faire du cas par cas.


C'est géré :
Code
                //
                // Cas dans lesquels la commande n'est pas remboursable
                //
                case 2 :
                case 4 :
                case 5 :
                case 9 :
                        curl_close($ch);
                        return(-1);



Oui et non, car dans le cas 2, 4, 5 ça ne veut pas dire que le colis n'était pas en retard au moment de la 1ere présentation. Pour 9 c'est juste car international, pour peu qu'on les traite smile.gif

Écrit par : Phocea 27 Jan 2009, 16:43

Citation (Rogers @ 27 Jan 2009, 17:35) *
Il faut surtout comprendre 7A c'est pour les DOM et que ma modifs tiens compte uniquement des départements FRANCE METROPOLITAINE. Donc pas besoin de faire une REGEX avec l'identification du début des numéros de colis...


Ou j'avais bien vu mais faut il encore que ça ne soit pas sur une boutique qui a France ou France Métropolitaine comme je l'ai déjà vu. Heureusement que ça s'écrit pareil dans toutes les langues smile.gif
Mais bon, j'étais en train de tester la regex quand tu as posté ta modif... Par contre il n'y a pas de garantie sur les DOM TOM du tout ?

Écrit par : scarlaty 27 Jan 2009, 16:48

Phocea je pense que se que tu souhaite faire n'est pas faisable !

Laposte fourni sont service de colis suivi via le net pour information mais les informations ne peuvent pas valoir de preuve donc comme je t'ai dit pour certain colis il faut traité directement avec la poste !


Si tu souhaite réellement automatisé.. demande à la poste leur registre.. une option qui coute un certain prix mais qui permet de faire valoir ses droits !

Pour les mentions légales du site de la poste :

http://www.coliposte.net/gp/services/main.jsp?m=22003000

Il ne faut pas lire entre les lignes ! Laposte se protège c'est normal ! Pour les entreprise il existe des contrats donc voir peut etre avec cette solution si tu ne veux pas t'attirer des ennuis wink.gif

Écrit par : Phocea 27 Jan 2009, 17:01



Scarlaty, ici on parle de solution technique, pour le légal c'est un autre section du forum merci. Pour les trolls c'est dans la foret smile.gif

Écrit par : delete 27 Jan 2009, 17:09

Citation (Phocea @ 27 Jan 2009, 17:01) *
Scarlaty, ici on parle de solution technique, pour le légal c'est un autre section du forum merci. Pour les trolls c'est dans la foret smile.gif

biggrin.gif

C'est pour ça que les images ne sont pas dans la contrib car elle frise de très près la limite de la légalité (sans ces images un peu moins.)

Voilà j'ai collecté un maximum des informations que vous m'avez tous généreusement fournies et fait une mise à jour.

arrow.gif http://addons.oscommerce.com/info/6502

J'ai eut vent que la poste refuse des pages de réclamation avec + de 7 par page. Dans le doute j'ai limité à 7 et corrigé le problème de pagination évoqué par Rogers.

Merci à Rogers pour la partie documentation.

Merci à tous wub.gif

Edit : Sans troller SVP : il y en a qui font payer ce genre de soft. C'est gonflé, surtout que le support derrière, merci bien ....

Écrit par : Phocea 27 Jan 2009, 17:13

Bon pour que ca soit plus joli:

remplacer

Code
<?php
if ( tep_session_is_registered('order_alert') )
{
    $header = '<td class="smallText" >%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td></tr>';

    
        $line_format = '<tr><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td><td class="smallText">%s</td></tr>';
$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`  from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 300 DAY) <= date_purchased and orders_status = "' . $status_sent  . '";';

par

Code
<?php
if ( tep_session_is_registered('order_alert') )
{
?>

</table><table border="0" width="100%" cellspacing="0" cellpadding="2">
    <tr class="dataTableHeadingRow">
        <td class="dataTableHeadingContent">Status</td>
        <td class="dataTableHeadingContent">Commande</td>
        <td class="dataTableHeadingContent">Colis</td>
        <td class="dataTableHeadingContent">Date</td>
        <td class="dataTableHeadingContent">Client</td>
        <td class="dataTableHeadingContent">Email</td>
        <td class="dataTableHeadingContent">Notif.</td>
    </tr>
<?php

$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`, o.`customers_id`  from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 300 DAY) <= date_purchased and orders_status = "' . $status_sent  . '";';


puis
Code
      // Header : liste des commandes
      //
      if ( isset($header) )
      {
        printf($header, "Status", "Commande", "Colis", "Date", "Client", "Email", "Notif.");
        unset($header);
      }
      //
      // Listing des commandes client
      //
      printf($line_format, $image_status, $orders_id, $track_num, $order_date, $customers_name, $customer_email, $notification);


par

Code
?>
<tr>
     <td class="dataTableContent" align="left" valign="top"><?php echo $image_status ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, 'action=edit&oID=' . $orders_id) . '">'.$orders_id.'</a>'; ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo $track_num ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo $order_date ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="' . tep_href_link(FILENAME_CUSTOMERS, 'action=edit&cID=' . $qr['customers_id']) . '">'.$customers_name.'</a>'; ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo $customer_email ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo $notification ?></td>
</tr>
<?php




Écrit par : mosaic 28 Jan 2009, 01:37

je ne vois pas bien pourquoi générer un fichier en pdf si ce n'est que de se contreindre à utiliser fpdf.
Une simple page en html aurait suffit.

Pour ce qui est des 7 par pages, j'attends confirmation d'un de mes clients.

sinon, belle contrib...

Écrit par : Rogers 28 Jan 2009, 02:33

Pour ma part, je n'étais pas spécialement pour le pdf, mais plus pour du HTML. Il est vrai toutefois que le pdf c'est propre.

D'ailleurs Mosaïc, peux tu demander quelle méthode est la plus efficace, fax ou courrier ? Je suis preneur de cette info tongue.gif

Au passage, je vous informe et je ferai un topic demain (enfin tout à l'heure) sur les nouveaux tarifs (en augmentation bien sûr) de La Poste.

Écrit par : mosaic 28 Jan 2009, 02:44

courrier, assurément

J'ai un client qui fait plus de 16000€ par mois de frais d'expé colissimo et sur lequel on a constaté 17,43% de réclamations.
Perso, le pdf, celà me fait gerber.
Ce sont des frais de dev en plus pour mes clients.

Au plaisir de voir vos progressions sur le sujet.

Écrit par : Rogers 28 Jan 2009, 03:15

Ok merci pour la réponse sur le courrier wink.gif

Je viens de rencontrer ma nouvelle commerciale qui n'était pas contente que je lui dise que je lui ferai des réclamations TRES régulières suite à leur chantage. Donc je cherche la meilleure soluce pour que ce soit vite et bien pris en compte tongue.gif

Concernant le pdf, c'est lourd mais il faut avouer que c'est propre et surtout que ça s'archive mieux que du HTML. Et vu que je conserve tout, ça m'arrange bien.

Enfin, pour ton client, c'est malheureux mais il a de la chance tongue.gif Perso, je suis plus près des 10% que des 20%.

Écrit par : delete 29 Jan 2009, 10:33

http://www.telintrans.fr/index.php?id=34 filiale de la poste fournit le service de suivi (pas de remboursement j'imagine)

Donc l'algo sur les dates/états, c'est du balourd mrgreen.gif

Enfin ce n'est pas grave voilà qui est fait quand même... blush.gif

Écrit par : scarlaty 29 Jan 2009, 11:36

En effet ! C'est cool il y a beaucoup plus d'information sur le colis :

http://www.telintrans.fr/assets/suivi.php?numero=8L68413051774&transporteur=coliposte

Code
{'status': 'ok', 'objets': {'8L68413051774': {'suivi': {'Reponse': {'-Date_Recherche': '', 'Objet': {'Presence_POD': 'false', 'Nombre_Evenements': '', 'Presence_Signature': 'false', 'Livre': 'false', 'Numero_LT': '', 'Evenement': [{'Numero_Poste_Comptable': '607320', 'CP': '60000', 'Bureau': 'BEAUVAIS', 'Code_Etat': 'LIVCFM', 'Date': '2009-01-22', 'Etat_Plus_Significatif': 'true', 'Heure': '', 'Id_Evenement': '5367923076', 'Libelle': 'Colis livr\xE9.'}, {'Numero_Poste_Comptable': '621570', 'CP': '62220', 'Bureau': 'CARVIN ', 'Code_Etat': 'PCHJPO', 'Date': '2009-01-20', 'Etat_Plus_Significatif': 'true', 'Heure': '', 'Id_Evenement': '5361043389', 'Libelle': "Prise en charge d'un colis a la date de la journee postale"}, {'Numero_Poste_Comptable': '622450', 'CP': '62520', 'Bureau': 'LE TOUQUET PARIS PLAGE', 'Code_Etat': 'LIVBPO', 'Date': '2009-01-19', 'Etat_Plus_Significatif': 'true', 'Heure': '', 'Id_Evenement': '5353788970', 'Libelle': 'Colis ou accus\xE9 de r\xE9ception \xE0 signer mis \xE0 disposition dans la bo\xEEte postale.'}, {'Numero_Poste_Comptable': '628260', 'CP': '62520', 'Bureau': 'LE TOUQUET PARIS PLAGE ', 'Code_Etat': 'RENAVI', 'Date': '2009-01-19', 'Etat_Plus_Significatif': 'true', 'Heure': '', 'Id_Evenement': '5354779604', 'Libelle': 'Colis en instance \xE0 La Poste, destinataire avis\xE9 disposant de 15 jours pour aller le retirer.'}], 'Proposition_MAS': 'true'}, 'Numero_LT': '', 'Nombre_Objets': '1', 'Langue': 'fr_FR'}}, 'desti': {'ref': '', 'telephone': '', 'rue3': '', 'nom1': '', 'status': 'ok', 'rue2': '', 'codePays': 'F', 'rue1': '', 'email': '', 'code_postal': '62520', 'ville': ''}, 'exped': {'rue1': '', 'nom1': ''}}}}

Écrit par : Rogers 29 Jan 2009, 12:26

Cela donne quelques états intermédiaires, mais n'est pas aussi pertinent que les outils internes de La Poste. Je viens de faire un test sur un colis que je viens d'avoir en retour NPAI (la cliente m'a informée hier et s'est renseignée à La Poste qui lui a dit que le Colis était retournée, ce que je ne voyais pas sur mon suivi, mais que la cliente pouvait voir sur le suivi fournit par les guichetiers). Le seul état que j'ai en plus avec cet outil, c'est la prise en charge de la plateforme colis Bar le Duc qui est ma plateforme colis.

Pas pertinent...

Écrit par : darkzen 30 Jan 2009, 13:07

Belle contrib, nous allons l'installer de ce pas ..... Merci aux initiateurs

byebye biggrin.gif

Écrit par : delete 30 Jan 2009, 14:31

Salut smile.gif

Methode plus simple que la comparaison d'image.

J'ai généré une liste de clés MD5. Changer les paramètres dans l'entête de reclamaposte.php virer les lignes status_file/description et mettre les lignes suivantes

Code
$status_description['1f9c469ab21e5b64cbb31f45f01b5c77'] = 'Livré';
$status_description['df5635740e757b728e27a34afbb650d3'] = 'Pris en charge de le réseau Colissimo';
$status_description['16b4a42d0412966610c5f7d9504a4414'] = 'Colis en instance à la poste, destinataire avisé disposant de 15 jours pour aller le retirer';
$status_description['5b1092eb53574ac02768d57a0d4439da'] = 'Traité par le site de livraison';
$status_description['e4b21bccc77644f76bbdb2b297297e3e'] = 'Destinataire absent lors de la première livraison, seconde présentation prévue';
$status_description['2785b7f3103de9c8778d9110a91427ef'] = 'Colis à disposition du destinaire au bureau de poste';
$status_description['c51b33cdba95ea6113435739b8259c82'] = 'Colis arrivé dans le réseau partenaire du pays destinataire';
$status_description['55869ad6917e3ce8d4984381e1e12cf7'] = 'Adresse complétée ou corrigée par nos services, colis redirigé vers le bon site de distribution';
$status_description['2c2482aac5701e5b297ab57a13e4eff0'] = 'Colis à disposition du destinataire 5 jours dans le cityssimo';
$status_description['92fa28d7867746aef5bec47b3df19baa'] = 'Colis sorti du territoire de départ';
$status_description['9e21e939b22305a64b1a2f57fa25dd39'] = 'Colis arrivé sur site, livraison en préparation';
$status_description['5b1092eb53574ac02768d57a0d4439da'] = 'Colis traité par le site de livraison';


Il suffit de changer la boucle for dans merci_la_poste() :

Code
        for($i = 0; $i < sizeof( $status_file ); $i++)
        {
                if ( tep_not_null( $status_description[ md5($img) ] ) break;
        }


Facultatif :
Pour générer une clé d'un nouveau fichier image de la poste :
Code
$cle = md5(file_get_contents('fichier_image_de_la_poste.png'));
echo $cle;


biggrin.gif

Écrit par : regne 30 Jan 2009, 14:37

Comment tu as fait pour penser a ça ??! wink.gif

Écrit par : scarlaty 30 Jan 2009, 16:40

J'avais essayé cette technique avant d'arriver sur se forum.. mais j'avais des soucis..

Si tu veux je peux te filer les images que j'ai ( des statuts que tu n'as pas )

Ou une liste de 3000 numéros de colis pour tester wink.gif

Écrit par : delete 30 Jan 2009, 18:36

J'ai testé sur 1000 colis cela fonctionne parfaitement. Donc pour 3000 cela doit fonctionner aussi.

Pour les nouveaux fichiers images cela nous aidera à compléter la contribution de Regne et celle ci, donc si tu peux nous fournir les clés MD5 (avec la solution sus-citée *) et les libellés volontiers wink.gif

Merci d'avance wink.gif

Edit :
*) Génération de la clé MD5 :

Code
$cle = md5(file_get_contents('fichier_image_de_la_poste.png'));
echo $cle;

Écrit par : scarlaty 31 Jan 2009, 11:59

Je t'envoie le lien en MP car je ne vais pas avoir le temps de faire ça avant la semaine prochaine sinon..

Écrit par : Rogers 31 Jan 2009, 12:54

Je vois que ça avance et que ça se bonifie. Bravo.

Belle coopération et merci à toi scarlaty de compléter pour que l'on ait un truc propre et bien construit wink.gif

Un dernier truc, je pense que ce serait pas mal de mettre le nom et l'adresse complète du client en majuscule. C'est le choix qu'à fait Coliposte dans Expeditor. Vous en pensez quoi ? Juste une petite fonction PHP à rajouter, mais je pense que l'on aura certainement moins de problème avec la totalité des coordonnées clients en majuscule. Non ?

Écrit par : delete 31 Jan 2009, 13:19

J'ai reçu le MP de scarlaty je l'en remercie, cela nous porte à 19 le nombre de status que je posterais ASAP.

Concernant les majuscules, Rogers a raison.

Faire les modifs suivantes dans reclamaposte_pdf.php :

Insérer la fonction suivante (soit dans reclamaposte_pdf.php soit dans admin/functions/general.php ça peut être utile wink.gif):

Code
// multibyte array or string conversion to uppercase / by delete
//
function tep_mb_strtoupper($input)
{
        if ( is_array($input) )
        {
            foreach ($input as $key => $val)
            {
                if ( ! tep_not_null($input[$key]) ) continue;

                $input[$key] = mb_strtoupper($input[$key]);
            }
            return $input;
        }
        else
        {
                return mb_strtoupper($input);
        }
}


Rerchercher :
Code
$pdf->MultiCell(70, 5, tep_address_format($order->delivery['format_id'], ..........

Remplacer par :
Code
$pdf->MultiCell(70, 5, tep_address_format($order->delivery['format_id'], tep_mb_strtoupper($order->delivery), '', '', "\n"), 0, 'L');


(je compilerais les modifs à faire pour l'update de la contrib dès que j'ai 5 minutes).

Écrit par : scarlaty 31 Jan 2009, 13:46

C'est dommage car j'ai beaucoup plus de statut (26 de mémoire ) mais il ne sont pas au format md5..

Il faudrait que je t'envoies des numéros de colis a tester (en détails pour voir tous les statuts) pour que tu trouve ceux qui manque..

Ou j'essaierais lundi ta méthode du md5 ca sera plus simple wink.gif

Écrit par : Rogers 31 Jan 2009, 14:00

Merci à toi delete d'avoir apporté les modifs.

Je pense sincèrement que La Poste dans Expeditor avait une raison de prendre les adresses en majuscules d'où ma remarque. Je suis d'ailleurs pour le fait que tout soit en majuscule, cela évite quelques problèmes. La modif me semblait nécessaire et heureux de voir que je ne suis pas le seul wink.gif

Écrit par : delete 31 Jan 2009, 14:27

Donc merci encore a scarlaty, une fois dédoublonné nous en sommes à 20 statuts.

Code
$status_description['1f9c469ab21e5b64cbb31f45f01b5c77'] = 'Livré';
$status_description['df5635740e757b728e27a34afbb650d3'] = 'Pris en charge de le réseau Colissimo';
$status_description['16b4a42d0412966610c5f7d9504a4414'] = 'Colis en instance à la poste, destinataire avisé disposant de 15 jours pour aller le retirer';
$status_description['5b1092eb53574ac02768d57a0d4439da'] = 'Traité par le site de livraison';
$status_description['e4b21bccc77644f76bbdb2b297297e3e'] = 'Destinataire absent lors de la première livraison, seconde présentation prévue';
$status_description['2785b7f3103de9c8778d9110a91427ef'] = 'Colis à disposition du destinaire au bureau de poste';
$status_description['c51b33cdba95ea6113435739b8259c82'] = 'Colis arrivé dans le réseau partenaire du pays destinataire';
$status_description['55869ad6917e3ce8d4984381e1e12cf7'] = 'Adresse complétée ou corrigée par nos services, colis redirigé vers le bon site de distribution';
$status_description['2c2482aac5701e5b297ab57a13e4eff0'] = 'Colis à disposition du destinataire 5 jours dans le cityssimo';
$status_description['92fa28d7867746aef5bec47b3df19baa'] = 'Colis sorti du territoire de départ';
$status_description['9e21e939b22305a64b1a2f57fa25dd39'] = 'Colis arrivé sur site, livraison en préparation';
$status_description['5b1092eb53574ac02768d57a0d4439da'] = 'Colis traité par le site de livraison';
$status_description['2785b7f3103de9c8778d9110a91427ef'] = 'Colis à disposition du destinataire';
$status_description['c51b33cdba95ea6113435739b8259c82'] = 'Colis arrivé dans le réseau partenaire du pays destinataire';
$status_description['52a7f30e1efc9308be8672f3eed5f099'] = 'Colis en cours de réacheminement vers sont expéditeur';
$status_description['4b24a332b2743e942c03ebb27fa10e09'] = 'Colis en instance en douane';
$status_description['347eae829981f03a1036e463103b1eab'] = 'Colis ou accusé de réception à signer mis à disposition dans la boîte postale';
$status_description['e9c66a355d98c1e919be3a518d7e1ed6'] = 'Colis réexpedié à la demande du destinataire vers l\'adresse de son choix';
$status_description['96123b9900beb4f4678e5f68dd188fd3'] = 'Colis retourné à l\'expéditeur car refusé par le destinataire';
$status_description['7dbbaaddb321f689f440cc075f8fd762'] = 'Colis retourné à l\'expéditeur car le destinataire du colis n\'habite pas à l\'adresse indiquée';
$status_description['5154c07d974c9c47f78570054f5ae923'] = 'Colis déposé au bureau de Poste pour acheminement';

En HTML :

$status_description['1f9c469ab21e5b64cbb31f45f01b5c77'] = 'Livr&eacute;'
$status_description['df5635740e757b728e27a34afbb650d3'] = 'Pris en charge de le r&eacute;seau Colissimo'
$status_description['16b4a42d0412966610c5f7d9504a4414'] = 'Colis en instance &agrave; la poste, destinataire avis&eacute; disposant de 15 jours pour aller le retirer'
$status_description['5b1092eb53574ac02768d57a0d4439da'] = 'Colis trait&eacute; par le site de livraison'
$status_description['e4b21bccc77644f76bbdb2b297297e3e'] = 'Destinataire absent lors de la premi&egrave;re livraison, seconde pr&eacute;sentation pr&eacute;vue'
$status_description['2785b7f3103de9c8778d9110a91427ef'] = 'Colis &agrave; disposition du destinataire'
$status_description['c51b33cdba95ea6113435739b8259c82'] = 'Colis arriv&eacute; dans le r&eacute;seau partenaire du pays destinataire'
$status_description['55869ad6917e3ce8d4984381e1e12cf7'] = 'Adresse compl&eacute;t&eacute;e ou corrig&eacute;e par nos services, colis redirig&eacute; vers le bon site de distribution'
$status_description['2c2482aac5701e5b297ab57a13e4eff0'] = 'Colis &agrave; disposition du destinataire 5 jours dans le cityssimo'
$status_description['92fa28d7867746aef5bec47b3df19baa'] = 'Colis sorti du territoire de d&eacute;part'
$status_description['9e21e939b22305a64b1a2f57fa25dd39'] = 'Colis arriv&eacute; sur site, livraison en pr&eacute;paration'
$status_description['52a7f30e1efc9308be8672f3eed5f099'] = 'Colis en cours de r&eacute;acheminement vers sont exp&eacute;diteur'
$status_description['4b24a332b2743e942c03ebb27fa10e09'] = 'Colis en instance en douane'
$status_description['347eae829981f03a1036e463103b1eab'] = 'Colis ou accus&eacute; de r&eacute;ception &agrave; signer mis &agrave; disposition dans la bo&icirc;te postale'
$status_description['e9c66a355d98c1e919be3a518d7e1ed6'] = 'Colis r&eacute;expedi&eacute; &agrave; la demande du destinataire vers l\'adresse de son choix'
$status_description['96123b9900beb4f4678e5f68dd188fd3'] = 'Colis retourn&eacute; &agrave; l\'exp&eacute;diteur car refus&eacute; par le destinataire'
$status_description['7dbbaaddb321f689f440cc075f8fd762'] = 'Colis retourn&eacute; &agrave; l\'exp&eacute;diteur car le destinataire du colis n\'habite pas &agrave; l\'adresse indiqu&eacute;e'
$status_description['5154c07d974c9c47f78570054f5ae923'] = 'Colis d&eacute;pos&eacute; au bureau de Poste pour acheminement'


wink.gif

Écrit par : isnimis 1 Feb 2009, 17:23

Salut a tous
Merci pour cette contrib quelle belle idée.
Aprés installation à chaque fois que je lance la 1ere étape Téléchargement des états en cours j'ai une erreur 500
Internal Server Error

Auriez vous une idée de comment y remédier, peut être en limitant le nombre de traitement des commandes dans un 1er temps ?

Merci d'avance pour votre aide

Écrit par : delete 1 Feb 2009, 18:05

"Colis" (!) mis à jour today sur le site US arrow.gif http://addons.oscommerce.com/info/6502

Donc plus besoin des images smile.gif

@isnimis -> 500 erreur interne du serveur ou erreur de configuration, il faut regarder dans les logs apache pour en savoir +

Ne serais ce pas un problème avec ton .htaccess dans l'admin ? dans le doute vire le une minute pour t'en assurer.

Écrit par : isnimis 1 Feb 2009, 18:47

Merci Delete pour la réponse, ça vient pas du htaccess je vais continuer à creuser l'histoire.
Par contre en mettant ton nouveau fichier pour ne pas avoir besoin des iames j'ai une erreur:
Parse error: syntax error, unexpected T_BREAK in XXX/admin/reclamaposte.php on line 114


Écrit par : delete 1 Feb 2009, 18:52

Il manquait une parenthèse, je n'avais pas tester avant de poster mrgreen.gif

Merci wink.gif c'est corrigé

Écrit par : isnimis 1 Feb 2009, 19:09

Merci pour la réponse rapide.
curieusement et malgré l'erreur 500 j'arrive à générer le fichier de remboursement (qui est different selon si l'erreur est intervenue rapidement ou pas).


Écrit par : foxtoto2000 1 Feb 2009, 20:52

Bonjour à tous,

tout d'abord, merci pour cette contribution qui semble pas mal
est ce que qu'elqu'un pourrait m'envoyer les images de statut de colis?
de plus, est ce qu'il faut créer un répertoire dans l'admin pour FPDF?
quand je clique sur le 2e bouton, rien ne se passe!!!

j'ai également l'erreur suivante parfois quand je clique sur le 1er bouton:

Warning: imagecreatefrompng() [function.imagecreatefrompng]: '/tmp/laposteA3nTxE' is not a valid PNG file in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 226

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 230

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 231

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 232

Warning: imagepng(): supplied argument is not a valid Image resource in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 237
ERROR occured while trying to stat image file: /tmp/lapostekjGAi1

Donc si quelqu'un peut me venir en aide car je ne vois pas d'ou viens le probleme

Merci

Écrit par : tchaoo 2 Feb 2009, 16:07

Bonjour,

J'essaie de faire installer cette contrib par mon développeur, mais nous avons des soucis avec les safe mode que je ne souhaite pas désactiver...

Du coup :

Code
Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/xxxx/shop-africain/admin/reclamaposte.php on line 22

Warning: file_put_contents() [function.file-put-contents]: SAFE MODE Restriction in effect. The script whose uid is 1010 is not allowed to access /tmp owned by uid 0 in /home/xxxx/shop-africain/admin/reclamaposte.php on line 75

Warning: file_put_contents(/tmp/laposte.list.txt) [function.file-put-contents]: failed to open stream: No such file or directory in /home/xxxx/shop-africain/admin/reclamaposte.php on line 75


Une piste ?

Merci pour vos lumières !!

Écrit par : Phocea 2 Feb 2009, 16:41

Citation (tchaoo @ 2 Feb 2009, 17:07) *
Bonjour,

J'essaie de faire installer cette contrib par mon développeur, mais nous avons des soucis avec les safe mode que je ne souhaite pas désactiver...

Du coup :

Code
Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/xxxx/shop-africain/admin/reclamaposte.php on line 22

Warning: file_put_contents() [function.file-put-contents]: SAFE MODE Restriction in effect. The script whose uid is 1010 is not allowed to access /tmp owned by uid 0 in /home/xxxx/shop-africain/admin/reclamaposte.php on line 75

Warning: file_put_contents(/tmp/laposte.list.txt) [function.file-put-contents]: failed to open stream: No such file or directory in /home/xxxx/shop-africain/admin/reclamaposte.php on line 75


Une piste ?

Merci pour vos lumières !!


Essaye de changer le path tmp de la maniere suivante:

Code
$tmp_dir = DIR_FS_ADMIN.'/tmp';


en prenant soin de bien creer un repertoire tmp dans ton repertoire admin avec le bon CHMOD

Écrit par : foxtoto2000 2 Feb 2009, 16:55

est ce que quelque pourrait mettre des impression d'écran des 3 phases?
car j'ai toujours les meme soucis et je voudrais voir ce qui devrait apparaitre
Merci

Écrit par : darkzen 2 Feb 2009, 17:51

Citation (foxtoto2000 @ 2 Feb 2009, 11:55) *
est ce que quelque pourrait mettre des impression d'écran des 3 phases?
car j'ai toujours les meme soucis et je voudrais voir ce qui devrait apparaitre
Merci

1er Phase:



2ème Phase:



3ème Phase:

je n'ai rien , je pense que c'est normal...... elle sert a valider


byebye

Écrit par : MMB 2 Feb 2009, 18:48

Bonjour,
Cette contribution me semble tres interessante et encore merci pour tous ceux qui participe a echangé leurs travail.
J'aimerai bien pouvoir l'utiliser mais il me semble qu'il faut avoir installer une autre contribution avant .
Une contribution permettant d'inserer le numéro de colis dans une table . Savez vous de quel contribution il s'agit ?

Merci

Écrit par : foxtoto2000 2 Feb 2009, 19:23

Merci pour les impressiosn d'ecran.
j'ai donc des fois le 1er ecran mais j'ai souvent le message d'erreur donné au dessus.
de plus riien ne s'affiche sur le 2e bouton
est ce que quelqu'un pourrait me donner un coup de main
Merci

Écrit par : scarlaty 3 Feb 2009, 08:49

Citation (tchaoo @ 2 Feb 2009, 17:07) *
Code
Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/xxxx/shop-africain/admin/reclamaposte.php on line 22


Il faut que tu mette en commentaire la ligne avec la fonction http://fr.php.net/function.set-time-limit car elle n'est pas autorisé en safe mode... Mais du coup si le traitement est trop long tu ne pourra pas tester tous tes colis..

Écrit par : maxime 3 Feb 2009, 11:08

-> Foxtoto2000 et l'erreur PNG
J'ai une petite idée derrière la tête, mais avant de dire une connerie, tu as combien (à peu prés) de colis à tester ? Combien de fois as tu fais la vérification ?

Écrit par : foxtoto2000 3 Feb 2009, 12:42

le probleme c'est que je viens d'installer la contribution et ma boutique est en ligne depuis 5 ans avec plus de 80 000 commandes....
on gère plus de 100 commandes par jour.
de plus est ce qu'il faut mettre toujours mettre les images des différents statut de la poste?
car je ne les ai pas mise
de plus j'ai un statut qu'il n'est pas dans la liste: Colis annoncé par l'expéditeur mais manquant à la prise en charge
pour info, ce message apparait si vouos gérer plus de 50 colis par jours
en tout cas, merci de te pencher sur mon probleme

Écrit par : maxime 3 Feb 2009, 14:25

-> Pour foxtoto2000
Euh, on va commencer par les warning png.

Pour ma part en local avec quelques numéros de tracking, je ne l'obtiens pas. Par contre sur une boutique ayant une volumétrie comparable, on a la même chose.

Ce qui se passe, c'est que ce morceau de code :

Code
switch( $i )
    {
        case 0 :
            // La date
            //
            preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_date_[0-9].*?)"#', $status_page, $result);
            $date = curl_file_get_contents($url . $result[1][$last_status], 0, 1);
            curl_close($ch);

            $tmpfname = tempnam($tmp_dir, "laposte");

            file_put_contents($tmpfname, $date);

            return(1);
            break;


ne retourne pas une image png valide. Ce n'est pas systématique, puisque majoritairement le code fonctionne.
A mon avis c'est cURL qui pose problème.
Je vois plusieurs causes, mais à mon avis la plus probable est un timeout au niveau de curl.
J'ai opté pour une solution simple (un if sur $img = imagecreatefrompng($tmpfname)), mais peut-être qu'un catch/try serait mieux (enfin pour php5), ou une vérification de timeout sur cURL.

Écrit par : delete 3 Feb 2009, 14:41

Je confirme que Maxime a raison, il conviendrait de traiter les exceptions (donc timeouts).

J'ai aussi été confronté au nombre trop important de colis.

Il convient quand l'on génére un nombre important de colis de limiter la requête

SQL
$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`, o.`date_purchased`, o.`customers_name` from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 30 DAY) ...


Limiter le nombre de requête et fixer à 10 jours.

SQL
$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`, o.`date_purchased`, o.`customers_name` from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL 10 DAY) ...


Et faire un traitement hebdomadaire des réclamations ...

Écrit par : foxtoto2000 3 Feb 2009, 15:03

je viens d'ons d'apporter cette modif mais j'ai encore l'erreur
est ce que quelqu'un peut me dire s'il faut les images des statuts car j'ai cru voir qu'il ne les fallait plus

Écrit par : tidi 3 Feb 2009, 15:07

Bonjour,

Merci pour cette contrib.

Effectivement on envoie pas mal de colis et j'ai le même problème que mes collègues sur deux sites:


Warning: imagecreatefrompng() [function.imagecreatefrompng]: '/tmp/lapostemBaibZ' is not a valid PNG file in /.../admin/reclamaposte.php on line 226

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 230

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 231

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 232

Warning: imagepng(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 237
ERROR occured while trying to stat image file: /tmp/laposteis0l96

le second:

Warning: imagecreatefrompng() [function.imagecreatefrompng]: '/tmp/lapostemBaibZ' is not a valid PNG file in /.../admin/reclamaposte.php on line 226

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 230

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 231

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 232

Warning: imagepng(): supplied argument is not a valid Image resource in /.../admin/reclamaposte.php on line 237
ERROR occured while trying to stat image file: /tmp/lapostesNSHqg

J'ai donc essayé avec 10 jours et j'ai toujours le même problème.

Curieusement le premier site il apparait des colis dans le fichier pdf et sur le second non.
Le statut se rempli sur le premier et pas dans le second.

si ça peut t'aider Delete

Écrit par : delete 3 Feb 2009, 16:27

@foxtoto2000

La dernière version dispo sur le site US ne nécessite plus d'avoir les fichiers image.

@tidi

Vérifie que tu ais les droits en écriture dans /tmp ou crée un répertoire tmp dans ton admin comme précisé dans un post un peu plus haut.


Écrit par : foxtoto2000 3 Feb 2009, 16:39

merci pour la réponse
je constate qu'en baissant encore plus l'intervalle de temps je n'ai plus l'erreur (4 jours)
par contre je n'ai toujours rien quand je clic sur le 2e bouton
est ce que des fichiers doivent se créer lors du clic sur le 1er bouton?

Écrit par : delete 3 Feb 2009, 16:50

Si tu mets 1 jour tu auras encore moins de problèmes laugh.gif laugh.gif

Je arrow.gif

Écrit par : foxtoto2000 3 Feb 2009, 17:46

ca m'aide pas trop ca
pour remonter un peu mes problemes:
sur l'etape 1, quand ca fonctionne!!!!!! j'ai des lignes ou j'ai pas de point rouge ou vert mais un point blanc!!!
c'est normal ca?
je devrais pas avoir que du rouge ou vert?

Écrit par : azra28 3 Feb 2009, 17:51

Je me heurte au même problème que toi et d'après mes tests il semblerait que le problème vienne de "preg_match_all" qui a du mal dans certaines versions de PHP (je suis tjrs en PHP4)
à traiter de tres grosses chaines....
Je vais faire des tests en php5 pour vérifier ça



@++

Écrit par : foxtoto2000 3 Feb 2009, 18:14

je suis déja en PHP 5 et mysql 5

Écrit par : isnimis 3 Feb 2009, 18:20

Citation (foxtoto2000 @ 3 Feb 2009, 12:46) *
ca m'aide pas trop ca
pour remonter un peu mes problemes:
sur l'etape 1, quand ca fonctionne!!!!!! j'ai des lignes ou j'ai pas de point rouge ou vert mais un point blanc!!!
c'est normal ca?
je devrais pas avoir que du rouge ou vert?


oui c'est normal
dans le code : 4 couleurs rouge, bleu, vert, blanc
voir sous la ligne
Code
switch( $order_query_r['laposte'] )

Écrit par : delete 3 Feb 2009, 18:32

Citation (foxtoto2000 @ 3 Feb 2009, 17:46) *
ca m'aide pas trop ca


A question con réponse con ... c'était une boutade laugh.gif


Pour répondre à ta question il s'agit certainement d'un problème de droits concernant la création des fichiers temporaires.

Écrit par : tidi 3 Feb 2009, 18:35

Citation (delete @ 3 Feb 2009, 12:27) *
@tidi

Vérifie que tu ais les droits en écriture dans /tmp ou crée un répertoire tmp dans ton admin comme précisé dans un post un peu plus haut.


Merci mais j'avais jeté un oeil à ce post.
J'ai bien ajouté la modif de Phocea, crée un fichier tmp mais toujours pareil.
j'ai mis chmod 777 sur le tmp
Finalement j'ai le même problème que foxtoto2000

Ca n'empeche pas la contrib de marcher sur mon site.

Par contre pour l'autre site dont je parlais les billes restent toujours blanches et le fichier généré ne contient aucun colis.
je ne pense pas que ça vienne de l'erreur vu que je l ai aussi comme foxtoto2000 chez qui ça à l'air de marcher malgré tout.

je vais continuer a regarder les autorisations de certains fichiers et faire des tests.
Si y a quelque chose de concluant je vous tiens au jus.

Écrit par : foxtoto2000 3 Feb 2009, 18:44

j'ai bien créé un repertoire tmp dansle répertoire admin avec les droit 777
bon maintenant il me créer bien les fichiers
je constate un truc de bizarre
quand je clique une fois sur le bouton 1 ca m'affiche une liste
si je reclic dessus une fois que la liste est affiché: j'ai le message d'erreur donné au dessus
je reclic dessus et j'obtiens de nouveau la liste et ainsi de suite.
donc sinon quand j'ai la liste et que je clic sur le bouton de l'etape 2, rien ne se passe!!
d'ou pourrait venir le probleme?

Écrit par : isnimis 3 Feb 2009, 19:49

Citation
donc sinon quand j'ai la liste et que je clic sur le bouton de l'etape 2, rien ne se passe!!
d'ou pourrait venir le probleme?


remarque bete as tu pensé à créer le dossier fpdf?

Écrit par : foxtoto2000 3 Feb 2009, 19:51

oui j'ai bien créé le répertoire et copier les fichier dedans
par contre j'ai mis la dernière version 1.6
je viens d'essayer avec la version 1.53 mais c'est pareil
je viens de voir aussi que le 2e bouton fait appel au fichier reclamaposte.php mais est ce que ca ne devrait pas etre le fichier reclamaposte_pdf.php?
car quen je met manuellement le nom du fichier dans la barre d'adresse internet ca m'ouvre bien ce qu'il faut
j'ai bien vérifié le code et pourtant il fait bien appel a reclamaposte_pdf.php mais quand je clic sur le bouton ca va sur reclamaposte.php

Écrit par : foxtoto2000 3 Feb 2009, 22:10

Bon!!!
je me reponds à moi même en espérant pouvoir aider certains
je rencontre bien un probleme de compatibilité avec le bouton de la 2e étape
car cela ne fonctionne pas sur un de mes PC sous Vista mais fonctionne tres bien sur un PC sous XP!!!!
il semblerait que le probleme vienne de Vista car j'ai fait des essaie et les boutons prennent toujours la valeur du 1er déclaré
j'ai donc remplacé les 3 boutons par de simples liens web et maintenant ca fonctionne pour la 2e étape
Il ne reste donc plus qu'a trouver une solution pour l'étape 1 qui fonctionne 1 fois sur 2

Écrit par : delete 3 Feb 2009, 23:36

Citation (foxtoto2000 @ 3 Feb 2009, 22:10) *
car cela ne fonctionne pas sur un de mes PC sous Vista mais fonctionne tres bien sur un PC sous XP!!!!


Arg' mrgreen.gif

J'oubliais, j'ai tout testé sur Firefox et mon associé a essayé sous MSIE et cela ne fonctionnait pas laugh.gif

J'ai codé rapide donc pas trop utilisé les fonctions osC ni vérifié la compatibilité MSIE (je le fait bien sûr côté client pour la boutique mais je part du principe que les admin utilisent FF laugh.gif)

Que les aficionados de MSIE rendent cette contrib compatible, par pitié laugh.gif

Écrit par : foxtoto2000 3 Feb 2009, 23:38

pour l'instant la seule solution trouvé pour les boutons est celle que j'ai mentionné avant en mettant un simple lien pour le 2e bouton
Par contre as tu une solution pour mon 1er probleme avec les erreurs Warning avec les PNG? car meme avec 4 jours j'ai des problemes

Écrit par : delete 3 Feb 2009, 23:58

Acheter des actions de la poste ? bon l'humour c'est pas votre truc ... laugh.gif biggrin.gif

J'ai déjà dit :

- Vérifier les droits en écriture sur le répertoire défini ($tmp_dir)
- Disposer de la Lib GD
- Disposer de la Lib Curl

Après, il se peut qu'il y ait des problème de timeout avec La Poste. et en mutualisé le set time limit.

Écrit par : azra28 4 Feb 2009, 00:05

Sans plus avoir de réponse voilà la merde à laquelle je me heurte et qui est à l'origine de : Warning: imagecreatefrompng()

Code
$status_page = curl_file_get_contents($url . '/gp/services/main.jsp?m=10003005&colispart=' . strtoupper($noColis));

me rend bien la page colisposte, y'a pas de pb à ce niveau là(vérifier en affichant $status_page)

Code
preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_desc_[0-9].*?)"#', $status_page, $result);
         print_r($result);

Là ça va plus du tout car j'obtiens
Code
Array ( [0] => Array ( ) [1] => Array ( ))
il ne trouve rien!!!!!!!

Par contre
Code
       preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_desc_[0-9].*?)"#', '<img src="/gp/servlet?id=' . $noColis . '_desc_0&amp;width=280">', $result);
       print_r($result);

Ca fonctionne correctement

Écrit par : azra28 4 Feb 2009, 02:27

Après en avoir bavé un peu, je me suis posé une question, mais au fait, dans notre cas à quoi sert preg_match_all> A RIEN
Voilà donc ma fonction merci_la_poste modifiée

Code
function merci_la_poste($noColis)
     {
             global $status_description, $status_file, $ch, $tmp_dir, $tmpfname;
        
             $url = "http://www.coliposte.net";
    
         $ch = curl_init();
    
             $status_page = curl_file_get_contents($url . '/gp/services/main.jsp?m=10003005&colispart=' . $noColis);
    
         // Statut de la livraison
         //
             $img = curl_file_get_contents($url . '/gp/servlet?id=' . strtoupper($noColis) . '_desc_0', 0, 1);
             for($i = 0; $i < sizeof( $status_file ); $i++)
             {
                     if ( tep_not_null( $status_description[ md5($img) ] ) ) break;
             }
    
         switch( $i )
         {
             case 0 :
                 // La date
                 //
                 $date = curl_file_get_contents($url . '/gp/servlet?id=' . strtoupper($noColis) . '_date_0', 0, 1);
               curl_close($ch);
    
                 $tmpfname = tempnam($tmp_dir, "laposte");
    
                 file_put_contents($tmpfname, $date);
    
                 return(1);
                 break;
             //
             // Cas dans lesquels la commande n'est pas remboursable
             //
                     case 2 :
                     case 4 :
                     case 5 :
                     case 9 :
                 curl_close($ch);
                             return(-1);
             //
             // Ni livrée ni non-remboursable, on remets ça pour la prochaine fois !
             //
             default :
                 curl_close($ch);
                 return(0);
    
         }
     }

Écrit par : tidi 4 Feb 2009, 08:29

Citation (foxtoto2000 @ 3 Feb 2009, 14:44) *
j'ai bien créé un repertoire tmp dansle répertoire admin avec les droit 777


quand je clique une fois sur le bouton 1 ca m'affiche une liste
si je reclic dessus une fois que la liste est affiché: j'ai le message d'erreur donné au dessus
je reclic dessus et j'obtiens de nouveau la liste et ainsi de suite.


J'ai exactement le même problème sauf que j'arrive à exporter dans le pdf.
Un autre site rencontre les mêmes erreurs mais par contre aucun statut ne s'affiche mais le pdf se crée.

Tout ça sous firefox xp pro.

J'ai essayé de modifier les droit de plusieurs dossier y compris admin complet et rien de mieux.

Ca restera un mystère pour moi.

merci pour la contrib sinon qui fonctionne malgré l'erreur chez moi.


Écrit par : foxtoto2000 4 Feb 2009, 09:04

->Azra28:
as tu encore le probleme des warning avec ta fonc tion modifiée?

Écrit par : Rogers 4 Feb 2009, 09:19

Je dis peut être quelque chose de bête mais peut être que vous n'avez pas que des erreurs Warning non ? Dans le application_top.php de l'admin, error_reporting(E_ALL & ~E_NOTICE);

Changez le par error_reporting(E_ALL); le temps de tester. Cela m'a souvent dépanné pour debugger.

Concernant le problème de compatibilité suivant le pc, c'est hallucinant. Le seul élément demandé au client est l'ouverture d'Acrobat Reader. Un fichier pdf est un fichier pdf, mais fpdf est il bien compatible ? A voir si une page HTML ne ferait pas l'affaire pour éviter tout soucis.

Écrit par : Phocea 4 Feb 2009, 09:22

Pour avoir utiliser fpdf dans un plusieurs autres projets, les pdf créé sont totalement compatible avec acrobat reader.

Écrit par : foxtoto2000 4 Feb 2009, 09:30

je viens de verifier mais j'ai que des warning et pas d'erreur

Écrit par : azra28 4 Feb 2009, 09:30

Citation (foxtoto2000 @ 4 Feb 2009, 10:04) *
->Azra28:
as tu encore le probleme des warning avec ta fonc tion modifiée?


Non là c'est ok, plus de merde

Écrit par : Phocea 4 Feb 2009, 10:44

Citation (azra28 @ 4 Feb 2009, 03:27) *
Après en avoir bavé un peu, je me suis posé une question, mais au fait, dans notre cas à quoi sert preg_match_all> A RIEN



Ho les apprentis sorciers. Vous croyez quand même pas que Delete se tape des regex de la main gauche pour s'amuser le dimanche wink.gif ?

Code
$status_page = curl_file_get_contents($url . '/gp/services/main.jsp?m=10003005&colispart=' . $noColis);
va chercher la page HTML du suivi de la poste
Code
preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_desc_[0-9].*?)"#', $status_page, $result);
retrouve l'image donnant le statut de la commande au milieu de la page HTML récupérée

Le reste du code s'appuit sur cette image pour la comparer à tous les statuts connus, et selon le retour choisis le cas à traiter. Si tu l'enlèves ça risque pas de marcher comme il faut.

Le second preg_match_all dans le case 0
Code
preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_date_[0-9].*?)"#', $status_page, $result);
sert à récupérer l'image contenant la date du statut ... et est nécessaire pour savoir si on est en retard ou pas !!

Écrit par : azra28 4 Feb 2009, 12:13

Citation (Phocea @ 4 Feb 2009, 11:44) *
Citation (azra28 @ 4 Feb 2009, 03:27) *
Après en avoir bavé un peu, je me suis posé une question, mais au fait, dans notre cas à quoi sert preg_match_all> A RIEN

Ho les apprentis sorciers. Vous croyez quand même pas que Delete se tape des regex de la main gauche pour s'amuser le dimanche wink.gif ?

Si tu regardes dans le code en fait on ne prend que la première image à chaque fois

Écrit par : delete 4 Feb 2009, 14:37

Citation (Phocea @ 4 Feb 2009, 10:44) *
Ho les apprentis sorciers. Vous croyez quand même pas que Delete se tape des regex de la main gauche pour s'amuser le dimanche wink.gif ?


Même la nuit laugh.gif wink.gif

Citation (azra28 @ 4 Feb 2009, 12:13) *
Si tu regardes dans le code en fait on ne prend que la première image à chaque fois


Ce preg_match est en fait issu du code de ma modif de la contribution de Regne.

D'ailleurs, il m'étonnerait que cela ne fonctionne pas, il doit y avoir d'autres problèmes car cette contrib a été installé par pas mal de personnes sans soucis particuliers blush.gif

Écrit par : azra28 4 Feb 2009, 14:41

Citation (delete @ 4 Feb 2009, 15:37) *
D'ailleurs, il m'étonnerait que cela ne fonctionne pas, il doit y avoir d'autres problèmes car cette contrib a été installé par pas mal de personnes sans soucis particuliers blush.gif

D'apres ce que j 'ai pu lire à droite à gauche il semblerait qu'il y ait un bug de preg_match_all dans certaines version de php selon la version de pcre installé sur le serveur....
AU moins là ça fonctionne à tout les coup, sauf que en y reflechissant bien, ça va merder, si par exemple on a :
Pr un colis expédié le 20/01/09

- Colis livré le 30/01/09
- Colis en instance à la poste le 22/01/09

Car il faudrait prendre le 22/01/09 comme référence
Je termine un truc et je me penche là dessus

Écrit par : gdmdg 4 Feb 2009, 19:05

question bonus, la date prise en compte comme expedition du colis est bien celle qui est associé au label "expédié" lors du changement de status de la commande et information du client que ca commande a bien été expédie ?

2eme chose : si aucune ligne ne possède de tag rouge (à rembourser) si je clique sur le 2eme bouton j'ai une erreur de ce type :

Code
Warning: file_get_contents(/tmp/laposte.remboursements.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /home/g/gdmdg/www/osc/data/reclamaposte_pdf.php on line 171
FPDF error: Some data has already been output, can't send PDF file

Écrit par : foxtoto2000 4 Feb 2009, 19:53

c'est normal car ce fichier n'est pas créer vu qu'il n'y a pas de colis en retard
comme dis précédemment, les erreur ne sont pas gérées dans la contributions

Écrit par : delete 4 Feb 2009, 23:23

Salut !

Ne m'envoyez plus de MP pour les images, ma boite est pleine !

arrow.gif la dernière version disponible sur le le site US http://addons.oscommerce.com/info/6502 ne nécessite plus les images en question.

wink.gif

Edit:
Auto-edité laugh.gif

Écrit par : maxime 5 Feb 2009, 08:06

Citation (azra28 @ 4 Feb 2009, 07:13) *
Citation (Phocea @ 4 Feb 2009, 11:44) *
Citation (azra28 @ 4 Feb 2009, 03:27) *
Après en avoir bavé un peu, je me suis posé une question, mais au fait, dans notre cas à quoi sert preg_match_all> A RIEN

Ho les apprentis sorciers. Vous croyez quand même pas que Delete se tape des regex de la main gauche pour s'amuser le dimanche wink.gif ?

Si tu regardes dans le code en fait on ne prend que la première image à chaque fois


Mais as tu testé ? Je suis d'accord que sur le papier l'expression régulière ne sert à rien. Me semble-t-il (je dis me semble-t-il car c'était vrai au mois de novembre, pas retesté depuis), si la page "html" n'est pas ouverte, la session ne l'est pas non plus sur le site de La Poste.
Si la session est fermée, on obtient comme image "xx/xx/xxxx" au lieu de la date. L'expression régulière permettrait d'éviter cela.

Écrit par : azra28 5 Feb 2009, 11:00

Citation (maxime @ 5 Feb 2009, 09:06) *
Mais as tu testé ? Je suis d'accord que sur le papier l'expression régulière ne sert à rien. Me semble-t-il (je dis me semble-t-il car c'était vrai au mois de novembre, pas retesté depuis), si la page "html" n'est pas ouverte, la session ne l'est pas non plus sur le site de La Poste.
Si la session est fermée, on obtient comme image "xx/xx/xxxx" au lieu de la date. L'expression régulière permettrait d'éviter cela.


J'ai soudain, une énorme inquiétude... Tu es bien sure de savoir ce que font les regexp? Elles ne sont utilisées que pour faire des extractions dans la page dans notre cas
Code
$status_page = curl_file_get_contents($url . '/gp/services/main.jsp?m=10003005&colispart=' . $noColis);
// Statut de la livraison
//
$img = curl_file_get_contents($url . '/gp/servlet?id=' . strtoupper($noColis) . '_desc_0', 0, 1);

Cf ma modif de code: on initialise la session, puis on récupère l'image

Écrit par : foxtoto2000 5 Feb 2009, 11:28

je rencontre un nouveau probleme
car je viens de réexécuter la contribution ce matin.
dans la 1er pahase i trouve bien de nouveau colis en retard par contre la phase 2 me génère toujours le meme fichier qu'hier.
j'ai donc essayé en supprimant tous les fichier du répertoire tmp mais toujours pareil

Écrit par : delete 5 Feb 2009, 11:32

A quoi bon de se chamailler les gars twisted.gif

J'ai mis à jour la contrib sans preg_match. Et corrigé le problème du pdf vide dans le cas ou il n'y a pas de colis à rembourser.

arrow.gif http://addons.oscommerce.com/info/6502

Si quelqu'un a une idée ou un code "propre" pour le menu (ce qui ferait fonctionner la contrib avec MSIE), je suis preneur wink.gif

@foxtoto -> vide ton cache blush.gif

Edit: Merci @Azra28 pour avoir découvert ce bug PCRE.

Écrit par : foxtoto2000 5 Feb 2009, 11:38

je me repond a moi meme car j'ai trouvé la solution:
j'ai ajouter le chemin physique pouir le répertoire tmp dans le fichier reclamaposte_pdf.php
$tmp_dir = DIR_FS_ADMIN . '/tmp' ;

de plus j'ai enlever la solution de azra28 sur laquelle on a des doutes et j'ai appliqué la solution de Maxime avec le if
ce qui donne le bout de code suivant:

CODE
//

//

// On traite le post

// - Demande de remboursement la poste

//

//

if( isset($_POST['verify']) )

{

// Icone de statut de la commande

//

if ( ! tep_session_is_registered('order_alert') )

{

tep_session_register('order_alert') ;

$order_alert = array() ;

}



// Remise à zero du fichier de demande de remboursements

//

file_put_contents($tmp_dir . '/laposte.remboursements.txt', '') ;



// Recupération des information du fichier

//

//$post="8L73174906287;24/01/2009 15:52:06;9999|8V76305200971;29/02/2009 15:52:06;9837|" ;



$post = file_get_contents($tmp_dir . '/laposte.list.txt') ;



$liste_colis = explode('|', $post) ;



for($i = 0 ; $i < sizeof($liste_colis) ; $i++)

{

if ( ! tep_not_null($liste_colis[$i]) ) continue ;



$str = explode(';', $liste_colis[$i]) ;



$noColis = $str[0] ;

$date = $str[1] ;

$order_id = $str[2] ;



// Test Cohérence N° Colis

//

if ( strlen($noColis) != 13 ) continue ;



// Date expédition de la commande

//

$y = substr($date, 0, 4) ;

$m = substr($date, 5, 2) ;

$d = substr($date, 8, 2) ;



$date_expedition = strtotime(sprintf('%04d-%02d-%02d', $y, $m, $d)) ;



// Si la commande date de + de 30 jours, nul besoin de demander...

//

$age_commande = get_nb_open_days(time(), $date_expedition);



if ( $age_commande > 30 )

{

# On achive la commande ici

continue ;

}





//

// On récupère le dernier statut et date de la commande

//

$date = merci_la_poste($noColis) ;



//

// Le Colis a été livré, process de vérification des dates.

//

if( $date != 0 && $date != -1 )

{

//

// Processus OCR sur l'image 'date' ;

//



if ($img = imagecreatefrompng($tmpfname)) {



// Masquage des slashes sur l'image

//

$yellow = imagecolorallocate($img, 255, 234, 153);

imagefilledrectangle($img, 12, 0, 14, 12, $yellow);

imagefilledrectangle($img, 26, 0, 29, 12, $yellow);



// Fichier de sortie temporaire

//

$comparefile = tempnam($tmp_dir, "laposte");

imagepng($img, $comparefile);



/* PHP OCR */

//This is the main function. Format of the output array is $retmas[$line_number][$letter_number][$type]

//where $type is 0 for digit and 1 for relative closeness

$retmas = parse_image($comparefile,$conf['font_file']);

//

$date = print_output_text($retmas,$tmpfname, 0);

unlink($comparefile);

unlink($tmpfname);



$d = substr($date, 0, 2);

$m = substr($date, 2, 2);

$y = substr($date, 4, 2);



$date_livraison = strtotime(sprintf('20%02d-%02d-%02d', $y, $m, $d));



$nb_jours_ouvres = get_nb_open_days($date_expedition, $date_livraison);



//

// On génère le fichier destiné à la poste !

//

if ( $nb_jours_ouvres > 2 )

{

$remboursements = sprintf('%s;%s;%s;%s;%s|', $order_id, $date_expedition, $date_livraison, $noColis, $nb_jours_ouvres);

file_put_contents($tmp_dir . '/laposte.remboursements.txt', $remboursements, FILE_APPEND);



// Surbrillance d'une commande en souffrance

//

$order_alert[$order_id] = 'icon_status_red.gif';

}

else

{

// Cool, le produit a été livré à temps ! smile.gif

//

$order_alert[$order_id] = 'icon_status_green.gif';

}

} //patch



}

elseif ( $date == -1 )

{

# Commande Grillée (client n'est pas allé cherché le colis par exemple

# Archivage de la commande ( status = archivé )



$order_alert[$order_id] = 'icon_status_red_light.gif' ;



}

else if ( $date != 0 )

{

// Livraison non aboutie

// On verra la prochaine fois !

//

$order_alert[$order_id] = 'icon_status_white.gif' ;

}



}

tep_redirect(basename(__FILE__)) ;

}


Merci donc a ces 2 personnes qui m'ont permis d'avancer

Écrit par : Phocea 5 Feb 2009, 11:41

Quel coquin se Delete, il mets un v13 dans la v14 pour faire croire que c'est une nouvelle version smile.gif

Blague mise à part. Si plus de preg_match, $status_page ne sert plus à rien non plus, non ?

Toute facon je boude car tu as pas repris mon jolie layout dans un tableau standard Osc avec des liens vers la commande et le client, na! sad.gif

Écrit par : delete 5 Feb 2009, 11:57

Ok ton beau tableau on le mettra la prochaine fois laugh.gif

Pour $status_page, non ça ne sert à rien.

Dans l'absolu il faudrait reprendre tout de A à Z ninja.gif et faire quelque chose de propre avec l'affichage de l'historique des commandes traitées (ce qui donnerait une utilité certaine à ton tableau).

Mais après c'est une question de temps. J'ai d'autres chats à fouetter. blush.gif

Écrit par : Phocea 5 Feb 2009, 16:32

Argghhhh smile.gif

Bon de petits commentaires:

1. C'est moins rapide avec le Md5 qu'avec les images ... mais aussi plus pratique
2. L'erreur du style "Warning: imagecreatefrompng() [function.imagecreatefrompng]: '/tmp/lapostemBaibZ' is not a valid PNG file in /.../admin/reclamaposte.php on line 226" vous êtes vraiment sur que c'est preg_match_all le soucis ???
3. Sans les preg_match, les suivi qui n'ont plus d'info (oui je sais c'est bloqué par la requetes ,mais j ai mis 300 jours pour les tests!), reviennent en rouge... et le 2eme preg_match dans le switch 0 (sur la date), explose ...


Bon après les commentaires, le fix:

1. on rajoute les preg_match_all (non mais, on vous a deja expliqué ce que ca a couté à Delete), les regex c'est marrant !
2 on change la ligne

Code
for($i = 0; $i < sizeof( $status_file ); $i++)
par
Code
for($i = 0; $i < sizeof( $status_description ); $i++)
.. bein oui le status_file ils existent plus et ca marche...

Autres petites remarques:
- Les colis en cours de livraisons sont censés être en vert ?(au final c'est pas faux, La Poste est innocente tant que pas prouvé coupable!)
- Le calcul des jours est il ok ? Exemple j'ai un colis partis le samedi 31, arrivé le 4 à La Poste et mis en instance, livré le 5. Le calcul me sort 3 jours alors que le jours de dépôt (samedi matin), compte. De plus il est noté "livré le 5 février", ne faudrait il pas plutôt se baser sur la date d'instance à la poste dans ce cas ?? Le colis est bien en retard car il aurait du être livré le 3, mais je préfère etre précis avant qu'un employé pas très zélé ne le prenne simplement pas en compte

Écrit par : delete 5 Feb 2009, 18:54

J'ai réussit à reproduire les erreurs indiquées. Avec ou sans preg_match.

Il semble que la poste filtre sur un nombre conséquent de requête et on se retrouve avec un fichier de ce type

Citation
... <body>
Votre navigateur ne supporte pas les frames.<BR/>
Merci de votre compr&eacute;hension.
</body>
....


C'est peut être aussi dût au fait que le colis ne soit plus accessible ?

Enfin bref c'est corrigé j'ai inséré une temporisation...

arrow.gif http://addons.oscommerce.com/info/6502

J'ai fait plein d'autres modifications.

@Phocea donne du code au lieu de te confondre en explications tongue.gif tongue.gif tongue.gif Merci d'avoir situé le bug... wink.gif

Écrit par : Phocea 5 Feb 2009, 19:19

Mais heu j'en ai donné du code ...essaye de reproduire le pb avec le fix de la boucle pour voir?

Pour le reste je crois que ca revient à merger tout ca avec la contrib de regne et le suivi des changements de status. Le cron nous permettrai de flager le status que l'on estime comme OK (livré ou destinataire absent ou en instance...), bref le moment ou on se dit que La Poste a fait son boulot.
Ton code devra alors juste s'occuper de faire la différence entre la date d'envoi et de "livraison" pour reclamation eventuelle

Je fais quand je peux tongue.gif

EDIT: Ta derniere version contient une très bonne idée mais comme tu boucles sur le fichier remboursement on a plus les icones vertes dans la liste du bas. Faudra virer le if ( $nb_jours_ouvres > 2 ) quand on crée le fichier et traiter le cas dans le pdf et à l'affichage

Écrit par : foxtoto2000 5 Feb 2009, 20:45

il y a effectivement un probleme car la contribution trouve des colis en retard car livré au bout de 3 jours mais avec le message : destinataire absent lors de la première présentation au bout de 2 jours
la livraison devrait donc etre considérée comme faite en temps et en heure.

Écrit par : delete 5 Feb 2009, 23:14

Citation (foxtoto2000 @ 5 Feb 2009, 20:45) *
il y a effectivement un probleme


Dans ce cas suggère et poste (c'est le cas de le dire laugh.gif)

C'est ici que cela ce passe :
Code
                        //
                        // Cas dans lesquels la commande n'est pas remboursable
                        //
                      case 2 :
                      case 4 :
                      case 5 :
                      case 9 :
                        curl_close($ch);
                              return(-1);


@Phocea c'est noté, en + maintenant tu as ton beau tableau tongue.gif wink.gif

Edit : Je suis content de la Clio Jaune avec le logo bleu qui m'a été offerte tongue.gif biggrin.gif

Écrit par : foxtoto2000 6 Feb 2009, 08:47

je ne pense pas que le problème vienne de là
Dans quel ordre prends tu les statuts de la piste sur leur site quand il y en a plusieurs?
en commencant par le haut pur par le bas?
désolé mais si je ne poste pas de code c'est que je ne suis pas un spécialiste du PHP
j'essai donc de faire remonter les problemes que je rencontre car cela peut vous aider. En tout cas je l'èspère

Écrit par : delete 6 Feb 2009, 09:46

Bahh on s'en fou un peu remarque, même certains logiciels payants envoient des réclamations pour des colis inéligibles au remboursement.

La poste fait le tri, et même pour certain qu'ils le sont ils ne remboursent pas blush.gif

Écrit par : foxtoto2000 6 Feb 2009, 14:09

bah j'ai regardé et sur 29 colis trouvé en retard, seulement 13 le sont réellement donc ca fait pas très sérieux aupres de leur service.
peux tu me dire si tu controles bien les différents statuts du colis donnés sur le site?

Merci

Écrit par : delete 6 Feb 2009, 15:03

Citation (foxtoto2000 @ 6 Feb 2009, 14:09) *
bah j'ai regardé et sur 29 colis trouvé en retard, seulement 13 le sont réellement donc ca fait pas très sérieux aupres de leur service.


Il y a un peu de travail sur la boucle.

Il faut faire des tests complémentaires.

J'ai corrigé un bug majeur indiqué dans un autre post sur la nouvelle version pondue trop rapidement mrgreen.gif

arrow.gif http://addons.oscommerce.com/info/6502

Écrit par : Phocea 6 Feb 2009, 18:20

Pour changer, quelques commentaires smile.gif

D'abord, pour moi le samedi est un jours ouvré à La Poste. Ne faudrait il donc pas changer dans reclamaposte_dates.php ?:

Code
if (!in_array(date('w', $date_start), array(0, 6))
par
Code
if (!in_array(date('w', $date_start), 0)


Ensuite pour les dates et pour prendre en compte les differents status apparaissant sur la page de suivi (ex. Colis en instance à la poste, puis livré, c'est la 1ere date qui nous importe - colis 8N01712883394 pour tester). Voici un premier jet ... a tester plus copieusement (désolé pour le setup de l'array, on fera plus propre plus tard hein!!)

On ajoute en haut avant la déclaration de $status_description
Code
$status[0]['description'] = 'Livré';
$status[0]['md5'] = '1f9c469ab21e5b64cbb31f45f01b5c77';
$status[0]['remboursable'] = 'true';
$status[0]['initial_transit'] = 'false';

$status[1]['description'] = 'Colis en instance à la poste, destinataire avisé disposant de 15 jours pour aller le retirer';
$status[1]['md5'] = '16b4a42d0412966610c5f7d9504a4414';
$status[1]['remboursable'] = 'true';
$status[1]['initial_transit'] = 'false';
$status[2]['description'] = 'Destinataire absent lors de la première livraison, seconde présentation prévue';
$status[2]['md5'] = 'e4b21bccc77644f76bbdb2b297297e3e';
$status[2]['remboursable'] = 'true';
$status[2]['initial_transit'] = 'false';
$status[3]['description'] = 'Colis à disposition du destinaire au bureau de poste';
$status[3]['md5'] = '2785b7f3103de9c8778d9110a91427ef';
$status[3]['remboursable'] = 'true';
$status[3]['initial_transit'] = 'false';
$status[4]['description'] = 'Colis à disposition du destinataire';
$status[4]['md5'] = '2785b7f3103de9c8778d9110a91427ef';
$status[4]['remboursable'] = 'true';
$status[4]['initial_transit'] = 'false';
$status[5]['description'] = 'Colis ou accusé de réception à signer mis à disposition dans la boîte postale';
$status[5]['md5'] = '347eae829981f03a1036e463103b1eab';
$status[5]['remboursable'] = 'true';
$status[5]['initial_transit'] = 'false';
$status[6]['description'] = 'Colis à disposition du destinataire 5 jours dans le cityssimo';
$status[6]['md5'] = '2c2482aac5701e5b297ab57a13e4eff0';
$status[6]['remboursable'] = 'true';
$status[6]['initial_transit'] = 'false';
$status[7]['description'] = 'Colis réexpedié à la demande du destinataire vers l\'adresse de son choix';
$status[7]['md5'] = 'e9c66a355d98c1e919be3a518d7e1ed6';
$status[7]['remboursable'] = 'true';
$status[7]['initial_transit'] = 'false';

$status[8]['description'] = 'Adresse complétée ou corrigée par nos services, colis redirigé vers le bon site de distribution';
$status[8]['md5'] = '55869ad6917e3ce8d4984381e1e12cf7';
$status[8]['remboursable'] = 'false';
$status[8]['initial_transit'] = 'false';
$status[9]['description'] = 'Colis retourné à l\'expéditeur car refusé par le destinataire';
$status[9]['md5'] = '96123b9900beb4f4678e5f68dd188fd3';
$status[9]['remboursable'] = 'false';
$status[9]['initial_transit'] = 'false';
$status[10]['description'] = 'Colis retourné à l\'expéditeur car le destinataire du colis n\'habite pas à l\'adresse indiquée';
$status[10]['md5'] = '7dbbaaddb321f689f440cc075f8fd762';
$status[10]['remboursable'] = 'false';
$status[10]['initial_transit'] = 'false';
$status[11]['description'] = 'Colis en cours de réacheminement vers sont expéditeur';
$status[11]['md5'] = '52a7f30e1efc9308be8672f3eed5f099';
$status[11]['remboursable'] = 'false';
$status[11]['initial_transit'] = 'false';

$status[12]['description'] = 'Pris en charge de le réseau Colissimo';
$status[12]['md5'] = 'df5635740e757b728e27a34afbb650d3';
$status[12]['remboursable'] = 'true';
$status[12]['initial_transit'] = 'true';
$status[13]['description'] = 'Traité par le site de livraison';
$status[13]['md5'] = '5b1092eb53574ac02768d57a0d4439da';
$status[13]['remboursable'] = 'true';
$status[13]['initial_transit'] = 'true';
$status[14]['description'] = 'Colis arrivé dans le réseau partenaire du pays destinataire';
$status[14]['md5'] = 'c51b33cdba95ea6113435739b8259c82';
$status[14]['remboursable'] = 'false';
$status[14]['initial_transit'] = 'true';
$status[15]['description'] = 'Colis sorti du territoire de départ';
$status[15]['md5'] = '92fa28d7867746aef5bec47b3df19baa';
$status[15]['remboursable'] = 'false';
$status[15]['initial_transit'] = 'true';
$status[16]['description'] = 'Colis arrivé sur site, livraison en préparation';
$status[16]['md5'] = '9e21e939b22305a64b1a2f57fa25dd39';
$status[16]['remboursable'] = 'true';
$status[16]['initial_transit'] = 'true';
$status[17]['description'] = 'Colis traité par le site de livraison';
$status[17]['md5'] = '5b1092eb53574ac02768d57a0d4439da';
$status[17]['remboursable'] = 'true';
$status[17]['initial_transit'] = 'true';
$status[18]['description'] = 'Colis en instance en douane';
$status[18]['md5'] = '4b24a332b2743e942c03ebb27fa10e09';
$status[18]['remboursable'] = 'false';
$status[18]['initial_transit'] = 'true';
$status[19]['description'] = 'Colis déposé au bureau de Poste pour acheminement';
$status[19]['md5'] = '5154c07d974c9c47f78570054f5ae923';
$status[19]['remboursable'] = 'true';
$status[19]['initial_transit'] = 'true';


Puis on remplace la fonction merci_la_poste par:

Code
function merci_la_poste($noColis)
{
        global $status, $ch, $tmp_dir, $tmpfname;
    
        $url = "http://www.coliposte.net";

        $ch = curl_init();

        $status_page = curl_file_get_contents($url . '/gp/services/main.jsp?m=10003005&colispart=' . $noColis);

          // Statut de la livraison
          //
        preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_desc_[0-9].*?)"#', $status_page, $result);

                // We retrieve all statuses displayed on the tracking page
                $statuses_found= array();
                for($x = 0; $x < sizeof( $result[1]); $x++) {
                    if ( ! $img = @curl_file_get_contents($url . $result[1][$x], 0, 1) ) {
                        return -1;
                    } else {
                              for($i = 0; $i < sizeof( $status ); $i++) {
                                  if ( $status[$i]['md5'] = md5($img)) break;
                              }
                    }
                    $statuses_found[]=$i;
                    
                }
                
                $last_status = 0;
                $case = $i;
                // now we treat all statuses found
                if (sizeof($statuses_found) > 1) {
                    for($y = 0; $y < sizeof( $statuses_found); $y++) {
                        
                        if ($status[$statuses_found[$y]]['remboursable'] == 'false') {
                            $case = 9;
                            break;
                        }
                        if ($status[$statuses_found[$y]]['initial_transit'] == 'false') $last_status = $y;
                    }
                }
                
          switch( $case )
          {
              case 0 :
                  // La date
                  //
                  preg_match_all('#<img src="(/gp/servlet\?id=' . $noColis . '_date_[0-9].*?)"#', $status_page, $result);
                        if ( ! $date = @curl_file_get_contents($url . $result[1][$last_status], 0, 1) ) break;

                  curl_close($ch);
      
                  $tmpfname = tempnam($tmp_dir, "laposte");
      
                  file_put_contents($tmpfname, $date);
                  return(1);
                  break;
                //
                // Cas dans lesquels la commande n'est pas remboursable
                //
              case 9 :
                  curl_close($ch);
                  return(-1);
              //
              // Ni livrée ni non-remboursable, on remets ça pour la prochaine fois !
              //
              default :
                  curl_close($ch);
                  return(0);
      
          }
}


J'attends les retours wink.gif

Écrit par : delete 6 Feb 2009, 18:44

Et bien voilà smile.gif

Quand tu veux, tu fais des efforts tongue.gif

C'est sûr que c'est ouvré le Samedi même avec un contrat pro ? (expeditor)

Sinon il faut traiter les deux cas ... ?

Écrit par : Phocea 6 Feb 2009, 19:29

Bein je voyais bien que tu t'en sortais pas biggrin.gif !
A terme on devrait avec ce système pouvoir noter si le colis est encore en transit mais dans les temps, arrivé ok etc... puis encore afficher un double état avec la pastille bleu que tu as prévu.

Si certains ont des idées de process à suivre qu'il n'hésite pas. Je ne connais pas tous les cas ou la poste affiche plud d'un état sur le suivi.
Il manque encore aussi à tester si avec un seul état en transit initial ou pas, si la date n'est pas dépassé. Pour le cas des colis ou cena n'a pas été mis à jour.

On peut meme pense à traiter le cas des colis mal renseigné dans un PDF à part en indiquant que le manque de suivi nous oblige à réclamer !!!
il faut aussi changer la colonne "date de livraison" en "présenté le" peut etre ? Et mettre le délai de jour à J+X comme indiqué sur le contrat...bref on a de quoi faire pour le reste de l'hiver smile.gif

Écrit par : foxtoto2000 6 Feb 2009, 20:05

pour moi ca fonctionne pas
j'ai les messages d'erreurs suivants:


Warning: in_array() [http://www.foxchip.com/foxadmin/function.in-array]: Wrong datatype for second argument in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_dates.php on line 31

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/foxchip.com/httpdocs/foxadmin/reclamaposte_dates.php:31) in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/general.php on line 69

j'ai rajouté la déclataion de variable $status_description qui avait été retirée dans la fonction merci_la_poste

global $status,$status_description, $ch, $tmp_dir, $tmpfname;

De plsu, le fait d'avoir changer le if dans reclamaposte_dates.php ne donne plus le bon resultat car ca me trouve 3 jours ouvrés entre le 30/01/09 et le 02/02/09 alors qu'il y a un dimanche

Écrit par : Phocea 6 Feb 2009, 20:25

Citation (foxtoto2000 @ 6 Feb 2009, 21:05) *
pour moi ca fonctionne pas
j'ai les messages d'erreurs suivants:


Warning: in_array() [http://www.foxchip.com/foxadmin/function.in-array]: Wrong datatype for second argument in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_dates.php on line 31

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/foxchip.com/httpdocs/foxadmin/reclamaposte_dates.php:31) in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/general.php on line 69

j'ai rajouté la déclataion de variable $status_description qui avait été retirée dans la fonction merci_la_poste

global $status,$status_description, $ch, $tmp_dir, $tmpfname;

De plsu, le fait d'avoir changer le if dans reclamaposte_dates.php ne donne plus le bon resultat car ca me trouve 3 jours ouvrés entre le 30/01/09 et le 02/02/09 alors qu'il y a un dimanche


$status_description n'est plus utilisé dans la fonction !

vendredi 30 janvier
samedi 31 janvier
lundi 2 janvier

3 jours ....

Écrit par : foxtoto2000 6 Feb 2009, 20:31

Ca semble fonctionner avec cette modif
je viens de verifier tous les colis dit en retard par la contrib et ils le sont effectivement

Cependant, je remonte une amélioration a faire pour la prise en compte de la date d'expédition car j'ai trouvé un probleme
en cas de SAV d'une commande, on renvoi donc un colis avec un nouveau numero
dans ce cas, la contribution prend comme date de départ le 1er colis expédié donc forcement elle le trouve en retard
je continue a tester la contribution ce weekend et vous remonte les problemes rencontrés

Écrit par : delete 7 Feb 2009, 09:43

Citation (Phocea @ 6 Feb 2009, 19:29) *
Bein je voyais bien que tu t'en sortais pas biggrin.gif !


C'est trop technique pour moi oui rolleyes.gif

Alors j'ai lamentablement fait un copier/coller de cette nouvelle fonction wink.gif

Citation (foxtoto2000 @ 6 Feb 2009, 20:05) *
Warning: in_array() [http://www.foxchip.com/foxadmin/function.in-array]: Wrong datatype for second argument in [b]/var


Corrigé, Phocea a oublié de regarder dans la doc php, le deuxième paramètre est un array() tongue.gif

Citation (foxtoto2000 @ 6 Feb 2009, 20:31) *
en cas de SAV d'une commande, on renvoi donc un colis avec un nouveau numero
dans ce cas, la contribution prend comme date de départ le 1er colis expédié donc forcement elle le trouve en retard


Oup's je n'avais pas vu ce problème, peut être que en modifiant légèrement la requête tu n'auras plus ce genre de problème, je n'ai pas testé
SQL
$order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" order by date_added desc ;';


Bug msie corrigé, enfin pour une fois ce n'est pas msie qui est en cause mais plutôt moi qui ait codé cela avec deux mains gauches.

J'ai mis date de présentation comme Phocea nous l'a suggéré wink.gif

Dernière version arrow.gif http://addons.oscommerce.com/info/6502

Il semblerait que cela commence à être au point. C'est même une usine à gaz.

Il ne manque plus qu'a faire un tableau d'état de rapprochement et de pointage des remboursements effectués par la poste, rien que ça... mrgreen.gif laugh.gif

Écrit par : foxtoto2000 7 Feb 2009, 12:14

Phocea:

vendredi 30 janvier
samedi 31 janvier
lundi 2 janvier

3 jours ....

un colis expédié le 30 janvier et livré le 2 fevrier ca fait 2 jours ouvrés car on a 24h de vendredi a samedi + 24h de samedi a lundi
donc ca fait bien 2 jours ouvrés
donc ton calcul est pas bon

pour information le download de la contribution 1.6 ne fonctionne pas

Écrit par : Phocea 7 Feb 2009, 12:28

Citation (foxtoto2000 @ 7 Feb 2009, 13:14) *
Phocea:

vendredi 30 janvier
samedi 31 janvier
lundi 2 janvier

3 jours ....

un colis expédié le 30 janvier et livré le 2 fevrier ca fait 2 jours ouvrés car on a 24h de vendredi a samedi + 24h de samedi a lundi
donc ca fait bien 2 jours ouvrés
donc ton calcul est pas bon

pour information le download de la contribution 1.6 ne fonctionne pas


Ca fait J+2 ou 3 jours.... Si tu envois tes colis apres 16h, il faudera les rentrer comme expédié que le dimanche ou lundi

Écrit par : delete 7 Feb 2009, 13:13

Citation (foxtoto2000 @ 7 Feb 2009, 12:14) *
pour information le download de la contribution 1.6 ne fonctionne pas


Il y a dut y avoir un problème au niveau de l'upload.

J'en ai profité pour rajouter la modification sus-citée -> "order by date_added desc"

J+2 ça fait bien 3 jours laugh.gif

Voilà wink.gif

arrow.gif http://addons.oscommerce.com/info/6502

Écrit par : foxtoto2000 7 Feb 2009, 13:15

pour moi J+2 = 2 jours

Bon sinon, avec la dernière version 1.6, tous semble fonctionner
jai modifié quand meme l'intervalle à 10 jours.
De plus ta modf pour le cas que je t'ai mentionné plus haut semble fonctionner cra la contrib ne me remont plus ce colis comme en retard

Dernière chose, pourquoi pas mettre pour tout le monde
$tmp_dir = DIR_FS_ADMIN . '/tmp' ;
car je suis sur un dédié et si je ne le met pas ca ne fonctionne pas
pour info, pour le reclamaposte_pdf.php, il faut aussi le mettre mais par contre il faut descendre la déclaration apres
include(DIR_WS_CLASSES . 'order.php');
sinon ca ne fonctionne pas

Écrit par : delete 7 Feb 2009, 13:17

J = 1

wacko.gif

Écrit par : delete 7 Feb 2009, 14:17

Citation (foxtoto2000 @ 7 Feb 2009, 13:15) *
De plus ta modf pour le cas que je t'ai mentionné plus haut semble fonctionner cra la contrib ne me remont plus ce colis comme en retard


Oui j'ai testé sur un S.A.V. ça fonctionne, effet FIFO/FILO oblige biggrin.gif

Citation (foxtoto2000 @ 7 Feb 2009, 13:15) *
Dernière chose, pourquoi pas mettre pour tout le monde $tmp_dir = DIR_FS_ADMIN . '/tmp' ;


Car certaines considérations peuvent amener à penser qu'il y a des failles de sécurité dans les répertoires temporaires adjacents au root dir du serveur web.

Le répertoire /tmp de tous les serveurs Linux récents qui plus est, est sécurisé.

M'enfin, créer un répertoire tmp dans admin avec un .htaccess semble aussi être une solution.

Citation
pour info, pour le reclamaposte_pdf.php, il faut aussi le mettre mais par contre il faut descendre la déclaration apres
include(DIR_WS_CLASSES . 'order.php');
sinon ca ne fonctionne pas


C'est quoi cette histoire ?

Écrit par : foxtoto2000 7 Feb 2009, 14:51

oubli mon dernier message
j'avais fait ces modif au tout début quand rien ne fonctionnait et je continuais a les faire mais je viens de remettre en laissant ta contribution d'origine et ca fonctionne donc j'ai posté trop vite

Écrit par : Phocea 7 Feb 2009, 14:59

Citation
Warning: in_array() [function.in-array]: Wrong datatype for second argument in [b]/var


Bizarre, chez mois ca fonctionne sans array, je me suis dis que PHP était devenu assez intelligent pour comprendre qu'un singleton pouvait etre un array avec 1 élément smile.gif

foxtoto2000, file ton adresse qu'on t'envoi la facture pour les demandes répétées !!

Écrit par : delete 7 Feb 2009, 15:09

Etonnant car la doc PHP est claire :

Citation
bool in_array ( mixed needle , array haystack , bool strict )


Le type est array et non mixed ... quelle version tu as ?

Citation (Phocea @ 7 Feb 2009, 14:59) *
foxtoto2000, file ton adresse qu'on t'envoi la facture pour les demandes répétées !!


Il paie en espèce non, exit la facture ? laugh.gif

Écrit par : foxtoto2000 7 Feb 2009, 16:49

désolé d'avoir remonté les bugs biggrin.gif
et puis si vous etiez bons, il n'y aurait pas du y avoir de bugs ninja.gif

bon en tout cas merci pour votre aide
si vous passez sur notre site n'hésitez pas a nous me le faire savoir!!!

Maintenant, il ne reste plus qu'a améliorer la contributions avec les dernières fonctionnalités
allez au travail!!!

Écrit par : Rogers 9 Feb 2009, 16:29

Bravo pour vos retours.

Cela devrait permettre de faire une contribution fonctionnelle.

Un élément supplémentaire et que Coliposte Service CLients oublie régulièrement :

Citation
12 Les délais de livraison en J+2 tiennent-ils compte des jours fériés, samedis et dimanches ? fleche haut de page

Les délais de livraison se calculent en jours ouvrables (tous les jours de la semaine excpeté le dimanche et les jours fériés).
Ainsi, le samedi est pris en compte dans le calcul du délai pour les colis déposés le samedi dans les heures limites de dépôt.

Par exemple, tout colis déposé le samedi avant l'heure limite de dépôt sera remis à son destinataire le mardi suivant, le dimanche n'étant pas un jour ouvrable.

Écrit par : techtrad 15 Feb 2009, 14:54

Bonjour à tous et merci pour cette contribution très prometteuse wink.gif

J'ai un petit soucis car je bute sur le fonctionnement (ok je dois être une tache ou fatigué..)

1) Dans l'administration je vais dans la box "tools" et ensuite je selectionne "reclamaposte"

2) J'arrive sur un écran qui m'affiche "Reclamations La poste" et en dessous 3 boutons
En dessous est inscrit "Aucune demande de temboursement en attente"



3) Je clique sur Telechargement des états en cours => Envoyer

4) Je me retrouve avec deux listes comme sur l'image ci-après



Quand je clique sur Générer la demande de remboursement, cela lance le fichier reclamaposte_pdf et me retourne le message "aucun demande de remboursement en attente"

Alors ma question, je mer**e mais où ?

Quelquechose m'echappe.

Merci d'avance (pas trop de coup de baton je ne suis pas un crack en php)

Cordialement

Écrit par : delete 15 Feb 2009, 18:21

Citation (techtrad @ 15 Feb 2009, 14:54) *
(pas trop de coup de baton je ne suis pas un crack en php)


Ton pseudo ne le laisse pas trop penser laugh.gif

Mais il n'y a pas lieu, c'est déjà bien que tu ais installé la contrib sans poser de questions farfelues biggrin.gif

Il y a une variable $tmp_dir dans reclamaposte.php. As tu bien vérifié qu'elle concorde avec celle contenue dans reclamaposte_pdf.php ?

Écrit par : techtrad 15 Feb 2009, 20:05

Merci pour la réponse.

Effectivement un / de trop dans la variable du tmp et le fichier reclamaposte_pdf ne trouvait pas le fichier laposte.remboursements.txt et du coup affichage du message "pas de remboursements en attente"...

Cela fonctionne parfaitement maintenant.

Merci encore aux contributeurs wink.gif

Écrit par : Phocea 15 Feb 2009, 20:20

Tiens puisque le sujet remonte, j'ai une question. Delete tu fais des modifs ces prochains jours ?
J'ai réfléchi cette semaine à une utilisation un peu plus avancé, et surtout pour pouvoir réclamé même après livraison du colis. En effet, si on avance le status à délivré, bein celle-ci n'est plus prise en compte, meme en retard, logique si on matte la requete initiale.

J'aimerais donc utiliser le champ la_poste ou un autre pour savoir ou on en est du traitement.
En gros, si on a découvert une commande ok (icone verte), on le note dans ce champ.
Si on est pas encore sur et on doit re-vérifier plus tard, idem (disons orange). Si en retard, paf au rouge.

Du coup on peut ensuite changer la requete en prenant les commnades des 30 derniers jours, avec le nouveau champ autre qu'au vert, plus besoin de se baser sur le status de livraison, et ca donne 30 jours pour réclamer.
J'ai vu que tu avais laissé de la place pour le développement futur, c'est ce que tu avais en tête? je peux avancer un peu le truc sans qu'on se marche sur les pieds ?

Écrit par : delete 15 Feb 2009, 23:04

Citation (Phocea @ 15 Feb 2009, 20:20) *
J'ai vu que tu avais laissé de la place pour le développement futur, c'est ce que tu avais en tête? je peux avancer un peu le truc sans qu'on se marche sur les pieds ?


La réponse est dans le topic laugh.gif, c'est au premier qui fonce, c'est fait pour wink.gif

Citation (delete @ 7 Feb 2009, 09:43) *
Il ne manque plus qu'a faire un tableau d'état de rapprochement et de pointage des remboursements effectués par la poste, rien que ça... mrgreen.gif laugh.gif


Écrit par : Phocea 16 Feb 2009, 07:46

Bon c'était aussi un test pour voir si tu me répondais pendant le match wink.gif
J'essaye de regarder ca aujourd'hui entre 2 réunions et je vous tiens au courant

Écrit par : gdmdg 16 Feb 2009, 16:28

j'ai ce cas qui n'est pas detecté :


10/02 Expédition

13/02 Colis livré
12/02 Colis traité par le site de livraison

qu'est ce qui est prit en compte dans la comparaison ? la première ligne ou les suivantes ?

merci smile.gif

Écrit par : Phocea 16 Feb 2009, 17:01

Les 2.
Dans la fonction merci_la_poste on récupère tout d'abord l'historique qui apparait sur la page et on note leur "identité".

Dans tout cas la 1ère boucle devrait retourner 0 et 17.
Dans la 2nde boucle on définit la date à prendre en compte pour la livraison ou présentation du colis. En gros , chaque status à une metadata "initial_transit", qui définit si le status fait partie de la livraison initiale, ou est considéré comme présenté au client.
Dans ton cas, 0 est un étant de présentation, 17 et considéré comme un état de transit, c'est donc bien la date de livraison qui devrait être prise en compte.

En théorie cela devrait fonctionner, mais je n'ai pas de cas comme le tien sous la main pour tester.

j'ai par contre le cas suivant:

Expédié le 31 janvier

05/02 colis livré
04/02 colis en instance à la poste

c'est bien la date du 4/2 qui est prise en compte, la boucle fonctionne donc correctement.

Tu as bien la dernière version installée ?

Tu peux aussi changer ce bout de code

Code
$last_status = 0;
$case = $i;


par

Code
$last_status = 0;
$case = 0;

Écrit par : delete 16 Feb 2009, 17:17

Après avoir mûrement réfléchit, c'est bien ce que je me disais, c'est la faute à Phocea tongue.gif laugh.gif

Edit : J'ai expédié mes doléances à la poste ce jour, même si certains cas ne sont pas pris en compte, j'ai ressentit une certaine jouissance laugh.gif

Écrit par : dede30 17 Feb 2009, 10:43

Un truc tout con qui fait que ça fait 4 jours que je comprenais pas pourquoi ça marche pas :
Mes numéros de suivis sont entrés avec des espaces genre 8V 1234 1234 1.
Donc ça ne fonctionnais pas. si jamais quelqu'un avait eu le meme probleme.

Écrit par : gdmdg 17 Feb 2009, 10:48

investi dans une douchette de code bar USB , ca coute 50 euro et ca facilite la vie smile.gif

Écrit par : delete 17 Feb 2009, 12:26

Citation (dede30 @ 17 Feb 2009, 10:43) *
Mes numéros de suivis sont entrés avec des espaces genre 8V 1234 1234 1.


Un patch genre $noColis = str_replace(' ', '', $noColis) ; fera l'affaire mais

Citation (gdmdg @ 17 Feb 2009, 10:48) *
investi dans une douchette de code bar USB , ca coute 50 euro et ca facilite la vie smile.gif


Oui et en productivité wink.gif

Écrit par : Phocea 17 Feb 2009, 20:05

Pour info une nouvelle version sera mise en ligne demain, avec les modifs suivantes:

- Fix d un bug qui affecte les suivis avec plusiuers état successif sur la page (ca devrait resoudre le probleme de gdmdg)
- Factorisation du code
- Ajout de nouvelle variable pour gérér les etats de suivi
- Ajout d'information dans la base et le visuel, indiquant l'état de chaque commande traité (retard, ok, en transit, non remboursable, remboursement demandé...etc...)

Écrit par : datch1 17 Feb 2009, 20:42

Citation (azra28 @ 26 Jan 2009, 20:24) *
Bravo à tous,

J'avais de mon coté développé un système de ce type depuis plusieurs mois et je dois dire que le nombre de colis remboursé est assez impressionnant.
.....................
Le listing des colis en retard ne doit pas comporter plus de 5 réclamations(infos trouvés sur le forum) car sinon le traitement est semble t'il beaucoup plus long
La date de mes demandes ainsi que celle de réponse de la poste sont aussi enregistré (pratique pour faire des re-réclamations).

@+

N'ayant PAS développé un système de ce type, j'avais fait quelque réclamations à une époque (en mode sql+excel+publipostage --> foireux).
J'ai vite laissé tombé et rajouté ça à la longue liste des choses à faire.

En tous cas, je confirme les propos d'Azra28 pour ce qui est du 5 colis max/réclamations.
1. C'est beaucoup plus long.
2. Vous allez rapidement découvrir le principe de ... : L'indemnisation en masse (genre un geste global avec un bon gros rabais)

En attendant je suis ravi que cette contrib existe :Merci !
et surtout A demain .



Écrit par : azra28 17 Feb 2009, 23:37

Citation (gdmdg @ 17 Feb 2009, 11:48) *
investi dans une douchette de code bar USB , ca coute 50 euro et ca facilite la vie smile.gif


Qu'est ce qui faut regarder pour l'achat d'une douchette?
Des conseils de matos?

Écrit par : jch 18 Feb 2009, 07:15

Citation (azra28 @ 18 Feb 2009, 00:37) *
Qu'est ce qui faut regarder pour l'achat d'une douchette?
Des conseils de matos?


Si tu n'as pas de besoins _très_ sophistiqués, va jeter un oeil sur les boutiques eBay des vendeurs asiatiques, qui t'en proposent toutes les 5 minutes pour encore moins cher que pas cher (genre F120 pour 25€ TTC port compris). Technologie simple mais stable : LEDs et CCD. En pratique, leur truc fonctionne bien et permet pas mal de choses usuelles (et bien d'autres plus tordues). J'en utilise deux ici depuis près de deux ans, en fonctionnement continuel, sans l'ombre d'un problème une fois bien paramétrés.

Par contre, si tu as besoin de lire à distance, de mémoriser et/ou de portabilité (sans fil), de taper dans des codes exotiques, ultra-denses, esquintés, particulièrement longs ou 2D, alors il te faudra regarder du côté des lecteurs laser de marque. Inconvénient de taille : le prix !

Écrit par : max_2000 18 Feb 2009, 12:21

bonjour,

je suis nouveau sur ce site. je m'initie au développement sur une boutique et je suis de tres près votre contrib très interssante.
moi j'ai vu avec la poste pour faire une réclamation en quantité. ils m'ont repondu qu'ils ont un fichier ecxel comme matrice que l'on peut envoyer par mail pour qu'ils traitent toute la liste des reclamantions informatiquement.
je vous poste l'exemple de mail que l'on ma envoyé. je leur ai posé la question si je pouvais envoyer un fichier au format PDF et ils m'ont repondu qu'ils n'acceptent pas les fichiers PDF.

voici le mail:

Citation
Bonjour,

Dans le but d'améliorer notre qualité de service, nous avons mis en place une matrice sur laquelle enregistrer la liste des colis hors délai.

Je vous invite à nous la transmettre par mail à l'adresse suivante : scsmb.clp(AT)laposte.fr

Je vous prie d'agréer, Madame, Monsieur, mes salutations distinguées.

Merci de transmettre ce mail au service ou à la personne concernée.

GENIN Stéphanie
Service Clients ColiPoste
14 Rue Antoine de Saint Exupéry
BP 7500
88107 SAINT DIE DES VOSGES Cedex
Tél : 0825 878 888
Fax : 03 29 42 15 91


pour le fichier Matrice HD.xls demandez le moi, je vous l'envoie par mail.

voila, je donne une petite participation dans votre contribe.
@+ MAX

Écrit par : Phocea 18 Feb 2009, 13:43

La contrib ici est faite pour être transmise par courrier voir fax. Je savais meme pas qu'on pouvait leur envoyer ca par email.
Par contre si tu as la structure des données que La Poste demande dans sa matrice, on pourrait deja adapter par rapport à ce qu'on met deja dans le PDF...qui a faire un CSV en parallèle.

Mais le xls on l envoi a qui ensuite ?

Écrit par : max_2000 18 Feb 2009, 14:12

Citation (Phocea @ 18 Feb 2009, 14:43) *
Mais le xls on l envoi a qui ensuite ?


comme je l'ai indiqué plus haut.

Citation
Je vous invite à nous la transmettre par mail à l'adresse suivante : scsmb.clp(AT)laposte.


il faut envoyer tous les reclamations à cette adresse mail je pense que l'on ne peut pas faire mieux je trouve

@+++

Écrit par : datch1 18 Feb 2009, 14:39

Juste ma pierre à l'édifice :
Ligne 493 :
remplacer

Citation
<td class="dataTableContent" align="left" valign="top"><?php echo $noColis ; ?></td>

Par
Citation
<td class="dataTableContent" align="left" valign="top"><?php echo '<a href="http://www.coliposte.net/particulier/suivi_particulier.jsp?colispart='.$noColis.'"target="_blank"> '.$noColis.'</A>'; ?></td>


On a un lien vers le site de la poste.

Plus pratique pour les tests.

Écrit par : Phocea 18 Feb 2009, 15:05

Trop tard datch1, deja ajouté dans la derniere version qui est dors et deja en ligne sur le site US des contributions

Écrit par : foxtoto2000 18 Feb 2009, 15:23

je viens de voir la nouvelle version
As tu fais un changement sur la bdd?

Écrit par : datch1 18 Feb 2009, 15:24

rah mais faut le dire qu'elle avait été mise en ligne.... J'y vais de ce pas.

Question : je ne suis pas en php5 mais 4 : vous n'avez pas des problèmes d'affichage de dates?

Écrit par : foxtoto2000 18 Feb 2009, 15:35

beaucoup de changement!!!

Écrit par : Phocea 18 Feb 2009, 15:51

Citation (foxtoto2000 @ 18 Feb 2009, 16:23) *
je viens de voir la nouvelle version
As tu fais un changement sur la bdd?


Et la doc d'instal c'est pour les chiens smile.gif ?

Code
3/ Installation
---------------
Sous phmMyAdmin, exécutez dans l'onglet SQL le contenu de reclamaposte.sql en prenant soin de chosir la requête d'install ou de mise à jours.

Écrit par : datch1 18 Feb 2009, 16:13

Contrib installée et adaptée à mes besoins (j'ai un table spécifique pour stocker les numéros de colis). On va dire que je travaille plus sur une logique "colis centric" que "orders centric" (d'ailleurs, il faut que je vérifie ce que ça va donner avec plusieurs expéds sur la meme commande).

Néanmoins j'ai un gros problème de date :
dans la liste Dernières Demandes de Remboursements Générées (18/02/2009) j'ai invariablement 30/11/1999

et dans la liste Liste des colis à vérifier j'ai la date du jour pour la date d'exped (au format 2008-02-18) et 01/01/1970 pour la date de changement de status.

Je n'arrive pas bien à comprendre la logique des formats manipulés et notamment le format de la date qu'on récupère de la poste.

mes dates de départ en bbd sont stockées en yyyy-mm-dd (juste le jour, pas d'heure).

Si qq'un à une idée?

Écrit par : datch1 18 Feb 2009, 16:19

Citation (Phocea @ 18 Feb 2009, 10:51) *
Et la doc d'instal c'est pour les chiens smile.gif ?

A ce propos, je pense qu'il faudrait supprimer le laïus sur les images de la poste dans la doc, non?

Écrit par : Phocea 18 Feb 2009, 16:26

Citation (datch1 @ 18 Feb 2009, 17:13) *
Contrib installée et adaptée à mes besoins (j'ai un table spécifique pour stocker les numéros de colis). On va dire que je travaille plus sur une logique "colis centric" que "orders centric" (d'ailleurs, il faut que je vérifie ce que ça va donner avec plusieurs expéds sur la meme commande).

Néanmoins j'ai un gros problème de date :
dans la liste Dernières Demandes de Remboursements Générées (18/02/2009) j'ai invariablement 30/11/1999

et dans la liste Liste des colis à vérifier j'ai la date du jour pour la date d'exped (au format 2008-02-18) et 01/01/1970 pour la date de changement de status.

Je n'arrive pas bien à comprendre la logique des formats manipulés et notamment le format de la date qu'on récupère de la poste.

mes dates de départ en bbd sont stockées en yyyy-mm-dd (juste le jour, pas d'heure).

Si qq'un à une idée?


Pour la date 01/01/1970 c'est surement ce qui doit s'afficher pour les dates des nouveaux colis pour lesquels tu n'as pas encore lancer la vérification ou pour les anciens colis deja passé à la moulinette qui n'auront pas encore le bon format d'information dans la base.
Je pourrais filtrer ca et ne rien afficher eventuellement mais ca va se rectifier dans le temps.

Les autres dates sont stockés sous un format du style:
12343068 qui se traduit par 2009/02/11 .. si si smile.gif Ca passe par strtotime, mais surement que delete a une meilleur explication!

heu au passage, attention j'ai oublié de remettre le nom de la colonne de tracking, l'id du status envoyé ainsi que le chemin de fpdf à celui que delete avait mis dans la contrib au début...

Remarque bis: le status n'est plus utilisé

REMARQUE BIS BIS: 1er petit bug

remplacé dans reclamaposte.php la ligne

Code
if ( $order_query_r['laposte'] == REMBOURSEMENT_DEMANDE ) continue;

par
Code
if ( $laposte_status[0] == COLIPOSTE_RECLAMATION_REMBOURSE || $laposte_status[0] == COLIPOSTE_RECLAMATION_REMBOURSE) continue;

Écrit par : datch1 18 Feb 2009, 16:40

Super Phocéa, merci pour la réponse.

Effectivement, j'en étais arrivé a jouer avec strtotime et j'ai réussi à avoir un affichage correct mais cela me fout la merde derrière pour le pdf.
La grosse question est donc :
d'ou viennent les dates de la liste Dernières Demandes de Remboursements Générées (18/02/2009) ?

De ce que j'ai pu comprendre du code, on la récupère dans le fichier txt généré par ce qu'on a pompé chez la poste.

Donc il semblerait qu'elle soit mal formatée/interprétée au retour chez moi.
Comme elle sert de base ensuite pour générer le pdf, cela fait des soucis.

La réponse est sans doute sous mon nez mais la, je suis perdu.
http://img134.imageshack.us/my.php?image=printscreencc2.jpg

Écrit par : Phocea 18 Feb 2009, 16:44

la date du fichier c'est différent

Code
$mtime = date('d/m/Y', filemtime($fremboursements));


Par contre vu que la date de présentation fonctionne je ne pense pas que ce soit strotime qui soit en cause, c'est plutot la date d'expédition qui est au mauvais format.

regarde du coté de

Code
$order_date          = substr($order_query_r['date_added'], 0, strpos($order_query_r['date_added'], ' '));

qui reprend la date_added de l'historique de status, au moment ou un code colissimo a été ajouté

Écrit par : datch1 18 Feb 2009, 16:57

$order_date = $order_query_r['date_added'];

a l'air de passer nickel...
yek yek yek, on va passer au 1er test.

Je maintiens ce que je disais hier, il faudrait sans doute splitter le pdf en plusieurs fichiers de 5 réclamation max...
En attendant le le ferais "à la mano".

Je ne suis pas un fan de l'indemnisation en masse (expérience vécue)
merci phocéa !

Écrit par : Phocea 18 Feb 2009, 17:14

Bon pendant qu'on y est, et si on faisait une TODO list pour bien synchroniser les efforts:

Alors voila les additions auxquelles je pense:


Écrit par : datch1 18 Feb 2009, 17:26

Je n'ai pas regardé dans le code mais as tu prévu le cas ?:
Colis annoncé par l'expediteur mais manquant a la prise en charge...

Écrit par : foxtoto2000 18 Feb 2009, 17:31

j'ai des messages d'erreurs sur certaines ligne de colis a verifier:
Warning: date() expects parameter 2 to be long, string given in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php

de plus, la génération de pdf ne fonctionne pas, j'ai le message suivant:
Warning: include(includes/functions/oe_functions.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_pdf.php on line 25

Warning: include(includes/functions/oe_functions.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_pdf.php on line 25

Warning: include() [function.include]: Failed opening 'includes/functions/oe_functions.php' for inclusion (include_path='.:') in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_pdf.php on line 25
FPDF error: Some data has already been output, can't send PDF file

Écrit par : Phocea 18 Feb 2009, 17:39

Citation (datch1 @ 18 Feb 2009, 18:26) *
Je n'ai pas regardé dans le code mais as tu prévu le cas ?:
Colis annoncé par l'expediteur mais manquant a la prise en charge...


Non je pense qu'il n'y est pas, ca devrait se traduire par une icone avec un petit oeil je crois mais on ne gere pas encore le cas spécifique ou l'image n'est pas reconnu.

Écrit par : Phocea 18 Feb 2009, 17:41

Citation (foxtoto2000 @ 18 Feb 2009, 18:31) *
j'ai des messages d'erreurs sur certaines ligne de colis a verifier:
Warning: date() expects parameter 2 to be long, string given in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php

de plus, la génération de pdf ne fonctionne pas, j'ai le message suivant:
Warning: include() [http://www.foxchip.com/admin/function.include]: Failed opening 'includes/functions/oe_functions.php' for inclusion (include_path='.:') in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte_pdf.php on line 25

Warning: FPDF::include(fpdf/font/helveticab.php) [http://www.foxchip.com/admin/fpdf.include]: failed to open stream: No such file or directory in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/classes/fpdf/fpdf.php on line 541

Warning
: FPDF::include() [http://www.foxchip.com/admin/function.include]: Failed opening 'fpdf/font/helveticab.php' for inclusion (include_path='.:') in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/classes/fpdf/fpdf.php on line 541
FPDF error: Could not include font metric file


Bein tu as les ligne d'erreurs ...

1. enleve l'appel vers oe_functions.php
2. adapte avec ton chemin d'install de fpdf

Écrit par : foxtoto2000 18 Feb 2009, 17:47

je venais juste de trouver pour le probleme de FPDF avec le chemin

par contre a quoi sert la fonction oe_functions.php?

un bug a remonter sur le 3e bouton

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== "8V79259832816"' at line 1

update orders_status_history set laposte = "35" where orders_id = "76753" and track_num == "8V79259832816" ;

[TEP STOP]


il y a un == en trop au lieu de = avant le numero de colis


sinon pour mon probleme j'ai des messages d'erreurs sur certaines ligne de colis a verifier:
Warning: date() expects parameter 2 to be long, string given in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php
sur les lignes des colis a verifier, tu as une idée?

Je constate egalement que des colis sont en double dans le listing des colis en retard

Écrit par : Phocea 18 Feb 2009, 18:03

Citation
par contre a quoi sert la fonction oe_functions.php?

pour toi .. a rien smile.gif

Citation
un bug a remonter sur le 3e bouton

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== "8V79259832816"' at line 1

c'est noté

Citation
sinon pour mon probleme j'ai des messages d'erreurs sur certaines ligne de colis a verifier:
Warning: date() expects parameter 2 to be long, string given in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php
sur les lignes des colis a verifier, tu as une idée?

sais pas....

Citation
Je constate egalement que des colis sont en double dans le listing des colis en retard

si tu as rentré plusieurs fois le numéro de suivi sur plusieurs historiques de status sur la meme commande, tu auras des doublons

pour eviter ca change la ligne

Code
$track_num           = $order_query_r[TRACKING_DB_FIELD];


par
Code
$track_num           = $order_query_r[TRACKING_DB_FIELD];
// On skip les doublons (tracking ajoutés plusieurs fois sur differents status de commande ou plusieurs commandes envoyés sous le meme tracking)
                    if (in_array($track_num, $coliposte)) continue;
                    $coliposte[] = $track_num;

Écrit par : delete 18 Feb 2009, 18:21

Citation (Phocea @ 18 Feb 2009, 18:03) *
Citation
Je constate egalement que des colis sont en double dans le listing des colis en retard

si tu as rentré plusieurs fois le numéro de suivi sur plusieurs historiques de status sur la meme commande, tu auras des doublons

pour eviter ca change la ligne


Pour résoudre ce problème il y a plus simple, on pourrait changer la requête de cette manière :
SQL
$order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" order by date_added desc LIMIT 1 ;';


wink.gif

Écrit par : Phocea 18 Feb 2009, 18:37

En faisant comme cela, ca n'empêchera pas de traiter 2 commandes envoyées avec le même numéro de tracking, ce qui peut arriver si tu as groupé des commandes.
En plus en limitant a 1 on va rater les commandes qui au contraire on été envoyé en plusieurs fois!

j'ai fait quelques modifs/bug fixes je vais donc mettre le package à jour.

Nouveauté:
- prise en charge des doublons
- tentative de prise en charge des images non reconnues (a tester)
- nb de jours d'affichage parametrable - on ne verifie que ceux des 30 derniers jours mais on peut afficher un plus long historique
- les commandes deja trouvé en livraison ok, reclamation faite ou remboursé ne sont plus vérifié
- mise a jours de la doc d'instal
- 2-3 autres petits soucis réglés

Écrit par : foxtoto2000 18 Feb 2009, 19:19

pourquoi avoir mis le fichier fpdf.php dans le repertoire classes alors que le reste est direcement dans le répertoire fpdf de l'admin?

Pour remonter le probleme, j'ai toujorus l'erreur suiavnte sur certains ligne de colis:
Warning: date() expects parameter 2 to be long, string given in /var/www/vhosts/foxchip.com/httpdocs/admin/reclamaposte.php on line 377

De plus, chez moi, la 3e etape ne fonctionne pas car une fois que je l'ai faite, je retrouve toujours mes colis dans l'etape 1

Écrit par : datch1 18 Feb 2009, 19:58

Bonsoir,
est ce que quelqu'un pourrait me donner le résultat de la requete suivante sur une version plus standard que la mienne (environ la L313 dans reclamaposte.php):
//$orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`, o.`date_purchased`, o.`customers_name` from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL '.COLIPOSTE_MAX_DAYS.' DAY) <= date_purchased order by date_purchased desc ;' ;

Je voudrais notamment voir[s]e
quel format de date est renvoyé.
[/s]
Merci d'avance

en fait j'ai trouvé, merci

C'est beau une contrib qui marche. biggrin.gif

Sinon, il serait peut-etre intéressante de mettre une tickbox pour afficher ou non les colis livrés en temps et en heures.

Finalement, je suis agréablement surpris par la qualité de service de la poste. 90% des livraisons hors délais sont a 3J, et le reste à 4 et très peu à plus. Si on devait exclure les livraisons à J+3 (soyons tolérants wink.gif ) le pourcentage de litiges serait finalement assez faible.

Écrit par : foxtoto2000 18 Feb 2009, 21:15

je reviens toujours pour mon probleme de warning
en fait, je viens de vérifier et ma variable $laposte_status[1] est null quand j'ai le warning et $order_query_r['laposte'] vaut 99||
il y a des infos qui sont mal récupérées sur le site de la poste

sinon personne n'a de probleme avec la 3e etape pour valider les remboursements?

Écrit par : datch1 18 Feb 2009, 21:29

Pas de réponses à ta question, désolé. De mon coté celà semble fonctionner (sous reserves de verif plus sérieuses).

Par contre, je voudrais passer les commandes pour lesquelles j'ai demandé un remboursement dans un statut spécifique (Rbt demandé) afin de pouvoir faire un suivi efficace de l'après demande de remboursement.
Pour l'update sur orders pas de problème.
Pour l'insert dans orders_status_history, la non plus pas de souci.

Par contre, je n'arrive pas à décoder le champs laposte et ses différents status pour décider du comments que j'insert dans orders_status_history.

Que comprendre ici ?
8V67804536654 28914 10|1234911600|2


sachant que cette commande est livrée à temps...


PS: c'est peut être un peu redondant avec votre approche basée sur votre contrib de suivi colissimo. De mon coté j'avais préféré faire un table expeditor distinctes de orders et orders s_status ou je loggue le prix payé par le client et le prix que j'ai effectivement payé pour le transport . Je peux ainsi ajuster mes prix de transport si besoin.

Écrit par : foxtoto2000 18 Feb 2009, 21:41

10 = Statut COLIPOSTE_LIVRAISON_OK
1234911600= date en format seconde ou autre (je sais pas exactement sous quel format)
2 = je sais pas à quoi ca correspond

Écrit par : datch1 18 Feb 2009, 21:42

OK merci, je ne regardais pas dans cette partir des define... biggrin.gif

Écrit par : foxtoto2000 18 Feb 2009, 22:14

le 2 c'est le nombre de jours ouvrés pour la livraison
Pour mon probleme de warning, je constate que tout les colis qui posent probleme ont un statut $order_query_r['laposte'] égale à 15 ou 35 ou 99

Écrit par : delete 19 Feb 2009, 00:00

La doc d'install c'est © Rogers, pour les corrections il faut les faire dans le cadre de l'évolution de la contrib, donc correction de la contrib ne pas oublier la doc mrgreen.gif (edit : rien pour les contributeurs mais les autres....)

Pour le fichier excel, et pour ceux qui ont le contrat pro, c'est interessant merci à Max_2000 pour la précision. En tou cas je me pencherait sérieusement sur le sujet.

J'ai regardé en binaire (le fichier envoyé par MP) c'est chiant à reproduire.

J'ai fait le tours des contribs php/excel mais bon... Il y a des pistes chez developpez.net mais toujours avec des contraintes.

Si quelqu'un a une idée... (Phocea a un bonne idée à la base, mais avec du Excel XML, tout le monde ne l'a pas)

Un fichier XLS standard du style ATOS serait mieux... pour l'attachement de l'email ce n'est pas trop un problème.

Concernant le LIMIT 1 que j'ai suggéré, c'est une bonne méthode, car les SAV et les commandes avec colis multiples sont rares, enfin je vous le souhaite laugh.gif

Pour les bugs mineurs où les améliorations potentielles postez du code blush.gif

wink.gif

Écrit par : Phocea 19 Feb 2009, 10:45

un nouveau fichier reclamaposte.php qui devrait fixer les pb rencontrés hier

Code
<?php  /*
  $Id: reclamation_poste.php, v 1.6 24/01/2009 delete (forum oscommerce-fr.info) $

  This script is not included in the original version of osCommerce

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

*/

require('includes/application_top.php');

require(DIR_WS_LANGUAGES . $language . '/orders.php');
include(DIR_WS_CLASSES . 'order.php');
include(DIR_WS_FUNCTIONS . 'reclamaposte.php');
include(DIR_WS_FUNCTIONS . 'reclamaposte_dates.php');
include(DIR_WS_FUNCTIONS . 'reclamaposte_ocr.php');

define (DIR_WS_ICONS, DIR_WS_IMAGES.'/icons/');

if (function_exists('ini_get') && function_exists('ini_set') ) {
   @set_time_limit(300); // Eviter le timeout PHP - Ne fonctionne pas en safe_mode
}

//
// On valide les commandes pour lesquelles la demande de remboursement a été faite
//
if ( isset($_POST['validation']) )
{
    if ( file_exists($tmp_dir . '/laposte.remboursements.txt') )
    {
        $remboursements = file_get_contents($tmp_dir . '/laposte.remboursements.txt');

        $liste_colis = explode('|', $remboursements);

        for($i = 0; $i < sizeof($liste_colis); $i++)
        {
            if ( ! tep_not_null($liste_colis[$i]) ) continue;

            $str = explode(';', $liste_colis[$i]);

            $order_id        = $str[0];
            $date_expedition = $str[1];
            $date_livraison  = $str[2];
            $noColis         = $str[3];
            $nb_jours_ouvres = $str[4];

            if ( ! tep_not_null($order_id) )  continue;

            $orders_query = 'update ' . TABLE_ORDERS_STATUS_HISTORY . ' set laposte = CONCAT(' . COLIPOSTE_RECLAMATION_DEMANDE . ', SUBSTRING(laposte, 2)) where orders_id = "' . $order_id . '" and ' . TRACKING_DB_FIELD . ' = "'.$noColis.'"; ';
            $orders_query_r =  tep_db_query($orders_query);
        }
        unlink($tmp_dir . '/laposte.remboursements.txt');
        $messageStack->add_session('Table demande de remboursements mise à jour !', 'success');
    
    }
    else
    {
        $messageStack->add_session('faire une demande de remboursement avant !', 'error');
    }
  tep_redirect(basename(__FILE__));
}
elseif( isset($_POST['verify']) ) {
    // Remise à zero du fichier de demande de remboursements
    file_put_contents($fremboursements, '');

    // Recupération des information du fichier
    $post = file_get_contents($flist);

    $liste_colis = explode('|', $post);

    for($i = 0; $i < sizeof($liste_colis); $i++) {
        if ( ! tep_not_null($liste_colis[$i]) ) continue;

        $str = explode(';', $liste_colis[$i]);

        $noColis = $str[0];
        $date_expedition = $str[1];
        $order_id = $str[2];
        $status = $str[3];

      
        // Test Cohérence N° Colis
        if (strlen($noColis) != 13)     continue;

        // Date expédition de la commande
        $y = substr($date_expedition, 0, 4);
        $m = substr($date_expedition, 5, 2);
        $d = substr($date_expedition, 8, 2);
        $date_expedition = strtotime(sprintf('%04d-%02d-%02d', $y, $m, $d));
        
        // si statut deja à retard on ne test plus
        if ($status == COLIPOSTE_LIVRAISON_RETARD) {
            $date_livraison = $str[4];
            $nb_jours_ouvres = $str[5];
            $remboursements = sprintf('%s;%s;%s;%s;%s|', $order_id, $date_expedition, $date_livraison, $noColis, $nb_jours_ouvres);
            file_put_contents($fremboursements, $remboursements, FILE_APPEND);
            continue;
        }

        // Si la commande date de + que le nb de jours spécifié, nul besoin de demander...
        $age_commande = get_nb_open_days(time(), $date_expedition);

        if ( $age_commande > 31) {
            # On archive la commande ici
            continue;
        }

        // On récupère le dernier statut et date de la commande
        $case =  merci_la_poste($noColis);
        $laposte = '';
        switch( $case ) {
            // Le Colis a été livré, process de vérification des dates.
            case 1 :
                // Processus OCR sur l'image 'date';
        
                if ( ! $img = @imagecreatefrompng($tmpfname) ) continue;
                
                // Masquage des slashes sur l'image
                $yellow = imagecolorallocate($img, 255, 234, 153);
                imagefilledrectangle($img, 12, 0, 14, 12, $yellow);
                imagefilledrectangle($img, 26, 0, 29, 12, $yellow);
        
                // Fichier de sortie temporaire
                $comparefile = tempnam($tmp_dir, "laposte");
                if ( ! @imagepng($img, $comparefile) ) continue;
        
                /* PHP OCR */
                //This is the main function. Format of the output array is $retmas[$line_number][$letter_number][$type]
                //where $type is 0 for digit and 1 for relative closeness
                $retmas = parse_image($comparefile,$conf['font_file']);
                //
                $date = print_output_text($retmas,$tmpfname, 0);
                unlink($comparefile);
                unlink($tmpfname);
        
                $d = substr($date, 0, 2);
                $m = substr($date, 2, 2);
                $y = substr($date, 4, 2);
        
                $date_livraison  = strtotime(sprintf('20%02d-%02d-%02d', $y, $m, $d));
                $nb_jours_ouvres = get_nb_open_days($date_expedition, $date_livraison);
                if (($nb_jours_ouvres) > 2) {
                    // On génère le fichier destiné à la poste !
                    $remboursements = sprintf('%s;%s;%s;%s;%s|', $order_id, $date_expedition, $date_livraison, $noColis, $nb_jours_ouvres);
                    file_put_contents($fremboursements, $remboursements, FILE_APPEND);
                    $laposte = COLIPOSTE_LIVRAISON_RETARD;
                } else {
                    $laposte = COLIPOSTE_LIVRAISON_OK;
                }
                break;
            // Cas dans lesquels on a pas encore d'info
            case 10 :
                $laposte = COLIPOSTE_LIVRAISON_UNKNOWN;
                break;
            // Cas dans lesquels la commande est encore en transit
            case 5 :
                $laposte = COLIPOSTE_LIVRAISON_TRANSIT;
                break;
            // Cas dans lesquels la commande n'est pas remboursable
            case 9 :
                $laposte = COLIPOSTE_REMBOURSEMENT_IMPOSSIBLE;
                break;
            // Cas dans lesquels l'image n'a pas été reconnu
            case -1 :
                $laposte = COLIPOSTE_ERREUR_MD5;
                break;
        }
    
    $laposte .= '|'.$date_livraison.'|'.$nb_jours_ouvres;
    
    $orders_query = 'update ' . TABLE_ORDERS_STATUS_HISTORY . ' set laposte = "' . $laposte .'" where orders_id = "' . $order_id . '" and ' . TRACKING_DB_FIELD . ' = "'.$noColis.'"; ';
    $orders_query_r =  tep_db_query($orders_query);
    
    if ( $i % 10 ) usleep(300);

    }
  tep_redirect(basename(__FILE__));
}


//
// Module d'affichge des commandes éligibles
//
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<script type="text/javascript" src="includes/general.js"></script>
</head>
<body>
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" summary="" cellspacing="2" cellpadding="2">
  <tr>
    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" summary="" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
    </table></td>
<!-- body_text //-->
    <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
<!-- Expeditor Begin //-->
    <tr><td class="pageHeading"><?php echo 'Réclamations La Poste'; ?></td></tr>
        <tr>

        <td class="smallText"><?php echo 'Téléchargement des états en cours'; ?>
        <?php echo tep_draw_form('verify', basename(__FILE__)); ?>
        
        <input type="submit" name="verify" /> &nbsp;&nbsp;
        </form>
        </td>

        <td class="smallText"><?php echo 'Générer la demande de remboursement'; ?>
        <?php echo tep_draw_form('pdf', 'reclamaposte_pdf.php', '', 'post', 'enctype="multipart/form-data" target="_blank"'); ?>
            <input type="submit" /> &nbsp;&nbsp;
        </form>
        </td>

        <td class="smallText"><?php echo 'Valider la demande de remboursement'; ?>
         <?php echo tep_draw_form('validation', basename(__FILE__)); ?>
                <input type="submit" name="validation" />
        </form>
        </td>


    </tr>
    </td>
<!-- Body Begin //-->

</table><table width="100%" border="0">
<?php
//
// Import du fichier
//
if ( file_exists($fremboursements) ) {
  $mtime = date('d/m/Y', filemtime($fremboursements));
  $remboursements = file_get_contents($fremboursements);
  $liste_colis = explode('|', $remboursements);

    if (strlen($remboursements) > 0 && count($liste_colis)) {
        
?>
    <tr class="dataTableHeadingRow">
        <td class="dataTableHeadingContent">Status</td>
        <td class="dataTableHeadingContent">Commande</td>
        <td class="dataTableHeadingContent">Colis</td>
        <td class="dataTableHeadingContent">Date Expédition</td>
        <td class="dataTableHeadingContent">Date Présentation</td>
        <td class="dataTableHeadingContent">Jours</td>
        
    </tr>
<?php

        echo '<h3>Dernières Demandes de Remboursements Générées (' . $mtime . ') </h3>';    
    
        for($i = 0, $y = 50; $i < sizeof($liste_colis); $i++) {
            if ( ! tep_not_null($liste_colis[$i]) ) continue;
                
          $str = explode(';', $liste_colis[$i]);
        
          $orders_id        = $str[0];
          $date_expedition = $str[1];
          $date_livraison  = $str[2];
          $noColis         = $str[3];
          $nb_jours_ouvres = $str[4];
          
          $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_LIVRAISON_RETARD']['icon'], $etat['COLIPOSTE_LIVRAISON_RETARD']['description']);
?>
<tr>
     <td class="dataTableContent" align="left" valign="top"><?php echo $image_status;?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, 'action=edit&oID=' . $orders_id) . '">'.$orders_id.'</a>'; ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="'.$main_url . $url_params. $noColis. '"target=_blank">'. $noColis.'</a>'; ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo date('d/m/Y', $date_expedition); ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo date('d/m/Y',$date_livraison); ?></td>
     <td class="dataTableContent" align="left" valign="top"><?php echo $nb_jours_ouvres; ?></td>
</tr>
<?php
        }
    } else {
    echo "Aucune demande de Remboursement en Attente";
    }
} else {
    echo "Aucune demande de Remboursement en Attente";
}
?>
</table>

<table width="100%" border="0">
    <tr class="dataTableHeadingRow">
        <td class="dataTableHeadingContent">Status</td>
        <td class="dataTableHeadingContent">Commande</td>
        <td class="dataTableHeadingContent">Colis</td>
        <td class="dataTableHeadingContent">Date Expédition</td>
        <td class="dataTableHeadingContent">Date Status</td>
        <td class="dataTableHeadingContent">Jours</td>
    </tr>
<?php
        echo '<h3>Liste des colis envoyés depuis le '.date('d-m-Y', strtotime("-".COLIPOSTE_MAX_DAYS." days")).'</h3>';
        
        $listing = '';
        if (COLIPOSTE_MAX_DAYS > 0) {
            $orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`  from ' . TABLE_ORDERS . ' o where DATE_SUB(CURDATE(),INTERVAL '.COLIPOSTE_MAX_DAYS.' DAY) <= date_purchased order by date_purchased desc;';  
        } else {
            $orders_query = 'select o.`orders_id`, o.`orders_status`, o.`customers_email_address`,  o.`date_purchased`, o.`customers_name`  from ' . TABLE_ORDERS . ' o order by date_purchased desc;';  
        }

        $orders_query_r =  tep_db_query($orders_query);
    
        $listing = '';
        $coliposte = array();

        while($qr = tep_db_fetch_array($orders_query_r)) {
          $customer_email      = $qr['customers_email_address'];
          $date_purchased      = $qr['date_purchased'];
          $customers_name      = $qr['customers_name'];
            $orders_id           = $qr['orders_id'];

            $order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" order by date_added desc;';

          $order_query_r       = tep_db_query($order_history_query);
          $order_query_r       = tep_db_fetch_array($order_query_r);
          $track_num           = $order_query_r[TRACKING_DB_FIELD];
                    // On skip les doublons (tracking ajoutés plusieurs fois sur differents status de commande ou plusieurs commandes envoyés sous le meme tracking)
                    if (in_array($track_num, $coliposte)) continue;
                    $coliposte[] = $track_num;
          $order_date          = substr($order_query_r['date_added'], 0, strpos($order_query_r['date_added'], ' '));

            // Spécifique la poste, tracking number français. sinon on skip.
            if (preg_match("/(8N|8U|8L|8V)[a-z0-9]{1,11}$/i", $track_num) == 0) continue;
      
            // On vérifie l'état de vérification des livraison
            $laposte_status = explode('|', $order_query_r['laposte']);
            switch( $laposte_status[0]) {
                // Le colis est en retard, réclamation pas encore faite
                case COLIPOSTE_LIVRAISON_RETARD:
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_LIVRAISON_RETARD']['icon'], $etat['COLIPOSTE_LIVRAISON_RETARD']['description']);
                      break;
                // Le colis est arrivée à temps
                case COLIPOSTE_LIVRAISON_OK :
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_LIVRAISON_OK']['icon'], $etat['COLIPOSTE_LIVRAISON_OK']['description']);
                      break;
                // Le colis est encore en transit                
                case COLIPOSTE_LIVRAISON_TRANSIT :
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_LIVRAISON_TRANSIT']['icon'], $etat['COLIPOSTE_LIVRAISON_TRANSIT']['description']);
                      break;
                  // La demande de remboursement a été faite
                case COLIPOSTE_RECLAMATION_DEMANDE :
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_RECLAMATION_DEMANDE']['icon'], $etat['COLIPOSTE_RECLAMATION_DEMANDE']['description']);
                      break;
                  // Le remboursement a été fait par La Poste
                case COLIPOSTE_RECLAMATION_REMBOURSE :
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_RECLAMATION_REMBOURSE']['icon'], $etat['COLIPOSTE_RECLAMATION_REMBOURSE']['description']);
                      break;
                  // Pas d'info ou image non trouvé
                case COLIPOSTE_ERREUR_MD5 :
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_ERREUR_MD5']['icon'], $etat['COLIPOSTE_ERREUR_MD5']['description']);
                      break;
                // Colis pas encore vérifié
                default:
                    $image_status = tep_image(DIR_WS_ICONS . $etat['COLIPOSTE_NONE']['icon'], $etat['COLIPOSTE_NONE']['description']);
                      break;
            }
            ?>
            
          <tr>
           <td class="dataTableContent" align="left" valign="top"><?php echo $image_status;?></td>
           <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, 'action=edit&oID=' . $orders_id) . '">'.$orders_id.'</a>'; ?></td>
           <td class="dataTableContent" align="left" valign="top"><?php echo '<a href="'.$main_url . $url_params. $track_num. '"target=_blank">'. $track_num.'</a>'; ?></td>
           <td class="dataTableContent" align="left" valign="top"><?php echo date('d-m-Y', strtotime($order_date)); ?></td>
           <td class="dataTableContent" align="left" valign="top"><?php if ($laposte_status[1] != '') echo date('d/m/Y',$laposte_status[1]); ?></td>
           <td class="dataTableContent" align="left" valign="top"><?php echo $laposte_status[2]; ?></td>
         </tr>
                  
<?php
          // Le remboursement à déjà été demandé, on exporte pas.
          if ( $laposte_status[0] == COLIPOSTE_LIVRAISON_OK || $laposte_status[0] == COLIPOSTE_RECLAMATION_DEMANDE || $laposte_status[0] == COLIPOSTE_RECLAMATION_REMBOURSE) continue;
          // On génére un listing des commandes a exporter, pour remboursement
          $listing .= sprintf('%s;%s;%s;%s;%s;%s|', $track_num, $order_date, $orders_id, $laposte_status[0],$laposte_status[1], $laposte_status[2]);
          
        }
          file_put_contents($flist, $listing);
?>
<!-- Body End //-->
    </tr></td>    </table>
<!-- Expeditor End //-->

    </table>
<!-- body_text_eof //-->
  </tr>
</table>
<!-- body_eof //-->

Écrit par : foxtoto2000 19 Feb 2009, 10:59

tu nous parles de quels problemes?
celui que j'ai remonté en phase 1 et en phase 3?

Voici le message d'erreur quand je clilque sur le 1er bouton
Fatal error: Cannot use string offset as an array in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/reclamaposte.php on line 193

Écrit par : Phocea 19 Feb 2009, 15:09

Citation (foxtoto2000 @ 19 Feb 2009, 11:59) *
tu nous parles de quels problemes?
celui que j'ai remonté en phase 1 et en phase 3?

Voici le message d'erreur quand je clilque sur le 1er bouton
Fatal error: Cannot use string offset as an array in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/reclamaposte.php on line 193



Pas vu cette erreur, de plus la fonction reclamaposte n'a pas été touché

Écrit par : delete 19 Feb 2009, 15:43

J'ai apprit Excel tongue.gif

1ère ébauche de la version PRO, à savoir, merci à l'informateur, de pouvoir envoyer le fichier par e-mail quand on dispose de ce contrat :

Merci donc à Rogers pour la vérification administrative et à Max_2000 pour la matrice Excel de la Poste.

Donc voici reclamaposte_xls.php qui s'appuie sur la magnifique Librairie de Johann Hanne : PHP Write Excel smile.gif

1) Télécharger PHP Write Excel arrow.gif http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/

2) Décompresser dans l'admin dans un répertoire s'appelant wxls

3) Créer un fichier reclamaposte_xls.php contenant le code (version béta) suivant :

CODE

<?php
/*
$Id: reclamaposte_xls,v 1.0 2009/02/19

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2003 osCommerce

Released under the GNU General Public License

Written by Olivier B. (delete: forum oscommerce-fr.info)

Thanks to : Johann Hanne for php_writeexcel - http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
*/

/* Section de paramètrage */

define('DEMANDE_DE_REMBOURSEMENT_GENEREE', 1) ;
define('TRACKING_DB_FIELD', 'track_num'); // Nom du champ 'No De Colis' dans la table order_history - Merci à Phocea

$tmp_dir = '/tmp' ;
$tmp_xls = $tmp_dir . '/tmp.xls' ;
$output_xls_name = 'laposte_' . date('Y-m-d', time()) . '.xls' ;

$wxls_library_path = 'wxls/' ;

define('RECLAMAPOSTE_COMPTECLIENT_TITLE', 'Compte client :') ;
define('RECLAMAPOSTE_COMPTECLIENT_CONTENT', '12345678') ;
define('RECLAMAPOSTE_RAISONSOCIALE_TITLE', 'Raison sociale :') ;
define('RECLAMAPOSTE_RAISONSOCIALE_CONTENT', 'Ma Boutique') ;
define('RECLAMAPOSTE_SIRET_TITLE', 'SIRET :') ;
define('RECLAMAPOSTE_SIRET_CONTENT', '11122334455667788') ;

/* FIN Section de paramètrage */

/* Librairie Write Excel */

require_once $wxls_library_path . "class.writeexcel_workbook.inc.php";
require_once $wxls_library_path . "class.writeexcel_worksheet.inc.php";

$fname = tempnam($tmp_dir, "laposte.xls");
$workbook = &new writeexcel_workbook($fname);
$worksheet = &$workbook->addworksheet();

/* Paramètres osCommerce */

require('includes/application_top.php');

//require(DIR_WS_LANGUAGES . $language . '/' . basename(__FILE__));

include(DIR_WS_CLASSES . 'order.php');

// multibyte array or string conversion to uppercase / by delete
//
if(!function_exists('tep_mb_strtoupper'))
{
function tep_mb_strtoupper($input)
{
if ( is_array($input) )
{
foreach ($input as $key => $val)
{
if ( ! tep_not_null($input[$key]) ) continue;

$input[$key] = mb_strtoupper($input[$key]);
}
return $input;
}
else
{
return mb_strtoupper($input);
}
}
}
//
// Import du fichier
//
if ( file_exists($tmp_dir . '/laposte.remboursements.txt' ) )
{
$remboursements = file_get_contents($tmp_dir . '/laposte.remboursements.txt') ;
} else
{
echo "Aucune demande de Remboursement en Attente" ;
exit ;
}

$liste_colis = explode('|', $remboursements) ;

if ( ! count($liste_colis) )
{
echo "Aucune demande de Remboursement en Attente" ;
exit ;
}

//
// Entete : compte client
//
$header =& $workbook->addformat();
$header->set_bold();
$header->set_size(12);

$worksheet->write(0, 0, RECLAMAPOSTE_COMPTECLIENT_TITLE);
$worksheet->write(0, 1, '="' . RECLAMAPOSTE_COMPTECLIENT_CONTENT . '"', $header);

$worksheet->write(0, 2, RECLAMAPOSTE_RAISONSOCIALE_TITLE);
$worksheet->write(0, 3, '="' . RECLAMAPOSTE_RAISONSOCIALE_CONTENT . '"', $header);

$worksheet->write(1, 0, RECLAMAPOSTE_SIRET_TITLE);
$worksheet->write(1, 1, '="' . RECLAMAPOSTE_SIRET_CONTENT . '"', $header);

//
// Entête du tableau de liste de colis
//
$tbl_header =& $workbook->addformat();
$tbl_header->set_bold();
$tbl_header->set_size(12);
$tbl_header->set_border(1);

$worksheet->set_column(0, 0, 25);
$worksheet->set_column(1, 1, 25);
$worksheet->set_column(2, 2, 25);
$worksheet->set_column(3, 3, 25);
$worksheet->set_column(4, 4, 40);
$worksheet->set_column(5, 5, 20);
$worksheet->set_column(6, 6, 30);


$worksheet->write(3, 0, 'Date dépôt colis', $tbl_header);
$worksheet->write(3, 1, 'N° colis', $tbl_header);
$worksheet->write(3, 2, 'Nom Destinataire', $tbl_header);
$worksheet->write(3, 3, 'Prénom Destinataire', $tbl_header);
$worksheet->write(3, 4, 'Adresse ', $tbl_header);
$worksheet->write(3, 5, 'Code postal', $tbl_header);
$worksheet->write(3, 6, 'Ville', $tbl_header);

$line_format =& $workbook->addformat();
$line_format->set_border(1);


for($i = 0, $line=3, $demandes_de_remboursement = 0, $y = 50 ; $i < sizeof($liste_colis) ; $i++)
{
if ( ! tep_not_null($liste_colis[$i]) ) continue ;

$str = explode(';', $liste_colis[$i]) ;

$order_id = $str[0] ;
$date_expedition = $str[1] ;
$date_livraison = $str[2] ;
$noColis = $str[3] ;
$nb_jours_ouvres = $str[4] ;

if ( $nb_jours_ouvres < 3 ) continue ;

$demandes_de_remboursement++;

$order = new order($order_id) ;

$orders_query = 'update ' . TABLE_ORDERS_STATUS_HISTORY . ' set laposte = "' . DEMANDE_DE_REMBOURSEMENT_GENEREE . '" where orders_id = "' . $order_id . '" and ' . TRACKING_DB_FIELD . ' != "" ; ' ;
//$orders_query_r = tep_db_query($orders_query) ;

// Une société on remplit le champs Nom avec le nom de la boite et prénom avec le blaze du mec
//
if ( isset($order->delivery['company']) && tep_not_null($order->delivery['company']) )
{
$nom = tep_mb_strtoupper($order->delivery['company']) ;
$prenom = tep_mb_strtoupper($order->delivery['name']) ;
}
else
{
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//
// A changer dans la table orders nous n'avons pas le nom complet mais nom/prénom
// Il faut aller piocher dans address_book, à faire ...
//
$nom = tep_mb_strtoupper($order->delivery['name']) ;
$prenom = '' ;
}

$adresse = tep_mb_strtoupper($order->delivery['street_address']) ;

if ( isset($order->delivery['sururb']) && tep_not_null($order->delivery['suburb']) )
$adresse .= '\n' . tep_mb_strtoupper($order->delivery['suburb']) ;

$line ++ ;
$worksheet->write($line, 0, '="' . date('d/m/Y', $date_expedition) . '"', $line_format);
$worksheet->write($line, 1, '="' . $noColis . '"', $line_format);
$worksheet->write($line, 2, $nom, $line_format);
$worksheet->write($line, 3, $prenom, $line_format);
$worksheet->write($line, 4, $adresse, $line_format);
$worksheet->write($line, 5, '="' . tep_mb_strtoupper($order->delivery['postcode']). '"', $line_format);
$worksheet->write($line, 6, tep_mb_strtoupper($order->delivery['city']), $line_format);
}

$workbook->close();


header('Content-Type: application/x-msexcel; name="' . $output_xls_name . '"');
header('Content-Disposition: inline; filename="' . $output_xls_name . '"');
$fh=fopen($fname, "rb");
fpassthru($fh);
unlink($fname);
?>


Je ferais l'intégration au seing de la contrib avec un paramétrage pro ou normal avec les dernières modifs de Phocea quand tout sera au point (mise en page, largeurs de colonnes etc...)

Enjoy biggrin.gif

Edité : Tableau excel formaté ...

Écrit par : Phocea 19 Feb 2009, 18:10

Allez zou une petite mise à jours avec les modifs suivantes:

- Des bugs non critiques fixés.
- Les status de plus de 30 jours ne sont plus perdu ce qui permet un suivi à l'infini (autant que l'on pense à lancer la contrib de temps en temps quand meme!!)
- Prise en charge du status "remboursement demandé"
- Mode de test disponible (remet tout les status à 0 lors de la validation finale)
- Découpage des fonctions en vue d'une future intégration avec une tache automatique de suivi (celle de regne pour ne pas la nommer!!)

Attention la prochaine risque d'introduire du JQuery pour effectuer les taches administratives, ca rigolera plus là !!

Écrit par : delete 19 Feb 2009, 18:28

wink.gif

Viendra se rajouter à cela la version pro avec un email avec fichier joint Excel adressable directement au service de la poste concerné. biggrin.gif

Il y a des éditeurs de logiciels payants (typiquement dans notre cas) qui ont à se faire du soucis face à la puissance de l'OpenSource laugh.gif

Écrit par : foxtoto2000 19 Feb 2009, 21:43

bon bah j'ai toujours le meme probleme , meme avec la dernière version
je n'avais pas ce probleme avec la version 1.6

Fatal error: Cannot use string offset as an array in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/reclamaposte.php on line 201

Écrit par : delete 19 Feb 2009, 22:30

Citation (foxtoto2000 @ 19 Feb 2009, 21:43) *
bon bah j'ai toujours le meme probleme , meme avec la dernière version


Bon STOP pour tes plaintes ou doléances excl.gif Ce n'est en rien constructif angry.gif twisted.gif

Ouvre un post et émet tes plaintes. Je suis sûr que tu auras un énorme soutient. tongue.gif

-----------------------------------------

Pour la version PRO/XLS, voici le projet XLS :

Le tableau est complet et formaté, le fichier XLS encodé dans un e-mail, il ne reste plus qu'à le transférer à la poste :

CODE
<?php
/*
$Id: reclamaposte_xls,v 1.0 2009/02/19

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2003 osCommerce

Released under the GNU General Public License

Written by Olivier B. (delete: forum oscommerce-fr.info)

Merci at tous les contibuteurs, http://www.oscommerce-fr.info/forum/index.php?showtopic=59845

Thanks to : Johann Hanne for php_writeexcel - http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
*/

/* Paramètres osCommerce */

require('includes/application_top.php');

/* Section de paramètrage */

define('DEMANDE_DE_REMBOURSEMENT_GENEREE', 1) ;
define('TRACKING_DB_FIELD', 'track_num'); // Nom du champ 'No De Colis' dans la table order_history - Merci à Phocea

$destinataire = STORE_OWNER_EMAIL_ADDRESS ;
$expediteur = STORE_OWNER_EMAIL_ADDRESS ;
$reponse = STORE_OWNER_EMAIL_ADDRESS ;

$tmp_dir = '/tmp' ;
$tmp_xls = $tmp_dir . '/tmp.xls' ;
$output_xls_name = 'laposte_' . date('Y-m-d', time()) . '.xls' ;

$wxls_library_path = 'wxls/' ;

define('RECLAMAPOSTE_COMPTECLIENT_TITLE', 'Compte client :') ;
define('RECLAMAPOSTE_COMPTECLIENT_CONTENT', '12345678') ;
define('RECLAMAPOSTE_RAISONSOCIALE_TITLE', 'Raison sociale :') ;
define('RECLAMAPOSTE_RAISONSOCIALE_CONTENT', 'Ma Boutique') ;
define('RECLAMAPOSTE_SIRET_TITLE', 'SIRET :') ;
define('RECLAMAPOSTE_SIRET_CONTENT', '11122334455667788') ;
define('RECLAMAPOSTE_EMAIL_POSTE', 'scsmb.clp@laposte.fr') ;
define('RECLAMAPOSTE_MESSAGE_POSTE', '
Transférer ce message à : mailto://' . RECLAMAPOSTE_EMAIL_POSTE . '

A l\'attention de :
GENIN Stéphanie
Service Clients ColiPoste
14 Rue Antoine de Saint Exupéry
BP 7500
88107 SAINT DIE DES VOSGES Cedex
Tél : 0825 878 888
Fax : 03 29 42 15 91
--------------------------

Madame,

Vous trouverez ci-joint la liste des colis pour lesquels nous portons réclamation conformément à vos conditions de ventes.

Nous vous saurions gré de bien vouloir procéder à un avoir ou un remboursement rapide de ces colis.

Veuillez agréer, Madame, Monsieur, l\'expression de nos salutations distinguées.

La Direction.') ;


/* FIN Section de paramètrage */

/* Librairie Write Excel */

require_once $wxls_library_path . "class.writeexcel_workbook.inc.php";
require_once $wxls_library_path . "class.writeexcel_worksheet.inc.php";

$fname = tempnam($tmp_dir, "laposte.xls");
$workbook = &new writeexcel_workbook($fname);
$worksheet = &$workbook->addworksheet();

// A completer le fichier language...
//
//require(DIR_WS_LANGUAGES . $language . '/' . basename(__FILE__));

include(DIR_WS_CLASSES . 'order.php');

// multibyte array or string conversion to uppercase / by delete
//
if(!function_exists('tep_mb_strtoupper'))
{
function tep_mb_strtoupper($input)
{
if ( is_array($input) )
{
if ( ! is_array($input) )
{
foreach ($input as $key => $val)
{
if ( ! tep_not_null($input[$key]) ) continue;

$input[$key] = mb_strtoupper($input[$key]);
}
return $input;
}
else tep_mb_strtoupper($input) ;
}
else
{
return mb_strtoupper($input);
}
}
}
//
// Import du fichier
//
if ( file_exists($tmp_dir . '/laposte.remboursements.txt' ) )
{
$remboursements = file_get_contents($tmp_dir . '/laposte.remboursements.txt') ;
} else
{
echo "Aucune demande de Remboursement en Attente" ;
exit ;
}

$liste_colis = explode('|', $remboursements) ;

if ( ! count($liste_colis) )
{
echo "Aucune demande de Remboursement en Attente" ;
exit ;
}

//
// Entete : compte client
//
$header =& $workbook->addformat();
$header->set_bold();
$header->set_size(12);
$header->set_num_format(0) ;

$worksheet->write(0, 0, RECLAMAPOSTE_COMPTECLIENT_TITLE);
$worksheet->write(0, 1, '="' . RECLAMAPOSTE_COMPTECLIENT_CONTENT . '"', $header);

$worksheet->write(0, 2, RECLAMAPOSTE_RAISONSOCIALE_TITLE);
$worksheet->write(0, 3, '="' . RECLAMAPOSTE_RAISONSOCIALE_CONTENT . '"', $header);

$worksheet->write(1, 0, RECLAMAPOSTE_SIRET_TITLE);
$worksheet->write(1, 1, '="' . RECLAMAPOSTE_SIRET_CONTENT . '"', $header);
//
// Format de l'entête du tableau de liste de colis
//
$tbl_header =& $workbook->addformat();
$tbl_header->set_bold();
$tbl_header->set_size(12);
$tbl_header->set_border(1);
//
// Taille des colonnes
//
$worksheet->set_column(0, 0, 20);
$worksheet->set_column(1, 1, 15);
$worksheet->set_column(2, 2, 25);
$worksheet->set_column(3, 3, 25);
$worksheet->set_column(4, 4, 40);
$worksheet->set_column(5, 5, 15);
$worksheet->set_column(6, 6, 30);
//
// Entête liste des Colis
//
$worksheet->write(3, 0, 'Date dépôt colis', $tbl_header);
$worksheet->write(3, 1, 'N° colis', $tbl_header);
$worksheet->write(3, 2, 'Nom Destinataire', $tbl_header);
$worksheet->write(3, 3, 'Prénom Destinataire', $tbl_header);
$worksheet->write(3, 4, 'Adresse ', $tbl_header);
$worksheet->write(3, 5, 'Code postal', $tbl_header);
$worksheet->write(3, 6, 'Ville', $tbl_header);
//
// Format liste des colis
//
$line_format =& $workbook->addformat();
$line_format->set_border(1);
//
// Boucle listing colis
//
for($i = 0, $line=3, $demandes_de_remboursement = 0, $y = 50 ; $i < sizeof($liste_colis) ; $i++)
{
if ( ! tep_not_null($liste_colis[$i]) ) continue ;

$str = explode(';', $liste_colis[$i]) ;

$order_id = $str[0] ;
$date_expedition = $str[1] ;
$date_livraison = $str[2] ;
$noColis = $str[3] ;
$nb_jours_ouvres = $str[4] ;

if ( $nb_jours_ouvres < 3 ) continue ;

$demandes_de_remboursement++;

$order = new order($order_id) ;

//
// Colis déjà traité, non exporté et mis en attente d'export vers la poste
//
$orders_query = 'update ' . TABLE_ORDERS_STATUS_HISTORY . ' set laposte = "' . DEMANDE_DE_REMBOURSEMENT_GENEREE . '" where orders_id = "' . $order_id . '" and ' . TRACKING_DB_FIELD . ' != "" ; ' ;
$orders_query_r = tep_db_query($orders_query) ;

// Une société on remplit le champs Nom avec le nom de la boite et prénom avec le blaze du mec
//
if ( isset($order->delivery['company']) && tep_not_null($order->delivery['company']) )
{
$nom = tep_mb_strtoupper($order->delivery['company']) ;
$prenom = tep_mb_strtoupper($order->delivery['name']) ;
}
else
{
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//
// A changer dans la table orders nous n'avons pas le nom complet mais nom/prénom
// Il faut aller piocher dans address_book, à faire ...
//
// Il faut creuser ...
//
$nom = tep_mb_strtoupper($order->delivery['name']) ;
$prenom = '' ;
}

$adresse = tep_mb_strtoupper($order->delivery['street_address']) ;

if ( isset($order->delivery['sururb']) && tep_not_null($order->delivery['suburb']) )
$adresse .= '\n' . tep_mb_strtoupper($order->delivery['suburb']) ;

//
// On génére les lignes de réclamation !
//
$line ++ ;
$worksheet->write($line, 0, '="' . date('d/m/Y', $date_expedition) . '"', $line_format);
$worksheet->write($line, 1, $noColis, $line_format);
$worksheet->write($line, 2, $nom, $line_format);
$worksheet->write($line, 3, $prenom, $line_format);
$worksheet->write($line, 4, $adresse, $line_format);
$worksheet->write($line, 5, '="' . tep_mb_strtoupper($order->delivery['postcode']). '"', $line_format);
$worksheet->write($line, 6, tep_mb_strtoupper($order->delivery['city']), $line_format);
}

$workbook->close();

/* Section suivante, envoi du mail - remerciements : http://www.phpfacile.com/creer_un_site_web_en_php/envoyer_un_mail_en_php_2.php5 */

$fh=fopen($fname, "rb");

$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$msg = "Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : mailto://" . STORE_OWNER_EMAIL_ADDRESS . "Merci\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= RECLAMAPOSTE_MESSAGE_POSTE ;
$msg .= "\r\n";
$attachment = fread($fh, filesize($fname));
fclose($fh);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: application/x-msexcel; name=\"$output_xls_name\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$output_xls_name\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";


mail($destinataire, "Fichier la Poste", $msg, "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

unlink($fname);
?>


Il y a un problème pour récupérer le champ nom/prénom séparés. les initiés comprendrons.

Pour le mail avec le fichier attaché il est adressé à la boutique afin que la poste ne soit pas innondée de tests laugh.gif

Edit : petit bug corrigé blush.gif

Écrit par : Rogers 20 Feb 2009, 01:50

Je confirme les propos de delete.

Je ne rentrerai pas dans une polémique, mais si on pouvait séparer les bugs isolés des bugs généraux de la contrib ce serait pas mal car là on s'y perd. Je souhaite donc que les problèmes isolés soient revus dans un autre topic pour plus de clarté, la contrib n'étant pas terminée et qu'il faut la faire avancée.

Merci en tous les cas à max_2000 pour cette formidable information qui a encore permis d'avoir une contrib au top. Bravo à ceux qui ont permis de concrétiser cet outil inespéré.

Écrit par : foxtoto2000 20 Feb 2009, 08:42

je ne faisais que remonter les problemes que je trouve.
visiblement je dérange.... je ne pense pas avoir été agessif dans mes propros comme le sont certains.
Désolé d'avoir pollué votre post avec mes retours.

Écrit par : dede30 20 Feb 2009, 09:01

J'ai eu cette erreur aussi avec la nouvelle version :
Fatal error: Cannot use string offset as an array in /var/www/vhosts/foxchip.com/httpdocs/foxadmin/includes/functions/reclamaposte.php on line 201

J'ai modifié reclamaposte.php dans le /includes/functions/ en rajoutant :
$status= array();

je l'ai mis juste après $statuses_found= array();

Ca donne çà :
// We retrieve all statuses displayed on the tracking page
$statuses_found= array();
$status= array();
for($x = 0; $x < sizeof( $result[1]); $x++) {
if ( ! $img = @curl_file_get_contents($main_url . $result[1][$x], 0, 1) ) {
return -1;
} else {


Ma modif à l'air de fonctionner.

Écrit par : Phocea 20 Feb 2009, 09:29

C'est clair que tu n'auras plus l'erreur, vu que maintenant $status est vide smile.gif Par contre ca ne marchera pas mieux pour autant.

A mon avis c'est une erreur PHP5 qui est plus stricte dans l'utilisation des variables, essayait en ajoutant $status = array(); juste avant la déclaration du tableau. Je suis en PHP4, je n'ai pas le problème.

foxtoto2000 c'est la manière dont tu remontes les problèmes qui est mal perçu. tu le fais sans précision, sans savoir ta config et sans essayer d'élucider le problème de ton coté afin de donner le plus de détail possible.

Écrit par : foxtoto2000 20 Feb 2009, 09:30

merci pour ce retour qui fait plaisir
je vais la tester et je te tiendrais au courant

Écrit par : dede30 20 Feb 2009, 09:52

Ha oui, après un café, le temps de me reveiller, le principe est là, y'a juste à le mettre ailleur.
Genre juste avant $status[0]['description'] = 'Livré';


Écrit par : foxtoto2000 20 Feb 2009, 10:12

Malgré l'info de Phocea, j'ai été obligé de le mettre egalement dans la fonction merci_la_poste sinon je me retrouve avec la meme erreur
ca a l'air de fonctionner comme cela, enfin presque car car il y a plusieurs statuts sur le site de la poste, ce ne prend que le dernier

Écrit par : Phocea 20 Feb 2009, 11:08

Comme déjà dit précédemment, ça ne sert A RIEN de le faire après l'initialisation du tableau, autant ne pas l'utiliser dans ce cas la!!

Essaye en remplaçant

Code
if ( $status[$found]['md5'] == md5($img)) {

par
Code
if ( ${status}[$found]['md5'] == md5($img)) {


Je n'ai pas de serveur PHP5 pour tester, alors si ce fix ne marche pas -> http://www.google.co.uk/search?q=Cannot+use+string+offset+as+an+array

Écrit par : delete 20 Feb 2009, 11:22

Hé oui le PHP5 est plus restrictif que le 4 blush.gif

Et puis le tableau contient 20 éléments, l'indexation commence à 0 et sizeof renvoie 20 bien entendu. de 0 à 20, ca fait 21 itérations mrgreen.gif laugh.gif

Quel âne ca fait 19 mrgreen.gif mrgreen.gif .

Message edité et, j'ai tous viré. Il y a en fait un problème dans le fichier reclamaposte.php ligne 85 il y a

Code
$status = $str[3];


Il convient de remplacer ça par
Code
$order_status = $str[3];


Et ligne de includes/functions/reclamaposte.php 251 après la boucle for rajouter :
Code
if ( ! is_array($statuses_found[$y]) ) break;


Cette ligne 251 c'est du mercurochrome car je n'ai pas reconnu ma contribution ninja.gif vous pouvez féliciter Phocea, il a fait un sacrés boulot wink.gif

Écrit par : foxtoto2000 20 Feb 2009, 13:39

A priori, il n'y a plus d'erreur avec la modif de DELETE, il n'y a plus d'erreur en PHP5
par contre, les colis avec plusieurs status n'ont pas les statuts intermédiaires de pris en compte

Écrit par : Phocea 20 Feb 2009, 14:21

Nouvelle version posté avec:

- le fix de delete (mais avec un test sur is_array($statuses_found) plutot que is_array($statuses_found[$y]) ...
- ajout d'un menu contextuel pour le changement d'état manuel. Il vous faudra JQuery pour que ca marche!

ce qui donne ca:



Je vais voir si on peut griser les actions selon le tracking que l'on veut modifier

Petite mise à jours de la TODO list


Écrit par : delete 20 Feb 2009, 14:38

Citation (Phocea @ 20 Feb 2009, 14:21) *
- le fix de delete


En fait la variable $status dans reclamaposte.php était un doublon avec le tableau $status qui n'avait pas d'influence en PHP4, pas d'influence dans la dernière version en PHP5

et le fait de modifier la structure du projet en déportant les status dans un fichier avec les fonctions a créé un "effet de bord" wacko.gif

Enfin c'est rétabli tant mieux, je posterais la version finale avec la gestion du fichier XLS as soon as possible. wink.gif

Écrit par : delete 20 Feb 2009, 18:09

J'ai posté la version avec gestion des mails+fichier excel basé sur la matrice fournie par Max_2000 wink.gif pour les contrat pro.

arrow.gif http://addons.oscommerce.com/info/6502

J'ai aussi réunit tous les paramètres de configuration dans un seul fichier includes/reclamaposte.php

Voilà pour s'amuser ce W/E pour ceux qui ne vont pas à la plage tongue.gif

Écrit par : Phocea 20 Feb 2009, 18:24

Ah bein on va y arriver smile.gif

2-3 petites remarques/questions

- Dans reclamaposte.php, pas la peine de mettre include(DIR_WS_INCLUDES . 'reclamaposte.php'); c'est référence dans la fonction elle meme
- A ce sujet d'ailleurs, quel est la raison/avantage de mettre les parametres dans un autre fichier ?
- La fameuse requete avec le LIMIT 1 ... c'est revenir en arriere sur le fix SAV auquel tu avais répondu sur le message http://www.oscommerce-fr.info/forum/index.php?showtopic=59845&view=findpost&p=311773 .. Pourquoi ne pas laisser le test sur l'array qui permet de traiter tous les cas. Qui peu plus peu moins smile.gif Accessoirement ca me fait foirer 2 colis splitté tongue.gif

Écrit par : jch 20 Feb 2009, 20:22

Bonjour tout le monde,

Je fais une petite intrusion pour vous soumettre une petite question.

La matrice Excel (merci Olivier) précise que le fichier (et donc la procédure) est valable pour les colis en :

8V = colissimo Expert (Expeditor)
8L = colissimo Access (Expeditor)
8P = colissimo Expert (liasse à vignettes)
7D = colissimo Access (liasse à vignettes)

Pour les 8V et 8L, pas de problème puisque ColisPoste connait le poids d'après la pesée en plate-forme et nous facture sur cette information.

Par contre, pour les liasses à vignettes (8P et 7D), le poids ne figure que sur l'exemplaire client. Je suppose que ces colis sont aussi pesés en plate-forme et le poids mémorisé quelque part. Dans le cas de réclamation sur ce type de colis, l'indemnisation se base-t-elle uniquement sur "leur" poids ? Ou bien demandent-ils systématiquement de renvoyer par la suite l'original ?

Pfft, encore un truc à vérifier. C'est compliqué leur bidule.

Écrit par : delete 23 Feb 2009, 10:54

J'ai posté une version qui a priori est "stable" sur le site us arrow.gif http://addons.oscommerce.com/info/6502

J'ai supprimé la concaténation SQL "crapuleuse" de Phocea tongue.gif que je n'avais pas vue en première instance.

Il faudra donc ré-exécuter le fichier SQL dans phpmyadmin

J'ai installé la dernière version de jquery dans le repertoire javascript car sans cela, les fonctionnalité avancées que nous a offert Phocea ne fonctionnait pas et aussi inséré un nouveau statut qu'il m'a fournit pour occuper ma soirée.

J'ai envoyé mes réclamations par mail pour tester, c'est ok biggrin.gif

Voilà j'espère que c'est finit blush.gif

Écrit par : Phocea 23 Feb 2009, 12:20

crapuleuse crapuleuse ... non mais tout ca parce que je suis du Sud smile.gif
Heu par contre en l'enlevant on perd le reste des infos, ou alors tu l'as mis autre part ?

Pour JQuery j'avais mis un lien, j'avais peur d'alourdir le package au fur et a mesure. On pourrait aussi mettre FPDF smile.gif

Sinon pour remettre à 0 on peut aussi mettre TEST à 1 et cliquer sur "Valider la demande de remboursement", et hop tout a NEW !!

Écrit par : Phocea 23 Feb 2009, 12:22

crapuleuse crapuleuse ... non mais tout ca parce que je suis du Sud smile.gif
Heu par contre en l'enlevant on perd le reste des infos, ou alors tu l'as mis autre part ?

EDIT: ah ok tu as fait un champ en plus (j'avais eu la flemme) Mais pourl'histoire, c'est ca qui foutait la grouille ???

Pour JQuery j'avais mis un lien, j'avais peur d'alourdir le package au fur et a mesure. On pourrait aussi mettre FPDF smile.gif

Sinon pour remettre à 0 on peut aussi mettre TEST à 1 et cliquer sur "Valider la demande de remboursement", et hop tout a NEW !!
EDIT: Heu faudra aussi resetter l'autre champ du coup smile.gif

Un petit pb d'affichage que j'avais fixé que chez mois
remplacer

Code
</ul>'
en
Code
</ul>'

Écrit par : tidi 23 Feb 2009, 12:36

merci delete pour cette mise en ligne.

Y a un truc par contre que je pige pas dans la config de reclamaposte.php dans admin/includes/

Code
define('LAPOSTE_STATUS_SENT', "5")
define('LAPOSTE_STATUS_DELIVERY', "3")


le problème dans mon cas c est que le statut expedie c est le 3.

Et je vois pas donc quoi mettre au statut LAPOSTE_STATUS_DELIVERY


Autre question.
Dans la config pro il faut donc envoyer manuellement le fichier xls en se servant de l'adresse que t as déjà saisi où ils en reçoivent déjà une copie ?

Merci

Écrit par : Phocea 23 Feb 2009, 12:59

Bon ... chez moi la derniere version ne marche plus du tout sad.gif

C'est ce bout de code qui est en cause, mais pas encore trouvé pourquoi:

Code
      $order_history_query = 'SELECT o.`date_added`  FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" and orders_status_id = "' . LAPOSTE_STATUS_SENT . '" order by date_added desc;';
          $order_query_r       = tep_db_query($order_history_query);
          $order_query_r       = tep_db_fetch_array($order_query_r);

          $last_event = substr($order_query_r['date_added'], 0, strpos($order_query_r['date_added'], ' '));

      $order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte_status`, o.`laposte_last_date` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" and orders_status_id = "' . LAPOSTE_STATUS_DELIVERY . '" order by date_added desc;';

          $order_query_r       = tep_db_query($order_history_query);
          $order_query_r       = tep_db_fetch_array($order_query_r);
          $track_num           = $order_query_r[TRACKING_DB_FIELD];


Cela revient à la normale si je change par

Code
          $order_history_query = 'SELECT o.`orders_id`, o.`' . TRACKING_DB_FIELD . '`, o.`date_added`, o.`laposte_status`, o.`laposte_last_date` FROM ' . TABLE_ORDERS_STATUS_HISTORY . ' o where orders_id="' . $orders_id . ' " and '.TRACKING_DB_FIELD.' != "" order by date_added desc;';
          $order_query_r       = tep_db_query($order_history_query);
          $order_query_r       = tep_db_fetch_array($order_query_r);
          $last_event = substr($order_query_r['date_added'], 0, strpos($order_query_r['date_added'], ' '));
          $track_num           = $order_query_r[TRACKING_DB_FIELD];


J'estime d'ailleurs que ce n'est pas la peine de renseigner le status EXPEDIEE car on test deja si un numero de tracking existe. Si c'est le cas la commande a été envoyé, et cela permet de quand meme afficher les autres en historique.

Par contre, quand je dis que ca revient à la normale, j'ai quand meme toujours le bug trouvé hier ou la date n'est plus reconnu, sur mes 3 derniers colis!! Le nouveau cas que j'ai donné à delete a disparu (status du colis a changé), donc pas possible de tester.
Les dates fonctionnent bien sur tous les anciens colis. La Poste aurait il fait un changement que le traitement OCR ne reconnait plus ??

Écrit par : delete 23 Feb 2009, 15:46

Citation (Phocea @ 23 Feb 2009, 12:59) *
J'estime d'ailleurs que ce n'est pas la peine de renseigner le status EXPEDIEE car on test deja si un numero de tracking existe. Si c'est le cas la commande a été envoyé, et cela permet de quand meme afficher les autres en historique.


Et bien problème étant que mes commandes sont en statut expédié automatiquement et livré également.

Donc quand on arrive dans reclamaposte et que l'on teste le dernier statut, c'est expédié+livré avec un tracking number.

Donc si l'on ne le teste pas, on compare une date de colisposte livrée avec un date osC livrée donc 0 !


Écrit par : Phocea 23 Feb 2009, 16:58

Tu remets le tracking number quand le status passe à livrer ?? Dans ce cas effectivement il faut retrouvé la véritable date d'envoi, qui devrait être celle du premier tracking entré.

Du coup sur une boutique normale ou le tracking n'est pas ajouté à chaque changement de status, la seconde requete avec le LAPOSTE_STATUS_DELIVERY ne retourne jamais rien car le tracking id est null...
De plus, on perd la notion de tracking que l'on avait dans les version précédentes ou on pouvait voir qu'un colis était encore en cours de livraison, ou si il y avait un probleme d'image non reconnu.

Ce que je ne capte pas c'est que avec la requete sans le status, trié par date, de la plus ancienne à la plus récente, tu devrais avoir le premier test sur le colis quand il a été envoyé, en utilisant la bonne date.
Puis lorsque l'on boucle sur le même colis avec l'autre status, celui ci est ignoré car considéré comme un doublon ...alors ou est le soucis?

Pour la date, ce n'est pas un souci d'OCR, j'ai testé à part. ET ca n'arrive que sur des colis en cours de livraison (qui ne s'affiche pas dans ta version). Ca je n'ai pas encore trouvé le soucis

Écrit par : tidi 23 Feb 2009, 17:13

Ah merci Phocea je croyais que j'avais raté une étape avec ce nouveau

Citation
define('LAPOSTE_STATUS_DELIVERY', "3")


Merci de te pencher pour nous autres qui n'avont pas le même mode de fonctionnement que Delete.

Écrit par : delete 23 Feb 2009, 17:44

Citation (tidi @ 23 Feb 2009, 17:13) *
Merci de te pencher pour nous autres qui n'avont pas le même mode de fonctionnement que Delete.


C'est de l'Open Source donc Open Discution mais pas Open Langue de Bois, Phocea et Moi envoyons à qui la facture des heures passées ? twisted.gif

Écrit par : Rogers 23 Feb 2009, 18:00

Il faut savoir s'adapter un minimum. J'ai encore un autre fonctionnement que vous tous ou delete, mais je corrige à ma façon la contrib pour l'adapter à mes besoins. C'est d'ailleurs pour cela que je ne fais pas toutes les MAJ à chaque sortie de la contrib, car ça me fatigue d'adapter tout ça à chaque fois tongue.gif

Mais bon, il faut reconnaître, qu'en l'état, il n'est pas bien complexe d'adapter la contrib a ses besoins. S'il fallait faire une version pour chaque cas, on ne s'en sortirait pas.

Écrit par : Phocea 23 Feb 2009, 18:25

On a, à priori trouver un cas qui fonctionne tout le temps, c'est en test chez Delete. il a de la chance que j'ai pas commenté son code avec if(DELETE), pas vrai blink.gif

Par contre Rogers, si tu as un autre cas, fais en part quand meme, on arrivera peut etre a adapter pour aussi.
Le problème initial à surtout était sur cette requete et la non compréhension de nos cas, entre Delete et moi meme, ca nous a un peu fait tourner en rond !! smile.gif

Écrit par : delete 23 Feb 2009, 18:35

Citation (Phocea @ 23 Feb 2009, 18:25) *
il a de la chance que j'ai pas commenté son code avec if(DELETE), pas vrai blink.gif


Moi je ne me suis pas gêné laugh.gif tongue.gif :

regarde dans ton admin/reclamaposte_pdf.php Ligne 25
Citation
if ( defined(PHOCEA) ) // LOL
include(DIR_WS_FUNCTIONS . 'oe_functions.php');


biggrin.gif


Écrit par : tidi 23 Feb 2009, 18:39

Citation (delete @ 23 Feb 2009, 13:44) *
Citation (tidi @ 23 Feb 2009, 17:13) *
Merci de te pencher pour nous autres qui n'avont pas le même mode de fonctionnement que Delete.


C'est de l'Open Source donc Open Discution mais pas Open Langue de Bois, Phocea et Moi envoyons à qui la facture des heures passées ? twisted.gif



Oula faut pas le prendre comme ça.
Je n'ai jamais voulu critiquer ton travail pour une specificité qui va pas sur ma boutique.

Après Phocea dit qu'il s'y met dessus et je dis merci.

Je vois vraiment pas où est le mal.

bref merci à vous deux plus particulièrement et autres membres qui ont permis le développement de cette contrib.


Écrit par : Rogers 23 Feb 2009, 19:09

Citation
Par contre Rogers, si tu as un autre cas, fais en part quand meme, on arrivera peut etre a adapter pour aussi.


Merci, mais j'en fais mon affaire tongue.gif

J'utilise par exemple un statut en préparation puis injecte mes n° de suivi grâce à expéditor pour passer les "en préparation" en "expédié" avec envoi d'un mail et suivi. Il s'agit d'un début de contrib que j'ai écrit il y a plus d'un an et demi, qui devait à l'origine fonctionner avec tous les transporteurs afin d'envoyer le tracking aux clients. Malheureusement, je suis passé chez Chronopost (en complément de Coliposte) et leur solution envoyant l'e-mail automatiquement, je n'ai pas finalisé la chose. Donc c'est pour le moment un dev pas finalisé. Mais bon, je te rassure la modif est légère sur reclamaposte et j'ai quelques adaptations à faire sur d'autres choses à chaque MAJ pour respecter mon fonctionnement. C'est assez léger et surmontable wink.gif

Écrit par : delete 23 Feb 2009, 22:24

Citation (Rogers @ 23 Feb 2009, 19:09) *
C'est assez léger et surmontable wink.gif

Quel dommage, après le
Code
if ( defined(PHOCEA) )

J'aurais rajouté
Code
if ( defined(ROGERS) )

tongue.gif

Comme précisé ailleurs, plus moyen de troller, c'est lassant sad.gif , pfff... laugh.gif

Écrit par : Phocea 23 Feb 2009, 22:27

Citation (delete @ 23 Feb 2009, 19:35) *
Citation (Phocea @ 23 Feb 2009, 18:25) *
il a de la chance que j'ai pas commenté son code avec if(DELETE), pas vrai blink.gif


Moi je ne me suis pas gêné laugh.gif tongue.gif :

regarde dans ton admin/reclamaposte_pdf.php Ligne 25
Citation
if ( defined(PHOCEA) ) // LOL
include(DIR_WS_FUNCTIONS . 'oe_functions.php');


biggrin.gif


Pourquoi tu crois que j'ai dit ca en**** comme on dit par chez moi de maniere amicale !

Écrit par : delete 24 Feb 2009, 11:03

Bon avec les modifications de Phocea une nouvelle version, la bonne question.gif http://addons.oscommerce.com/info/6502

Comme prévu pour les version ultérieures nous prévoirons donc :

Code
switch($membre)
{
  case DELETE:
   $traitement=1;
   break
  case PHOCEA :
  $traitement=2;
   break
  case ROGERS :
  $traitement=3;
   break
  default:
  $traitement=NORMAL
}


laugh.gif

Écrit par : max_2000 24 Feb 2009, 23:32

hello,

voila, j'ai cherché en vain, la solution pour l'envoi du fichier xls en pièce jointe par mail
mais le probleme c'est quand je reçois le mail, il fait 12 pages bizarre sans la pièce jointe xls.

je vous donne une copie du mail ci-dessous !!

Citation
Content-Type: multipart/mixed; boundary="-----=2fab505ca2a56793807ff51908128635"

[/size]

[size="3"]


Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : [email="//contact@monsite.frMerci"]mailto://contact@monsite.frMerci[/email] -------=2fab505ca2a56793807ff51908128635 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding:8bit Transférer ce message à : [email="//scsmb.clp(AT)laposte.fr"]mailto://scsmb.clp(AT)laposte.fr[/email] où A l'attention de :

GENIN Stéphanie

Service Clients ColiPoste

14 Rue Antoine de Saint Exupéry

BP 7500

88107 SAINT DIE DES VOSGES Cedex

Tél : 0825 878 888

Fax : 03 29 42 15 91

--------------------------



Madame,



Vous trouverez ci-joint la liste des colis pour lesquels nous portons réclamation conformément à vos conditions de ventes.



Nous vous saurions gré de bien vouloir procéder à un avoir ou un remboursement rapide de ces colis.



Veuillez agréer, Madame, Monsieur, l'expression de nos salutations distinguées.



La Direction. -------=2fab505ca2a56793807ff51908128635 Content-Type: application/x-msexcel; name="laposte_2009-02-24.xls" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="laposte_2009-02-24.xls" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAPQAAAAAAAAAA EAAA/v///wAAAAD+////AAAAAD4AAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////8J CAgAAAUFAGwJyQcWAAIAAQAXAAgABgNTaGVldDFCAAIA5AQ9ABIAAAAAALwlchU4AAAAAAABAFgC IgACAAAAMQAUAMgAAAD/f5ABAAAAAAAABUFyaWFsMQAUAMgAAAD/f5ABAAAAAAAABUFyaWFsMQAU AMgAAAD/f5ABAAAAAAAABUFyaWFsMQAUAMgAAAD/f5ABAAAAAAAABUFyaWFsMQAUAMgAAAD/f5AB AAAAAAAABUFyaWFsMQAUAMgAAAAMAJABAAABAAAABUFyaWFsMQAUAPAAAAD/f7wCAAAAAAAABUFy aWFs4AAQAAAAAAD1/yBAwCAAAAAAAADgABAAAAAAAPX/IEDAIAAAAAAAAOAAEAAAAAAA9f8gQMAg AAAAAAAA4AAQAAAAAAD1/yBAwCAAAAAAAADgABAAAAAAAPX/IEDAIAAAAAAAAOAAEAAAAAAA9f8g QMAgAAAAAAAA4AAQAAAAAAD1/yBAwCAAAAAAAADgABAAAAAAAPX/IEDAIAAAAAAAAOAAEAAAAAAA 9f8gQMAgAAAAAAAA4AAQAAAAAAD1/yBAwCAAAAAAAADgABAAAAAAAPX/IEDAIAAAAAAAAOAAEAAA AAAA9f8gQMAgAAAAAAAA4AAQAAAAAAD1/yBAwCAAAAAAAADgABAAAAAAAPX/IEDAIAAAAAAAAOAA EAAAAAAA9f8gQMAgAAAAAAAA4AAQAAAAAAABACBAwCAAAAAAAADgABAABgAAAAEAIEjAIAAAAAAA AOAAEAAHAAAAAQAgSMAgAAAAAAAA4AAQAAcAAAABACBowCBAgEmAQCDgABAAAAAAAAEAIGDAIECA SYBAIJMCBAAAgAD/kgDiADgAAAAAAP///wD/AAAAAP8AAAAA/wD//wAA/wD/AAD//wCAAAAAAIAA AAAAgACAgAAAgACAAACAgADAwMAAgICAAJmZ/wCZM2YA///MAMz//wBmAGYA/4CAAABmzADMzP8A AACAAP8A/wD//wAAAP//AIAAgACAAAAAAICAAAAA/wAAzP8AzP//AMz/zAD//5kAmcz/AP+ZzADM

etc....


je vais pas mettre tout le mail, parce que là, je mettrais trois pages. lol pour info je suis sur office outlook 2007

si vous avez une solution ça serai cool

merci par avance Max


Écrit par : Phocea 25 Feb 2009, 09:38

Perso je n'ai jamais réussi à faire fonctionner tep_mail avec les attachements et le code de base est un foulli pas possible qui n'a apparement jamais été finalisé. Donc j'utilise phpmailer qui gère ca très très bien, en plus de pouvoir inclure des images en binaire dans les mails (très pratique pour les newsletters).

Je sais pas ce qu'à utiliser Delete, mais bon si on rajoute en plus phpmailer dans le package, on va pas s'en sortir !!

Écrit par : delete 25 Feb 2009, 10:00

Pour ma part je n'ai pas utilisé tep_mail, mais tout simplement la commande mail de php.


Ca fonctionne chez moi * et il n'y pas d'autres retours, ce qui me laisse penser que cela relève plus du support PHP qu'osCommerce sans vouloir me dédouaner ninja.gif

Après comme tu dis on peut utiliser d'autres librairies mais c'est vrai que ça finira par être lourd blush.gif

Edit: *) J'ai testé sous Firefox bien entendu ...

Écrit par : Rogers 25 Feb 2009, 12:52

Euh, tu aurais testé sous IE que je t'aurais forcé à récité 7 "Je te salue Marie". Tu as de la chance tongue.gif

Écrit par : delete 25 Feb 2009, 12:58

H/S

Finalement malgré ce que m'a fait subir Phocea tongue.gif, j'aime ce topic car on rigole et malgré tout ça bosse dur et la finalité et la même que si on se prenait au sérieux biggrin.gif

wink.gif

Écrit par : Rogers 25 Feb 2009, 13:11

Je compatis delete tongue.gif

J'ai déjà exprimé ma satisfaction malgré mon manque de temps pour participer pleinement au projet, mais j'avoue que cette contrib reprend vraiment l'esprit communautaire. Cela faisait longtemps que je n'avais pas vu une contrib qui intéresse et pour laquelle il y a une vraie implication des membres.

Bref, on va arrêter de faire des éloges, il va falloir vous bouger pour que je puisse installer une version stable et finalisée tongue.gif twisted.gif

Écrit par : Phocea 25 Feb 2009, 14:50

Ca ferait longtemps que ca serait fini si Delete arrétais pas de faire des conneries aussi smile.gif
Sérieusement, à part des corrections mineures sur le report des états non trouvés, et sur la possibilité de flaguer un colis à en retard manuellement et pouvoir le prendre en compte dans une réclamation, je ne vois plus trop ce qui peut être améliorer.... mis à part l'intégration du cron de regne, pas encore fait!

Écrit par : Rogers 25 Feb 2009, 15:19

Je n'ai pas suivi l'histoire du cron de Regne. Maintenant, il faut je pense écrémer un peu et faire un produit qui s'adapte à tout le monde sans trop en rajouter. Le gadget c'est bien, mais autant faire un produit simple et fini smile.gif.




Écrit par : Phocea 25 Feb 2009, 16:42

Le cron sera un plug-in, un peu comme le Excel ajouté par delete.
Suivant le meme principe d'interogation du site de coliposte, regne a fait un script qui périodiquement vérifie l'état de la commande et notifie le client du parcours de sa commande.

Je pense uniquement changer le script pour qu'il utilise les meme fonctions (pour le moment il est basé sur les vieilles versions utilisant les images), et mettant aussi au passage à jours les champs de la contribution reclamaposte. Autant ne pas interroger le serveur coliposte plusieurs fois pour la meme chose.
En bref, si le cron n'est pas utilisé, aucun impact sur reclamaposte de base.

Écrit par : delete 25 Feb 2009, 16:51

Citation (Phocea @ 25 Feb 2009, 16:42) *
Autant ne pas interroger le serveur coliposte plusieurs fois pour la meme chose.


Je vais encore taper sur les doigts à Phocea twisted.gif

Oui autant consulter le moins possible le site de la poste pour pérenniser cette contribution.

Et dire que par défaut tu mettais 60 jours de scan alors que le tracking remonte à 30 jours maxi (voir 25 il me semble) ninja.gif

smile.gif

Écrit par : Phocea 25 Feb 2009, 17:05


Mueeehhh non ... c'est l'affichage historique des colis qui remonte à xx Jours, après la vérification n'est faite que sur ceux de - de 30jours qui n'ont pas atteint un status considéré comme final. Quel mauvais langue celui là!

Écrit par : delete 25 Feb 2009, 17:22

Ah cette variable COLIPOSTE_MAX_DAYS à 60 m'avais intriguée

Mais dans la phase verify il y avait bien if ( $age_commande > 31) { continue } mrgreen.gif

Pour cette fois, ça ira laugh.gif

Écrit par : max_2000 25 Feb 2009, 23:15

bonsoir,

bon j'ai suivi ce que vous avez dit j'ai meme testé sur firefox, IE7, opera et j'ai toujous le même problème de formatage de mail, tout se passe bien, il n'y à aucune erreur d'affichage à l'envoi du mail. j'ai testé sur les boites mail hotmail, free et pro.... toujours le même probleme.
je pense qu' il y à un problème de formatage du mail, il senblerait qu'il traduise la pièce jointe en texte.
pour info je suis en serveur dédié php5 mysql5.

merci pour vos reponses

@+++

Écrit par : delete 25 Feb 2009, 23:21

On ne va pas laisser en plan un membre qui nous a aidé quand même wink.gif

As tu installé la version "de base" qui envoie le mail à l'adresse définie dans l'admin (STORE_OWNER_EMAIL_ADDRESS) ?

Écrit par : Phocea 26 Feb 2009, 18:02

Bon je m'attaque a la tache automatique de vérification sur une idée originale de Regne

Vu que je fais minimum 10 trucs en parallèle et autant de conneries, je mets à la discussion le pseudo code que j'envisage d'implémenter:

Code
Pour chaque historique de commande ou on trouve un numéro de tracking Colissimo (si on a un numéro de tracking, c'est qu'on a expédié la commande!)
     Si le dernier status trouvé en bases n'est pas (EN RETARD, ARRIVE OK, REMBOURSEMENT DEMANDE , ARCHIVEE etc....)
          On va chercher le status sur le site Coliposte
          Si le status est trouvé ET est différent de l'ancien
               On notifie le client de l'avancée de sa commande par email personnalisable selon le status
               On sauve le nouveau status qui sera utiliser pour les prochaines vérification et reclamaposte



Des commentaires ?

Écrit par : delete 26 Feb 2009, 18:10

Si l'on veut un réel suivi des colis, il ne faut plus passer par des fichiers textes mais par une table indépendante blush.gif

Écrit par : max_2000 26 Feb 2009, 23:29

Citation (delete @ 26 Feb 2009, 00:21) *
On ne va pas laisser en plan un membre qui nous a aidé quand même wink.gif

As tu installé la version "de base" qui envoie le mail à l'adresse définie dans l'admin (STORE_OWNER_EMAIL_ADDRESS) ?


Bonsoir,

Delete, je te remercie pour ton aide… J'aurais aimé vous aider plus et je regrette de n'avoir pu fournir qu'une simple information.



Cela dit, dans mon cas, j'ai utilisé le bout de code existant dans le fichier reclamaposte.php qui se trouve dans includes :


Code
define('LAPOSTE_EMAIL_DESTINATAIRE', STORE_OWNER_EMAIL_ADDRESS); // Adresse du destinataire (en théorie, laposte) <BR>define('LAPOSTE_EMAIL_EXPEDITEUR', STORE_OWNER_EMAIL_ADDRESS); // Adresse de l'expéditeur<BR>define('LAPOSTE_EMAIL_REPONSE', STORE_OWNER_EMAIL_ADDRESS); // Adresse de réponse (en théorie identique à celle de l'expéditeur)


Ce bout de code envoie bien un mail sur l'adresse définie dans l'admin. Exemple : contact@mon_site.fr

J'ai modifié ce bout de code et inséré une adresse en dur pour qu'il me l'envoie sur une autre adresse. Exemple :

Code
define('LAPOSTE_EMAIL_DESTINATAIRE', 'mon_mail@mon_site.fr' ); // Adresse du destinataire (en théorie, laposte) <BR>define('LAPOSTE_EMAIL_EXPEDITEUR', 'mon_mail@mon_site.fr' ); // Adresse de l'expéditeur<BR>define('LAPOSTE_EMAIL_REPONSE', 'mon_mail@mon_site.fr' ); // Adresse de réponse (en théorie identique à celle de l'expéditeur)


Je pense que ma modif ne change que l'adresse mail mais n'influe pas sur le fonctionnement et l'envoi du mail. Je pense que mon problème se trouve sur le formatage du mail et l'insertion du fichier xls en pièce jointe. unsure.gif


Merci de votre aide

@++

Écrit par : Rogers 27 Feb 2009, 13:13

Question bête, mais tu es chez qui comme hébergeur ?

Écrit par : Phocea 27 Feb 2009, 14:42

Max,

Dans reclamaposte_xls.php essaye de changer:

Code
$fh=fopen($fname, "rb");

$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$msg = "Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : mailto://" . STORE_OWNER_EMAIL_ADDRESS . "Merci\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= RECLAMAPOSTE_MESSAGE_POSTE;
$msg .= "\r\n";
$attachment = fread($fh, filesize($fname));
fclose($fh);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: application/x-msexcel; name=\"$output_xls_name\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$output_xls_name\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";

mail($destinataire, "Fichier la Poste", $msg, "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

unlink($fname);


par
Code
if(!@$fh = fopen($fname, 'rb')) {
  return -1;
}
$magic_quotes = get_magic_quotes_runtime();
set_magic_quotes_runtime(0);
$file_buffer = fread($fh, filesize($fname));
$file_buffer = chunk_split(base64_encode($file_buffer), 76, "\n");
fclose($fh);
set_magic_quotes_runtime($magic_quotes);

$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$msg = "Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : mailto://" . STORE_OWNER_EMAIL_ADDRESS . "Merci\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= RECLAMAPOSTE_MESSAGE_POSTE;
$msg .= "\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: application/x-msexcel; name=\"$output_xls_name\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment; filename=\"$output_xls_name\"\r\n";
$msg .= "\r\n";
$msg .= $file_buffer . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";

mail($destinataire, "Fichier la Poste", $msg, "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

unlink($fname);


Attention je n'ai pas testé.
Les 3 grosses modifs sont sur les magic_quotes qui peuvents poser problème, les paramètres de chunk_split et surtout sur le header qui spécifie que l'excel est un attachement et pas inline. Si on le met inline il faut aussi ajouter une ligne avec le Content-ID: xx avec xx correspondant à l'id du binaire de notre attachement.

Écrit par : gdmdg 27 Feb 2009, 18:08

j'ai cette erreur dont je n'arrive pas à sortir sad.gif

Fatal error: Call to undefined function: file_put_contents() in /home/g/gdmdg/www/osc/data/includes/reclamaposte.php on line 73
qui correspond à :

if ( ! file_exists($flist) ) file_put_contents($flist, '') ;

si je la mets en commentaire, j'ai une autre erreur :
Fatal error: Cannot redeclare class fpdf in /home/g/gdmdg/www/osc/data/fpdf.php on line 13

j'avais reclamposte 1.6 installé avant ....

une idée ?

merci à tous smile.gif

Écrit par : delete 27 Feb 2009, 19:07

Commente la ligne file_put_contents dans includes/reclamaposte.php

C'est une erreur dans la contrib pour PHP4 effectivement... sad.gif

Écrit par : Phocea 27 Feb 2009, 19:30

Il faut ajouter

Code
if(!function_exists('file_put_contents'))
{
    function file_put_contents($filename, $data, $file_append = false) {
        $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
        if(!$fp) {
            trigger_error('file_put_contents - erreur écriture dans.', E_USER_ERROR);
            return;
        }
        fputs($fp, $data);
        fclose($fp);
    }
}


En haut du fichier includes/reclamaposte.php
Le bug n'apparait que si le fichier tmp/laposte.lis.txt n'existe pas

J'ai corrigé mais pas encore posté, je le ferais après le retour de max, et avancement de la tache cron

Écrit par : delete 27 Feb 2009, 20:10

Citation (Phocea @ 27 Feb 2009, 19:30) *
Il faut ajouter...
En haut du fichier includes/reclamaposte.php

Dommage car la fonction est déjà définie dans includes/functions/reclamaposte.php

Le mieux est de déporter donc la ligne incriminée depuis admin/includes/reclamapostes.php :
Code
if ( ! file_exists($flist) ) file_put_contents($flist, '');

Dans le fichier admin/reclamaposte.php après
Code
include(DIR_WS_FUNCTIONS . 'reclamaposte.php');


wink.gif

Écrit par : max_2000 27 Feb 2009, 23:53

Bonsoir,

J'ai testé le bout de code Phocea et rien n'a changé
Phocea tu as raison le problème se trouve sur ce bout de code!!

J'ai regardé le code qui envoie les mails dans le checkout_process.php et il n'y a pas les mêmes choses. Exemple :

code qui se trouve dans checkout_process.php

Code
[/b][b]

[/b][b]  $email_order = STORE_NAME . [/b][b]"\n" . [/b][b]
[/b][b]                 EMAIL_SEPARATOR . "\n" . [/b][b]
[/b][b]                 EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .[/b][b]
[/b][b]                 EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .[/b][b]
[/b][b]                 EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . [/b][b]"\n\n";[/b][b]

[/b][b]


code qui se trouve dans le reclamaposte_xls.php

Code
[/b][b]
[/b][b]$boundary = "-----=".md5(uniqid(rand()));[/b][b]
[/b][b]$header = "MIME-Version: 1.0\r\n";[/b][b]
[/b][b]$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";[/b][b]
[/b][b]$header .= "\r\n";[/b][b]
[/b][b]$msg = "Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : </STRONG><A href="><STRONG>mailto://</STRONG></A><STRONG>" . [/b][b]STORE_OWNER_EMAIL_ADDRESS . "Merci\r\n";[/b][b]
[/b][b]$msg .= "--$boundary\r\n";[/b][b]
[/b][b]$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";[/b][b]
[/b][b]$msg .= "Content-Transfer-Encoding:8bit\r\n";[/b][b]
[/b][b]$msg .= "\r\n";[/b][b]
[/b][b]$msg .= RECLAMAPOSTE_MESSAGE_POSTE;[/b][b]
[/b][b]$msg .= [/b][b]"\r\n";[/b][b]
[/b][b]


Je n'ai pas trouvé ce style de code sur checkout_process.php

$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";


Je ne comprend pas pourquoi cette partie de code, qui devrait être le corps du mail, apparait en clair dans le mail.

Comme la copie ci-dessous où j'ai mis le texte en rouge

Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : mailto://contact@monsite.comMerci -------=ecce773297057bfa0df925549f44fd6c Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding:8bit Transférer ce message à : [email="scsmb.clp(AT)laposte.fr"]mailto://scsmb.clp(AT)laposte.fr[/email] où A l'attention de :

GENIN Stéphanie

Service Clients ColiPoste

14 Rue Antoine de Saint Exupéry

BP 7500

88107 SAINT DIE DES VOSGES Cedex

Tél : 0825 878 888

Fax : 03 29 42 15 91

-------------------------

Moi je sèche avec mes petites compétences en php

merci @+++

Si vous n'arrivez pas à lire ce message merci de prendre contact avec nous par retour de message. ou à l\'adresse : mailto://contact@monsite.comMerci -------=ecce773297057bfa0df925549f44fd6c Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding:8bit Transférer ce message à : [email="scsmb.clp(AT)laposte.fr"]mailto://scsmb.clp(AT)laposte.fr[/email] où A l'attention de :

GENIN Stéphanie

Service Clients ColiPoste

14 Rue Antoine de Saint Exupéry

BP 7500

88107 SAINT DIE DES VOSGES Cedex

Tél : 0825 878 888

Fax : 03 29 42 15 91

-------------------------

Moi je sèche avec mes petites compétences en php wacko.gif blush.gif

merci @+++


Écrit par : foxtoto2000 28 Feb 2009, 12:01

petit bug PHP5, je pense
Warning: tempnam() [function.tempnam]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/vhosts/foxchip.com/httpdocs:/tmp) in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/functions/reclamaposte.php on line 123

dans le fichier reclamaposte du répertoire functions:

j'ai changé ligne 123 "laposte" par 'laposte'

A priori ca ne resoud pas systématiquement le probleme.
cela arriva quand il n'y a pas de date a interpréter.

Écrit par : delete 28 Feb 2009, 13:08

Citation (foxtoto2000 @ 28 Feb 2009, 12:01) *
Warning: tempnam() [function.tempnam]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/vhosts/foxchip.com/httpdocs:/tmp) in


Le message est clair : pas de droits en écriture (chmod 777 parex.) sur le repertoire temporaire ...

excl.gif Par pitié utilise les balises BBCode (Aide BBCodes en bas à droite quand tu postes) en insérant des balises CODE ou, CODEBOX quand c'est long, pour insérer ton code. Merci wink.gif

Écrit par : foxtoto2000 28 Feb 2009, 18:34

j'ai bien les droit en ecriture sur le répertoire, de plus ca marchait avant en version 1.8
je vais faire des tests et vous tiendrais informé

Écrit par : Phocea 28 Feb 2009, 19:45

vérifie aussi le path de $tmp...

Écrit par : foxtoto2000 1 Mar 2009, 18:46

j'ai meme essayé avec les 2 config de tmp.
je pense que cela vient du fait que j'ai des statuts de colis qui ne sont pas lu pour je ne sais quelle raison


Écrit par : Phocea 1 Mar 2009, 19:46

Vois avec Amen, tempnam() est uniquement utilisé dans le code pour la création de fichier temporaire pour certaines comparaisons. Des status nons reconnu n'aurait rien à voir.
La seule différence entre avant et maintenant est qu'on utilise cette fonction à plus d'endroit, mais de la meme maniere. Mets tous en 777 pour voir !

Écrit par : foxtoto2000 1 Mar 2009, 20:51

mon repertoire tmp est déja en 777 et je suis sur un serveur dédié
j'ai mis en "dur" le chemin de mon répertoire tmp dans le tempnam ou j'ai l'erreur et la ca fonctionne correctement!!!!
on dirait que la valeur ne passe pas si on met la variable!
je ne vois pas d'ou vient le probleme pour cette transmission de valauer de $tmp_dir

de plus j'ai modifié la ligne

CODE
require('includes/classes/fpdf/fpdf.php');

par
CODE
require_once('includes/classes/fpdf/fpdf.php');

car cela cause une erreur si on est pas en contrat pro

Écrit par : Phocea 2 Mar 2009, 08:22

pour fpdf c'est un autre soucis que jai fixé ..la soluce va venir

ppour le repertoire temporaire, change

Code
function interpret_date() {
        global $tmpfname;


par
Code
function interpret_date() {
        global $tmpfname, $tmp_dir;


je n'ai pas le pb sur mon serveur. Mais vu ce que tu dis je pense qu'au moment de l'appel de tempnam, la variable n0'est pas initialisé. Du coup la fonction utilise le repertoire temporaire défini par défaut pour ton serveur, ou tu n'as pas mis les droit d'accés, d'ou l'erreur

Écrit par : tidi 2 Mar 2009, 09:10

Je vous signale un probleme peut etre dû à ma boutique.
Certains colis sont bien vu comme livre en retard mais n'apparaissent pas dans le fichier genere en xls car le calcul du nombre de jours n'est pas réel.

Je vous joins une capture:
http://www.host-style.com

la contrib fonctionne parfaitement en dehors de ça.

Écrit par : Phocea 2 Mar 2009, 10:22

Citation (tidi @ 2 Mar 2009, 10:10) *
Je vous signale un probleme peut etre dû à ma boutique.
Certains colis sont bien vu comme livre en retard mais n'apparaissent pas dans le fichier genere en xls car le calcul du nombre de jours n'est pas réel.

la contrib fonctionne parfaitement en dehors de ça.



Tidi..... Les jours indiqués sont à lire comme J+x. dans ton cas, expédié vendredi 20, en transit samedi 21, livré lundi 23, soit J+2, dans les temps.... il ne devrait pas être en retard. Je ne sais pas si la contrib XLS refait une vérification ou prend le fichier de remboursement dans l'état

Écrit par : tidi 2 Mar 2009, 10:40

Ah oui j'ai pas fait gaffe au vendredi désolé.

parfait donc, le fichier xls vérifie vu qu'ils ne sont pas dans mon fichier de remboursement.

Impec donc.

Merci pour la précision.

Écrit par : jch 2 Mar 2009, 11:20

Bonjour à tou(te)s,


Si quelqu'un peut me fournir tout ou partie des infos suivantes, je lui en saurais gré jusqu'à la centième génération (comme quoi je ne lésine pas !).

Il me faudrait les deux premiers caractères des séries de n° de colis pour les types suivants :

o) Colissimo Access Outre-Mer (Expeditor) <-- c'est la série 8Q (ch'suis couillon, c'est assessible dans Expeditor !)
o) Colissimo Emballage Outre-Mer
o) Colissimo économique Outre-Mer (liasse standard "particulier")
o) Colissimo recommandé International (liasse standard "particulier")

Ca permettrait de compléter la compilation des références d'envois que l'on peut rencontrer, dispo sur demande (actuellement 26 types répertoriés).

Merci bien.

Écrit par : foxtoto2000 2 Mar 2009, 13:31

effectivement ca fonctionne en rajoutant la déclaration de tmp_dir

Écrit par : gdmdg 2 Mar 2009, 14:44

-edit- j'ai trouvé ma reponse smile.gif mais toujours des problèmes avec la fonction put_
je vais remettre la 1.6 qui marchait bien pour le moment sad.gif

Écrit par : gdmdg 2 Mar 2009, 18:35

bon, à prioris tout fonctionne finalement avec la 2.1 (et je suis en PHP 4)

Citation
menu contextuel pour lancer diverses actions sur les suivis de colis (changer le status, reset, remboursement...)


je ne vois pas le menu contextuel par contre ?

Écrit par : Phocea 2 Mar 2009, 19:43

Tu as regardé le screenshot inclus dans le zip?
un petit click droit sur les lignes coliposte pour qu'il apparaisse


Écrit par : max_2000 3 Mar 2009, 00:57

Citation (tidi @ 2 Mar 2009, 10:10) *
...contrib XLS refait une vérification ou prend le fichier de remboursement dans l'état

Bonsoir,

Je vois que tu es arrivé à faire fonctionner la contrib XSL, j'ai toujours mes problème de formatage de mail et pas de pièce joints dans le mail. Le répertoire wxls, il faut bien le mettre à la racine de l'admin et décompresser le ficher php_writeexcel-0.3.0.tar.gz dedans. J'ai bien fait tout ça !? La, je ne comprends pas ????

Merci de votre réponse




Écrit par : delete 3 Mar 2009, 01:12

La contrib XLS fonctionne pour les autres semble-t-il...

Précise dans ta signature ta version PHP, osC, etc.. etc...

wink.gif

Écrit par : gdmdg 3 Mar 2009, 10:44

est-il possible d'obliger le status d'une livraison à rester à "en retard" ou "remboursé" ou "ok" (dans le cas d'erreur d'adresse de la part de l'expéditeur par exemple) sans qu'il ne soit écrasé lors de la requête de verification de livraison ?
pour enlever ceux qui ont deja été remboursé de la prochaine demande de remboursement et pour accelerer le temps de requete.

Écrit par : Phocea 3 Mar 2009, 11:31

Citation (gdmdg @ 3 Mar 2009, 11:44) *
est-il possible d'obliger le status d'une livraison à rester à "en retard" ou "remboursé" ou "ok" (dans le cas d'erreur d'adresse de la part de l'expéditeur par exemple) sans qu'il ne soit écrasé lors de la requête de verification de livraison ?
pour enlever ceux qui ont deja été remboursé de la prochaine demande de remboursement et pour accelerer le temps de requete.



J'ai deja répondu à ta question: http://www.oscommerce-fr.info/forum/index.php?showtopic=59845&view=findpost&p=314230

Par contre il faut raffraichir la fenetre pour que le changement soit pris en compte. Je travaille sur un fix

Écrit par : Phocea 3 Mar 2009, 11:44

Citation (delete @ 3 Mar 2009, 02:12) *
La contrib XLS fonctionne pour les autres semble-t-il...

Précise dans ta signature ta version PHP, osC, etc.. etc...

wink.gif


Ca marche pas non plus chez moi, bien que je n'en ai pas besoin smile.gif
J'ai fait un fix, je vais essayer de vous packager un truc pour cette après-midi, sans le mettre sur le site US pour le moment. On devrait ensuite avoir une version stable, j'ai essayez de tester tous les cas de figure, mais il me faudrait un numéro de colissimo tout frais pas encire entré dans le système, si quelqu'un a ca sous la main.
Ce ca ne devrait jamais arriver car le paquet est flashé au moment du dépot, mais cela n'est pas toujours fait, ou parfois il y a une latence entre le flash et la mise à jours du site Coliposte.
Les fix sont les suivants:

- Archivage fonctionne maintenant correctement pour les commande de plus de XX jours (configurable). Utile uniquement pour les anciennes commandes au 1er lancement de la contrib, ou si on pas lancer reclamaposte depuis un brave moment, ou encore pour les commandes restaient à un status de transit et jamais mis à jour par La Poste.
- Detection des images manquantes et un status pour vous en informer.
- Le changement de status via le menu contextuel est maintenant bien pris en compte sans raffraichissement de la page.
- Contenu du PDF similaire à celui de l'Excel. On ne donnera plus la date de livraison et les jours, La Poste revérifiant cette info de toute manière. Cela permet de "flaguer" des coliposte en retard manuellement pour réclamation sans avoir d'information manquant.
- Nom/Prénom du client sont maintenant renseigné correctement
- Les commandes "OK", "REMBOURSE", "ARCHIVE" ne sont plus passés à la vérification à chaque coup.
- Plus qu'une requete SQL unique pour récupérer toutes les informations nécessaire.
- Simplification d'une boucle, en remettant le md5 en index du tableau de status.
- Ajout du md5 en base (futur dev pour le cron, entre autre).
- Repackaging total avec toutes les classes externes nécessaires.
- Utilisation de PHPMailer pour l'envoi de l'attachement. Testé sur gmail, yahoo, hotmail, outlook et outlook express.
- merge de reclamaposte_pdf et reclamaposte_xls en reclamaposte_extract pour éviter la duplication de code.
- D'autres petit fix dont je ne me rappelle plus smile.gif

Écrit par : foxtoto2000 3 Mar 2009, 21:38

Bonjour,

Bien que j'ai mis la variable COLIPOSTE_IN_TEST à 0, je n'arrive pas a valider les demandes de remboursement et a chaque fois que je relance la recherche j'ai les memes colis en retard qui reviennent.
est ce que je suis le seul a avoir ce probleme.

Salutations

Jerome

Écrit par : Phocea 4 Mar 2009, 17:38

Etant à ka bourre au boulot, je vous mets cette nouvelle version en téléchargement de test.
J'ai testé la validation des demandes de remboursement et cela fonctionne parfaitement (logo passe en "courrier envoyé").
Pour les changements manuelles à partir du menu contextuel, si vous faites une vérification juste avant, IL FAUT raffraichir la page

Les fix sont les suivants:

- Archivage fonctionne maintenant correctement pour les commande de plus de XX jours (configurable). Utile uniquement pour les anciennes commandes au 1er lancement de la contrib, ou si on pas lancer reclamaposte depuis un brave moment, ou encore pour les commandes restaient à un status de transit et jamais mis à jour par La Poste.
- Detection des images manquantes et un status pour vous en informer.
- Le changement de status via le menu contextuel est maintenant bien pris en compte sans raffraichissement de la page.
- Contenu du PDF similaire à celui de l'Excel. On ne donnera plus la date de livraison et les jours, La Poste revérifiant cette info de toute manière. Cela permet de "flaguer" des coliposte en retard manuellement pour réclamation sans avoir d'information manquant.
- Nom/Prénom du client sont maintenant renseigné correctement

- Les commandes "OK", "REMBOURSE", "ARCHIVE" ne sont plus passés à la vérification à chaque coup.
- Plus qu'une requete SQL unique pour récupérer toutes les informations nécessaire.
- Simplification d'une boucle, en remettant le md5 en index du tableau de status.
- Ajout du md5 en base (futur dev pour le cron, entre autre).ATTENTION A LA MISE A JOUR EN BASE
- Repackaging total avec toutes les classes externes nécessaires.
- Utilisation de PHPMailer pour l'envoi de l'attachement. Testé sur gmail, yahoo, hotmail, outlook et outlook express.
- merge de reclamaposte_pdf et reclamaposte_xls en reclamaposte_extract pour éviter la duplication de code.
- D'autres petit fix dont je ne me rappelle plus smile.gif

http://www.eboutik.net/tmp/reclamaposte.rar

Écrit par : delete 4 Mar 2009, 17:47

Citation (Phocea @ 4 Mar 2009, 17:38) *
- Nom/Prénom du client sont maintenant renseigné correctement

Et moi qui attendait impatiemment la soluce à ce problème précisément tongue.gif

wink.gif


Écrit par : Phocea 4 Mar 2009, 17:52

Citation (delete @ 4 Mar 2009, 18:47) *
Citation (Phocea @ 4 Mar 2009, 17:38) *
- Nom/Prénom du client sont maintenant renseigné correctement

Et moi qui attendait impatiemment la soluce à ce problème précisément tongue.gif

wink.gif


Mouarf .. pas finit alors je me la garde. Par contre cela nécessite un changement dans la base et dans la prise de commande alors pas certain que cela soit aussi important !
Le nom de la personne à livré n'est pas sauvé dans la table orders. Allez chercher dans l'address_book ne sert à rien car l'adresse à pu etre changer ou effacer entre temps, et de toutes manieres il ne me sembles pas que l'info de quelle address_book a été utilisé comme adresse de livraison soit sauvegardé ou que ce soit ....

Mais bon, vu que pour les emails de notifications il faudrait aussi enregistrer la langue utilisé pour faire la commande, pour envoyer le mail dans cette langue, on peut bien faire ca en meme temps smile.gif

Écrit par : foxtoto2000 4 Mar 2009, 19:12

le fix pour le bug sur la fonction tmpname avec la déclaration de $tmp_dir n'a pas été intégré dans cette version.
autre bug dans le fichier reclamaposte ligne 262
remplacé:

CODE
if (CONTRAT_PRO) {

$format = 'xls';

} else {

$format = 'xls';

}


par

CODE
if (CONTRAT_PRO) {

$format = 'xls';

} else {

$format = 'pdf';

}


Je pense qu'il y a un autre probleme sur l'etape de génération du pdf car on va chercher sur une adresse bizarre
CODE
Warning: include() [function.include]: open_basedir restriction in effect. File(/home/www/25cfe5b63d9a42bb468f3a2c805e00f0/web/admin/includes/classes/fpdf/font/helveticab.php)
is not within the allowed path(s): (/var/www/vhosts/foxchip.com/httpdocs:/tmp) in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/classes/fpdf/fpdf.php on line 541


j'ai remis une version standart de fpdf et ca fonctionne
Pourquoi ne pas mettre directement les bon coordonnée de Saint Dié pour le pdf
si vous la voulez avec les 2 numeros de fax, je peux la fournir

Écrit par : Phocea 4 Mar 2009, 20:17

Citation
le fix pour le bug sur la fonction tmpname avec la déclaration de $tmp_dir n'a pas été intégré dans cette version.


La variable global a été ajouté ou il le fallait. Si c'est une spécificité de ton serveur, comme le disait Rogers, il faut adapter

Citation
autre bug dans le fichier reclamaposte ligne 262
remplacé:
CODE
if (CONTRAT_PRO) {

$format = 'xls';

} else {

$format = 'xls';

}


par

CODE
if (CONTRAT_PRO) {

$format = 'xls';

} else {

$format = 'pdf';

}


Ah oui un petit oubli de mon test d'envoi de mail

Citation
Je pense qu'il y a un autre probleme sur l'etape de génération du pdf car on va chercher sur une adresse bizarre
CODE
Warning: include() [function.include]: open_basedir restriction in effect. File(/home/www/25cfe5b63d9a42bb468f3a2c805e00f0/web/admin/includes/classes/fpdf/font/helveticab.php)
is not within the allowed path(s): (/var/www/vhosts/foxchip.com/httpdocs:/tmp) in /var/www/vhosts/foxchip.com/httpdocs/admin/includes/classes/fpdf/fpdf.php on line 541


Totu dépend de là ou ton fpdf est installé. La version inclues est la dernière téléchargé sur sourceforge....
Code
open_basedir
est encore une erreur de permission sur le repertoire....

Écrit par : Phocea 5 Mar 2009, 17:52

Foxtoto, tu en as de la chance quand même:

http://addons.oscommerce.com/info/6593 smile.gif

Écrit par : Phocea 5 Mar 2009, 18:08

Foxtoto, tu en as de la chance quand même:

http://addons.oscommerce.com/info/6593 smile.gif

Écrit par : foxtoto2000 5 Mar 2009, 19:41

je viens d'essayer et ca ne fonctionne pas
je suis obligé de déclarer la variable tmp_dir dans la fonction ligne 119

Écrit par : Phocea 10 Mar 2009, 10:05

Et tu ne penses pas que si tu as des erreurs de droit sur des repertoires qui ressortent à droite et a gauche, il y a peut être un soucis sur ton serveur smile.gif


Bref, puisque le problème est isolé et qu'il n'y as pas eu de retour je suppose que tout va bien. J'aurai quand même bien aimé que Max vienne nous dire si le mail fonctionne maintenant.
... Je m'en vais finir ce **** de cron

Écrit par : Phocea 10 Mar 2009, 12:01

Bon il me faudrait quelque cobaye pour test la tache automatique (en manuelle).
En mode test celle ci vous envoi l'email de notif plutot qu'au client et ne mets pas à jour le status de la commande quand celle-ci est livré, mais change le status coliposte dans le suivi.

Des volontaires ? Réponse en MP svp

En attendant, vous pouvez rajouter ces lignes dans includes/reclamaposte.php (nouvelle image rencontrée)

Code
$status['f7c7f9ea682c979b0dae4b15814d2c1b']['description'] = 'Colis préparé pour en effectuer la livraison';
$status['f7c7f9ea682c979b0dae4b15814d2c1b']['notification_client'] = 1;
$status['f7c7f9ea682c979b0dae4b15814d2c1b']['remboursable'] = 'true';
$status['f7c7f9ea682c979b0dae4b15814d2c1b']['initial_transit'] = 'true';

Écrit par : Phocea 11 Mar 2009, 15:37

Une nouvelle version vient d'etre déposé sur le site des contributions.

Cette version contient plusieurs améliorations déjà cité.
Elle introduit également une tache automatisé pour mettre les status des colipostes à jour, dans le même esprit que la contribution précédente de Regne.


Les différences sont les suivantes:

- Pas d'ajout en base du suivi de colis, j'ai juste rajouté une colonne
- Pour chaque status défini dans includes/reclamaposte.php, on peut définir si on veut notifier le client ou pas.
- Pour chaque status défini dans includes/reclamaposte.php, un style d'email à envoyer au client, si besoin est.

Les styles d'email sont définissables dans le fichier de langue.

ATTENTION: Pour le bon fonctionnement de la notification automatique, il faut laisser le cron mettre à jours les status. Si cela est fait manuellement, la tache automatique peut ne pas marcher correctement (l'email ne sera pas envoyé). Cela sera régler d'ici peu! C'est fixé smile.gif

Merci à Tidi pour son aide pour les tests!

Reste à faire (et ou c'est jamais finis):
- Le changement de status via le menu contextuel devraient etre pris en compte sans rafraichissement de la page.
- Contenu du PDF similaire à celui de l'Excel. On ne donnera plus la date de livraison et les jours, La Poste revérifiant cette info de toute manière. Cela permet de "flaguer" des coliposte en retard manuellement pour réclamation sans avoir d'information manquant.
- Nom/Prénom du client à renseigné correctement dans l'Excel
- Ajout d'un plugin pour gérer la notification des lettre suivis

Écrit par : tidi 11 Mar 2009, 17:35

Citation (Phocea @ 11 Mar 2009, 11:37) *
Merci à Tidi pour son aide pour les tests!


Merci à toi pour ton travail wink.gif

Écrit par : Rogers 11 Mar 2009, 21:20

Attention de ne pas trop alourdir la contrib. Le coup des mails aux clients tout le monde n'en a pas besoin et ce n'est pas indispensable.
De même, je ne connais pas phpmailer, mais était-ce nécessaire ?

Je dis ça simplement car en 1 mois et demi, il y a eut pas loin de 17 packages différents sur cette contribution. Je pense qu'il faut se limiter à l'essentiel et ne pas aller trop loin non plus. C'est juste un conseil wink.gif.

Écrit par : Phocea 11 Mar 2009, 22:41

Le cron automatique n'a pas a être utilisé si on ne le veut pas. Mais c'est quand meme de la que tout est partie avec l'idée de regne, j'ai donc pensé qu'il était nécessaire de l'intégrer au fonction de base qui interroge le site de coliposte.
Pour phpmailer c'est pour résoudre les soucis d'envois de mail avec attachement. A mon avis, c'est le projet open source que oscommerce devrait utiliser pour tout l'envois des emails, pourquoi (mal) réinventer ce qui existe dejà?

Ce qui est dommage c'est qu'un packager standard n'existe pas, comme c'est le cas sous Unix, ou l'on peut noter la liste des dépendances à d'autres projets GNU ou GPL qui se télécharge alors automatiquement lors de l'installation d'un composant. Cela éviterai d'alourdir avec les sources dans la contrib.
Mais bon je prefere alourdir que d'avoir à répondre à 30 questions d'install smile.gif

Écrit par : delete 12 Mar 2009, 01:00

Là, on se retrouve typiquement confronté au problème qu'a osC !

Dépendances pour les contribs de type Intégration de Frameworks JavaScript ou de classes PHP et des conflits liés entre contributions qui ne sont pas validées par une équipe.

Genre de sujet à splitter au même titre que les discutions sur la Mercedès 3... Heuuu MS3.

Ok je Trolle wink.gif




Écrit par : rol 12 Mar 2009, 09:23

Bonjour,

Je viens de tester la contrib ça marche a merveille smile.gif

Merci pour cette contrib

Écrit par : Rogers 12 Mar 2009, 09:27

Ce "surplus" d'options n'enlève pas toutes les qualités de cette contrib, c'est juste que le problème avec les contribs intéressantes sous Oscommerce, on a tendance à les modifier, les remodifier et à y mettre un tas d'options. Quelques exemples : orders editor (usine à gaz), CCGV (usine à gaz bis)...

Mon avis (et ce n'est que le miens) c'est qu'il faut se limiter à l'essentiel sinon on ne s'en sort plus. Chacun a des besoins spécifiques et une option qui est nécessaire à l'un peut ne pas l'être à l'autre. C'est en ça que j'ai fait ma remarque.

Citation
Mais bon je prefere alourdir que d'avoir à répondre à 30 questions d'install smile.gif


C'est bien ça le problème...

J'arrête là, pour ne pas troller tongue.gif. La contrib est belle, elle fonctionne et c'est le top du top. Maintenant à chacun de remonter ses manches et de l'adapter à ses besoins.

Bonne continuation wink.gif

Écrit par : Phocea 12 Mar 2009, 09:41

Oui il faut trouver un juste milieu. Il reste encore 2-3 merdouilles dans les fichiers (notamment le path en dur dans la classe fpdf que je dois virer). Mais en gros c'est fonctionnel sans avoir encore trop dériver.

J'envisage par contre de tout casser smile.gif Je préférerais avoir une classe abstraite qui gère toutes les fonctions de base, pour que chacun puisse ensuite ajouter des modules pour chaque tracking. Ce qui vient d'être fait pour le colissimo est super, mais la meme chose pourrait etre fait pour DHL, Fedex, UPS ou le courrier suivi. Avec ou sans la reclamation bien entendu. Pour cela il faut pouvoir ajouter des modules comme cela se fait dans order_total par exemple.

Au final je vois bien le panneau de controle boucles sur chaque type de colis gérer (chaque module plugable), pour apporter un suivi de chacun, avec bien entendu la gestion des réclamations pour retard contractuel, mais aussi une option de reclamation en cas de détérioration du colis, puisque l'on à tout sous la main.

Le but est de gagner du temps dans la gestion, puis libre à chacun d'utiliser les plugins fournis ou de créer le sien (a part le courrier suivi je n'utilise rien d'autre!). Comme le dis Rogers, le problème de certaines contribs est que chacun rajoute sa spécificité. Il faut donc gérer en amont avec un "framework" sur la contrib elle meme, qui canalisera les dérives!
Pour moi, la notification au client, ou tout du moins, le report de l'information de suivi sur son historique de commande coule de source, du moment que cette information à déjà était récupéré. autant en tirer profit smile.gif

La suite au prochain episode smile.gif

Écrit par : Rogers 12 Mar 2009, 09:56

Je vois que tu as une bonne approche, c'est parfait. J'avais peur que la contrib dérive trop avec trop d'options. Qui dit plein d'options, dit plus de chances d'avoir des bugs, ce qui implique encore plus de problèmes de compatibilités pour chaque membre tongue.gif.

Ton idée pour l'ensemble des trackings est excellente, par contre, je pense qu'il faudrait le faire sur une nouvelle contrib. D'une part parce que généralement les e-commerçants se limitent pour la plupart à Colissimo, d'autre part le nom de la contrib ne s'y prêterait plus tongue.gif

Écrit par : gdmdg 21 Mar 2009, 10:15

une petite erreur suite à l'instalation de la 2.2 :

Citation
1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(os.track_num, 1, 2) IN ('8N','8U','8L','8P', '8V','7D') and DA

select o.`orders_id`, o.`orders_status`, o.`customers_email_address`, o.`date_purchased`, o.`customers_name`, os.`date_added`, os.`track_num`, os.`laposte_last_date`, os.`laposte_status`, os.`laposte_md5` from orders o, orders_status_history os where o.orders_id = os.orders_id and SUBSTR(os.track_num, 1, 2) IN ('8N','8U','8L','8P', '8V','7D') and DATE_SUB(CURDATE(),INTERVAL 60 DAY) <= o.date_purchased order by o.date_purchased desc, os.date_added asc;


je suppose que cela vient de ma version de MYSQL (qui est une 4 et quelque) mais la 2.1 marchait ;. une idée ? smile.gif

merci

[Edit] apres quelques essais de modification de syntaxe il s'avère que cela vient de
Citation
SUBSTR(os.track_num, 1, 2) IN ('8N','8U','8L','8P', '8V','7D')
mais je ne connais pas la syntaxe exacte pour le MYSQL 4 ...

[Edit] pour ceux qui ont une version de Myqsl inférieure à 4.1.1 il faut mettre SUBSTRING à la place de SUBSTR (ligne 354 & 356 de admin/reclamposte.php)

resolu smile.gif

Écrit par : Phocea 21 Mar 2009, 10:54

le nom de ta colonne est bien track_num? Il faut le changer dans includes/reclamaposte.php. Cela ne vienr pas de a version de MySQL, ca a été développé sur une 4

Écrit par : darkzen 21 Mar 2009, 13:08

Je suis toujours émerveillé par cette contrib et le talent qui composent ses auteurs, sans oublier leurs gentillesses de mettre à disposition de la communauté un outil remarquable…..

Par contre, je commence à avoir un doute sur la véracité de son fonctionnement.
Je viens de recevoir 3 bilans récapitulatifs de la part de Saint-Dié
Sur une demande comportant 31 colis signalés en retard par Reclamaposte , 5 colis vont être remboursés.
Je suis impressionné par ce taux d’erreur !
Attention, je ne mets pas en cause Reclamaposte.
Saint-Dié ayant du retard dans le traitement des hors délais, nous envoies des bilans invérifiables sur leur site web (www.coliposte.net).


De plus, il faut savoir pour les non-initiés, nos chers fax de réclamation ne subissent pas un traitement manuel, mais un traitement par OCR (Scanner) ainsi que tous les déboires qui en découle.
Habituellement, avec un traitement manuel (sans reclamapost), nous avons une marge d’erreur de 10%, nous faisons une nouvelle vérification en ligne et soumettons de nouveau par fax, en contestant et en démontrant un Saint-Dié que les erreurs viennent de leur service.( avec capture d’écrans à l’appui et petit cour sur l’arithmétique. )

Serait-il possible d’avoir des retours, sur l’utilisation de reclamapost, concernant ce superbe taux que nous subissons ?Sommes-nous les seuls ?

vous remerciant par avance

byebye

Écrit par : gdmdg 21 Mar 2009, 16:54

Citation (Phocea @ 21 Mar 2009, 11:54) *
le nom de ta colonne est bien track_num? Il faut le changer dans includes/reclamaposte.php. Cela ne vienr pas de a version de MySQL, ca a été développé sur une 4


oui, c'est bien track_num, mais c'est bien la fonction SUBSTR qu'on doit passer en SUBSTRING (le changement de syntaxe intervient après le version 4.1.1) j'ai juste changé ca et tout passe nikel smile.gif vu que c'est une compatibilité descendante, il faudrait certainement changer le nom de la fonction dans la contrib packagée... meme si il reste peu d'utilisateurs de version PHP inferieur à 5 maintenant .. mais j'en fais parti apparement..

Écrit par : gdmdg 21 Mar 2009, 17:05

Citation (darkzen @ 21 Mar 2009, 14:08) *
Je suis toujours émerveillé par cette contrib et le talent qui composent ses auteurs, sans oublier leurs gentillesses de mettre à disposition de la communauté un outil remarquable…..


Serait-il possible d’avoir des retours, sur l’utilisation de reclamapost, concernant ce superbe taux que nous subissons ?Sommes-nous les seuls ?

vous remerciant par avance

byebye


j'en suis à mon 5eme envoi vers les service de remboursement coliposte.

environ 50% des colis me sont retourné en "livraison dans les délais"
je les reverifie tous systémtiquement et ils TOUS sans exception hors delai.

Seulement pour en être sur il faut que la reclamation vous revienne rapidment car 25 jours pour verifier le suivi d'un colis c'est maigre ....

de toute facon, j'ai regardé la contrbution marche à 100% actuellement (je verifie meme ceux qui sont indiqués en livraison OK pour etre sur)

en gros : sur 100 colis, 15-16 en retard, 7 accepté la première fois par colisposte, je renvoi les resultats de recherche avec les dates de livraison effectives (prise dans la contribution) en précisant sur le fax "MERCI DE CORRIGER LES REMBOURSEMENTS" et une semaine après je recois le remboursement des colis arrivés soit disant à temps.

C'est dingue qu'il faille se "battre" pour se faire rembourser des colis, le suivi et le remboursement devrait être automatique. Cela crée un préjudice de temps de faire toute ces manips quand même .... twisted.gif

il serait nécessaire de rajouter sur le fax de demande / le fichier XLS, les date de présentation.

j'inclus aussi systématiquement dans ma demande de remboursement les colis non scanné qui ont pourtant été prise par la poste (dont la poste ne trouve pas le numero de suivi) et les colis dont le suivi s'arrête à "colis pris en charge dans notre reseau" car la livraison n'a pas été scanné correctement et donc, la préstation incomplète.


Écrit par : audioshop55 26 Mar 2009, 14:17

bonjour,

Moi j'ai ce message d'erreur à la suite de l'installation:

Citation
Fatal error: Cannot redeclare class PHPMailer in catalog/admin/includes/classes/phpMailer/class.phpmailer.php on line 34


je pense que cette erreur doit venir du faite que j'avais déja installé la classe phpmailer dans l'admin et que j'ai 2 fois le même fichier dans:

catalog/admin/includes/classes/phpMailer/class.phpmailer.php (celui de la contrib réclamaposte)

et

catalog/admin/includes/classes/class.phpmailer.php (celui déja installé)

comment puis-je réparer cette erreur d'après vous?


Écrit par : Phocea 26 Mar 2009, 19:42

Dans includes/functions/reclamaposte.php commentes require_once(DIR_WS_CLASSES . 'phpMailer/class.phpmailer.php'); Ou alors utilise cette classe

Écrit par : delete 26 Mar 2009, 23:12

Citation (gdmdg @ 21 Mar 2009, 17:05) *
il serait nécessaire de rajouter sur le fax de demande / le fichier XLS, les date de présentation.


Cette information figurait sur le fichier PDF mais nous l'avons supprimée car la poste se base sur ses dates et non pas sur celle que nous leur communiquions ...



Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)