batch/1.1/old/getCedexa.php

665 lines
33 KiB
PHP
Raw Normal View History

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
/*
Serveur FTP :
Votre identifiant :
Votre mot de passe : 5h-P,z5(*/
define('AMABIS_FTP_URL', 'ftp.amabis.com');
define('AMABIS_FTP_USER', 'refgeo_pack_H');
define('AMABIS_FTP_PASS', '5h-P,z5(');
define('AMABIS_FTP_REMOTE_DIR', '*.gz');
define('AMABIS_LOCAL_DIR', '/home/data/amabis/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Chargement du flux Cedexa via Amabis.
Options :
-d Mode debug (Verbosit<EFBFBD> au maximum)
-j Ne pas r<EFBFBD>cup<EFBFBD>rer les derniers fichiers sur le FTP de l'Insee
-u Forcer la mise <EFBFBD> jour la table identite de l'insee
-s=20080430 R<EFBFBD>appliquer les <EFBFBD>v<EFBFBD>nements depuis cette date
";
$iDb=new WDB('insee');
$iInsee=new MInsee();
$modeDebug=$dateReprise=false;
$ftpStep=true;
$updateInsee=false;
$tabFichier=array();
$nomFichierCharges=array();
$nbLignesCharges=$nbSiretInvalidesCharges=0;
//Initialistation des variables
$argv=$_SERVER['argv'];
//if ($_SERVER['argc']==1) die("Non g<>r<EFBFBD> pour l'instant : chargera les derniers fichiers EVEN non charg<72>s !".EOL);
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'j': $ftpStep=false; break;
case 'u': $updateInsee=true; break;
case 's': $dateReprise=substr($argv[$i],3,8); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichier[]=$argv[$i];
}
echo date ('Y/m/d - H:i:s') . " - D<>but du traitement de chargement des <20>v<EFBFBD>nements INSEE".EOL;
$db_table='cedexa';
if ($ftpStep) {
/* R<>cup<75>ration des flux FTP */
echo date('Y/m/d - H:i:s') ." - DEBUT de la r<>cup<75>ration des flux FTP de l'INSEE...".EOL;
$ret=ftp_mget(AMABIS_FTP_URL, AMABIS_FTP_USER, AMABIS_FTP_PASS, AMABIS_FTP_REMOTE_DIR, AMABIS_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : R<>cup<75>ration des flux INSEE en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la r<>cup<75>ration des flux INSEE en FTP ($ret fichiers r<>cup<75>r<EFBFBD>s).".EOL;
}
/** Liste des fichiers quotidiens de l'Insee
**/
$dh = opendir(AMABIS_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -7)=='.txt.gz')
$tabFichier[] = $filename;
}
$tabToIdentite=array();
/** Chargement des fichiers si n<EFBFBD>cessaire
**/
for ($i=0; isset($tabFichier[$i]); $i++)
{
$nomFichier =$tabFichier[$i];
if ($nomFichier<>'AMACDX38c-201001.txt.gz') continue;
$idFlux=strtr(strtoupper(basename($nomFichier)),array('EVE.DJ'=>'20'));
$fp=gzopen(AMABIS_LOCAL_DIR.$nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n<>$i <20> traiter '".$nomFichier."'".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$nbLignes=0; // Nombre de ligne du fichier
$ret=$iDb->select($db_table, 'count(idFlux) as nb', "idFlux='$idFlux'");
$nbLoaded=$ret[0][0];
while (!gzeof($fp))
{
$nbLignes++;
$a = trim(gzgets($fp, 1024));
}
if ($nbLoaded>0) {
if (--$nbLignes<=$nbLoaded)
echo date ('Y/m/d - H:i:s')." - Le fichier n<>$i, $nomFichier a d<>j<EFBFBD> <20>t<EFBFBD> charg<72> ($nbLoaded lignes) !".EOL;
else
die (date ('Y/m/d - H:i:s')." - ERREUR : le fichier n<>$i, $nomFichier a <20>t<EFBFBD> charg<72> partiellement $nbLignes<>$nbLoaded !".EOL);
continue;
}
echo date ('Y/m/d - H:i:s')." - D<>but du traitement du fichier n<>$i, $nomFichier ($nbLignes lignes <20> traiter) !".EOL;
$tabToIdentite[]=$idFlux;
flush();
$finFichier=false;
$nbLignes=$nbErreurs=0;
gzrewind($fp);
while (!gzeof($fp))
{
$nbLignes++;
$a = trim(gzgets($fp, 1024));
/* if ($finFichier) {
echo date ('Y/m/d - H:i:s') . " - Attention la fin de fichier a <20>t<EFBFBD> trouv<75>e <20> la ligne pr<70>c<EFBFBD>dente !".EOL;//Nouveau format du fichier <20>v<EFBFBD>nement (de Mai 2007) non g<>r<EFBFBD> !
die();
} elseif ($a=='')
break;
*/
$codeLigne = substr($a, 0, 1 )*1;
if ($nbLignes==1 && $codeLigne==0) {
$dateFlux =WDate::dateT('d-m-Y','Y-m-d', substr($a,1,10)); // Date au format jj-mm-ssaa
$libFlux = trim( substr($a, 11, 311 )); // Libell<6C> du fichier
if ($libFlux=='CEDEXA COMPLET 38')
$typeFlux='stock';
elseif ($libFlux=='CEDEXA MISE A JOUR 38')
$typeFlux='maj38';
else {
echo date ('Y/m/d - H:i:s')." - Type de flux inconnue pour le fichier n<>$i, $nomFichier ($libFlux) !".EOL;
die();
}
} elseif ($nbLignes>1 && $codeLigne==1) {
//unset($tabErreur); $nbErr=0;
$tabCedex=array('dateFlux'=>$dateFlux);
$tabCedex['contrat'] = trim( substr($a, 1, 7 )); // Matricule contrat cedex
$tabCedex['hexavia'] = trim( substr($a, 8, 8 )); // Matricule Hexavia de la voie
$tabCedex['codePostal'] = trim( substr($a, 16, 5 )); // Code Postal de l'adresse G<>ographique
$tabCedex['filler1'] = trim( substr($a, 21, 1 )); // FILLER
$tabCedex['l1_nom'] = trim( substr($a, 22, 38 )); // Raison Sociale
$tabCedex['l2_nomComp'] = trim( substr($a, 60, 38 )); // Compl<70>ment de nom
$tabCedex['filler2'] = trim( substr($a, 98, 38 )); // FILLER
$tabCedex['l3_compGeo'] = trim( substr($a, 136, 38 )); // Compl<70>ment au point g<>ographique
$tabCedex['l4_numVoie'] = trim( substr($a, 174, 4 )); // Num<75>ro dans la voie
$tabCedex['l4_indRep'] = trim( substr($a, 178, 1 )); // Extension du num<75>ro de voie
$tabCedex['l4_libVoie'] = trim( substr($a, 179, 32 )); // Libell<6C> de voie
$tabCedex['l5_distrib'] = trim( substr($a, 211, 20 )); // Mention sp<73>ciale de distribution
$tabCedex['l5_numMS'] = trim( substr($a, 231, 5 )); // num<75>ro de mention sp<73>ciale
$tabCedex['l5_libCom'] = trim( substr($a, 236, 32 )); // Libell<6C> de la commune
$tabCedex['l6_codCedex']= trim( substr($a, 268, 5 )); // Code Cedex
$tabCedex['l6_achCedex']= trim( substr($a, 273, 32 )); // Libell<6C> de l'acheminement Cedex
$tabCedex['codeInsee'] = trim( substr($a, 305, 5 )); // Code Insee de la commune adresse G<>ographique
$tabCedex['filler3'] = trim( substr($a, 310, 1 )); // FILLER
$codeMaj = trim( substr($a, 311, 1 )); // Code de Mise <20> Jour
if ($codeMaj=='S') $tabCedex['actif']=0;
else $tabCedex['actif']=1;
$tabCedex['filler4'] = trim( substr($a, 312, 10 )); // FILLER
$rs=$tabCedex['l1_nom'];
$rs==preg_replace('/[^0-9A-Z]/', ' ', strtr($rs, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݟ', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$rs=preg_replace("/^(MLLE |MELLE |MLE |MME |ME |M |MR )/",'', $rs);
$rs=trim(preg_replace("/ +/",' ', strtr(' '.$rs.' ',
array(' NEE '=>' ', ' DIVORCEE '=>' ', ' DENOMINATION '=>' ',' D NOMINATION '=>' ', ' NOM D USAGE '=>' ', ' ASSOCIATION '=>' ',' CLUB '=>' ', ' SUCCESSION '=>' ', ' CONJOINT '=>' ', ' COLLABORATEUR '=>' ', ' VEUVE '=>' ', // FEU
' S E L A R L '=>' ', ' S A R L '=>' ', ' S A S '=>' ', ' S A '=>' ', ' S C I '=>' ', ' S N C '=>' ', ' S C P '=>' ', ' S C E A '=>' ', ' S C A '=>' ', ' E U R L '=>' ', ' E A R L '=>' ', ' E A R '=>' ', ' E A '=>' ', ' S C '=>' ',
' SELARL '=>' ', ' SARL '=>' ', ' SAS '=>' ', ' SA '=>' ', ' SCI '=>' ', ' SNC '=>' ', ' SCP '=>' ', ' SCEA '=>' ', ' SCA '=>' ', ' EURL '=>' ', ' ETS '=>' ',
' EARL '=>' ', ' EAR '=>' ', ' EA '=>' ',' SC '=>' ',
' DE '=>' ',' ET '=>' ',' LA '=>' ',' DU '=>'', ' DES '=>' ', ' L '=>' ', ' SOCIETE '=>' ',' SOC '=>' ', ' MONSIEUR '=>' ', ' MADAME '=>' ', ' STE '=>' ', ' CIVILE '=>' ', ' IMMOBILIERE '=>' ',' LIQUIDATION '=>' ', ' DISSOLUTION '=>' ',
))));
$adresse=preg_replace('/[^0-9A-Z]/', ' ', strtr($tabCedex['l4_libVoie'], '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݟ', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$adresse=trim(preg_replace("/ +/",' ', strtr(' '.$adresse.' ',
array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' '))));
$cp=$tabCedex['codePostal'];
$tabEtab=@$iInsee->rechercheEtab($rs,$tabCedex['l4_numVoie'].' '.$adresse, $cp,'','',1,0,10);
if ($tabEtab['nbReponses']==0)
$tabCedex['siren']=$tabCedex['nic']=0;
elseif ($tabEtab['nbReponses']==1) {
$tabCedex['siren']=$tabEtab['reponses'][0]['Siren'];
$tabCedex['nic']=$tabEtab['reponses'][0]['Nic'];
// print_r($tabEtab);
// die(print_r($tabCedex));
}
else
$tabCedex['siren']=$tabCedex['nic']=0;
$ret=$iDb->insert($db_table, $tabCedex);
if ($ret===false) {
echo date ('Y/m/d - H:i:s') . " - ERREUR n<>". mysql_errno()." <20> l'insertion du cedexa ".$tabCedex['contrat']." : ".mysql_error().'!'.EOL;
$nbErreurs++;
flush();
} else
$updateInsee=true;
} else {
echo date ('Y/m/d - H:i:s') . " - Erreur : Il y a incoh<6F>rence entre le code enregistrement '$codeLigne' et sa position dans le fichier : ligne n<>$nbLignes !".EOL;
die();
}
}
gzclose($fp);
echo date ('Y/m/d - H:i:s')." - Le fichier n<>$i, $nomFichier vient d'<27>tre charg<72>.".EOL;
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes trait<69>es dont $nbSiretInvalides siret invalides !".EOL;
$nomFichierCharges[]=$nomFichier;
$nbLignesCharges=$nbLignes;
$nbSiretInvalidesCharges=$nbSiretInvalides;
}
echo date ('Y/m/d - H:i:s') . " - Au total : $nbLignes lignes trait<69>es dont $nbSiretInvalides siret invalides !".EOL;
echo date ('Y/m/d - H:i:s') . " - Chargement des <20>v<EFBFBD>nements termin<69>";
die();
/**********************************************************************************************************************************
* MISE A JOUR DE LA TABLE IDENTITE
**********************************************************************************************************************************/
if ($updateInsee) {
echo ', d<>but de mise <20> jour de la table identite.'.EOL;
$fieldsR='insSIREN, insNIC, insEVE, insDATEVE, insTYPETAB, insORIGINE, insDESTINAT, insTRAN, insNICTRAN, insL1_NOMEN, insNOMEN, insL2_COMP, insENSEIGNE, insSIGLE, insSIEGE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insLIBCOM, insCODPOS, insL3_CADR, insL5_DISP, insAUXILT, insSAISONAT, insCJ, insCIVILITE, insDCRET, insDCREN, insAPEN700, insAPET700, insNBETEXPL, insTEFEN, insCODEVOIE, insDEPCOM, insTEL, insEFENCENT, insTEFET, insEFETCENT, insL7_ETRG, insAPRM, insACTIVNAT, insORIGINE, insMODET, insEXPLET, insDAPET, insLIEUACT, insACTISURF, insDEFET, insMODEN, insPRODPART, insEXPLEN, insDEFEN, insMONOREG, insREGIMP, insMONOACT, insDAPEN, dirNom, dirNomUsage, dirPrenom, insDATEMAJ';
// on lit R pour mettre <20> jour W
$fieldsW='SIREN, NIC, IDENTITE_PRE, ACTIF, NOM, NOM2, ENSEIGNE, SIGLE, SIEGE, ADR_NUMVOIE, ADR_BTQ, ADR_TYPVOIE, ADR_LIBVOIE, ADR_LIBCOM, ADR_CP, ADR_COMP, ADR_DISTSP, AUXILT, SAISONAT, CJ, CIVILITE, DCRET, DCREN, APE_ENT, APE_ETAB, NBETAB, TEFF_ENT, TCA, CODEVOIE, ADR_DEP, ADR_COM, TEL, EFF_ENT, TEFF_ET, EFF_ET, PAYS, APRM, ACTIVNAT, ORIGINE, MODET, EXPLET, DAPET, LIEUACT, ACTISURF, DEFET, MODEN, PRODPART, EXPLEN, DEFEN, MONOREG, REGIMP, MONOACT, DAPEN, DIR_FCT, DIR_IDEN, DATE_MAJ';
if (!$dateReprise)//$tabToIdentite
sort($tabToIdentite);
else
$tabToIdentite=array($dateReprise);
foreach ($tabToIdentite as $idFlux) {
//$idFlux='20080114';
if (!$dateReprise) {
echo date ('Y/m/d - H:i:s') . " - D<>but du chargement du flux $idFlux...".EOL;
$ret=$iDbR->select('insee_even', $fieldsR, "idFlux=$idFlux ORDER BY idFlux ASC, insSIREN ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Chargement du flux $idFlux : $ret lignes <20> mettre <20> jour...".EOL;
} else {
echo date ('Y/m/d - H:i:s') . " - Chargement des flux quotidiens depuis $idFlux...".EOL;
$ret=$iDbR->select('insee_even', $fieldsR, "idFlux>=$idFlux ORDER BY idFlux ASC, insSIREN ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
// $ret=$iDbR->select('insee_even', $fieldsR, "idFlux>=$idFlux AND LENGTH(insL2_COMP)>30 ORDER BY idFlux ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
/* $ret=$iDbR->select('insee_even', $fieldsR, "insSIREN IN (100800002,987310505) AND idFlux IN (20040426, 20080114) ORDER BY idFlux ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);*/
echo date ('Y/m/d - H:i:s') . " - $ret lignes <20> mettre <20> jour...".EOL;
}
$k=$nbInsert=$nbUpdate=$nbDBl=0;
while($ligne=$iDbR->fetch(MYSQL_ASSOC)) {
$k++;
$siren=$ligne['insSIREN'];
$nic =$ligne['insNIC'];
$ret2=$iDbW->select('identite', $fieldsW, "SIREN=$siren AND NIC=$nic");
$cpt=count($ret2);
if ($cpt>0) $etab=$ret2[0];
else $etab=array('IDENTITE_PRE'=>'',
'NOM'=>'',
'ENSEIGNE'=>'',
'SIGLE'=>'');
$cj1=substr($ligne['insCJ'],0,1)*1;
if ($cj1==1) {
$arrDir=array( 'DIR_FCT'=>'PP',
'DIR_IDEN'=> strtoupper(trim($ligne['dirNom'])).' '.
ucwords(strtolower(trim($ligne['dirPrenom']))));
} else
$arrDir=array();
$even=trim($ligne['insEVE'])*1;
$typEtab=trim($ligne['insTYPETAB'])*1;
if ($even==0) {
switch(''.trim($ligne['insEVE'])) {
case 'MPF':
case 'MNP':
case 'MSA':
case 'MAS':
case 'MAC':
case 'M00':
case '00': $even=780; break;
case 'M0C':
case 'CC': $even=110; break; // Cr<43>ation d'une entreprise
case 'M0F':
case 'FF': $even=410; break; // Fermeture de l'entreprise
case 'OC': $even=130; break; // Cr<43>ation d'un <20>tablissement
case 'RC': $even=120; break; // R<>activation d'une entreprise par cr<63>ation d'un <20>tablissement
case 'M0R':
case 'RR': $even=120; break; // R<>activation d'une entreprise par r<>activation d'un <20>tablissement
case 'OA': $even=145; break; // Activation <20>conomique d'un <20>tab par adjonction de moyens de production
case 'OD': $even=430; break; // D<>sactivation <20>conomique d'un <20>tab par suppression de moyens de prod.
case 'OF': $even=430; break; // Fermeture d'un <20>tablissement
case 'TC': $even=510; $typEtab=11; break; // Cr<43>ation de l'<27>tablissement d'arriv<69>e et cessation de l'<27>tablissement de d<>part dans le cadre d'un transfert
case 'TR': $even=510; $typEtab=11; break;
case 'T0': $even=510; $typEtab=11; break;
case 'TA': $even=510; $typEtab=11; break;
case 'TF': $even=510; $typEtab=10; break; // Fermeture d'un <20>tablissement dans le cadre d'un transfert
case 'TD': $even=510; $typEtab=10; break; // D<>sactivation <20>conomique d'un <20>tablissement (ordinaire devient singulier) par suppression de moyens de production dans le cadre d'un transfert
default:
if (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='C') $even=130;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='A') $even=145;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='D') $even=430;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='F') $even=430;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='R') $even=120;
else echo ("Erreur code sur Siren $siren $nic : code Even=\"".trim($ligne['insEVE']).'"'.EOL);
break;
}
}
//$even=780
$origine=trim($ligne['insORIGINE']);
$destinat=trim($ligne['insDESTINAT']);
$dateFerEN=$dateFerET=-1; // Rar d<>faut, on n'y touche pas
switch ($even) {
case 110: // Cr<43>ation ou r<>activation Cr<43>ation d'une entreprise
case 120: // R<>activation d'une entreprise
case 125: // R<>activation d'une entreprise suite <20> une mise <20> jour du r<>pertoire
case 130: // Cr<43>ation d'un <20>tablissement
case 145: // Reprise d'activit<69> dans un <20>tablissement suite <20> une mise <20> jour du r<>pertoire
switch ($typEtab) {
case 15: // Si<53>ge modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
case 23: // <20>tablissement ferm<72> (hors transfert)
case 25: // <20>tablissement modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
default:
$dateFerET=$dateFerEN=0;
$actif=1;
break;
}
break;
case 400: // Suppression d'un double
//$dateFerET=$dateFerEN=0;
$actif=-1;
continue; // On ignore les suppressions de doublons
break;
case 410: // Cessation juridique de l'entreprise
case 420: // Absence d'activit<69> de l'entreprise (cessation <20>conomique de l.entreprise)
$dateFerET=$ligne['insDATEVE'];
$dateFerEN=$ligne['insDATEVE'];
$actif=0;
/** @todo, il faudrait fermer tous les <20>tabs **/
break;
case 425: // Absence d'activit<69> d'une entreprise suite <20> une mise <20> jour au r<>pertoire
case 430: // Fermeture d'un <20>tablissement
case 435: // Fermeture d'un <20>tablissement suite <20> une mise <20> jour au r<>pertoire
switch ($typEtab) {
case 13: // Si<53>ge ferm<72> (hors transfert)
case 15: // Si<53>ge modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
case 23: // <20>tablissement ferm<72> (hors transfert)
case 25: // <20>tablissement modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
case 14: // Si<53>ge modifi<66> (hors transfert) : modification de l'activit<69> principale avec activation <20>conomique
case 16: // Si<53>ge modifi<66> (hors transfert) : modification de l'APE de l'<27>tablissement
case 17: // Si<53>ge modifi<66> (hors transfert) : modification de l'identification de l'<27>tablissement
case 19: // Si<53>ge modifi<66> (hors transfert) : autre modification de l'<27>tablissement
case 24: // <20>tablissement modifi<66> (hors transfert) : modification de l'activit<69> principale avec activation <20>conomique
$dateFerET=$dateFerEN=0;
$actif=1;
break;
default:
$actif=-1;
break;
}
break;
case 510: // Cr<43>ation de l'<27>tablissement d'arriv<69>e et cessation de l'<27>tablissement de d<>part dans le cadre d'un transfert
case 520: // Cr<43>ation de l'<27>tablissement d'arriv<69>e et modification de l'<27>tablissement de d<>part dans le cadre d'un transfert
case 530: // Modification de l'<27>tablissement d'arriv<69>e et cessation de l'<27>tablissement de d<>part dans le cadre d'un transfert
case 540: // Modification de l'<27>tablissement d'arriv<69>e et modification de l'<27>tablissement de d<>part dans le cadre d'un transfert
switch ($typEtab) {
case 9: // Si<53>ge apr<70>s transfert non cr<63><72>
case 8: // Si<53>ge avant transfert non ferm<72>
case 11: // Si<53>ge apr<70>s transfert cr<63><72>
case 12: // Si<53>ge cr<63><72> (hors transfert)
case 14: // Si<53>ge modifi<66> (hors transfert) : modification de l'activit<69> principale avec activation <20>conomique
case 21: // <20>tablissement apr<70>s transfert cr<63><72>
case 22: // <20>tablissement cr<63><72> (hors transfert)
case 24: // <20>tablissement modifi<66> (hors transfert) : modification de l'activit<69> principale avec activation <20>conomique
case 30: // <20>tablissement avant transfert non ferm<72>
case 31: // <20>tablissement apr<70>s transfert non cr<63><72>
//echo "case even=$even, typeEtab=$typEtab\n";
$dateFerET=$dateFerEN=0;
$actif=1;
break;
case 10: // Si<53>ge avant transfert ferm<72>
case 13: // Si<53>ge ferm<72> (hors transfert)
case 15: // Si<53>ge modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
case 20: // <20>tablissement avant transfert ferm<72>
case 23: // <20>tablissement ferm<72> (hors transfert)
case 25: // <20>tablissement modifi<66> (hors transfert) : modification de l'activit<69> principale avec d<>sactivation <20>conomique
case 32: // <20>tablissement supprim<69>
//echo "case even=$even, typeEtab=$typEtab\n";
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
default:
$actif=-1;
break;
/*
Que fait on pour ces codes ?
16 Si<EFBFBD>ge modifi<EFBFBD> (hors transfert) : modification de l'activit<69> principale de l'<EFBFBD>tablissement
17 Si<EFBFBD>ge modifi<EFBFBD> (hors transfert) : modification de l'identification de l'<EFBFBD>tablissement
19 Si<EFBFBD>ge modifi<EFBFBD> (hors transfert) : autre modification de l'<EFBFBD>tablissement
26 <EFBFBD>tablissement modifi<EFBFBD> (hors transfert) : autre modification de l'activit<69> principale de l'<EFBFBD>tablissement
27 <EFBFBD>tablissement modifi<EFBFBD> (hors transfert) : modification de l'identification de l'<EFBFBD>tablissement
29 <EFBFBD>tablissement modifi<EFBFBD> (hors transfert) : modification d.une autre variable de l'<EFBFBD>tablissement*/
}
break;
case 610: // Modification d'activit<69> au niveau du SIREN associ<63> <20> une activation <20>conomique par adjonction de moyens de production
case 640: // Modification d'activit<69> au niveau de l'<27>tablissement associ<63>e <20> une activation <20>conomique par adjonction de moyens de production
$actif=1;
break;
case 620: // Modification d'activit<69> au niveau du SIREN associ<63> <20> une d<>sactivation <20>conomique par suppression de moyens de production
case 621: // Modification d'activit<69> du SIREN associ<63> <20> une d<>sactivation <20>conomique par suppression de moyens de production suite <20> une correction d'erreur
$dateFerET=$ligne['insDATEVE'];
$dateFerEN=$ligne['insDATEVE'];
$actif=0;
break;
case 650: // Modification d'activit<69> au niveau de l'<27>tablissement associ<63>e <20> une d<>sactivation <20>conomique par suppression de moyens de production
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
//case 781:
case 795: // SIREN non diffusible
$actif=1;
break;
default:
$actif=-1;
/*631 Autre modification d'activit<EFBFBD> du SIREN associ<EFBFBD>
661 Autre modification d'activit<69> au niveau de l'<EFBFBD>tablissement
710 Modification de l'identification du SIREN
711 Modification de l'identification du SIREN suite <20> correction d'erreur
720 Modification de l'adresse ou de l'identification de l'<EFBFBD>tablissement
780 Autre modification entra<EFBFBD>nant la mise <EFBFBD> jour d'au moins une variable du r<EFBFBD>pertoire
781 Autre modification entra<EFBFBD>nant la mise <EFBFBD> jour d'au moins une variable du r<>pertoire suite <20> correction d'erreur*/
}
//echo "$k : [$siren $nic\t$even\t$destinat\t$typEtab\t$origine\t($actif)]".EOL;
/** Si on n'a pas pu d<>termin<69> l'<EFBFBD>tat actif ou inactif, on test si la variable DESTINAT est renseign<EFBFBD>e !
**/
if ($actif==-1 && (trim($ligne['insEVE'])=='MPF' || trim($ligne['insEVE'])=='MNP')) {
// Etablisement pr<70>sum<75> ferm<72> mais on laisse actif juridiquement
$actif=-1;
}
elseif ($actif==-1 && ( $destinat*1==3 || // Vendu
$destinat=='B' || // Ferm<72>
$destinat=='C' || // Supprim<69>
$destinat=='D' || // Mise en location-g<>rance de la totalit<69> du fonds
$destinat=='F' || // Cessation d'activit<69> (pour les liasses agricoles)
$destinat=='I' || // Transmission au conjoint (pour les liasses agricoles)
$destinat=='J' || // Cession (pour les liasses agricoles)
$destinat=='G' ) ) // Mise en location-g<>rance de la totalit<69> des terres et des b<>timents agricoles (pour les liasses agricoles)
{
$dateFerET=$ligne['insDATEVE'];
$actif=0;
}
elseif ($actif==-1 && ( $destinat*1==7 || // Maintien d'activit<69>, l'<27>tablissement devient si<73>ge
$destinat*1==8 || // Maintien d'activit<69>, l'<27>tablissement devient principal
$destinat=='A' || // Maintien d'activit<69>, l'<27>tablissement devient secondaire
$destinat=='E' || // Mise en location-g<>rance d'une partie du fonds
$destinat=='VP' || // suppression partielle d'activit<69> par vente
$destinat=='DP' || // suppression partielle d'activit<69> par disparition
$destinat=='RP' || // suppression partielle d'activit<69> par reprise par le propri<72>taire
$destinat=='H') ) // Mise en location-g<>rance d'une partie des terres et des b<>timents agricoles (pour les liasses agricoles)
{
$actif=1;
}
else {
if ($modeDebug)
echo "$k : $siren $nic\t$even\t$destinat\t$typEtab\t$origine\t($actif)".EOL;
}
/*
9 Autre
NR Non renseign<EFBFBD>
*/
if ($actif==-1) $arrActif=array();
else $arrActif=array('ACTIF'=>$actif);
if ($dateFerET<>-1) $arrActif=array_merge($arrActif, array('dateFerET'=>$dateFerET));
if ($dateFerEN<>-1) $arrActif=array_merge($arrActif, array('dateFerEN'=>$dateFerEN));
/** Zone Identit<EFBFBD> pr<EFBFBD>c<EFBFBD>dente
** contenant tous les anciens nom, sigle et/ou enseigne concat<EFBFBD>n<EFBFBD>s
** n'ai jamais affich<63> mais sert pour l'indexation au niveau de la recherche
** On ne se sert pas de $tabEve['insMENSEIGNE'] =substr($a,543,1);//Indicateur de mise <20> jour de l'enseigne de l'<27>tablissement
** $tabEve['insMNOMEN']=substr($a,658,1);//Indicateur de mise <20> jour du nom ou de la raison sociale
** $tabEve['insMSIGLE']=substr($a,659,1);//Indicateur de mise <20> jour du sigle
**/
$identite_pre=trim($etab['IDENTITE_PRE']);
$nomEntrep=trim(strtr($ligne['insNOMEN'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>')));
$nomEntrepEnBase=substr(trim(strtr($etab['NOM'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>'))),0,38);
if ($nomEntrepEnBase<>$nomEntrep && $nomEntrepEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, <20>tablissement $siren $nic - NOM En base : / MAJ : $nomEntrepEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$nomEntrepEnBase;
else
$identite_pre.=','.$nomEntrepEnBase;
}
$nomEtab=trim(strtr($ligne['insENSEIGNE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>')));
$nomEtabEnBase=trim(strtr($etab['ENSEIGNE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>')));
if ($nomEtabEnBase<>$nomEtab && $nomEtabEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, <20>tablissement $siren $nic - ENSEIGNE En base : / MAJ : $nomEtabEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$nomEtabEnBase;
else
$identite_pre.=','.$nomEtabEnBase;
}
$sigEntrep=trim(strtr($ligne['insSIGLE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>')));
$sigEntrepEnBase=trim(strtr($etab['SIGLE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'<27>')));
if ($sigEntrepEnBase<>$sigEntrep && $sigEntrepEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, <20>tablissement $siren $nic - SIGLE En base : / MAJ : $sigEntrepEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$sigEntrepEnBase;
else
$identite_pre.=','.$sigEntrepEnBase;
}
$arrBase=array( 'NOM'=> trim($ligne['insNOMEN']), // Raison Sociale de l'entreprise
'NOM2'=> trim($ligne['insL2_COMP']), // Enseigne de l'<27>tablissement ou sigle de l'entreprise ou enfin, nom commercial (Intermarch<63>)
'ENSEIGNE'=> trim($ligne['insENSEIGNE']), // Nom de l'<27>tablissement ou enseigne
'SIGLE'=> trim($ligne['insSIGLE']), // Sigle
'SIEGE'=> $ligne['insSIEGE'], // Si<53>ge
'IDENTITE_PRE'=>$identite_pre,
'ADR_NUMVOIE'=> trim($ligne['insNUMVOIE']), // N<> dans la voie
'ADR_BTQ'=> trim($ligne['insINDREP']), // BTQ
'ADR_TYPVOIE'=> trim($ligne['insTYPVOIE']), // Type de voie
'ADR_LIBVOIE'=> trim($ligne['insLIBVOIE']), // Lib Voie
'ADR_CP'=> trim($ligne['insCODPOS']), // Code Postal
'ADR_LIBCOM'=> trim($ligne['insLIBCOM']), // Commune
'ADR_COMP'=> trim($ligne['insL3_CADR']), // Compl<70>ment d'adresse
'ADR_DISTSP'=> trim($ligne['insL5_DISP']), // Distribution Sp<53>ciale
'AUXILT'=> trim($ligne['insAUXILT']), //
'SAISONAT'=> $ligne['insSAISONAT'], //
'CJ'=> trim($ligne['insCJ']),
'CIVILITE'=> trim($ligne['insCIVILITE']), // Sexe 0=Entrep, 1=Homme, 2=Femme
'DCRET'=> trim($ligne['insDCRET']), // Date de cr<63>ation de l'<27>tablissemennt
'DCREN'=> trim($ligne['insDCREN']), // Date de cr<63>ation de l'entreprise
'APE_ENT'=> trim($ligne['insAPEN700']), // Code NAF de l'entreprise (cf. table APE)
'APE_ETAB'=> trim($ligne['insAPET700']), // Code NAF de l'<27>tablissement (cf. table APE)
'NBETAB'=> trim($ligne['insNBETEXPL']), // Nombre d'<27>tablissement de l'entreprise
'TEFF_ENT'=> trim($ligne['insTEFEN']), // Tr Eff Entrep
// 'TCA'=> trim($ligne['insTCA']), // Tr CA
'CODEVOIE'=> trim($ligne['insCODEVOIE']), // Ce RIVOLI
'ADR_DEP'=> trim(substr($ligne['insDEPCOM'],0,2))*1,
'ADR_COM'=> trim(substr($ligne['insDEPCOM'],2,3))*1,
'EFF_ENT'=> trim($ligne['insEFENCENT']), // Eff Entrep
'TEFF_ET'=> trim($ligne['insTEFET']), // Tr Eff Etablissement
'EFF_ET'=> trim($ligne['insEFETCENT']), // Eff Etablissement
'PAYS'=> trim($ligne['insL7_ETRG']), // Pays si diff<66>rent de france
'APRM'=> trim($ligne['insAPRM']), // R<>pertoire M<>tier
'ACTIVNAT'=> trim($ligne['insACTIVNAT']),
'ORIGINE'=> trim($ligne['insORIGINE']),
'MODET'=> trim($ligne['insMODET']),
'EXPLET'=> trim($ligne['insEXPLET']),
'DAPET'=> trim($ligne['insDAPET']),
'LIEUACT'=> trim($ligne['insLIEUACT']),
'ACTISURF'=> trim($ligne['insACTISURF']),
'DEFET'=> trim($ligne['insDEFET']),
'MODEN'=> trim($ligne['insMODEN']),
'PRODPART'=> trim($ligne['insPRODPART']),
'EXPLEN'=> trim($ligne['insEXPLEN']),
'DEFEN'=> trim($ligne['insDEFEN']),
'MONOREG'=> trim($ligne['insMONOREG']),
'REGIMP'=> trim($ligne['insREGIMP']),
'MONOACT'=> trim($ligne['insMONOACT']),
'DAPEN'=> trim($ligne['insDAPEN']),
'DATE_MAJ'=> substr(''.$ligne['insDATEMAJ'].'',0,8),
);
if ($cpt==0) {
/**
** On ajoute la fiche de l'<EFBFBD>tablissement
**/
$arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // T<>l<EFBFBD>phone de l'<27>tablissement
$tabInsert=array( 'SIREN'=> $ligne['insSIREN'],
'NIC'=> $ligne['insNIC'],
);
$tabInsert=array_merge($tabInsert, $arrTel, $arrDir, $arrBase, $arrActif);
// echo date ('Y/m/d - H:i:s')." - Siret $siren $nic en cours d'ajout".EOL;
$retInsert=$iDbW->insert('identite', $tabInsert, true);
if (!$retInsert) die('Erreur Mysql n<>'. mysql_errno() .' : '.mysql_error());
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic ajout<75>".EOL;
$nbInsert++;
} else {
/**
** On modifie la fiche de l'<EFBFBD>tablissement
**/
$tel=trim($ret2[0]['TEL']);
if (trim($ligne['insTEL'])<>'' && $tel=='')
$arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // T<>l<EFBFBD>phone de l'<27>tablissement
else
$arrTel=array();
$tabUpdate=array_merge($arrTel, $arrDir, $arrBase, $arrActif);
$retUpdate=$iDbW->update('identite', $tabUpdate, "SIREN=$siren AND NIC=$nic", false);
if (!$retUpdate) die('Erreur lors de MAJ Mysql n<>'. mysql_errno() .' : '.mysql_error());
//if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic modifi<66>".EOL;
$nbUpdate++;
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic : $cpt fiche(s) modifi<66>e(s)".EOL;
if ($cpt>1) {
//die(date ('Y/m/d - H:i:s')." - Siret $siren $nic : $cpt correspondances".EOL);
$tabSirenDoubles[]=$siren;// RAF
$fp=fopen('doublons.txt', 'a');
fwrite($fp, "$siren $nic : $cpt lignes\n");
fclose($fp);
//print_r($ret2);
echo date ('Y/m/d - H:i:s')." - Doublons sur $siren $nic : $cpt lignes".EOL;
$nbDBl++;
}
}
}
echo date ('Y/m/d - H:i:s') . " - Fin du chargement du flux $idFlux : $k lignes trait<69>s ($nbInsert ajouts, $nbUpdate maj et $nbDBl doublons).".EOL;
}
echo date ('Y/m/d - H:i:s') . " - Fin de la mise <20> jour de la table identit<69>".EOL;
} else echo ', la table identite n\'est pas mise <20> jour !'.EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des <20>v<EFBFBD>nements INSEE".EOL;
$message="Fichier <20>v<EFBFBD>nements '".implode(',', $nomFichierCharges)."' :
- $nbLignesCharges lignes trait<EFBFBD>es,
- $nbSiretInvalidesCharges siret invalides,
- $nbErreurs erreurs lors des insertions.
";
if ($updateInsee) {
$message.="
Table identit<EFBFBD> :
- $nbInsert cr<EFBFBD>ations,
- $nbUpdate mises <EFBFBD> jour
";
}
$message.=EOL;
/** Ajout du fichier info de l'INSEE **/
foreach ($nomFichierCharges as $nomFichier) {
$message.="Informations INSEE pour '$nomFichier' :".EOL;
$message.=file_get_contents(AMABIS_LOCAL_DIR.str_replace('*','', AMABIS_FTP_REMOTE_DIR).str_replace('EVE.DJ','EVE.NJ',$nomFichier)).EOL;
$message.=EOL;
}
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Fin du traitement de chargement INSEE', $message);
die();
?>