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

758 lines
40 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
define('PRIVILEGES_FTP_HOST', '194.5.119.252');
define('PRIVILEGES_FTP_LOGIN', 'score');
define('PRIVILEGES_FTP_PASS', '1eUauTJZ');
define('PRIVILEGES_FTP_DIR_GET', '/var/home_ftp/score/Send/');
define('PRIVILEGES_FTP_DIR_PUT', '/var/home_ftp/score/Receive/');
define('PRIVILEGES_FTP_LOCALDIR', '/home/data/infogreffe/');
define('PRIVILEGES_BACKUP_DIR', '/home/data/infogreffe/histo/');
$ftpDelete=true; // Par défaut on supprime les fichiers téléchargés
$tabRejets=array(
'_00'=>"Surveillance RCS posée/Demande de suppression acceptée/Surveillance PRIV posée : pas d'inscription existante sur le dossier",
'_01'=>"Surveillance PRIV posée : inscription existante sur le dossier",
'_02'=>"GAGI,GREFTEL,INTERGREFFE-code 1-surveillance acceptée mais qui n'a pas encore fait l'objet d'un AR",
'_03'=>"GAGI,GREFTEL,INTERGREFFE-code 2 - surveillance acceptée avec CREATION d'une fiche débiteur, qui n'a pas fait l'objet d'un AR",
'_04'=>"GAGI-surveillance en attente envoyée au GAGI",
'_05'=>"Surveillance en attente de validation au greffe",
'_06'=>"Erreur de chargement",
'_10'=>"Surveillance impossible car société radiée",
'_11'=>"Surveillance impossible car société transférée dans un autre greffe",
'_12'=>"SIREN inconnu",
'_13'=>"Raison sociale erronée",
'_14'=>"Adresse erronée",
'_15'=>"Surveillance impossible sur un établissement secondaire",
'_16'=>"Demande incomplète ou incorrecte",
'_17'=>"Surveillance Privilège impossible",
'_18'=>"Surveillance impossible par le greffe",
'_19'=>"Surveillance RCS impossible",
'_20'=>"Cette surveillance concerne un autre Greffe",
'_21'=>"Surveillance BILAN impossible car la ste n'est pas tenue de déposer ses Comptes Annuels (ste de droit étranger)",
'_22'=>"Plusieurs Bottins (débiteurs) (GAGI)",
'_23'=>"Société de fait (GAGI) : Société non enregistrée au Registre du Commerce",
'_24'=>"Surveillance impossible car société en liquidation judiciaire",
'_25'=>"Greffe inconnu",
'_26'=>"Millésime bilan à surveiller incorrect",
'_27'=>"Références EXTELIA erronées ou incomplètes (ces reférences sont obligatoires en cas de demande de suppression)",
'_28'=>"Surveillance impossible sur un dossier non informatisé (dossier dit non repris ou figé)",
'_30'=>"Siren absent (ne concerne que les surveillances de type WebService)",
'_31'=>"Surveillance BILAN impossible sur une société non commerciale (statut <> B)",
'_50'=>"Ce greffe ne traite pas les surveillances car le groupement de ce greffe n'est pas surveillé",
'_51'=>"Etablissement non trouvé",
'_52'=>"Code catalogue de la surveillance non renseigné ou incorrect",
'_53'=>"le siren est déjà sous surveillance",
'_54'=>"DOSSIER AGORA : votre prestation ne comprend pas la couverture de ce groupement",
'_55'=>"DOSSIER INTERGREFFE : votre prestation ne comprend pas la couverture de ce groupement de greffes",
'_56'=>"Le siren est déjà en attente de validation par le greffe",
'_57'=>"Surveillance impossible sur un dossier dit non inscrit au RCS (statut F:artisan)",
'_58'=>"Surveillance impossible sur un agent commercial (statut P ou M)",
'_59'=>"Surveillance impossible sur une entreprise non inscrite au RCS mais seulement à l'INSEE(URSSAF, Chambre d'Agriculture ou Chambre des Métiers)",
'_88'=>"Rejet temporaire : surveillance sur un greffe absorbé rejetée pendant la phase de rechargement",
'_99'=>"Surveillance impossible pour raisons à examiner",
'_R'=>"Radiation RCS",
'_L'=>"Liquidation Judiciaire",
'_T'=>"Transfert dans un autre greffe",
);
function exporte($txt, $lon, $sep='') {
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt);
return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep;
}
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/classMRncs.php');
define('CSF_FTP_DIR', '/home/data/ftp/creditsafe/send/');
define('CSF_BACKUP_DIR', '/home/data/jal/creditsafe/');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIER1] ...
Gestion de la surveillance Privilèges avec Infogreffe
Options :
-f Ne pas générer le fichier de demandes de surveillance Privilèges (DE)
-c Compter uniquement le nombre de demandes de surveillance Privilèges (DE) à traiter
-d Mode debug (Verbosité au maximum)
";
// -i Forcer les questions Interactives
// -t Charger en test (implique -j -d -i)
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iInsee=new MInsee();
$iBodacc=new MBodacc();
$iRncs=new MRncs();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0;
$modeDebug=false; // Mode débug
$questions=false; // Questions interactives autorisées
$genereDE=true; // Génére le fichier des demandes/suppressions de surveillance PRIVILEGES
$compteDE=false; // Compter le nb de nvelles DE et stopper !
$tabFichier=$tabFichLigneCmd=array();
$strMailInfo=''; // 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 'i': $questions=true; break;
case 'f': $genereDE=false; break;
case 'c': $compteDE=true; break;
case 't': $table='annonces2';
$modeDebug=$questions=true;
$loadInpiLocal=false;
break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichLigneCmd[]=$argv[$i];
}
echo date('Y/m/d - H:i:s'). " - Début du programme de gestion des flux Privilèges...".EOL;
/** Lecture de la table surveillance_site et maj de la table greffe_surv_stock
**/
if ($genereDE || $compteDE) {
if ($modeDebug) echo date ('Y/m/d - H:i:s') . "SQL=\nSELECT DISTINCT (siren) AS siren\nFROM surveillances_site\nWHERE source='privileges' AND siren>100 AND siren NOT IN (SELECT siren FROM greffes_priv_stock);".EOL;
$resPriv=$iDb->query("SELECT DISTINCT (siren) AS siren, 0 AS retry, '' AS steNom, '' AS steVoieNum, '' AS steVoieType, '' AS steVoieLib, '' AS steVoieComp1, '' AS steVoieComp2, '' AS steCP, '' AS steVille, '' AS dateInsert FROM surveillances_site
WHERE source='privileges' AND siren>100 AND siren NOT IN (SELECT siren FROM greffes_priv_stock)
UNION
/* 2ème essai en cas de 1er retour négatif */
SELECT siren, retry, steNom, steVoieNum, steVoieType, steVoieLib, steVoieComp1, steVoieComp2, steCP, steVille, dateInsert
FROM greffes_priv_stock WHERE retry=1
UNION
/* Reconduction annuelle si encore en surveillance privilèges par le client */
SELECT siren, 100 AS retry, steNom, steVoieNum, steVoieType, steVoieLib, steVoieComp1, steVoieComp2, steCP, steVille, dateInsert
FROM greffes_priv_stock WHERE greDateSurvFin<DATE(NOW()) AND greDateSurvFin<>0 AND siren IN(SELECT siren FROM surveillances_site WHERE source='privileges' AND siren>100);",
false, MYSQL_ASSOC, true);
$nbPriv=mysql_num_rows($resPriv);
echo date ('Y/m/d - H:i:s') . " - Il y a $nbPriv nouveau siren à mettre en surveillance privilèges Infogreffe...".EOL;
if ($compteDE) die();
$timeStamp=date('YmdHis');
$nomFicDem=$timeStamp.'IPRDESCO';
$fp=fopen(PRIVILEGES_FTP_LOCALDIR.$nomFicDem, 'a');
$nbLignes=0;
while ($tabSiren=$iDb->fetch(MYSQL_ASSOC)) {
//print_r($tabSiren);
$siren=$tabSiren['siren'];
if ($tabSiren['retry']==1) { // Réenvoi après rejet
$tabInsert=$tabSiren;
$tabInsert['retry']=0;
} elseif($tabSiren['retry']==100) { // Reconduction annuelle
$tabInsert=$tabSiren;
$tabInsert['retry']=0;
$tabInsert['greDateSurvFin']=0;
} else {
$tabIdRncs =@$iRncs->getIdentiteEtab($siren);
$tabInsert=array( 'siren'=>$siren,
'steNom'=>@$tabIdRncs['raisonSociale'],
'steVoieNum'=>@trim($tabIdRncs['adrNumVoie'].' '.$tabIdRncs['adrIndRep']),
'steVoieType'=>@$tabIdRncs['adrTypeVoie'],
'steVoieLib'=>@$tabIdRncs['adrVoie'],
'steVoieComp1'=>@$tabIdRncs['adrComp'],
'steVoieComp2'=>'',
'steCP'=>@$tabIdRncs['cp'],
'steVille'=>@$tabIdRncs['commune'],
'dateInsert'=>$timeStamp,
);
if (trim($tabInsert['steNom'])=='') {
/** Entreprise absente au RCS (période RNCS Coface ORT) **/
$tabIdInsee=@$iInsee->getIdentiteLight($siren);
$tabInsert['steNom'] = @$tabIdInsee['Nom'];
}
if (trim($tabInsert['steVille'])=='') {
/** Etablissement absent au RCS (période RNCS Coface ORT) **/
$tabIdInsee=@$iInsee->getIdentiteLight($siren);
$tabInsert['steVoieNum'] = @trim($tabIdInsee['AdresseNum'].' '.$tabIdInsee['AdresseBtq']);
$tabInsert['steVoieType']= @$tabIdInsee['AdresseVoie'];
$tabInsert['steVoieLib'] = @$tabIdInsee['AdresseRue'];
$tabInsert['steVoieComp1']=@$tabIdInsee['Adresse2'];
$tabInsert['steVoieComp2']='';
$tabInsert['steCP'] = @$tabIdInsee['CP'];
$tabInsert['steVille'] = @$tabIdInsee['Ville'];
}
}
if (!$iDb2->insert('greffes_priv_stock', $tabInsert)) {
if ($iDb2->getLastErrorNum()==1062 && $tabSiren['retry']>=1)
$iDb2->update('greffes_priv_stock', $tabInsert, "siren=$siren");
else {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors d'insertion du siren $siren...".EOL;
}
}
$strOutput='';
$strOutput.=exporte('07100001', 8); // N° Abonné = 07100001
$strOutput.=exporte('C', 1); // C/S Création ou Suppression de surveillance
$strOutput.=exporte($tabInsert['dateInsert'], 8); // Date de la demande
$strOutput.=exporte('', 50); // Réf Intene S&D
$strOutput.=exporte('', 2); // Type Réponse Extelia
$strOutput.=exporte('', 8); // Date Réponse Extelia
$strOutput.=exporte('', 4); // N° du greffe
$strOutput.=exporte($tabInsert['siren'], 9);
$strOutput.=exporte('', 10); // N° de gestion RCS
$strOutput.=exporte($tabInsert['steNom'], 160); // Dénomination
$strOutput.=exporte('', 8); // N° de débiteur
$strOutput.=exporte($tabInsert['steVoieNum'], 10); // Adresse : Numéro de voie
$strOutput.=exporte($tabInsert['steVoieType'], 4); // Adresse : Type de voie
$strOutput.=exporte($tabInsert['steVoieLib'], 20); // Adresse : Libellé de la voie
$strOutput.=exporte($tabInsert['steVoieComp1'], 32);// Adresse : Complément 1
$strOutput.=exporte($tabInsert['steVoieComp2'], 32);// Adresse : Complément 2
$strOutput.=exporte($tabInsert['steCP'], 5); // Adresse : Code Postal
$strOutput.=exporte('', 1); // Filler
$strOutput.=exporte($tabInsert['steVille'], 30); // Adresse : Ville
$strOutput.=exporte('', 4); // Millésime Bilan
$strOutput.=exporte('', 4); // Filler
$strOutput.=exporte('71', 10); // Code Catalogue = 71
$strOutput.=exporte('', 4); // Filler
$strOutput.=exporte('', 8); // Flux retour : Date de l'AR
$strOutput.=exporte('', 3); // Flux retour : Code AR ou rejet
$strOutput.=exporte('00000000', 8); // Si Suppression : Référence du lot
$strOutput.=exporte('0000000000', 10); // Si Suppression : Référence détail suppr.
$strOutput.=exporte('', 8); // Flux retour : Date de début de Surveillance
$strOutput.=exporte('', 8); // Flux retour : Date de Fin de Surveillance
$strOutput.=exporte('', 11); // Filler
echo $strOutput.EOL;
if ($modeDebug && $nbLignes==0)
echo date ('Y/m/d - H:i:s') . " - Le fichier '$nomFicDem' fait ".strlen($strOutput)." caractères.".EOL;
fwrite($fp, $strOutput.EOL);
$nbLignes++;
}
fclose($fp);
if ($nbLignes==0) {
unlink(PRIVILEGES_FTP_LOCALDIR.$nomFicDem);
echo date ('Y/m/d - H:i:s') . " - Pas de flux de demandes de surveillance Privilèges pour Infogreffe.".EOL;
} else
echo date ('Y/m/d - H:i:s') . " - Fin de la génération des demandes pour Infogreffe : $nbLignes lignes traitées.".EOL;
}
$conn_id = ftp_connect(PRIVILEGES_FTP_HOST);
if (!$conn_id) { echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de se connecter au serveur FTP d'Extelia.".EOL; die(); }
$login_result = ftp_login($conn_id, PRIVILEGES_FTP_LOGIN, PRIVILEGES_FTP_PASS);
if (!$login_result) { echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de s'authentifier sur le serveur FTP d'Extelia.".EOL; die(); }
// Récupération du contenu d'un dossier
$contents = ftp_nlist($conn_id, PRIVILEGES_FTP_DIR_GET);
//print_r($contents);
//die('ici');
if ($contents) {
foreach($contents as $k => $server_file) {
$tailleDist = ftp_size($conn_id, $server_file);
$dateDist = ftp_mdtm($conn_id, $server_file);
$server_fileName=basename($server_file);
if (!preg_match('/IPRDESCO|IPSARSCO|IPSRESCO/i', $server_fileName)) {
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' n'est pas un flux PRIVILEGES.".EOL;
continue;
} elseif ($modeDebug)
echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' est un flux PRIVILEGES...".EOL;
if ($dateDist != -1) {
$tabFichiers[$server_fileName]['dateDispo']=date('Y-m-d H:i:s', $dateDist);
if ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Le fichier distant $server_fileName a été modifié le ".date("d/m/Y à H:i:s.",$dateDist)."\n";
} else {
$tabFichiers[$server_fileName]['dateDispo']=NULL;
if ($modeDebug)
echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de récupérer l'heure de modification du fichier distant $server_file !\n";
}
$tabFichiers[$server_fileName]['taille']=$tailleDist;
$tabFichiers[$server_fileName]['cheminNom']=$server_file;
if ($tailleDist != -1 && $modeDebug)
echo date ('Y/m/d - H:i:s') ." - Taille du fichier distant $server_fileName est de $tailleDist octets\n";
if (file_exists(PRIVILEGES_FTP_LOCALDIR . $server_fileName)) {
$dateLoc=filemtime(PRIVILEGES_FTP_LOCALDIR . $server_fileName);
$tabFichiers[$server_fileName]['dateDownload']=date('Y-m-d H:i:s', $dateLoc);
$tailleLoc=filesize(PRIVILEGES_FTP_LOCALDIR . $server_fileName);
if ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Taille du fichier local $server_fileName = $tailleLoc octets\n";
}
$tailleDistKo=round($tailleDist/1024,1);
if ($tailleDist<>@$tailleLoc) {
$tDeb = microtime(true);
if (ftp_get($conn_id, PRIVILEGES_FTP_LOCALDIR . basename($server_file), $server_file, FTP_BINARY)) {
$tFin = microtime(true);
$tDur = round($tFin-$tDeb,3);
$tailleDistKo=round($tailleDist/1024,1);
$tRatio=@round($tailleDistKo/$tDur,1);
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
if ($ftpDelete && ftp_delete($conn_id, $server_file)) {
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName supprimé avec succès.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName supprimé avec succès.".EOL;
}
} else
die (date ('Y/m/d - H:i:s')." - ERREUR : Fichier distant $server_file non téléchargé !".EOL);
} elseif ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Le fichier $server_fileName a déjà été téléchargé le ".$tabFichiers[$server_fileName]['dateDownload']."($tailleDistKo Ko).".EOL;
}
}
if (@$nbLignes>0) {
/** Dépot du fichier des demandes **/
$tailleLoc=filesize(PRIVILEGES_FTP_LOCALDIR.$nomFicDem);
$tDeb = microtime(true);
if (ftp_put($conn_id, PRIVILEGES_FTP_DIR_PUT.$nomFicDem, PRIVILEGES_FTP_LOCALDIR.$nomFicDem, FTP_ASCII)) {
$tFin = microtime(true);
$tDur = round($tFin-$tDeb);
$tailleLocKo=round($tailleLoc/1024,1);
$tRatio=@round($tailleLocKo/$tDur,1);
echo date ('Y/m/d - H:i:s')." - Fichier '$nomFicDem' déposé avec succès : $tailleLocKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier '$nomFicDem' déposé avec succès : $tailleLocKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
} else {
die (date ('Y/m/d - H:i:s')." - ERREUR : Fichier local '$nomFicDem' non déposé !".EOL);
}
}
// Fermeture de la connexion
ftp_close($conn_id);
echo date ('Y/m/d - H:i:s')." - Fin du transfert des fichiers Privilèges en FTP.".EOL;
if (count($tabFichLigneCmd)==0) {
$dh = opendir(PRIVILEGES_FTP_LOCALDIR);
while (false !== ($filename = readdir($dh))) {
$idF=substr($filename, 14, 8);
if ($filename<>'.' && $filename<>'..' &&
($idF=='IPSARSCO' || // Fichier des Accusés de Réception des demandes de surveillance
$idF=='IPSRESCO' || // Fichier des Révélations
$idF=='IPSPOSCO') ) // Fichier "Portefeuille"
$tabFichier[] = PRIVILEGES_FTP_LOCALDIR.$filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
//print_r($tabFichier);
foreach ($tabFichier as $iFic=>$fichier)
{
$fichierAvecRep=$fichier;
$fichier=basename($fichier);
$idF=substr($fichier, 14, 8);
echo date('Y/m/d - H:i:s'). " - Début du traitement du fichier $fichier (IDF='$idF')...".EOL;
$dateDispo=date('YmdHis', filemtime($fichierAvecRep));
/*
$dateFichierMod=substr(''.$dateDispo,0,8)*1;
$dateFichierNom=substr($fichier,0,8)*1;
*/
$fp=fopen($fichierAvecRep, 'r');
if ($fp && $idF=='IPSRESCO') {
$nbLignes=$nbLignes00=$nbLignes01=$nbLignes99=0;
$tabEntete=$tabFin=array();
/*
for($i=0; $i<6; $i++) $nbUpdate[$i]=$nbInsert[$i]=0;
$nbCreations=$nbModifI=$nbModifF=$nbModifS=$nbFermetures=$nbModifErr=0;
$a = fgets($fp, 4096);
if (strlen($a)<800) {
echo date('Y/m/d - H:i:s') ." - Le fichier RNCS à charger $fichier n'est pas au format IMR Infogreffe/Extelia !".EOL;
die();
}*/
$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
if ($nbLignesTot==0 && strlen($a)<500) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu !".EOL;
die();
}
$nbLignesTot++;
}
$nbLignesUtil=$nbLignesTot-3;
$tabTmp=$iDb->select('greffes_privileges', 'count(*) as nb, max(dateInsert) as dateChargement', "idFichier='$fichier'", false, MYSQL_ASSOC);
if (@$tabTmp[0]['nb']*1>0) {
$nbLignesCharges=$tabTmp[0]['nb'];
$dateChargement=$tabTmp[0]['dateChargement'];
if ($nbLignesCharges==$nbLignesUtil) {
echo date('Y/m/d - H:i:s'). " - Le fichier $fichier a déjà été chargé le $dateChargement ($nbLignesCharges/$nbLignesUtil lignes)...".EOL;
fclose($fp);
continue;
} else {
echo date('Y/m/d - H:i:s'). " - Attention : Le fichier $fichier a déjà été partiellement chargé le $dateChargement ($nbLignesCharges/$nbLignesUtil lignes)...".EOL;
echo date('Y/m/d - H:i:s'). " - Arrêt du traitement.".EOL;
die();
}
} else
echo date('Y/m/d - H:i:s') ." - Le fichier à charger $fichier contient $nbLignesTot lignes.".EOL;
/*
if ($iFic==0 && $nbLignesTot>2000000 && !$stock) {
// C'est le 1er fichier, il comporte plus de 2M de lignes et il n'est pas déclaré comme stock !
echo date('Y/m/d - H:i:s') ." - Ce fichier est-il un stock annuel ? Merci de confirmer (O/N) ";
while (1) {
$saisie = trim(strtoupper(fgets(STDIN)));
if ($saisie=='O' || $saisie=='o') {
$stock=1;
$actifIni=11;
break;
} elseif ($saisie=='N' || $saisie=='n') {
break;
}
}
}
*/
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
$sirenPre=0; // Valeur du Siren précédent
$siren=0;
$modifDir=$modifJug=false;
$table='';
while (!feof($fp)) {
$nbLignes++;
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['numChrono'] = trim( substr($a, 18, 10)); // N° chrono du fichier
break;
case '01': // PRIVILEGES
//die("'$a'");
$nbLignes01++;
$tabInsert=array();
// Données sur la surveillance
$tabInsert['dateEven']=trim(substr($a, 2 , 8 )); // Date de l'événement
$tabInsert['refLot']=trim(substr($a, 10 , 8 )); // Référence Extelia du lot
$tabInsert['refSurv']=trim(substr($a, 18 , 10 )); // Référence Extelia de la surveillance
$tabInsert['siren']=trim(substr($a, 28 , 9 )); // Siren
$tabInsert['greffe']=trim(substr($a, 37 , 4 )); // Greffe
$tabInsert['numDebiteur']=trim(substr($a, 41 , 8 )); // Numéro du débiteur
$tabInsert['sirenage']=trim(substr($a, 49 , 2 )); // Flag indicateur de sirénage
$tabInsert['typeEven']=trim(substr($a, 51 , 10 )); // Type de l'événement (PRNINS, PRNMOL, PRNRAD)
$tabInsert['dateFraiche']=trim(substr($a, 61 , 8 )); // Date de fraîcheur
$tabInsert['codeRev']=trim(substr($a, 69 , 10 )); // Code de dernière révélation
// Données sur le débiteur
$tabInsert['debRaisonSociale']=trim(substr($a, 79 , 160 )); // Raison sociale du débiteur
$tabInsert['debSigle']=trim(substr($a, 239 , 80 )); // Sigle du débiteur
$tabInsert['debCiv']=trim(substr($a, 319 , 10 )); // Civilité débiteur
$tabInsert['debNom']=trim(substr($a, 329 , 160 )); // Nom du débiteur
$tabInsert['debPrenom']=trim(substr($a, 489 , 64 )); // Prénom du débiteur
$tabInsert['debConjoint']=trim(substr($a, 553 , 32 )); // Conjoint débiteur
$tabInsert['debUsage']=trim(substr($a, 585 , 32 )); // Usage débiteur
$tabInsert['debEnseigne']=trim(substr($a, 617 , 64 )); // Enseigne débiteur
$tabInsert['debActivite']=trim(substr($a, 681 , 64 )); // Activité du débiteur
$tabInsert['debFj']=trim(substr($a, 745 , 10 )); // Code forme juridique du débiteur
$tabInsert['debFjLib']=trim(substr($a, 755 , 80 )); // Libellé de la forme juridique du débiteur
$tabInsert['debResidence']=trim(substr($a, 835 , 50 )); // Résidence débiteur
$tabInsert['debNumVoie']=trim(substr($a, 885 , 10 )); // Numéro de la voie débiteur
$tabInsert['debTypVoie']=trim(substr($a, 895 , 20 )); // Type de voie débiteur
$tabInsert['debLibVoie']=trim(substr($a, 915 , 50 )); // Nom de la voie débiteur
$tabInsert['debAdrComp']=trim(substr($a, 965 , 50 )); // Localité débiteur
$tabInsert['debCP']=trim(substr($a, 1015 , 15 )); // Code postal débiteur
$tabInsert['debVille']=trim(substr($a, 1030 , 50 )); // Bureau distributeur débiteur
$tabInsert['debPays']=trim(substr($a, 1080 , 10 )); // Pays débiteur
// Données sur l'inscription
$tabInsert['insType']=trim(substr($a, 1090 , 10 )); // Type de privilège
$tabInsert['insLib']=trim(substr($a, 1100 , 80 )); // Libellé du privilège
$tabInsert['insNum']=trim(substr($a, 1180 , 9 )); // Numéro d'inscription
$tabInsert['insDate']=trim(substr($a, 1189 , 8 ))*1; // Date d'inscription
$tabInsert['insObjet']=trim(substr($a, 1197 , 500 )); // Objet de l'inscription ou Descriptif
$tabInsert['insMontant']=trim(substr($a, 1697 , 15 ).'.'.substr($a, 1712 , 5 ))*1; // Montant de la créance (15 entiers, 5 décimales)
$tabInsert['insDev']=trim(substr($a, 1717 , 10 )); // Devise de la créance
$tabInsert['insDateEch']=trim(substr($a, 1727 , 8 ))*1; // Date d'exigibilité
$tabInsert['insDateFin']=trim(substr($a, 1735 , 8 ))*1; // Date de caducité/Date de péremption
$tabInsert['insNanTx']=trim(substr($a, 1743 , 5 )); // Nantissements : Taux d'intérêt
$tabInsert['insNanTitre']=trim(substr($a, 1748 , 150 )); // Nantissements : Titre de l'acte et date
$tabInsert['insNanOppo']=trim(substr($a, 1898 , 200 )); // Nantissements : Election de domicile pour les oppositions
$tabInsert['insProNat']=trim(substr($a, 2098 , 80 )); // Protêts : Nature de l'effet
$tabInsert['insProHui']=trim(substr($a, 2178 , 300 )); // Protêts : Nom et adresse de l'huissier
$tabInsert['insProRep']=trim(substr($a, 2478 , 200 )); // Protêts : Réponse
$tabInsert['insNSCA']=trim(substr($a, 2678 , 300 )); // Nantissements de parts de sociétés civiles : Acceptation
$tabInsert['insNSCParts']=trim(substr($a, 2978 , 150 )); // Nantissements de parts de sociétés civiles : Parts
$tabInsert['insNSCSigni']=trim(substr($a, 3128 , 200 )); // Nantissements de parts de sociétés civiles : Signification
// Données sur les créanciers
$tabInsert['creNom']=trim(substr($a, 3328 , 160 )); // Nom/raison sociale du 1er créancier
$tabInsert['creNumVoi']=trim(substr($a, 3488 , 10 )); // Numéro de la voie créancier
$tabInsert['creTypVoi']=trim(substr($a, 3498 , 20 )); // Type de voie créancier
$tabInsert['creLibVoi']=trim(substr($a, 3518 , 50 )); // Nom de la voie créancier
$tabInsert['creAdrComp1']=trim(substr($a, 3568 , 50 )); // Résidence créancier
$tabInsert['creAdrComp2']=trim(substr($a, 3618 , 50 )); // Localité créancier
$tabInsert['creCP']=trim(substr($a, 3668 , 15 )); // Code postal créancier
$tabInsert['creVille']=trim(substr($a, 3683 , 50 )); // Bureau distributeur créancier
$tabInsert['crePays']=trim(substr($a, 3733 , 10 )); // Pays créancier
$tabInsert['creAutres']=trim(substr($a, 3743 , 900 )); // Nom des 9 autres créanciers
// Données sur la radiation
$tabInsert['radDate']=trim(substr($a, 4643 , 8 ))*1; // Date de radiation définitive
$tabInsert['radMention']=trim(substr($a, 4651 , 8 ))*1; // Date de la dernière mention de radiation partielle
$tabInsert['radPartiel']=trim(substr($a, 4659 , 300 )); // Mention de radiation partielle (la plus récente)
$tabInsert['radPartMt']=trim(substr($a, 4959 , 15).'.'.substr($a, 4974 , 5 ))*1; // Montant radiation partielle (15 entiers et 5 décimales)
$tabInsert['radDev']=trim(substr($a, 4979 , 10 )); // Devise du montant de la radiation partielle
$tabInsert['radDiv']=trim(substr($a, 4989 , 10 )); // Zone libre
$tabInsert['idFichier']=$fichier;
$tabInsert['dateInsert']=date('YmdHis');
//print_r($tabInsert);
$iDb2->insert('greffes_privileges_mvt', $tabInsert);
if (!$iDb2->insert('greffes_privileges', $tabInsert)) {
if (mysql_errno()==1062) {
if (!$iDb2->update('greffes_privileges', $tabInsert, "siren=".$tabInsert['siren'].
" AND greffe=".$tabInsert['greffe'].
" AND numDebiteur='".$tabInsert['numDebiteur']."'
AND insType=".$tabInsert['insType'].
" AND insNum='".$tabInsert['insNum']."'
AND insDate=".$tabInsert['insDate'].
" AND insMontant=".$tabInsert['insMontant'].
" AND insDateEch=".$tabInsert['insDateEch'].
" AND insDateFin=".$tabInsert['insDateFin'].
" AND radDate=".$tabInsert['radDate'].
" AND radPartMt=".$tabInsert['radPartMt'])) {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la MAJ de siren=".$tabInsert['siren'].
" AND greffe=".$tabInsert['greffe'].
" AND numDebiteur='".$tabInsert['numDebiteur']."'
AND insType=".$tabInsert['insType'].
" AND insNum='".$tabInsert['insNum']."'
AND insDate=".$tabInsert['insDate'].
" AND insMontant=".$tabInsert['insMontant'].
" AND insDateEch=".$tabInsert['insDateEch'].
" AND insDateFin=".$tabInsert['insDateFin'].
" AND radDate=".$tabInsert['radDate'].
" AND radPartMt=".$tabInsert['radPartMt'].EOL;
die();
}
} else {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors d'insertion du siren=".$tabInsert['siren'].EOL;
die();
}
}
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['numChrono'] = trim( substr($a, 18, 10)); // N° chrono du fichier
$tabFin['nbLignes01'] = trim( substr($a, 28, 10)); // Nombre de lignes NAN (privilèges)
$tabFin['nbLignes02'] = trim( substr($a, 38, 10)); // Nombre de lignes RCS (procol)
$tabFin['nbLignes03'] = trim( substr($a, 48, 10)); // Nombre de lignes BIL (bilans)
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
} elseif ($fp && $idF=='IPSARSCO') { // Fichier AR
$nbLignes=$nbLignes00=$nbLignes99=0;
$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
$len=strlen($a);
if ($nbLignesTot==0 && ($len<481 || $len>482)) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu (ligne de $len caractères) !".EOL;
die("'$a'");
}
$nbLignesTot++;
}
echo date('Y/m/d - H:i:s') ." - Le fichier à charger $fichier contient $nbLignesTot lignes.".EOL;
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
while (!feof($fp)) {
//002010040607100001AR0000000001
//992010040607100001AR00000000010000000156
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabEntete['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
break;
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabFin['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
$tabFin['nbLignes'] = trim( substr($a, 30, 10)); // Nombre de lignes AR (ou PO)
echo date('Y/m/d - H:i:s') ." - Le fichier $idF chargé $fichier contenait $nbLignes/".$tabFin['nbLignes']." lignes.".EOL;
break;
default:
$nbLignes++;
$siren = trim(substr($a, 81 , 9 ));// Siren
$tabUpdate=array();
// Données sur la surveillance
$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 ));// Type de réponse Extelia
$tabUpdate['greRepDate'] = trim(substr($a, 69 , 8 ));// Date de la réponse Extelia
$tabUpdate['greffe'] = trim(substr($a, 77 , 4 ));// N° du Greffe de l'AR
$tabUpdate['greArDate'] = trim(substr($a, 424 , 8 ));// Date de l'Accusé Réception Extelia
$tabUpdate['greArCode'] = trim(substr($a, 432 , 3 ));// Code Accusé Réception
$tabUpdate['greSurvRefLot'] = trim(substr($a, 435 , 8 ));// Référence Extelia du lot de surveillance
$tabUpdate['greSurvRefDetail'] =trim(substr($a, 443 , 10 ));// Référence Extelia de la surveillance détail
$tabUpdate['greDateSurvDeb'] = trim(substr($a, 453 , 8 ));// Date de début de la surveillance
$tabUpdate['greDateSurvFin'] = trim(substr($a, 461 , 8 ));// Date de fin de la surveillance
$tabUpdate['idFichier']=$fichier;
if (!$iDb2->update('greffes_priv_stock', $tabUpdate, "siren=$siren")) {
print_r($tabUpdate);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du siren $siren...".EOL;
die();
}
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
} elseif ($fp && $idF=='IPSPOSCO') { // Fichier Portefeuille
$nbLignes00=$nbLignes99=$nbLignes=$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
$len=strlen($a);
if ($nbLignesTot==0 && ($len<481 || $len>482)) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu (ligne de $len caractères) !".EOL;
die("'$a'");
}
$nbLignesTot++;
}
echo date('Y/m/d - H:i:s') ." - Le fichier Portefeuille à charger $fichier contient $nbLignesTot lignes.".EOL;
//fclose($fp);
//echo date('Y/m/d - H:i:s') ." - Pour l'instant, on ignore les fichiers !".EOL;
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier Portefeuille n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
while (!feof($fp)) {
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabEntete['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
break;
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabFin['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
$tabFin['nbLignes'] = trim( substr($a, 30, 10)); // Nombre de lignes AR (ou PO)
echo date('Y/m/d - H:i:s') ." - Le fichier $idF chargé $fichier contenait $nbLignes/".$tabFin['nbLignes']." lignes.".EOL;
break;
default:
$nbLignes++;
$siren = trim(substr($a, 81 , 9 )); // Siren
$tabUpdate=array();
// Données sur la surveillance
//$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 )); // Type de réponse Extelia = PO
$tabUpdate['dateDerPO'] = trim(substr($a, 69 , 8 )); // Date de la réponse Extelia
$tabUpdate['greffe'] = trim(substr($a, 77 , 4 )); // N° du Greffe de l'AR
$tabUpdate['greArDate'] = trim(substr($a, 424 , 8 )); // Date de l'Accusé Réception Extelia
$tabUpdate['greArCode'] = trim(substr($a, 432 , 3 )); // Code Accusé Réception
$tabUpdate['greSurvRefLot'] = trim(substr($a, 435 , 8 )); // Référence Extelia du lot de surveillance
$tabUpdate['greSurvRefDetail'] =trim(substr($a, 443 , 10 )); // Référence Extelia de la surveillance détail
$tabUpdate['greDateSurvDeb'] = trim(substr($a, 453 , 8 )); // Date de début de la surveillance
$tabUpdate['greDateSurvFin'] = trim(substr($a, 461 , 8 )); // Date de fin de la surveillance
//$tabUpdate['idFichier']=$fichier;
// Infos S&D
//$tabUpdate['sedRef'] = trim(substr($a, 17 , 50 ));// Ref S&D
//$tabUpdate['numGestion'] = trim(substr($a, 90 , 10 ));//
//$tabUpdate['steNom'] = trim(substr($a, 100 , 160 ));//
$tabUpdate['numDebiteur'] = trim(substr($a, 260 , 8 ));//
/*$tabUpdate['steVoieNum'] = trim(substr($a, 268 , 10 ));//
$tabUpdate['steVoieType'] = trim(substr($a, 278 , 4 ));//
$tabUpdate['steVoieLib'] = trim(substr($a, 282 , 20 ));//
$tabUpdate['steVoieComp1'] = trim(substr($a, 302 , 32 ));//
$tabUpdate['steVoieComp2'] = trim(substr($a, 334 , 32 ));//
$tabUpdate['steCP'] = trim(substr($a, 366 , 6 ));//
$tabUpdate['steVille'] = trim(substr($a, 372 , 30 ));//
*/
/** Recherche de la ligne dans le stock S&D
**/
$ret=$iDb2->select('greffes_priv_stock', 'greffe,greArDate,greArCode,greSurvRefLot,greSurvRefDetail,greDateSurvDeb,greDateSurvFin,numDebiteur', "siren=$siren", false, MYSQL_ASSOC);
if (isset($ret[0])) $ret=$ret[0];
else {
echo date ('Y/m/d - H:i:s') ." - ERREUR : Code AR '".$tabUpdate['greArCode']."' non géré pour le siren $siren...".EOL;
$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 ));// Type de réponse Extelia
$tabUpdate['greRepDate'] = trim(substr($a, 69 , 8 ));// Date de la réponse Extelia
$tabUpdate['numGestion'] = trim(substr($a, 90 , 10 ));//
$tabUpdate['steNom'] = trim(substr($a, 100 , 160 ));//
$tabUpdate['steVoieNum'] = trim(substr($a, 268 , 10 ));//
$tabUpdate['steVoieType'] = trim(substr($a, 278 , 4 ));//
$tabUpdate['steVoieLib'] = trim(substr($a, 282 , 20 ));//
$tabUpdate['steVoieComp1'] = trim(substr($a, 302 , 32 ));//
$tabUpdate['steVoieComp2'] = trim(substr($a, 334 , 32 ));//
$tabUpdate['steCP'] = trim(substr($a, 366 , 6 ));//
$tabUpdate['steVille'] = trim(substr($a, 372 , 30 ));//
$tabUpdate['sedRef'] = trim(substr($a, 17 , 50 ));// Ref S&D
$tabUpdate['idFichier']=$fichier;
echo "A METTRE A JOUR".EOL;
print_r($tabUpdate);
die();
}
if ($tabUpdate['greArCode']=='') unset($tabUpdate['greArCode']);
elseif($tabUpdate['greArCode']=='05') { unset($tabUpdate['greArCode']); unset($tabUpdate['greArDate']); unset($tabUpdate['greDateSurvDeb']); unset($tabUpdate['greDateSurvFin']); unset($tabUpdate['numDebiteur']); }
else {
//$eeee=fgets(STDIN);
echo date ('Y/m/d - H:i:s') ." - ERREUR : Code AR '".$tabUpdate['greArCode']."' non géré pour le siren $siren...".EOL;
echo "EN BASE".EOL;
print_r($ret);
echo "A METTRE A JOUR".EOL;
print_r($tabUpdate);
die();
}
if (!$iDb2->update('greffes_priv_stock', $tabUpdate, "siren=$siren")) {
print_r($tabUpdate);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du siren $siren...".EOL;
die();
}
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
continue;
}
else
echo date('Y/m/d - H:i:s'). " - ERREUR lors de l'ouverture du fichier $fichier !".EOL;
@fclose($fp);
} // fin foreach ($tabFichier as $iFic=>$fichier)
echo date('Y/m/d - H:i:s'). " - Fin du programme de gestion des flux Privilèges.".EOL;
die();
?>