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

1162 lines
55 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 :
-v Mode debug (Verbosité au maximum)
-l:XXXX Reprendre à partir de la ligne XXXX
-s Fichier stock de tous les établissements actifs (préciser le jour de l'extraction avec -f)
-f:AAAAMMJJ Forcer la dateFlux de ce chargement
-r Ne pas exécuter en réel
-j Ne pas se connecter au serveur FTP d'Extelia (INPI/IMR via Infogreffe)
-m Mettre à jour les siren des dirigeants PM
";/*
-p Chargement d'une ancienne notice (pas de modification de la zone ACTIF chargement des zones différentes)
-u Ne pas mettre à 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;
$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'é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 à jour les siren des dirigeants
$tabFichiers=array(); // Tableau des Fichiers téléchargés sur le FTP
$tabFichier=array(); // Fichiers locaux en attente de traitement
$tabFichLigneCmd=array(); // Fichiers passés en ligne de commande
$ftpDelete=true; // Par défaut on supprime les fichiers téléchargé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)) {
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;
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é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 é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(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é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;
}
}
// Fermeture de la connexion
ftp_close($conn_id);
echo date ('Y/m/d - H:i:s')." - Fin de la récupé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é : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressés)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier $filename décompressé : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressé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;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0 && !$doMajSirenDir)
die(date ('Y/m/d - H:i:s') . " - Aucun fichier RNCS IMR de l'INPI à 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éé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éé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à été chargé **/
$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à été chargé 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;
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;
$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 à 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 à 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;
}
}
}
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é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écé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 é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ôle (1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 0, 8)); // Date cré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ées pour géné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 à Actif/Inactif des établissements précé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 établissements du siren $sirenPre non transmis ont été passés à inactifs (".(@$nbEtab[10]*1)." déjà inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun établissement pour le siren $sirenPre en base précédement !".EOL;
/** Passage à 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) {
echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $sirenPre non transmis ont été passés à inactifs (".(@$nbEtab[10]*1)." déjà 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écé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 été passés à inactifs (".(@$nbEtab[10]*1)." déjà 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écé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 à 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(?:é|e|è)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éro de gestion (code greffe)
'triCode' => $iRncs->getCodeBodaccTribunal($numGreffe), // Numéro de gestion (code greffe)
'triId' => $iRncs->getIdTribunal($numGreffe), // Numéro de gestion (code greffe)
'numRC' => $numRC, // Ancien numéro de gestion (numéro RC, année sur 2)
'numRC2' => $numRC2, // Nouveau numéro de gestion (numéro RC, anné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é
'pays'=>$iRncs->getPaysInpi(trim( substr($a, 190, 3))*1), // Code nationalité
'naf' => trim( substr($a, 536, 5)), // Code APE de l'entreprise
'cj' => $cj, // Code catégorie juridique
'capitalMontant'=>trim(substr($a, 551, 15))*1, // Capital (en unité)
'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 dimmatriculation 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ées provisoires P ou blanc = P si donné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));
}
} elseif ($stock) {
echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : $nbLignes lignes, $siren inconnu, $numGreffe $numRC2 pré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ésent dans le stock IMR ($raisonSociale $nom $prenom) !".EOL;
}
/** Ce siren fait parti des demandes de réémission de dossier IMR faites par S&D **/
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éémis sur $siren le ".$tabDemIMR[$siren]." reçu dans le flux IMR du $dateFlux.".EOL;
$message.=date ('Y/m/d - H:i:s') . " - Dossier réémis sur $siren le ".$tabDemIMR[$siren]." reç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 établissements à 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 établissements du siren $siren sont OK pour la mise à 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è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é 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ément d'adresse Alpha.
'naf' => trim( substr($a, 572, 5)), // APE de l'é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 établissement siè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 à 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 dusage ou raison sociale
$civilite=strtoupper(trim(substr($a, 449, 1))); // Code Civilité 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é '$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é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é 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é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]++;
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]++;
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 à 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 à 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é 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é 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é 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ôt
'codeEven' => trim( substr($a, 35, 10)), // Code évè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ée pour l'exercice de l'activité professionnelle à laquelle le patrimoine est affecté
'activite' => trim( substr($a, 211, 400)), // Objet de l'activité professionnelle à laquelle le patrimoine est affecté
'adrNumVoie'=> @$tabAdresse['num'], // N° dans la voie Num.
'adrIndRep' => @$tabAdresse['indRep'], // Il s'agit de l'adresse de l'établissement où est exercée l'activité professionnelle à laquelle le patrimoine est affecté
'adrTypeVoie'=> @$tabAdresse['typeVoie'], // BTQ Alpha.
'adrVoie' => strtoupper(@$tabAdresse['libVoie']),// Type et libellé 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é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 é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 à Actif/Inactif des établissements précé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 établissements du siren $sirenPre non transmis ont été passés à inactifs (".$nbEtab[10]." déjà inactifs et ".$nbEtab[11]." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun établissement pour le siren $sirenPre en base précédement !".EOL;
/** Passage à Actif/Inactif des dirigeants précé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 été passés à inactifs (".$nbEtab[10]." déjà 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écé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 été passés à inactifs (".$nbEtab[10]." déjà 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écé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éré 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;
$nbLignes30=$nbInsert[30]+$nbUpdate[30];
$message.=date('Y/m/d - H:i:s'). " - Lignes 02 : $nbLignes02 é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;
$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à en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 05 : $nbLignes05 actes/évènements (".$nbInsert[5]." ajouts et ".$nbUpdate[5]." déjà en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 06 : $nbLignes06 EIRL (".$nbInsert[6]." ajouts et ".$nbUpdate[6]." déjà 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();
$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'être historisé.".EOL;
}
}
echo $message;
$iDb->insert('rncs_chargements'.$env, $tabInsert);
echo mysql_errno();
echo mysql_error();
unlink(REP_TEMP.basename($fichier).'.lock');
$doMajSirenDir=true;
}
if ($stock) {
/**
** Fermeture des entreprises non communiqué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ération !";
$saisie = trim(strtoupper(fgets(STDIN)));
/** Passage des établissements encore actifs à inactif pour les société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 établissements à passer inactifs...".EOL;
foreach ($ret as $tabEtab)
$iDb->update('rncs_etab'.$env, array('actif'=>0, 'dateFermeture'=>$dateFlux), 'id='.$tabEtab['id'], false, 0, true);
/** Passage à inactif des société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 à l'état inactif des $nb entreprises non livré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 à actif des société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 à l'état actif des $nb entreprises chargées...".EOL;
$sql=" rncs_entrep$env SET actif=1 WHERE actif=11;";
$iDb->query($sql, true);
}
if ($doMajSirenDir) {
// Mise à jour des Administrations (BOAMP A, B ou MAPA)
echo date ('Y/m/d - H:i:s')." - Mise à 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 à 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 à jour impossible de id=$id avec $siren pour $rs dirigeant $strAct de $rsSte ($sirenSte)...".EOL;
/** @todo Vé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 à jour de $nbSirened SIREN de dirigeants RNCS".$strInfo.EOL;
if (!isset($message)) $message='';
$message.=date('Y/m/d - H:i:s') ." - Mise à 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ères non Alphanumérique et les espaces doubles
* 2. Rechercher les numéros de dé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
*/
}
?>