Aide - Recherche - Membres - Calendrier
Version complète : [CONTRIBUTION] Reclamaposte
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
Pages : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
delete
1ère ébauche de Réclamaposte !

Pour donner suite à ce post qui stagnait : http://www.oscommerce-fr.info/forum/index....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 FPDF (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
regne
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...

Phocea
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.
Phocea
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 ?
Rogers
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.
Phocea
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é)
Phocea
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.
delete
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
tchaoo
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
regne
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
delete
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
Rogers
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

delete
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
azra28
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).

@+
delete
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
azra28
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)

@++
regne
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 !)
delete
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
regne
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...
Rogers
Bug remonté.

Pour ma part, cela me fait un décalage sur une des page qui est toute blanche.
Rogers
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.
scarlaty
Bonjour,

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

kisscoolix 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...
Phocea
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:
  • Pourquoi mettre les images dans le repertoire image coté catalogue?
  • Faut il prendre en compte les cas ou le status n'a pas été mis à jours malgré le dépassement de date?
regne
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....

scarlaty
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...
Phocea
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..."
scarlaty
Peut être voir directement avec la poste pour des colis comme cela !
Le colis a peut etre été volé ou perdu..
scarlaty
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 !
Phocea
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
delete
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);
Rogers
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...
Phocea
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
Phocea
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 ?
scarlaty
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
Phocea


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
delete
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 ....
Phocea
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



mosaic
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...
Rogers
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.
mosaic
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.
Rogers
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%.
delete
Telintrans 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
scarlaty
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': ''}}}}
Rogers
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...
darkzen
Belle contrib, nous allons l'installer de ce pas ..... Merci aux initiateurs

byebye biggrin.gif
delete
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
regne
Comment tu as fait pour penser a ça ??! wink.gif
scarlaty
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
delete
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;
scarlaty
Je t'envoie le lien en MP car je ne vais pas avoir le temps de faire ça avant la semaine prochaine sinon..
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2024 Invision Power Services, Inc.