#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Chargement du flux Cedexa via Amabis. Options : -d Mode debug (Verbosité au maximum) -j Ne pas récupérer les derniers fichiers sur le FTP de l'Insee -u Forcer la mise à jour la table identite de l'insee -s=20080430 Réappliquer les évè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é pour l'instant : chargera les derniers fichiers EVEN non chargé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 évènements INSEE".EOL; $db_table='cedexa'; if ($ftpStep) { /* Récupération des flux FTP */ echo date('Y/m/d - H:i:s') ." - DEBUT de la récupé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ération des flux INSEE en FTP incorrecte !".EOL); else echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux INSEE en FTP ($ret fichiers récupéré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é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 à 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à été chargé ($nbLoaded lignes) !".EOL; else die (date ('Y/m/d - H:i:s')." - ERREUR : le fichier n°$i, $nomFichier a été chargé partiellement $nbLignes<>$nbLoaded !".EOL); continue; } echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$i, $nomFichier ($nbLignes lignes à 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 été trouvée à la ligne précédente !".EOL;//Nouveau format du fichier évènement (de Mai 2007) non géré ! 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é 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ément de nom $tabCedex['filler2'] = trim( substr($a, 98, 38 )); // FILLER $tabCedex['l3_compGeo'] = trim( substr($a, 136, 38 )); // Complément au point géographique $tabCedex['l4_numVoie'] = trim( substr($a, 174, 4 )); // Numéro dans la voie $tabCedex['l4_indRep'] = trim( substr($a, 178, 1 )); // Extension du numéro de voie $tabCedex['l4_libVoie'] = trim( substr($a, 179, 32 )); // Libellé de voie $tabCedex['l5_distrib'] = trim( substr($a, 211, 20 )); // Mention spéciale de distribution $tabCedex['l5_numMS'] = trim( substr($a, 231, 5 )); // numéro de mention spéciale $tabCedex['l5_libCom'] = trim( substr($a, 236, 32 )); // Libellé de la commune $tabCedex['l6_codCedex']= trim( substr($a, 268, 5 )); // Code Cedex $tabCedex['l6_achCedex']= trim( substr($a, 273, 32 )); // Libellé 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 à 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, 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ', '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'], 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ', '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()." à 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é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'être chargé.".EOL; echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traité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ées dont $nbSiretInvalides siret invalides !".EOL; echo date ('Y/m/d - H:i:s') . " - Chargement des évènements terminé"; die(); /********************************************************************************************************************************** * MISE A JOUR DE LA TABLE IDENTITE **********************************************************************************************************************************/ if ($updateInsee) { echo ', début de mise à 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 à 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 à mettre à 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 à mettre à 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éation d'une entreprise case 'M0F': case 'FF': $even=410; break; // Fermeture de l'entreprise case 'OC': $even=130; break; // Création d'un établissement case 'RC': $even=120; break; // Réactivation d'une entreprise par création d'un établissement case 'M0R': case 'RR': $even=120; break; // Réactivation d'une entreprise par réactivation d'un établissement case 'OA': $even=145; break; // Activation économique d'un étab par adjonction de moyens de production case 'OD': $even=430; break; // Désactivation économique d'un étab par suppression de moyens de prod. case 'OF': $even=430; break; // Fermeture d'un établissement case 'TC': $even=510; $typEtab=11; break; // Création de l'établissement d'arrivée et cessation de l'é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 établissement dans le cadre d'un transfert case 'TD': $even=510; $typEtab=10; break; // Désactivation économique d'un é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éation ou réactivation Création d'une entreprise case 120: // Réactivation d'une entreprise case 125: // Réactivation d'une entreprise suite à une mise à jour du répertoire case 130: // Création d'un établissement case 145: // Reprise d'activité dans un établissement suite à une mise à jour du répertoire switch ($typEtab) { case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique case 23: // Établissement fermé (hors transfert) case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation é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é de l'entreprise (cessation économique de l.entreprise) $dateFerET=$ligne['insDATEVE']; $dateFerEN=$ligne['insDATEVE']; $actif=0; /** @todo, il faudrait fermer tous les étabs **/ break; case 425: // Absence d'activité d'une entreprise suite à une mise à jour au répertoire case 430: // Fermeture d'un établissement case 435: // Fermeture d'un établissement suite à une mise à jour au répertoire switch ($typEtab) { case 13: // Siège fermé (hors transfert) case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique case 23: // Établissement fermé (hors transfert) case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation économique $dateFerET=$ligne['insDATEVE']; $actif=0; break; case 14: // Siège modifié (hors transfert) : modification de l'activité principale avec activation économique case 16: // Siège modifié (hors transfert) : modification de l'APE de l'établissement case 17: // Siège modifié (hors transfert) : modification de l'identification de l'établissement case 19: // Siège modifié (hors transfert) : autre modification de l'établissement case 24: // Établissement modifié (hors transfert) : modification de l'activité principale avec activation économique $dateFerET=$dateFerEN=0; $actif=1; break; default: $actif=-1; break; } break; case 510: // Création de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert case 520: // Création de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert case 530: // Modification de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert case 540: // Modification de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert switch ($typEtab) { case 9: // Siège après transfert non créé case 8: // Siège avant transfert non fermé case 11: // Siège après transfert créé case 12: // Siège créé (hors transfert) case 14: // Siège modifié (hors transfert) : modification de l'activité principale avec activation économique case 21: // Établissement après transfert créé case 22: // Établissement créé (hors transfert) case 24: // Établissement modifié (hors transfert) : modification de l'activité principale avec activation économique case 30: // Établissement avant transfert non fermé case 31: // Établissement après transfert non créé //echo "case even=$even, typeEtab=$typEtab\n"; $dateFerET=$dateFerEN=0; $actif=1; break; case 10: // Siège avant transfert fermé case 13: // Siège fermé (hors transfert) case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique case 20: // Établissement avant transfert fermé case 23: // Établissement fermé (hors transfert) case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation économique case 32: // Établissement supprimé //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ège modifié (hors transfert) : modification de l'activité principale de l'établissement 17 Siège modifié (hors transfert) : modification de l'identification de l'établissement 19 Siège modifié (hors transfert) : autre modification de l'établissement 26 Établissement modifié (hors transfert) : autre modification de l'activité principale de l'établissement 27 Établissement modifié (hors transfert) : modification de l'identification de l'établissement 29 Établissement modifié (hors transfert) : modification d.une autre variable de l'établissement*/ } break; case 610: // Modification d'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production case 640: // Modification d'activité au niveau de l'établissement associée à une activation économique par adjonction de moyens de production $actif=1; break; case 620: // Modification d'activité au niveau du SIREN associé à une désactivation économique par suppression de moyens de production case 621: // Modification d'activité du SIREN associé à une désactivation économique par suppression de moyens de production suite à une correction d'erreur $dateFerET=$ligne['insDATEVE']; $dateFerEN=$ligne['insDATEVE']; $actif=0; break; case 650: // Modification d'activité au niveau de l'établissement associée à une désactivation é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é du SIREN associé 661 Autre modification d'activité au niveau de l'établissement 710 Modification de l'identification du SIREN 711 Modification de l'identification du SIREN suite à correction d'erreur 720 Modification de l'adresse ou de l'identification de l'établissement 780 Autre modification entraînant la mise à jour d'au moins une variable du répertoire 781 Autre modification entraînant la mise à jour d'au moins une variable du répertoire suite à 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é l'état actif ou inactif, on test si la variable DESTINAT est renseignée ! **/ if ($actif==-1 && (trim($ligne['insEVE'])=='MPF' || trim($ligne['insEVE'])=='MNP')) { // Etablisement présumé fermé mais on laisse actif juridiquement $actif=-1; } elseif ($actif==-1 && ( $destinat*1==3 || // Vendu $destinat=='B' || // Fermé $destinat=='C' || // Supprimé $destinat=='D' || // Mise en location-gérance de la totalité du fonds $destinat=='F' || // Cessation d'activité (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é 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é, l'établissement devient siège $destinat*1==8 || // Maintien d'activité, l'établissement devient principal $destinat=='A' || // Maintien d'activité, l'établissement devient secondaire $destinat=='E' || // Mise en location-gérance d'une partie du fonds $destinat=='VP' || // suppression partielle d'activité par vente $destinat=='DP' || // suppression partielle d'activité par disparition $destinat=='RP' || // suppression partielle d'activité par reprise par le proprié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é */ 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é précédente ** contenant tous les anciens nom, sigle et/ou enseigne concaténés ** n'ai jamais affiché 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 à jour de l'enseigne de l'établissement ** $tabEve['insMNOMEN']=substr($a,658,1);//Indicateur de mise à jour du nom ou de la raison sociale ** $tabEve['insMSIGLE']=substr($a,659,1);//Indicateur de mise à jour du sigle **/ $identite_pre=trim($etab['IDENTITE_PRE']); $nomEntrep=trim(strtr($ligne['insNOMEN'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°'))); $nomEntrepEnBase=substr(trim(strtr($etab['NOM'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°'))),0,38); if ($nomEntrepEnBase<>$nomEntrep && $nomEntrepEnBase<>'') { if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, é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)=>'°'))); $nomEtabEnBase=trim(strtr($etab['ENSEIGNE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°'))); if ($nomEtabEnBase<>$nomEtab && $nomEtabEnBase<>'') { if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, é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)=>'°'))); $sigEntrepEnBase=trim(strtr($etab['SIGLE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°'))); if ($sigEntrepEnBase<>$sigEntrep && $sigEntrepEnBase<>'') { if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, é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'établissement ou sigle de l'entreprise ou enfin, nom commercial (Intermarché) 'ENSEIGNE'=> trim($ligne['insENSEIGNE']), // Nom de l'établissement ou enseigne 'SIGLE'=> trim($ligne['insSIGLE']), // Sigle 'SIEGE'=> $ligne['insSIEGE'], // Siè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ément d'adresse 'ADR_DISTSP'=> trim($ligne['insL5_DISP']), // Distribution Spé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éation de l'établissemennt 'DCREN'=> trim($ligne['insDCREN']), // Date de cré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'établissement (cf. table APE) 'NBETAB'=> trim($ligne['insNBETEXPL']), // Nombre d'é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é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'établissement **/ $arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // Téléphone de l'é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é".EOL; $nbInsert++; } else { /** ** On modifie la fiche de l'établissement **/ $tel=trim($ret2[0]['TEL']); if (trim($ligne['insTEL'])<>'' && $tel=='') $arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // Téléphone de l'é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é".EOL; $nbUpdate++; if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic : $cpt fiche(s) modifié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és ($nbInsert ajouts, $nbUpdate maj et $nbDBl doublons).".EOL; } echo date ('Y/m/d - H:i:s') . " - Fin de la mise à jour de la table identité".EOL; } else echo ', la table identite n\'est pas mise à jour !'.EOL; echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des évènements INSEE".EOL; $message="Fichier évènements '".implode(',', $nomFichierCharges)."' : - $nbLignesCharges lignes traitées, - $nbSiretInvalidesCharges siret invalides, - $nbErreurs erreurs lors des insertions. "; if ($updateInsee) { $message.=" Table identité : - $nbInsert créations, - $nbUpdate mises à 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(); ?>