188 lines
6.7 KiB
PHP
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 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();
|
|
|
|
?>
|