osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

28 Pages V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> [CONTRIBUTION] Reclamaposte, Demande de remboursements des colis livrés en retard.
delete
posté 4 Feb 2009, 14:37
Message #101


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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
Go to the top of the page
 
azra28
posté 4 Feb 2009, 14:41
Message #102


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 20
Inscrit : 24-August 06
Membre no 11694



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
Go to the top of the page
 
gdmdg
posté 4 Feb 2009, 19:05
Message #103


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 35
Inscrit : 4-January 05
Lieu : Aix en Provence
Membre no 4252



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


Ce message a été modifié par gdmdg - 4 Feb 2009, 19:29.


--------------------
MS 2
Go to the top of the page
 
foxtoto2000
posté 4 Feb 2009, 19:53
Message #104


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
delete
posté 4 Feb 2009, 23:23
Message #105


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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

Ce message a été modifié par delete - 4 Feb 2009, 23:52.
Go to the top of the page
 
maxime
posté 5 Feb 2009, 08:06
Message #106


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 580
Inscrit : 11-August 04
Membre no 3034



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.
Go to the top of the page
 
azra28
posté 5 Feb 2009, 11:00
Message #107


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 20
Inscrit : 24-August 06
Membre no 11694



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
Go to the top of the page
 
foxtoto2000
posté 5 Feb 2009, 11:28
Message #108


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
delete
posté 5 Feb 2009, 11:32
Message #109


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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.

Ce message a été modifié par delete - 5 Feb 2009, 11:36.
Go to the top of the page
 
foxtoto2000
posté 5 Feb 2009, 11:38
Message #110


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
Phocea
posté 5 Feb 2009, 11:41
Message #111


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1448
Inscrit : 12-March 05
Lieu : Chuiche
Membre no 5120



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

Ce message a été modifié par Phocea - 5 Feb 2009, 11:42.
Go to the top of the page
 
delete
posté 5 Feb 2009, 11:57
Message #112


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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

Ce message a été modifié par delete - 5 Feb 2009, 14:12.
Go to the top of the page
 
Phocea
posté 5 Feb 2009, 16:32
Message #113


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1448
Inscrit : 12-March 05
Lieu : Chuiche
Membre no 5120



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

Ce message a été modifié par Phocea - 5 Feb 2009, 16:47.
Go to the top of the page
 
delete
posté 5 Feb 2009, 18:54
Message #114


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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

Ce message a été modifié par delete - 6 Feb 2009, 00:05.
Go to the top of the page
 
Phocea
posté 5 Feb 2009, 19:19
Message #115


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1448
Inscrit : 12-March 05
Lieu : Chuiche
Membre no 5120



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

Ce message a été modifié par Phocea - 5 Feb 2009, 19:51.
Go to the top of the page
 
foxtoto2000
posté 5 Feb 2009, 20:45
Message #116


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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.


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
delete
posté 5 Feb 2009, 23:14
Message #117


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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

Ce message a été modifié par delete - 6 Feb 2009, 00:10.
Go to the top of the page
 
foxtoto2000
posté 6 Feb 2009, 08:47
Message #118


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
delete
posté 6 Feb 2009, 09:46
Message #119


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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
Go to the top of the page
 
foxtoto2000
posté 6 Feb 2009, 14:09
Message #120


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 
delete
posté 6 Feb 2009, 15:03
Message #121


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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
Go to the top of the page
 
Phocea
posté 6 Feb 2009, 18:20
Message #122


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1448
Inscrit : 12-March 05
Lieu : Chuiche
Membre no 5120



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

Ce message a été modifié par Phocea - 6 Feb 2009, 18:21.
Go to the top of the page
 
delete
posté 6 Feb 2009, 18:44
Message #123


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



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 ... ?
Go to the top of the page
 
Phocea
posté 6 Feb 2009, 19:29
Message #124


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1448
Inscrit : 12-March 05
Lieu : Chuiche
Membre no 5120



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
Go to the top of the page
 
foxtoto2000
posté 6 Feb 2009, 20:05
Message #125


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 294
Inscrit : 12-June 04
Membre no 2653



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


Warning: in_array() [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

Ce message a été modifié par foxtoto2000 - 6 Feb 2009, 20:20.


--------------------
MS2 fr
contrib : Colissimo+pick up store+ banner manager 1.4 + Credit Class & Gift Voucher+code barre+ Chronopost+OSC-Expeditor+Paypal+Cybermut+UltimateSEO
Design by Ryadfantasy
Serveur AMEN DUO 4000 Linux 2.6.23.17-88.fc7 PHP 5.2.9 MYSQL 5.1.31
[NO_PUB]
Go to the top of the page
 

28 Pages V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
3 utilisateur(s) sur ce sujet (3 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 22:06
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)