batch/1.1/old/getInpi2009.php

1162 lines
55 KiB
PHP
Raw Normal View History

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
function wsLog($service, $siret='', $ref='') {}
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
define('RNCS_IMR_FTP_HOST', '194.5.119.252');
define('RNCS_IMR_FTP_LOGIN', 'score');
define('RNCS_IMR_FTP_PASS', '1eUauTJZ');
define('RNCS_IMR_FTP_DIR', '/var/home_ftp/score/Send/');
define('RNCS_IMR_FTP_LOCALDIR', '/home/data/rncs/extelia/');
define('RNCS_IMR_BACKUP_DIR', '/home/data/rncs/imr/');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIERS]
Chargement du/des flux en provenance de l'INPI (license RNCS IMR).
Options :
2013-06-19 08:24:49 +00:00
-v Mode debug (Verbosit<EFBFBD> au maximum)
-l:XXXX Reprendre <EFBFBD> partir de la ligne XXXX
2013-06-19 08:24:49 +00:00
-s Fichier stock de tous les <EFBFBD>tablissements actifs (pr<EFBFBD>ciser le jour de l'extraction avec -f)
-f:AAAAMMJJ Forcer la dateFlux de ce chargement
-r Ne pas ex<EFBFBD>cuter en r<EFBFBD>el
-j Ne pas se connecter au serveur FTP d'Extelia (INPI/IMR via Infogreffe)
2013-06-19 08:24:49 +00:00
-m Mettre <EFBFBD> jour les siren des dirigeants PM
";/*
-p Chargement d'une ancienne notice (pas de modification de la zone ACTIF chargement des zones diff<EFBFBD>rentes)
-u Ne pas mettre <EFBFBD> jour la table identite de l'insee
-h Ne pas charger la notice dans la base des 'historiques'
";*/
$iDb=new WDB();
global $iInsee;
$iInsee=new MInsee();
$iRncs=new MRncs();
//$iWs=new WsEntreprise();
$nbSiretInvalides=0;
2013-06-19 08:24:49 +00:00
$modeDebug=false; // Par d<>faut, pas de message de debug
$ftpStep=true; // Par d<>faut, se connecte au serveur FTP de l'INP
$stock=0; // Stock IMR complet = 1 !
$actifIni=1; // L'<27>tat actif est 1 sinon 11 si stock !
$jourStock=0; // Jour du stock SSAMMJJ
$env=''; // Suffix des tables de chargements (en prod '' sinon '2', etc... V<>rifier que les tables existes)
$strMailInfo=''; // Initialisation du contenu du message d'information
$doMajSirenDir=false; // Mettre <20> jour les siren des dirigeants
$tabFichiers=array(); // Tableau des Fichiers t<>l<EFBFBD>charg<72>s sur le FTP
$tabFichier=array(); // Fichiers locaux en attente de traitement
$tabFichLigneCmd=array(); // Fichiers pass<73>s en ligne de commande
$ftpDelete=true; // Par d<>faut on supprime les fichiers t<>l<EFBFBD>charg<72>s
$numReprise=0;
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
2013-06-19 08:24:49 +00:00
case 'v': $modeDebug=true; break;
case 'j': $ftpStep=false; break;
case 'l': $numReprise=substr($argv[$i],3,strlen($argv[$i])-3); break;
case 's': $stock=1; $actifIni=11;
case 'f': $jourStock=substr($argv[$i],3,8); break;
case 'r': $env='2'; break;
2013-06-19 08:24:49 +00:00
case 'm': $doMajSirenDir=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if ($ftpStep) {
echo date ('Y/m/d - H:i:s') . " - D<>but du traitement de chargement du flux INPI".EOL;
$conn_id = ftp_connect(/*'ftp://'.*/RNCS_IMR_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, RNCS_IMR_FTP_LOGIN, RNCS_IMR_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<75>ration du contenu d'un dossier
$contents = ftp_nlist($conn_id, RNCS_IMR_FTP_DIR);
//print_r($contents);
//die();
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('/licence/i', $server_fileName)) {
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' n'est pas un flux IMR.".EOL;
continue;
} elseif ($modeDebug)
echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' est un flux IMR...".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 <20>t<EFBFBD> modifi<66> le ".date("d/m/Y <20> 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<75>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(RNCS_IMR_FTP_LOCALDIR . $server_fileName)) {
$dateLoc=filemtime(RNCS_IMR_FTP_LOCALDIR . $server_fileName);
$tabFichiers[$server_fileName]['dateDownload']=date('Y-m-d H:i:s', $dateLoc);
$tailleLoc=filesize(RNCS_IMR_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, RNCS_IMR_FTP_LOCALDIR . basename($server_file), $server_file, FTP_BINARY)) {
$tFin = microtime(true);
$tDur = round($tFin-$tDeb);
$tailleDistKo=round($tailleDist/1024,1);
$tRatio=round($tailleDistKo/$tDur,1);
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName t<>l<EFBFBD>charg<72> avec succ<63>s : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName t<>l<EFBFBD>charg<72> avec succ<63>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<69> avec succ<63>s.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName supprim<69> avec succ<63>s.".EOL;
}
} else
die (date ('Y/m/d - H:i:s')." - ERREUR : Fichier distant $server_file non t<>l<EFBFBD>charg<72> !".EOL);
} elseif ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Le fichier $server_fileName a d<>j<EFBFBD> <20>t<EFBFBD> t<>l<EFBFBD>charg<72> le ".$tabFichiers[$server_fileName]['dateDownload']."($tailleDistKo Ko).".EOL;
}
}
// Fermeture de la connexion
ftp_close($conn_id);
echo date ('Y/m/d - H:i:s')." - Fin de la r<>cup<75>ration des fichiers IMR en FTP.".EOL;
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir(RNCS_IMR_FTP_LOCALDIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..') {
if (strtolower(substr($filename,-3))=='.gz') {
$tDeb = microtime(true);
$data = file_get_contents('compress.zlib://'.RNCS_IMR_FTP_LOCALDIR.$filename);
if ($data) {
$filenameGz=$filename;
$filename=substr($filenameGz,0,strlen($filenameGz)-3);
file_put_contents(RNCS_IMR_FTP_LOCALDIR.$filename, $data);
unset($data);
$tailleGz=round(filesize(RNCS_IMR_FTP_LOCALDIR.$filenameGz)/1024,1);
unlink(RNCS_IMR_FTP_LOCALDIR.$filenameGz);
$tailleUnz=round(filesize(RNCS_IMR_FTP_LOCALDIR.$filename)/1024,1);
$tFin = microtime(true);
$tDur = round($tFin-$tDeb);
echo date ('Y/m/d - H:i:s')." - Fichier $filename d<>compress<73> : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compress<73>s)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier $filename d<>compress<73> : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compress<73>s)".EOL;
} else
die(date ('Y/m/d - H:i:s') . " - ERREUR : D<>compression impossible de $filenameGz !".EOL);
}
$tabFichier[] = RNCS_IMR_FTP_LOCALDIR.$filename;
}
}
sort($tabFichier);
}
if (count($tabFichier)==0)
$tabFichier=$tabFichLigneCmd;
2013-06-19 08:24:49 +00:00
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0 && !$doMajSirenDir)
die(date ('Y/m/d - H:i:s') . " - Aucun fichier RNCS IMR de l'INPI <20> traiter (--help pour plus d'options).".EOL);
elseif (!$ftpStep)
echo date ('Y/m/d - H:i:s') . " - D<>but du traitement de chargement du flux INPI".EOL;
/*
print_r($tabFichier);
die();
/*
// Test du matching de tous les mandataires INPI
$tabTmp=$iDb->select('rncs_jugements', "adm1nom, adm1adrNum, adm1adrInd, adm1adrVoie, adm1adrCP, adm1adrVille, count(*) AS nb", "1 GROUP BY adm1nom ORDER BY nb DESC", true, MYSQL_ASSOC);
foreach ($tabTmp as $nbMand=>$mand) {
$idMand=$iRncs->getIdMandataireInpi($mand['adm1nom']);
if ($idMand==false) echo $mand['adm1nom']."\t".$mand['nb']."\t".$mand['adm1adrNum']."\t".$mand['adm1adrInd']."\t".$mand['adm1adrVoie']."\t".$mand['adm1adrCP']."\t".$mand['adm1adrVille']."\t".$idMand.EOL;
}
die();
*/
/** Lecture des siren en demande de r<><72>mission **/
$tabTmp=$iDb->select('rncs_demandes', 'siren, dateDemande', 'dateReponse IS NULL', false, MYSQL_ASSOC);
$tabDemIMR=array();
foreach ($tabTmp AS $tmp)
$tabDemIMR[$tmp['siren']]=$tmp['dateDemande'];
$nbDemIMR=count($tabDemIMR);
if ($nbDemIMR>0) echo date('Y/m/d - H:i:s'). " - Il y a $nbDemIMR siren en attente de r<><72>mission IMR.".EOL;
//die();
foreach ($tabFichier as $iFic=>$fichier)
{
$fichierAvecRep=$fichier;
$fichier=basename($fichier);
$dateInsert=date('YmdHis');
if (file_exists(REP_TEMP.basename($fichier).'.lock')) {
$tab2Tmp=explode(';',file_get_contents(REP_TEMP.basename($fichier).'.lock'));
$date2Tmp=WDate::DateT('YmdHis', 'd/m/Y H:i:s',$tab2Tmp[1]);
$nbL2Tmp=$tab2Tmp[2];
// fwrite($fpT, date('Ymd-His')."$fichier;$dateInsert;$nbLignes;
$message="Le fichier $fichier est en cours de chargement depuis le $date2Tmp ($nbL2Tmp lignes)...";
echo date('Y/m/d - H:i:s')." - $message".EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR - ERREUR !!!', $message);
die();
}
/** Le fichier a-t-il d<>j<EFBFBD> <20>t<EFBFBD> charg<72> **/
$tabTmp=$iDb->select('rncs_chargements', 'dateChargementDeb, dateChargementFin, taille, nbLignesTot', "nomFichier='$fichier'", false, MYSQL_ASSOC);
if (@$tabTmp[0]['nbLignesTot']*1>0) {
$dateDeb=$tabTmp[0]['dateChargementDeb'];
$dateFin=$tabTmp[0]['dateChargementFin'];
$taille=$tabTmp[0]['taille'];
echo date('Y/m/d - H:i:s'). " - Le fichier $fichier a d<>j<EFBFBD> <20>t<EFBFBD> charg<72> le $dateDeb ($taille octets)...".EOL;
continue;
}
echo date('Y/m/d - H:i:s'). " - D<>but du traitement du fichier '$fichier'...".EOL;
$dateDispo=date('YmdHis', filemtime($fichierAvecRep));
$dateFichierMod=substr(''.$dateDispo,0,8)*1;
/*if(preg_match('/_([0-9]{8,8})\.dat/Ui', $fichierAvecRep, $matches))
$dateFichierNom=$matches[1];
else
$dateFichierNom=0;*/
$dateFichierNom=substr($fichier,0,8)*1;
2013-06-19 08:24:49 +00:00
if ($jourStock>0/* && $stock==0*/) $dateFlux=$jourStock;
elseif ($dateFichierMod==$dateFichierNom) $dateFlux=$dateFichierMod;
elseif ($dateFichierMod<>0 && $dateFichierNom==0) $dateFlux=$dateFichierMod;
else {
echo date ('Y/m/d - H:i:s') . " - La date du fichier ($dateFichierMod) ne correspond pas avec le nom '$fichier' !".EOL;
$dateFlux=$dateFichierNom;
if (($dateFlux*1)<20080101 || ($dateFlux*1)>(date('Ymd')*1))
die();
}
//die();
$fp=fopen($fichierAvecRep, 'r');
if ($fp) {
$nbLignes=$nbLignes00=$nbLignes01=$nbLignes02=$nbLignes02p=$nbLignes03=$nbLignes04=$nbLignes05=$nbLignes06=0;
$tabEntete=array();
for($i=0; $i<7; $i++) $nb[$i]=$nbInsert[$i]=$nbUpdate[$i]=0;
2013-06-19 08:24:49 +00:00
$nb[30]=$nbInsert[30]=$nbUpdate[30]=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 <20> charger $fichier n'est pas au format IMR Infogreffe/Extelia !".EOL;
die();
}
$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 4096);
$nbLignesTot++;
}
echo date('Y/m/d - H:i:s') ." - Le fichier <20> 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<61> 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;
}
}
}
if ($stock && $iFic==0) {
$stockD=substr($jourStock,6,2)*1;
$stockM=substr($jourStock,4,2)*1;
$stockY=substr($jourStock,0,4)*1;
if (!$jourStock || $stockY<2009 || $stockY>date('Y') || $stockM==0 || $stockM>12 ||
$stockD==0 || $stockD>31 || $jourStock>date('Ymd')) {
while (1) {
echo date('Y/m/d - H:i:s') ." - Entrez-le jour du stock au format AAAAMMJJ (ex: $dateFlux) ... ";
$saisie = trim(strtoupper(fgets(STDIN)));
if (strlen($saisie)==8) {
$stockD=substr($saisie,6,2)*1;
$stockM=substr($saisie,4,2)*1;
$stockY=substr($saisie,0,4)*1;
if ($stockY>=2009 && $stockY<=date('Y')*1) {
if ($stockM>0 && $stockM<13) {
if ($stockD>0 && $stockD<13 && ($saisie*1)<=(date('Ymd')*1))
break;
else echo "ERREUR : Jour incorrect ou date de notice dans le futur !".EOL;
} else echo "ERREUR : Mois incorrecte !".EOL;
} else echo "ERREUR : Ann<6E>e incorrect ou dans le futur !".EOL;
} else echo "ERREUR : Saisie incorrecte !".EOL;
}
}
if ($stockM<10) $stockM='0'.$stockM;
else $stockM='' .$stockM;
if ($stockD<10) $stockD='0'.$stockD;
else $stockD='' .$stockD;
$jourStock=''.$stockY.$stockM.$stockD;
$message=date('Y/m/d - H:i:s'). " - D<>but de traitement du fichier stock n<>$iFic, $fichier...".EOL;
}
elseif ($stock)
$message=date('Y/m/d - H:i:s'). " - D<>but de traitement du fichier stock n<>$iFic, $fichier...".EOL;
else
$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, 4096);
$sirenPre=0; // Valeur du Siren pr<70>c<EFBFBD>dent
$siren=0;
$modifDir=$modifJug=false;
$table='';
while (!feof($fp)) {
/** Ajout/Maj des infos du verrou **/
if ($nbLignes==0 || $nbLignes%10000==0) {
$fpT=fopen(REP_TEMP.basename($fichier).'.lock', 'w');
fwrite($fpT, date('Ymd-His')."$fichier;$dateInsert;$nbLignes;$nbLignes01;$nbLignes02;$nbLignes02p;$nbLignes03;$nbLignes04;$nbLignes05;$nbLignes06".EOL);
fclose($fpT);
}
$nbLignes++;
if ($nbLignes<$numReprise) continue;
$siren = trim( substr($a, 0, 9)); // SIREN
$codeEnr = ''.trim( substr($a, 9, 2));
/** A supprimer deb
if ($nbLignes%100000==0) {
echo date('Y/m/d - H:i:s'). " - Fichier n<>$iFic, $fichier : $nbLignes lignes, $siren $codeEnr : $nbLignes01 entrep, $nbLignes02 <20>tab, $nbLignes03 dir, $nbLignes04 jug, $nbLignes05 actes".EOL;
}
if ($codeEnr=='03' || $codeEnr=='04' || $codeEnr=='05') {
$a = fgets($fp, 4096);
$sirenPre=$siren;
continue;
}
// A supprimer fin **/
switch ($codeEnr) {
case '00': // Structure de contr<74>le (1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 0, 8)); // Date cr<63>ation fichier par Infogreffe
$tabEntete['numVersion'] = trim( substr($a, 8, 1)); // Version du cahier des charges
$tabEntete['nbEntrep'] = trim( substr($a, 11, 10)); // Nombre d'Entreprises
$tabEntete['nbRecords'] = trim( substr($a, 21, 10)); // Nombre d'Enregistrements
// Date de d<>but et de fin de p<>riode utilis<69>es pour g<>n<EFBFBD>rer le fichier IMR
$tabEntete['datePeriodeDeb']= trim( substr($a, 31, 8));
$tabEntete['datePeriodeFin']= trim( substr($a, 39, 8));
//continue;
break;
case '01':
$nbLignes01++;
if ($sirenPre>0) {
/** Passage <20> Actif/Inactif des <20>tablissements pr<70>c<EFBFBD>dents **/
$ret=$iDb->select('rncs_etab'.$env, 'actif, COUNT(*) AS nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_etab'.$env, array('actif'=>0,'dateFermeture'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') . " - Les <20>tablissements du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".(@$nbEtab[10]*1)." d<>j<EFBFBD> inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun <20>tablissement pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
/** Passage <20> inactif des dirigeants **/
if ($modifDir) {
$ret=$iDb->select('rncs_dirigeants'.$env, 'actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_dirigeants'.$env, array('actif'=>0,'dateFin'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".(@$nbEtab[10]*1)." d<>j<EFBFBD> inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun dirigeants pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
}
/** Suppressions des jugements non transmis **/
if ($modifJug) {
$ret=$iDb->select('rncs_jugements'.$env, 'actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
if ($actif<>0)
// Si le siren est encore actif et que le jugement n'est pas transmit, il doit s'agir d'une correction de jugement
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>0,'dateSuppr'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
else
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>1), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
2013-06-19 08:24:49 +00:00
echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".(@$nbEtab[10]*1)." d<>j<EFBFBD> inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun jugements pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
}
}
$modifEtab=$modifDir=$modifJug=false;
$table='rncs_entrep'.$env;
if (trim( substr($a, 11, 2))=='00') $actif=$actifIni;
elseif (trim( substr($a, 11, 2))=='99') $actif=0;
else {
echo(date('Y/m/d - H:i:s') ." - ERREUR : Code ACTIF inconnu '".substr($a,11,2)."' dans le flux $fichier <20> la ligne $nbLignes siren $siren !".EOL);
die($a.EOL);
}
$raisonSociale = trim( substr($a, 27, 160));
$numRC = trim( substr($a, 17, 10));
/*if ($numRC<>'' && substr($numRC,0,2)*1>=30)
$numRC2='19'.$numRC;
elseif ($numRC<>'' && substr($numRC,0,2)*1<30)
$numRC2='20'.$numRC;
else
$numRC2='';*/
$numRC2=$numRC;
$numRC =substr($numRC2,2);
$sexe = trim( substr($a, 535, 1));
$cj = trim( substr($a, 541, 10));
/** L'entreprise est elle une personne physique **/
$nomUsage=$nom=$prenom='';
if ($sexe=='M' || $sexe=='F' || substr($cj,0,1)*1==1) {
$nom = $raisonSociale;
$entrepreneur = true;
} else
$entrepreneur = false;
/*
if (preg_match('/^(.*) n(?:<3A>|e|<7C>)e (.*)$/Uis', $raisonSociale, $matches)) {
$rs=trim($matches[1]);
$nomUsage=trim($matches[2]);
} else
$rs=$raisonSociale;
$tabNom=explode(' ', $rs);
for($i=0; isset($tabNom[$i]); $i++)
if ($tabNom[$i]==strtoupper($tabNom[$i]))
$nom.=$tabNom[$i].' ';
else
$prenom.=$tabNom[$i].' ';
}*/
$nomUsage = trim( substr($a, 267, 80));
$prenom = trim( substr($a, 187, 80));
$numGreffe=trim( substr($a, 13, 4))*1;
$tabUpdate=array(
'actif' => $actif,
'numGreffe' => $numGreffe, // Num<75>ro de gestion (code greffe)
'triCode' => $iRncs->getCodeBodaccTribunal($numGreffe), // Num<75>ro de gestion (code greffe)
'triId' => $iRncs->getIdTribunal($numGreffe), // Num<75>ro de gestion (code greffe)
'numRC' => $numRC, // Ancien num<75>ro de gestion (num<75>ro RC, ann<6E>e sur 2)
'numRC2' => $numRC2, // Nouveau num<75>ro de gestion (num<75>ro RC, ann<6E>e sur 4)
'raisonSociale'=>strtoupper($raisonSociale), // Nom 90 c
'nom' => strtoupper($nom), // Nom 90 c
'prenom' => ucwords(strtolower($prenom)),
'nomUsage' => strtoupper($nomUsage),
'sigle' => strtoupper(trim( substr($a, 347, 80))), // Sigle
'dateNaiss' => trim( substr($a, 427, 8))*1, // Date de naissance (SSAAMMJJ)
'lieuNaiss' => trim( substr($a, 435, 100)), // Lieu de naissance
'sexe' => $sexe, // Sexe (M/F)
'nationalite'=> trim( substr($a, 597, 3)), // Code nationalit<69>
'pays'=>$iRncs->getPaysInpi(trim( substr($a, 190, 3))*1), // Code nationalit<69>
'naf' => trim( substr($a, 536, 5)), // Code APE de l'entreprise
'cj' => $cj, // Code cat<61>gorie juridique
'capitalMontant'=>trim(substr($a, 551, 15))*1, // Capital (en unit<69>)
'capitalCent'=> trim( substr($a, 566, 2)), // Capital (centimes)
'capitalDevise'=>trim(substr($a, 568, 3)), // Code devise du capital
'capitalDevIso'=>$iRncs->getDeviseInpi(trim(substr($a, 568, 3))*1), // Code devise du capital
'dateImma' => trim( substr($a, 581, 8))*1, // Date d<>immatriculation SSAAMMJJ
'dateRad' => trim( substr($a, 589, 8))*1, // Date de radiation SSAAMMJJ
'capitalType'=> trim( substr($a, 578, 3)), // Code type de capital SOC ou VAR SOC = Capital social VAR = Capital variable
//'provisoires'=> trim( substr($a, 239, 1)), // Donn<6E>es provisoires P ou blanc = <20>P<EFBFBD> si donn<6E>es provisoires
);
$ret=$iDb->select('rncs_entrep'.$env, 'actif,numGreffe,numRC2,raisonSociale,nom,prenom,nomUsage,sigle,dateNaiss*1 AS dateNaiss,lieuNaiss,sexe,nationalite,naf,cj,capitalMontant,capitalDevIso,dateImma*1 AS dateImma,dateRad*1 AS dateRad,capitalType,capitalCent,provisoires', "siren=$siren", false, MYSQL_ASSOC);
if (is_array($ret) && count($ret)>0) {
$tabSelect=$ret[0];
$tabDiff=array_diff($tabSelect,$tabUpdate);
if (!$stock && count($tabDiff)>0) {
foreach ($tabDiff as $field=>$value)
$iDb->insert('rncs_modifs'.$env, array( 'siren'=>$siren,
'table'=>$table,
'champs'=>$field,
'valeur'=>$value,
'flux'=>$dateFlux));
}
2013-06-19 08:24:49 +00:00
} elseif ($stock) {
echo date('Y/m/d - H:i:s'). " - Fichier n<>$iFic, $fichier : $nbLignes lignes, $siren inconnu, $numGreffe $numRC2 pr<70>sent dans le stock IMR ($raisonSociale $nom $prenom) !".EOL;
$message.=date ('Y/m/d - H:i:s') . " - Fichier n<>$iFic, $fichier : $nbLignes lignes, $siren inconnu, $numGreffe $numRC2 pr<70>sent dans le stock IMR ($raisonSociale $nom $prenom) !".EOL;
}
/** Ce siren fait parti des demandes de r<><72>mission de dossier IMR faites par S&D **/
2013-06-19 08:24:49 +00:00
if (isset($tabDemIMR[$siren]) && !$stock) {
$iDb->update('rncs_demandes'.$env, array( 'dateReponse'=>$dateInsert,
'flux'=>$dateFlux), "siren=$siren AND dateReponse IS NULL", false, 0, true);
echo date('Y/m/d - H:i:s'). " - Dossier r<><72>mis sur $siren le ".$tabDemIMR[$siren]." re<72>u dans le flux IMR du $dateFlux.".EOL;
$message.=date ('Y/m/d - H:i:s') . " - Dossier r<><72>mis sur $siren le ".$tabDemIMR[$siren]." re<72>u dans le flux IMR du $dateFlux.".EOL;
unset($tabDemIMR[$siren]);
}
$tabInsert=array_merge($tabUpdate, array( 'siren' => $siren,
'sirenValide'=> $iInsee->valideSiren($siren),
'flux' => $dateFlux,
'dateInsert'=> $dateInsert,
)
);
break;
case '02':
$nbLignes02++;
$table='rncs_etab'.$env;
/** Marquage des <20>tablissements <20> actif provisoire **/
if (!$modifEtab) {
$ret=$iDb->query("UPDATE LOW_PRIORITY $table SET actif=actif+10 WHERE siren=$siren");
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Les <20>tablissements du siren $siren sont OK pour la mise <20> jour ($ret).".EOL;
}
$modifEtab=true;
$nic=trim(substr($a, 11, 5))*1;
if ($nic>=99990 || $nic==0) {
$nbLignes02p++;
$table='rncs_etab_prov'.$env;
}
$adr1=strtoupper(trim( substr($a, 417, 40))); // Ligne d'adresse 1
$adr2=strtoupper(trim( substr($a, 457, 40))); // Ligne d'adresse 2
$adr3=strtoupper(trim( substr($a, 497, 40))); // Ligne d'adresse 3
$tabAdresse=getAdresse($adr1,$adr2,$adr3);
$typEtab=trim(substr($a, 16, 1))*1;
switch ($typEtab) {
case 0: $siege=1; break; // Si<53>ge
case 1: $siege=2; break; // Etablissement Principal
default: $siege=0; break; // Etablissement secondaire
}
$tabUpdate=array(
'siege' => $siege,
'enseigne' => strtoupper(trim( substr($a, 17, 200))), // Enseigne Alpha.
'nomCommercial'=>strtoupper(trim( substr($a, 217, 200))), // Nom Commercial Alpha.
'adrNumVoie'=> @$tabAdresse['num'], // N<> dans la voie Num.
'adrIndRep' => @$tabAdresse['indRep'],
'adrTypeVoie'=> @$tabAdresse['typeVoie'], // BTQ Alpha.
'adrVoie' => strtoupper(@$tabAdresse['libVoie']),// Type et libell<6C> de voie Alpha.
'adresse1' => $adr1, // Ligne d'adresse 1
'adresse2' => $adr2, // Ligne d'adresse 2
'adresse3' => $adr3, // Ligne d'adresse 3
'cp' => trim( substr($a, 537, 5)), // Code Postal Alpha.
'commune' => strtoupper(trim( substr($a, 542, 30))), // Commune Alpha.
'adrComp' => @$tabAdresse['adrComp0'], // Compl<70>ment d'adresse Alpha.
'naf' => trim( substr($a, 572, 5)), // APE de l'<27>tablissement Alpha.
);
if ($tabUpdate['adrVoie']=='NULL') $tabUpdate['adrVoie']='';
if (strtoupper($tabUpdate['adresse1'])=='NULL') $tabUpdate['adresse1']='';
if ($nic<99990) {
$ret=$iDb->select($table, 'siege,enseigne,adrNumVoie,adrIndRep,adrLibVoie,cp,commune,adrComp,naf', "siren=$siren AND nic=$nic", false, MYSQL_ASSOC);
if (is_array($ret) && count($ret)>0) {
$tabSelect=$ret[0];
/*if ($tabSelect['siege']==1 && ( // Si c'est un <20>tablissement si<73>ge...
($tabSelect['adrNumVoie']<>$tabUpdate['adrNumVoie'] && $tabSelect['adrNumVoie']>0) ||
($tabSelect['adrLibVoie']<>$tabUpdate['adrLibVoie'] && $tabSelect['adrLibVoie']<>'' ) ||
substr(''.$tabSelect['cp'],0,2)<>substr(''.$tabUpdate['cp'],0,2) ||
$tabSelect['commune']<>$tabUpdate['commune']) ) { // ... et que son adresse change
$table='rncs_etab_prov';
$iDb->update('rncs_etab', array('actif'=>1), "siren=$siren AND nic=$nic");
} else {*/
$tabDiff=array_diff($tabSelect,$tabUpdate);
if (!$stock && count($tabDiff)>0) {
foreach ($tabDiff as $field=>$value)
$iDb->insert('rncs_modifs'.$env, array( 'siren'=>$siren,
'nic'=>$nic,
'table'=>$table,
'champs'=>$field,
'valeur'=>$value,
'flux'=>$dateFlux));
}
//}
}
}
$tabUpdate['actif']=1;
$tabInsert=array_merge($tabUpdate, array( 'siren' => $siren,
'nic' => $nic,
'flux' => $dateFlux,
'dateInsert'=> $dateInsert,
)
);
break;
case '03':
$nbLignes03++;
$table='rncs_dirigeants'.$env;
if (!$modifDir) {
$ret=$iDb->query("UPDATE LOW_PRIORITY $table SET actif=actif+10 WHERE siren=$siren");
//if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $siren sont OK pour la mise <20> jour ($ret).".EOL;
}
$modifDir=true;
// Type de dirigeant
$rsDir='';
$sirenDir=0;
$typeDir = trim( substr($a, 450, 2)); // PP = Personne physique, PM = Personne morale
$nomDir = trim( substr($a, 21, 160)); // Nom d<>usage ou raison sociale
$civilite=strtoupper(trim(substr($a, 449, 1))); // Code Civilit<69> du dirigeant ==> Sexe M ou F
// if ($civilite<>'M' && $civilite<>'MME' && $civilite<>'MLLE' && $civilite<>'')
if ($civilite<>'M' && $civilite<>'F' && $civilite<>'')
die(date('Y/m/d - H:i:s') ." - ERREUR : Civilit<69> '$civilite' inconnue !".EOL);
if ($civilite=='F') $civilite='MME';
$prenomDir=trim( substr($a, 181, 80));
$dateNaiss=trim(substr($a, 341, 8));
$lieuNaiss=strtoupper(trim(substr($a, 349, 100)));
$codeFonction = trim(substr($a, 11, 10))*1;
if ($typeDir=='PM'){
$sirenDir = 0; // Chercher le siren du dirigeant
$rsDir = $nomDir;
$nomDir = trim( substr($a, 692, 80)); // Nom Repr<70>s. du dirigeant
//if ($prenomDir=='' && $dateNaiss*1==0 && $lieuNaiss=='')
/*if (strlen($rsDir)>2 && $civilite<>'' && $nomDir<>'' && $prenomDir<>'') {
$tabRet=@$iWs->searchNomAdr($rsDir,'','','',1,1,0,10,10,false,true);
$nbReps=$tabRet['results']['nbReponses'];
if ($nbReps>0) {
$tabSirenProbable=array();
foreach ($tabRet['results']['reponses'] as $iRep=>$entrep) {
//$sirenProbable=$entrep['Siren'];
$tabRet2=@$iWs->getDirigeants($entrep['Siren']);
foreach ($tabRet2['result'] as $iRep=>$dirig) {
//echo $entrep['Siren']." RECHERCHE : $civilite $nomDir $prenomDir".EOL;
//echo $entrep['Siren'].' on trouve : '.$dirig['Civilite'].' '.$dirig['Nom'].' '.$dirig['Prenom'].EOL;
if (strtoupper($civilite) == strtoupper($dirig['Civilite']) &&
strtoupper($nomDir) == strtoupper($dirig['Nom']) &&
strtoupper($prenomDir)== strtoupper($dirig['Prenom']))
$tabSirenProbable[]=$entrep['Siren'];
}
}
$tabSirenProbable=array_unique($tabSirenProbable);
if (count($tabSirenProbable)==1) {
$sirenDir=end($tabSirenProbable);
echo date('Y/m/d - H:i:s') ." - Ligne $nbLignes / $nbLignesTot - Siren $siren dirig<69> par $sirenDir...".EOL;
}
}
}*/
}
$depSte=floor($numGreffe/100);
if ($depSte>96) $depSte=floor($numGreffe/10);
$tabUpdate=array(
'actif' => 1,
'raisonSociale'=>$raisonSociale,
'typeDir' => $typeDir,
'dirRS' => $rsDir,
'dirSiren' => $sirenDir,
'adr_dep' => $depSte,
'nom' => $nomDir,
'fonction_code'=>$iRncs->getCodFctBodaccFctDir($codeFonction), // Code fonction du dirigeant
'fonction_lib'=>$iRncs->getLibFctDir($codeFonction),
'source' => 'imr',
'prenom' => ucwords(strtolower($prenomDir)), // Pr<50>nom du Dirigeant
'naissance_date'=>$dateNaiss, // Date de Naissance du dirigeant Alpha. SSAAMMJJ
'naissance_lieu'=>$lieuNaiss, // Lieu de Naissance
'civilite' => $civilite,
'naissance_nom'=>trim(substr($a, 261, 80)), // Nom de naissance du dirigeant
'adresse' => trim(substr($a, 452, 240)), // Nom de naissance du dirigeant
);
$ret=$iDb->select($table, 'count(*) as nb', "siren=$siren AND ".
"civilite='". $tabUpdate['civilite'] ."' AND ".
"nom='". addslashes($tabUpdate['nom']) ."' AND ".
"prenom='". addslashes($tabUpdate['prenom']) ."' AND ".
"naissance_nom='". addslashes($tabUpdate['naissance_nom']) ."' AND ".
"naissance_date='". $tabUpdate['naissance_date'] ."' AND ".
"fonction_code=". $iRncs->getCodFctBodaccFctDir($codeFonction), false, MYSQL_ASSOC);
/* if (is_array($ret) && count($ret)>0) {
$tabSelect=$ret[0];
$tabDiff=array_diff($tabSelect,$tabUpdate);
if (count($tabDiff)>0) {
foreach ($tabDiff as $field=>$value)
$iDb->insert('rncs_modifs', array( 'siren'=>$siren,
'table'=>$table,
'champs'=>$field,
'valeur'=>$value));
}
}
*/
$tabInsert=array_merge($tabUpdate, array( 'siren' => $siren,
'flux' => $dateFlux,
'dateInsert'=> $dateInsert,
)
);
if ($ret[0]['nb']==0) {
$iDb->insert($table, $tabInsert);
/*echo "'$table':".EOL;
print_r($tabInsert);
echo mysql_errno().' : '.mysql_error().EOL;*/
$nbInsert[3]++;
2013-06-19 08:24:49 +00:00
if ($typeDir=='PM') $nbInsert[30]++;
//if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Insertion du dirigeant ". $tabUpdate['nom']." ".$tabUpdate['prenom'].", siren=$siren !".EOL;
} else {
$iDb->update($table, $tabUpdate, "siren=$siren AND ".
"civilite='". $tabUpdate['civilite'] ."' AND ".
"nom='". addslashes($tabUpdate['nom']) ."' AND ".
"prenom='". addslashes($tabUpdate['prenom']) ."' AND ".
"naissance_nom='". addslashes($tabUpdate['naissance_nom']) ."' AND ".
"naissance_date='". $tabUpdate['naissance_date'] ."' AND ".
"fonction_code=". $iRncs->getCodFctBodaccFctDir($codeFonction), false, 0, true);
$nbUpdate[3]++;
2013-06-19 08:24:49 +00:00
if ($typeDir=='PM') $nbUpdate[30]++;
//if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - MAJ du dirigeant ". $tabUpdate['nom']." ".$tabUpdate['prenom'].", siren=$siren !".EOL;
}
break;
case '04':
$nbLignes04++;
$table='rncs_jugements'.$env;
/** Marquage des jugements <20> actif provisoire **/
if (!$modifJug) {
$ret=$iDb->query("UPDATE LOW_PRIORITY $table SET actif=actif+10 WHERE siren=$siren");
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $siren sont OK pour la mise <20> jour ($ret).".EOL;
}
$modifJug=true;
$type1=$type2='';
$adm1nom= trim( substr($a, 39, 100));
$adm2nom= trim( substr($a, 304, 100));
$codeJugement= trim( substr($a, 19, 10));
$codeFonction1= trim( substr($a, 29, 10));
$codeFonction2= trim( substr($a, 294, 10));
$type1=@$iRncs->getCodFctBodaccFctDir($codeFonction1);
if ($type1*1==1900) $type1='L';
$type2=@$iRncs->getCodFctBodaccFctDir($codeFonction2);
if ($type2*1==1900) $type2='L';
// Adresse 1
$adm1adr1=trim( substr($a, 139, 40)); // Admin. 1 : Adresse Ligne 1
$adm1adr2=trim( substr($a, 179, 40)); // Admin. 1 : Adresse Ligne 2
$adm1adr3=trim( substr($a, 219, 40)); // Admin. 1 : Adresse Ligne 3
$tabAdr1=getAdresse($adm1adr1,$adm1adr2,$adm1adr3);
// Adresse 2
$adm2adr1=trim( substr($a, 139, 40)); // Admin. 2 : Adresse Ligne 1
$adm2adr2=trim( substr($a, 179, 40)); // Admin. 2 : Adresse Ligne 2
$adm2adr3=trim( substr($a, 219, 40)); // Admin. 2 : Adresse Ligne 3
$tabAdr2=getAdresse($adm2adr1,$adm2adr2,$adm2adr3);
$dateEffet = trim( substr($a, 11, 8));
$adrVille1=strtoupper(trim( substr($a, 264, 30)));
if ($adrVille1=='') $adrVille1=$adm1adr3;
$adrVille2=strtoupper(trim( substr($a, 529, 30)));
if ($adrVille2=='') $adrVille2=$adm2adr3;
//adm1adrNum adm1adrInd adm1adrType adm1adrLibVoie adm1adrVoie adm1adr1 adm1adr2 adm1adr3
$tabUpdate=array(
'siren' => $siren,
'dateEffet' => $dateEffet, // Date d'effet
'codeJugement'=> $codeJugement, // Code Jugement
'actif' => 1,
'codeEven' => $iRncs->getCodeEvenJugementInpi($codeJugement),
'adm1codeFct' => $codeFonction1, // Admin. 1 : Code Fonction
'adm1type' => $type1, // Code type Mandataire
'adm1id' => $iRncs->getIdMandataireInpi($adm1nom),
'adm1nom' => $adm1nom, // Admin. 1 : NOM
'adm1adrNum' => @$tabAdr1['num'], // Admin. 1 : N<> dans la voie
'adm1adrInd' => @$tabAdr1['indRep'], // Admin. 1 : BTQ
'adm1adrType' => @$tabAdr1['typeVoie'],
'adm1adrLibVoie'=> @$tabAdr1['libVoie'],
//'adm1adrVoie' => trim( substr($a, 90, 60)), // Admin. 1 : Type et libell<6C> de voie
'adm1adr1' => $adm1adr1, // Admin. 1 : N<> dans la voie
'adm1adr2' => $adm1adr2, // Admin. 1 : N<> dans la voie
'adm1adr3' => $adm1adr3, // Admin. 1 : N<> dans la voie
'adm1adrCP' => trim( substr($a, 259, 5)), // Admin. 1 : Code Postal
'adm1adrVille'=> $adrVille1, // Admin. 1 : Commune
'adm2codeFct' => $codeFonction2, // Admin. 2 : Code Fonction
'adm2type' => $type2,
'adm2id' => $iRncs->getIdMandataireInpi($adm2nom),
'adm2nom' => $adm2nom, // Admin. 2 : NOM
'adm2adrNum' => @$tabAdr2['num'], // Admin. 2 : N<> dans la voie
'adm2adrInd' => @$tabAdr2['indRep'], // Admin. 2 : BTQ
'adm2adrType' => @$tabAdr2['typeVoie'],
'adm2adrLibVoie'=> @$tabAdr2['libVoie'],
//'adm2adrVoie' => trim( substr($a, 254, 60)), // Admin. 2 : Type et libell<6C> de voie
'adm2adr1' => $adm2adr1, // Admin. 2 : N<> dans la voie
'adm2adr2' => $adm2adr2, // Admin. 2 : N<> dans la voie
'adm2adr3' => $adm2adr3, // Admin. 2 : N<> dans la voie
'adm2adrCP' => trim( substr($a, 524, 5)), // Admin. 2 : Code Postal
'adm2adrVille'=> $adrVille2, // Admin. 2 : Commune
'flux' => $dateFlux,
);
$tabInsert=$tabUpdate;
break;
case '05': // Inchang<6E> Coface => Infogreffe
$nbLignes05++;
$table='rncs_even'.$env;
$tabInsert=array(
'siren' => $siren,
'codeInterne'=> trim( substr($a, 11, 16)), // Code Interne
'dateDepot' => trim( substr($a, 27, 8)), // Date du d<>p<EFBFBD>t
'codeEven' => trim( substr($a, 35, 10)), // Code <20>v<EFBFBD>nement
'flux' => $dateFlux,
);
/*if($entrepreneur) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Chargement INPI IMR siren $siren, cj=$cj",
'Cet entrepreneur individuel vient de d<>poser un acte'.EOL.print_r($tabInsert,true));
}*/
break;
case '06': // EIRL
$nbLignes06++;
$table='rncs_eirl'.$env;
$adr1=strtoupper(trim( substr($a, 611, 40))); // Ligne d'adresse 1
$adr2=strtoupper(trim( substr($a, 651, 40))); // Ligne d'adresse 2
$adr3=strtoupper(trim( substr($a, 691, 40))); // Ligne d'adresse 3
$tabAdresse=getAdresse($adr1,$adr2,$adr3);
$tabUpdate=array(
'siren' => $siren,
'denomination'=> trim( substr($a, 11, 200)), // D<>nomination utilis<69>e pour l'exercice de l'activit<69> professionnelle <20> laquelle le patrimoine est affect<63>
'activite' => trim( substr($a, 211, 400)), // Objet de l'activit<69> professionnelle <20> laquelle le patrimoine est affect<63>
'adrNumVoie'=> @$tabAdresse['num'], // N<> dans la voie Num.
'adrIndRep' => @$tabAdresse['indRep'], // Il s'agit de l'adresse de l'<27>tablissement o<> est exerc<72>e l'activit<69> professionnelle <20> laquelle le patrimoine est affect<63>
'adrTypeVoie'=> @$tabAdresse['typeVoie'], // BTQ Alpha.
'adrVoie' => strtoupper(@$tabAdresse['libVoie']),// Type et libell<6C> de voie Alpha.
'adresse1' => $adr1, // Ligne d'adresse 1
'adresse2' => $adr2, // Ligne d'adresse 2
'adresse3' => $adr3, // Ligne d'adresse 3
'adrComp' => @$tabAdresse['adrComp0'], // Compl<70>ment d'adresse Alpha.
'cp' => trim( substr($a, 731, 5)), // Code Postal Alpha.
'commune' => strtoupper(trim( substr($a, 736, 30))), // Commune Alpha.
// 'flux' => $dateFlux,
);
$tabInsert=array_merge($tabUpdate, array( 'siren' => $siren,
'flux' => $dateFlux,
'dateInsert'=> $dateInsert,
)
);
$ret=$iDb->select($table, 'denomination,activite,adresse1,adresse2,adresse3,cp,commune', "siren=$siren", false, MYSQL_ASSOC);
if (is_array($ret) && count($ret)>0) {
$tabSelect=$ret[0];
$tabDiff=array_diff($tabSelect,$tabUpdate);
if (!$stock && count($tabDiff)>0) {
foreach ($tabDiff as $field=>$value)
$iDb->insert('rncs_modifs'.$env, array( 'siren'=>$siren,
'nic'=>$nic,
'table'=>$table,
'champs'=>$field,
'valeur'=>$value,
'flux'=>$dateFlux));
}
}
break;
default:
die(date('Y/m/d - H:i:s') ." - ERREUR ligne $nbLignes : Code Enregistrement '$codeEnr' inconnu pour la ligne :".EOL.trim($a).EOL);
break;
}
if ($table<>'rncs_dirigeants'.$env && $codeEnr<>'00') {
if (!$iDb->insert($table, $tabInsert)) {
if (mysql_errno()==1062 && ($table=='rncs_entrep'.$env || $table=='rncs_etab'.$env || $table=='rncs_jugements'.$env || $table=='rncs_eirl'.$env)) {
$where="siren=$siren";
if ($table=='rncs_etab'.$env) $where.=" AND nic=$nic";
elseif ($table=='rncs_jugements'.$env) $where.=" AND dateEffet=$dateEffet
AND codeJugement=$codeJugement";
if (!$iDb->update($table, $tabUpdate, $where, false, 0, true)) {
echo date('Y/m/d - H:i:s') ." - ERREUR : $where, Erreur mysql sur la table '$table' ". mysql_errno() .' - '. mysql_error().EOL;
print_r($tabInsert);
die();
} else $nbUpdate[$codeEnr*1]++;
} elseif (!(mysql_errno()==1062 && ($table=='rncs_jugements'.$env || $table=='rncs_even'.$env || $table=='rncs_etab_prov'.$env))) {
echo date('Y/m/d - H:i:s') ." - ERREUR : Siren=$siren, Erreur mysql sur la table '$table' ". mysql_errno() .' - '. mysql_error().EOL;
print_r($tabInsert);
die();
} elseif (mysql_errno()==1062 && ($table=='rncs_jugements'.$env || $table=='rncs_even'.$env || $table=='rncs_etab_prov'.$env)) {
$nbUpdate[$codeEnr*1]++;
}
} else $nbInsert[$codeEnr*1]++;
}
if ($nbLignes%100000==0) {
echo date('Y/m/d - H:i:s'). " - Fichier n<>$iFic, $fichier : $nbLignes lignes, $siren $codeEnr : $nbLignes01 entrep, $nbLignes02 <20>tab, $nbLignes03 dir, $nbLignes04 jug, $nbLignes05 actes, $nbLignes06 EIRL".EOL;
}
if ($nbLignes==0 || $nbLignes%10000==0) {
$fpT=fopen(REP_TEMP.basename($argv[0]), 'w');
fwrite($fpT, ''.$fichier.';'.$jourStock.';'.$nbLignes);
fclose($fpT);
}
$a = fgets($fp, 4096);
$sirenPre=$siren;
}
fclose($fp);
/** Passage <20> Actif/Inactif des <20>tablissements pr<70>c<EFBFBD>dents **/
$ret=$iDb->select('rncs_etab'.$env, 'actif, COUNT(*) AS nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_etab'.$env, array('actif'=>0,'dateFermeture'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les <20>tablissements du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".$nbEtab[10]." d<>j<EFBFBD> inactifs et ".$nbEtab[11]." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun <20>tablissement pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
/** Passage <20> Actif/Inactif des dirigeants pr<70>c<EFBFBD>dents **/
if ($modifDir) {
$ret=$iDb->select('rncs_dirigeants'.$env, 'actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_dirigeants'.$env, array('actif'=>0,'dateFin'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".$nbEtab[10]." d<>j<EFBFBD> inactifs et ".$nbEtab[11]." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun dirigeants pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
}
/** Suppressions des jugements non transmis **/
if ($modifJug) {
$ret=$iDb->select('rncs_jugements'.$env, 'actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
if ($actif<>0)
// Si le siren est encore actif et que le jugement n'est pas transmit, il doit s'agir d'une correction de jugement
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>0,'dateSuppr'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
else
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>1), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $sirenPre non transmis ont <20>t<EFBFBD> pass<73>s <20> inactifs (".$nbEtab[10]." d<>j<EFBFBD> inactifs et ".$nbEtab[11]." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun jugements pour le siren $sirenPre en base pr<70>c<EFBFBD>dement !".EOL;
}
}
$message.=date('Y/m/d - H:i:s'). " - R<>capitulatif du chargement n<>$iFic, $fichier de $nbLignesTot lignes (".(@$tabEntete['nbRecords']*1)."):".EOL;
if ($nbLignes00>0)
$message.=date('Y/m/d - H:i:s'). " - Lignes 00 : Fichier g<>n<EFBFBD>r<EFBFBD> le ".$tabEntete['dateCreation']." en version ".$tabEntete['numVersion']." pour la p<>riode du ".$tabEntete['datePeriodeDeb']." au ".$tabEntete['datePeriodeFin'].EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 01 : $nbLignes01 entreprises";
if ($nbLignes00>0)
$message.="/".$tabEntete['nbEntrep'];
$message.=" (".$nbInsert[1]." ajouts et ".$nbUpdate[1]." modifs)".EOL;
2013-06-19 08:24:49 +00:00
$nbLignes30=$nbInsert[30]+$nbUpdate[30];
$message.=date('Y/m/d - H:i:s'). " - Lignes 02 : $nbLignes02 <20>tablissements actifs dont $nbLignes02p provisoires (".$nbInsert[2]." ajouts et ".$nbUpdate[2]." modifs)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 03 : $nbLignes03 dirigeants actifs (".$nbInsert[3]." ajouts et ".$nbUpdate[3]." modifs)".EOL;
2013-06-19 08:24:49 +00:00
$message.=date('Y/m/d - H:i:s'). " - ...... dont $nbLignes30 dirigeants PM actifs (".$nbInsert[30]." ajouts et ".$nbUpdate[30]." modifs)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 04 : $nbLignes04 jugements (".$nbInsert[4]." ajouts et ".$nbUpdate[4]." d<>j<EFBFBD> en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 05 : $nbLignes05 actes/<2F>v<EFBFBD>nements (".$nbInsert[5]." ajouts et ".$nbUpdate[5]." d<>j<EFBFBD> en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 06 : $nbLignes06 EIRL (".$nbInsert[6]." ajouts et ".$nbUpdate[6]." d<>j<EFBFBD> en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Fin de traitement du fichier $fichier.".EOL;
$tabInsert=array( 'nomFichier' => $fichier,
'dateCreation' => @$tabEntete['dateCreation'],
'numVersion' => @$tabEntete['numVersion'],
'nbEntrep' => @$tabEntete['nbEntrep'],
'nbRecords' => @$tabEntete['nbRecords'],
'datePeriodeDeb' => @$tabEntete['datePeriodeDeb'],
'datePeriodeFin' => @$tabEntete['datePeriodeFin'],
'dateFlux' => $dateFlux,
'dateDispo' => $dateDispo,
'taille' => filesize($fichierAvecRep),
'dateChargementDeb' => $dateInsert,
'dateChargementFin' => date('YmdHis'),
'stock' => $stock,
'nbLignesTot' => $nbLignesTot,
'nbLignes1' => $nbLignes01,
'nbLignes1a' => $nbInsert[1],
'nbLignes2' => $nbLignes02,
'nbLignes2a' => $nbInsert[2],
'nbLignes2p' => $nbLignes02p,
'nbLignes3' => $nbLignes03,
'nbLignes3a' => $nbInsert[3],
'nbLignes4' => $nbLignes04,
'nbLignes4a' => $nbInsert[4],
'nbLignes5' => $nbLignes05,
'nbLignes5a' => $nbInsert[5],
'nbLignes6' => $nbLignes06,
'nbLignes6a' => $nbInsert[6],
'dateInsert' => date('YmdHis'),
);
$ret=$iDb->select('rncs_dirigeants'.$env, 'count(*)', 'actif>1');
$nbDirNonInactif=$ret[0][0];
$message.=date ('Y/m/d - H:i:s') . " - Fermeture de $nbDirNonInactif dirigeants non transmit/en double.".EOL;
$ret=$iDb->query("UPDATE LOW_PRIORITY IGNORE rncs_dirigeants$env SET actif=0 WHERE actif>1");
echo mysql_errno();
echo mysql_error();
2013-06-19 08:24:49 +00:00
$ret=$iDb->query("DELETE LOW_PRIORITY FROM rncs_dirigeants$env WHERE actif>1");
echo mysql_errno();
echo mysql_error();
if (!$stock && count($tabFichLigneCmd)==0) {
if (bzip2(RNCS_IMR_FTP_LOCALDIR.$fichier, RNCS_IMR_BACKUP_DIR.$fichier)) {
unlink(RNCS_IMR_FTP_LOCALDIR.$fichier);
$message.=date ('Y/m/d - H:i:s') . " - Le fichier n<>$iFic, $fichier vient d'<27>tre historis<69>.".EOL;
}
}
echo $message;
$iDb->insert('rncs_chargements'.$env, $tabInsert);
echo mysql_errno();
echo mysql_error();
unlink(REP_TEMP.basename($fichier).'.lock');
2013-06-19 08:24:49 +00:00
$doMajSirenDir=true;
}
if ($stock) {
/**
** Fermeture des entreprises non communiqu<EFBFBD>es si stock
**/
// Supprimer ces 2 lignes quand tout sera OK pour le chargement d'un stock !
echo date('Y/m/d - H:i:s') ." - Faire une sauvegarde des tables avant toute autre op<6F>ration !";
$saisie = trim(strtoupper(fgets(STDIN)));
/** Passage des <EFBFBD>tablissements encore actifs <EFBFBD> inactif pour les soci<EFBFBD>t<EFBFBD>s non transmisses dans le stock
**/
$ret=$iDb->select("rncs_entrep$env e, rncs_etab$env t", 't.id, e.siren, t.nic, t.siege', 'e.siren=t.siren AND e.actif=1 AND t.actif=1', false, MYSQL_ASSOC);
$nb=count($ret);
echo date ('Y/m/d - H:i:s')." - Il y a $nb <20>tablissements <20> passer inactifs...".EOL;
foreach ($ret as $tabEtab)
$iDb->update('rncs_etab'.$env, array('actif'=>0, 'dateFermeture'=>$dateFlux), 'id='.$tabEtab['id'], false, 0, true);
/** Passage <EFBFBD> inactif des soci<EFBFBD>t<EFBFBD>s non transmisses dans le stock
**/
$ret=$iDb->select('rncs_entrep'.$env, 'count(*) AS nb', 'actif=1', false, MYSQL_ASSOC);
$nb=$ret[0]['nb'];
echo date ('Y/m/d - H:i:s')." - Passage <20> l'<27>tat inactif des $nb entreprises non livr<76>es dans le stock...".EOL;
$sql="UPDATE LOW_PRIORITY rncs_entrep$env SET actif=0, dateFer=$dateFlux WHERE actif=1;";
$iDb->query($sql, true);
/** Confirmation <EFBFBD> actif des soci<EFBFBD>t<EFBFBD>s du stock
**/
$ret=$iDb->select('rncs_entrep'.$env, 'count(*) as nb', 'actif=11', false, MYSQL_ASSOC);
$nb=$ret[0]['nb'];
echo date ('Y/m/d - H:i:s')." - Confirmation <20> l'<27>tat actif des $nb entreprises charg<72>es...".EOL;
$sql=" rncs_entrep$env SET actif=1 WHERE actif=11;";
$iDb->query($sql, true);
}
2013-06-19 08:24:49 +00:00
if ($doMajSirenDir) {
// Mise <20> jour des Administrations (BOAMP A, B ou MAPA)
echo date ('Y/m/d - H:i:s')." - Mise <20> jour des SIREN des Dirigeants PM...".EOL;
$nbSirened=0;
// Tableau RS>Siren
$tabRsSiren=array();
$tmp=$iDb->select('rncs_dirigeants', 'dirRS, adr_dep, dirSiren', "typeDir='PM' AND dirSiren>1000 AND dirRS<>'' GROUP BY dirRS", false, MYSQL_ASSOC);
foreach ($tmp as $nbId=>$tabTmp)
$tabRsSiren[trim($tabTmp['dirRS']).trim($tabTmp['adr_dep'])]=$tabTmp['dirSiren'];
echo date ('Y/m/d - H:i:s')." - La table RS/SIREN dirigeants PM RNCS contient $nbId lignes...".EOL;
$tmp=$iDb->select('rncs_dirigeants', 'id, dirRS, adr_dep, actif, siren, raisonSociale', "typeDir='PM' AND dirSiren<1000 AND dirRS<>'' ORDER BY dirRS, adr_dep", false, MYSQL_ASSOC);
$nbTmp=count($tmp);
foreach ($tmp as $iLot=>$tabTmp) {
$id=$tabTmp['id'];
$rs=trim($tabTmp['dirRS']);
$dep=trim($tabTmp['adr_dep']);
$sirenSte=$tabTmp['siren'];
$rsSte=$tabTmp['raisonSociale'];
$dirAct=$tabTmp['actif'];
if ($dirAct) $strAct='actif';
else $strAct='inactif';
//print_r($tabTmp);
if (isset($tabRsSiren[$rs.$dep])) {
$siren=$tabRsSiren[$rs.$dep];
if ($iDb->update('rncs_dirigeants', array('dirSiren'=>$siren), 'id='.$id, false,0,true)) {
$nbSirened++;
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : Mise <20> jour de id=$id avec $siren pour $rs ($dep) dirigeant $strAct de $rsSte ($sirenSte)...".EOL;
$iDb->delete('bodacc_sirenage', "idTable='rncs_dirigeants' AND idAnn=$id",false,true);
} elseif (mysql_errno()==1062) {
//if ($modeDebug) echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : Mise <20> jour impossible de id=$id avec $siren pour $rs dirigeant $strAct de $rsSte ($sirenSte)...".EOL;
/** @todo V<EFBFBD>rifier pourquoi lent et doublon
$iDb->delete('bodacc_sirenage', "idTable='rncs_dirigeants' AND idAnn=$id",false,true);
*/
}
else
echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : ERREUR SQL ".mysql_errno()." - ".mysql_error().EOL;
}
}
if (@$nbInsert[3]>0 && @$nbUpdate[3]>0) $strInfo=" sur ".$nbInsert[3]." ajouts et ".$nbUpdate[3]." modifs.";
else $strInfo="";
echo date ('Y/m/d - H:i:s')." - Mise <20> jour de $nbSirened SIREN de dirigeants RNCS".$strInfo.EOL;
if (!isset($message)) $message='';
$message.=date('Y/m/d - H:i:s') ." - Mise <20> jour de $nbSirened SIREN de dirigeants RNCS".$strInfo.EOL;
if (!$modeDebug) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR', $message);
die();
}
}
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement INPI IMR', $message);
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des flux RNCS IMR de l'INPI.".EOL;
die();
function getAdresse($adr1, $adr2='', $adr3='') {
global $iInsee;
$adrComp='';
$tabAdr=array();
if (trim($adr1)<>'')
$tabAdr=@$iInsee->structureVoie($adr1);
if (count($tabAdr)<2) {
if (trim($adr1)<>'') $adrComp=trim($adr1);
if (trim($adr2)<>'') $tabAdr=@$iInsee->structureVoie($adr2);
if (count($tabAdr)<2) {
if (trim($adr2)<>'') $adrComp=trim($adrComp.' '.$adr2);
if (trim($adr3)<>'') $tabAdr=@$iInsee->structureVoie($adr3);
}
}
if (@$tabAdr['libVoie']=='') {
if (trim($adr1)<>'') $tabAdr['libVoie']=$adr1;
elseif (trim($adr2)<>'') $tabAdr['libVoie']=$adr2;
elseif (trim($adr3)<>'') $tabAdr['libVoie']=$adr3;
}
if (preg_match('/(^bis | bis | b |^b )/Ui', @$tabAdr['libVoie']))
$tabAdr['indRep']='B';
elseif (preg_match('/(^ter | ter | t |^t )/Ui', @$tabAdr['libVoie']))
$tabAdr['indRep']='T';
if (strtoupper(@$tabAdr['libVoie'])<>$adrComp)
$tabAdr['adrComp0']=$adrComp;
return $tabAdr;
}
function getInfosLieuNaiss($strNaiss) {
/**
* @todo
* 1. Supprimer les caract<EFBFBD>res non Alphanum<EFBFBD>rique et les espaces doubles
* 2. Rechercher les num<EFBFBD>ros de d<EFBFBD>partements 2 ou 3 chiffres ou 2A 2B (Attention Arrond Paris MArseille Lyon)
* 3. Rechercher Pays y compris France
* 4. Isoler la ville => trouver code Insee
*/
}
?>