#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Chargement des fichiers en provenance de GE FactoFrance. Options : -d Mode debug (Verbosité au maximum) "; $iDb=new WDB('sdv1'); $iDbH=new WDB('historiques'); $iInsee=new MInsee(); $iFacto=new MFacto(); /* print_r($iFacto->getCoteSpeciale(27080290)); print_r($iFacto->getPaiements(779463223)); echo $iFacto->getProfilPayeur(779463223).EOL; echo $iFacto->getProfilPayeur(27080290).EOL; die();*/ $nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0; $modeDebug=false; // Mode débug $tabFichier=$tabFichLigneCmd=array(); $message=''; // Initialisation du mail d'exécution du traitement $argv=$_SERVER['argv']; for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'd': $modeDebug=true; break; case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } else $tabFichLigneCmd[]=$argv[$i]; } if (count($tabFichLigneCmd)==0) { $dh = opendir(GE_FTP_DIR); while (false !== ($filename = readdir($dh))) { if ($filename<>'.' && $filename<>'..' && substr($filename, 0, 5)=='GESCD') $tabFichier[] = $filename; } sort($tabFichier); } else $tabFichier=$tabFichLigneCmd; if (count($tabFichier)>0 || count($tabFichLigneCmd)>0) { echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des infos GE".EOL; for ($i=0; isset($tabFichier[$i]); $i++) { $nomFichier=$tabFichier[$i]; $dateFichier=date('YmdHis',filemtime(GE_FTP_DIR.$nomFichier)); $fp=fopen(GE_FTP_DIR.$nomFichier, 'r'); if (!$fp) { echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter (".$nomFichier.")".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL; die(); } $nbLignes=0; // Nombre de ligne du fichier while (!feof($fp)) { $nbLignes++; $a = trim(fgets($fp, 1024)); } echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$i, $nomFichier ($nbLignes lignes à traiter) !".EOL; //$finFichier=false; $iligne=1; rewind($fp); /** Traitement de la 1ère ligne **/ $ligne = trim(fgets($fp, 2048)); $taille=strlen($ligne); if ($taille<=30) { $iFacto->setTypeFic(1); $table='ge_cs2'; $iDb->update($table, array('indTrt'=>0),'1'); //UPDATE ge_cs2 SET =0 }elseif ($taille==118){ $iFacto->setTypeFic(0); $table='ge_acheteurs'; } elseif ($taille==72) { $iFacto->setTypeFic(2); $table='ge_paiements'; } else { echo date ('Y/m/d - H:i:s') . " - Erreur : Première ligne de taille $taille non gérée \"$ligne\" !".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL; die(); } $dateInsert=date('YmdHis'); $a = $iFacto->readFic($ligne); while (!feof($fp)) { if ($table=='ge_acheteurs') { if (!$iInsee->valideSiren($a['SIRENE'])) { $a['sirenValide']=0; $nbSiretInvalides++; } else { $a['sirenValide']=1; $nbSiretValides++; } } if ($table=='ge_cs2') { $iDbH->insert($table, array_merge($a, array('dateInsert'=>$dateInsert, 'dateFichier'=>$dateFichier))); if (mysql_errno()>0 && mysql_errno()<>1062) die("Table = $table".EOL.mysql_error().EOL); } if ($iDb->insert($table, array_merge($a, array('dateInsert'=>$dateInsert)))) $nbInsert++; elseif ($table=='ge_cs2') { $ret=$iDb->select($table, 'cs, dateFin*1 AS dateFin', 'siren='.$a['siren'], false, MYSQL_ASSOC); $csPre=@$ret[0]['cs']; $datePre=@$ret[0]['dateFin']; if ($a['cs']<>$csPre || $a['dateFin']<>$datePre) { /*echo 'A insérer :'.EOL; print_r($a); echo 'En base :'.EOL; print_r($ret[0]);*/ // La CS a bougée $iDb->update($table, array_merge($a, array( 'dateConf'=>$dateFichier, 'csPre'=>$csPre, 'dateCsPre'=>$datePre, 'dateModifCS'=>$dateFichier, 'dateUpdate'=>$dateInsert, 'indTrt'=>1)), 'siren='.$a['siren']); } else { $iDb->update($table, array_merge($a, array('dateConf'=>$dateFichier, 'indTrt'=>1)), 'siren='.$a['siren']); } if (mysql_errno()>0) echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error()." sur $table pour ".print_r($a); $nbUpdate++; } elseif ($table=='ge_acheteurs') { $iDb->update($table, array_merge($a, array('dateUpdate'=>$dateInsert)), 'NUMACH='.$a['NUMACH']); if (mysql_errno()>0) echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error()." sur $table pour ".print_r($a); $nbUpdate++; } else echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error()." sur $table pour ".print_r($a); $a = $iFacto->readFic(fgets($fp, 1024)); $iligne++; } fclose ($fp); echo date ('Y/m/d - H:i:s')." - Le fichier n°$i, $nomFichier vient d'être chargé : $nbInsert ajouts et $nbUpdate MAJ !".EOL; if ($table=='ge_cs2') $iDb->update($table, array('dateSuppr'=>$dateInsert), 'indTrt=0'); if (bzip2(GE_FTP_DIR.$nomFichier, GE_BACKUP_DIR.$nomFichier.'-'.date('Ym'))) { unlink(GE_FTP_DIR.$nomFichier); echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL; } } echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siren/siret invalides !".EOL; $message.="Le fichier n°$i, $nomFichier vient d'être chargé :\r\n"; $message.=" $nbInsert ajouts et $nbUpdate mises à jours sur $nbLignes lignes ($nbSiretInvalides siren/siret invalides).".EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des défaillances.".EOL; } else { $message.="Aucun fichier GE à traiter !\r\n"; echo date ('Y/m/d - H:i:s') . " - Aucun fichier GE à traiter !".EOL; } sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement des infos GE', $message); die(); ?>