batch/1.1/old/getInfosGE.php
2013-06-19 08:24:49 +00:00

188 lines
6.7 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$table='annonces';
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMFacto.php');
define('GE_FTP_DIR', '/mnt/sftp/gefacto/send/');
define('GE_BACKUP_DIR', '/home/data/gefacto/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
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 $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 $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();
?>