#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini 'sugarcrm', 'table2'=>'accounts', 'champRS'=>'name', 'champAdresse'=>'billing_address_street', 'champCP'=>'billing_address_postalcode', 'champVille'=>'billing_address_city', 'champSiren'=>'ticker_symbol', 'champSirenValide'=>'(ticker_symbol<30000 OR ticker_symbol IS NULL)AND deleted')*/ array( // Base 0 'db'=>'jo', // Table à sirener 'table1'=>'bodacc_detail', // Jointure 'table2'=>"bodacc_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='bodacc_detail'", // Champs 'champRS'=>'raisonSociale', 'champAdresse'=>"CONCAT_WS(' ', adrNum,adrLibVoie)", 'champCP'=>'codePostal', 'champVille'=>'ville', 'champSiren'=>'b.siren', 'champNic'=>'nic', 'champSirenValide'=>'sirenValide', 'champNicValide'=>'nicValide'), array( // Base 1 'db'=>'jo', // Table à sirener 'table1'=>'annonces', // Jointure 'table2'=>"annonces b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='annonces'", // Champs 'champRS'=>'raisonSociale', 'champAdresse'=>'adresse', 'champCP'=>'codePostal', 'champVille'=>'ville', 'champSiren'=>'b.siren', //'champNic'=>'nic', 'champSirenValide'=>'sirenValide'), array( // Base 2 'db'=>'jo', // Table à sirener 'table1'=>'sirenage_clients', // Jointure 'table2'=>"sirenage_clients b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='sirenage_clients'", // Champs 'champRS'=>'nom', 'champAdresse'=>"TRIM(CONCAT_WS(' ', adresse1,adresse2,adresse3))", 'champCP'=>'cp', 'champVille'=>'ville', 'champSiren'=>'b.siren', 'champNic'=>'b.nic', 'champSirenValide'=>'sirenValide', 'champNicValide'=>'nicValide'), array( // Base 3 'db'=>'jo', // Table à sirener 'table1'=>'asso', // Jointure 'table2'=>"asso b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='asso'", // Champs 'champRS'=>'Assoc_Nom', 'champAdresse'=>'Assoc_Adresse', 'champCP'=>'NULL', 'champVille'=>'NULL', 'champSiren'=>'b.siren', 'champNic'=>'nic', 'champSirenValide'=>'sirenValide', 'champNicValide'=>'nicValide'), array( // Base 4 'db'=>'jo', // Table à sirener 'table1'=>'rncs_dirigeants', // Jointure 'table2'=>"rncs_dirigeants b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.dirSiren AND s.idTable='rncs_dirigeants'", // Champs 'champRS'=>'dirRS', 'champAdresse'=>'NULL', 'champCP'=>'NULL', 'champVille'=>'NULL', 'champSiren'=>'b.dirSiren', //'champNic'=>'nic', 'champSirenValide'=>"b.typeDir='PM' AND b.dirSiren", //'champNicValide'=>'nicValide', ), array( // Base 5 'db'=>'jo', // Table à sirener 'table1'=>'boamp_lots', // Jointure 'table2'=>"boamp_lots b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='boamp_lots'", // Champs 'champRS'=>'nom', 'champAdresse'=>'adresse', 'champCP'=>'cp', 'champVille'=>'ville', 'champSiren'=>'b.siren', //'champNic'=>'b.nic', 'champSirenValide'=>"(Boamp_Code='BOMP C' OR Boamp_Rubrique IN('9','94')) AND sansSuite=0 AND (nom<>'' OR adresse<>'' OR cp<>'' OR ville<>'') AND nom NOT LIKE '%INFRUCTUEU%' AND b.sirenValide", //'champNicValide'=>'nicValide', ), array( // Base 6 'db'=>'jo', // Table à sirener 'table1'=>'boamp_detail', // Jointure 'table2'=>"boamp_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='boamp_detail'", // Champs 'champRS'=>'raisonSociale', 'champAdresse'=>'adresse', 'champCP'=>'cp', 'champVille'=>'ville', 'champSiren'=>'b.siren', //'champNic'=>'b.nic', 'champSirenValide'=>"(raisonSociale<>'' OR adresse<>'' OR cp<>'' OR ville<>'') AND b.sirenValide", //'champNicValide'=>'nicValide', ), array( // Base 7 'db'=>'jo', // Table à sirener 'table1'=>'tourisme', // Jointure 'table2'=>"tourisme b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='tourisme'", // Champs 'champRS'=>'nom', 'champAdresse'=>'adresse', 'champCP'=>'adrCp', 'champVille'=>'adrVille', 'champSiren'=>'b.siren', 'champNic'=>'b.nic', 'champSirenValide'=>"b.sirenValide", 'champNicValide'=>'b.nicValide', ), array( // Base 8 'db'=>'sdv1', // Table à sirener 'table1'=>'fedLiens', // Jointure 'table2'=>"fedLiens b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren2 AND s.idTable='fedLiens'", // Champs 'champRS'=>'RS', 'champAdresse'=>'adresse_libvoie', 'champCP'=>'adresse_cp', 'champVille'=>'adresse_ville', 'champSiren'=>'b.siren2', //'champNic'=>'nic', 'champSirenValide'=>"b.PpPm='PM' AND b.siren2", //'champNicValide'=>'nicValide', ), array( // Base 9 'db'=>'bopi', // Table à sirener 'table1'=>'marques', // Jointure 'table2'=>"bopi.marques b LEFT JOIN jo.bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.sirenDeposant AND s.idTable='marques'", // Champs 'champRS'=>'deposantMarque', 'champAdresse'=>"CONCAT_WS(' ',deposant_AdrNum,deposant_AdrTypVoie,deposant_AdrLibVoie,deposant_AdrComp)", 'champCP'=>'deposant_AdrCP', 'champVille'=>'deposant_AdrVille', 'champSiren'=>'b.sirenDeposant', //'champNic'=>'nic', 'champSirenValide'=>"b.sirenValide", //'champNicValide'=>'nicValide', ),/* array( // Base 10 - Ce siren tout le temp !!! 'db'=>'sdv1', // Table à sirener 'table1'=>'tabCNCC', // Jointure 'table2'=>"sdv1.tabCNCC b LEFT JOIN jo.bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='tabCNCC'", // Champs 'champRS'=>'nom', 'champAdresse'=>"CONCAT_WS(' ',adresse,adresse2)", 'champCP'=>'cp', 'champVille'=>'ville', 'champSiren'=>'b.siren', 'champNic'=>'nic', 'champSirenValide'=>"sirenValide", 'champNicValide'=>'nicValide', ), */ ); //$iDb2=new WDB('modelisation'); foreach ($tabTables as $i=>$table) { // On boucle sur chaque table if (count($tabCycles)>0 && !in_array($i, $tabCycles)) continue; $iDb=new WDB($table['db']); $tableDB=$table['table2']; if ($iDb === false) die('Could not select database: ' . $iDb->getLastError()); if (!$sansPropo) $strOptions=" AND s.idAnn IS NULL AND s.siren IS NULL "; else $strOptions=""; //if ($toutes) { $tableDB=$table['table1'].' b'; $strOptions=''; } if ($index) $strOptions.=' AND b.id>='.$index; //if ($index) $strOptions.=' AND id>='.$index; $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, nomCommercial, enseigne, sigle, adrNum, adrSiegeNum, '.$table['champAdresse'].' as Adr, CONCAT_WS(adrNum," ",adrLibVoie) as AdrSiege, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, codePostalSiege, villeSiege, Rubrique_Bodacc, Bodacc_Num, Bodacc_Date_Parution, Num_Annonce, Tribunal_Code, dateJugement, DATE_FORMAT(dateJugement, \'%w\') as jourJugement, DATE_FORMAT(dateJugement, \'%d\') as jjJugement'; //if ($i==0) // $strOptions.=" OR b.typeEven LIKE '%1515%' ";//OR b.typeEven LIKE '%1517%' OR b.typeEven LIKE '%1520%' OR b.typeEven LIKE '%1999%' // codeEven==1515 || $codeEven==1517 || $codeEven==1520 ||$codeEven==1999)) if ($i==1) $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, "" AS Rubrique_Bodacc, parutionNum AS Bodacc_Num, dateSource AS Bodacc_Date_Parution, idAnnonce AS Num_Annonce, tribunal AS Tribunal_Code, dateJugement, DATE_FORMAT(dateJugement, \'%w\') as jourJugement, DATE_FORMAT(dateJugement, \'%d\') as jjJugement'; elseif ($i==2) $fields='id, '.$table['champSiren'].' as sir, '.$table['champNic'].' as nic, '.$table['champRS'].' as RS, enseigne, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, telephone, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, "" AS Bodacc_Date_Parution, "" AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; elseif ($i==3) { $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, "" AS enseigne, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, Type_Annonce AS Rubrique_Bodacc, Num_Parution AS Bodacc_Num, Date_Parution AS Bodacc_Date_Parution, Num_Annonce, Sous_Prefecture AS Tribunal_Code, Assoc_Date_Declaration2 AS dateJugement, "" as jourJugement, "" as jjJugement'; $strOptions.=""; } elseif ($i==4) $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, "" AS enseigne, "" as Adr, "" as CP, "" as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, flux AS Bodacc_Date_Parution, 0 AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; elseif ($i==5) $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, Boamp_Rubrique AS Rubrique_Bodacc, "" AS Bodacc_Num, Boamp_Date_Parution AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; elseif ($i==6) $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, Boamp_Rubrique AS Rubrique_Bodacc, "" AS Bodacc_Num, Boamp_Date_Parution AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; elseif ($i==7) { $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, typeClasse AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; } elseif ($i==9) { $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; } elseif ($i==10) { $fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code, "" AS dateJugement, "" as jourJugement, "" as jjJugement'; $strOptions=" AND cp IS NOT NULL "; } $where=$table['champSirenValide']."=0 "; if ($i<>2 && $i<>4 && $i<>7 && $i<>9 && $i<>10) { $where.=" AND idSuppr=0"; } if ($noLimit) $strOptions.=" ORDER BY id DESC"; else $strOptions.=" /*AND id>768245*/ ORDER BY id ASC LIMIT 0,5000"; $where.=" $strOptions "; echo date('Y/m/d - H:i:s') ." - REQUETE SQL = SELECT $fields FROM $tableDB WHERE $where;".EOL; //$listeNonSirene=$iDb->select($tableDB, $fields, $where, true, MYSQL_ASSOC); $nbNonSirene=$iDb->select($tableDB, $fields, $where, true, MYSQL_ASSOC, true); //echo date('Y/m/d - H:i:s') ." - Nombre d'entitées non SIRENEES : ". count($listeNonSirene) . EOL; echo date('Y/m/d - H:i:s') ." - Nombre d'entitées non SIRENEES : ".$nbNonSirene . EOL; $k=0; //foreach ($listeNonSirene as $k=>$entrep) { while($entrep=$iDb->fetch(MYSQL_ASSOC)) { $lastId=$entrep['id']; // $listeNonSirene as $k=>$entrep) { $k++; //if ($k==1000) die(); /* Vérifier dans la table failure if (substr($entrep['Rubrique_Bodacc'],0,1)=='A') $codJournal='001'; else $codJournal='200'; $failures=$iDb2->select('failures', 'SIREN, NIC, libann, codevt, codtri, SONOM, SOCOM', "codjou='$codJournal' AND datpar='".str_replace('-','',$entrep['Bodacc_Date_Parution'])."' AND numbod='".$entrep['Bodacc_Num']."' AND numannjou='0".$entrep['Num_Annonce']."' AND SIREN NOT LIKE '000000000' GROUP BY SIREN", true); if (count($failures)==2) { /** Si plus de 1 siren, il faut vérifier suivant le type de l'annonce à quelle entreprise rattacher le siren manquant $tabSirF=array(); foreach ($failures as $sirenf) $tabSirF[]=$sirenf['SIREN']; $strTabSir=implode(',',$tabSir); $tabTmp=$iDb->select('bodacc_detail','id, siren, sirenValide', 'id='. $entrep['id'].' ORDER BY sirenValide ASC', true);// ." AND siren NOT IN ($strTabSir)", true); $tabSir=array(); foreach ($tabTmp as $sirenf) $tabSir[]=$sirenf['siren']; /*echo "Failures:\n"; print_r($failures); echo "S&D:\n"; print_r($tabTmp); echo "Diff:\n"; $tabTmp2=array_diff($tabSirF,$tabSir); $siren=$tabTmp2[0]; // Valeur du Siren à prendre pour la mise à jour $sir=$tabTmp[0]['siren']; // Sir à mettre à jour //$nom=$entrep['SONOM']; //$vil=$entrep['SOCOM']; echo "Trouvé = $siren !\n"; $iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>2), 'id='.$entrep['id'].' AND siren='.$sir, true) or die($iDb->getLastError()); //die(); // On efface l'information de la table A sirener au cas où ! $iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$sir); } elseif (count($failures)==1) { echo "Une seule correspondance failures:\n"; print_r($failures); $siren=$failures[0]['SIREN']; // Valeur du Siren à prendre pour la mise à jour //$sir=$tabTmp[0]['siren']; // Sir à mettre à jour $iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>2), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true);// or die($iDb->getLastError()); // On efface l'information de la table A sirener au cas où ! $iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']); //die(); /*} elseif (count($failures)>2) { echo "Plus de 2 correspondance failures:\n"; print_r($failures); die(); } else { // Pas trouvé dans failures **/ $raisonSociale=preg_replace("/,(.*)\)/",'',$entrep['RS']); if ($i==5 || $i==6) $raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.$raisonSociale.' ',array(' VILLE '=>' COMMUNE ', ' CONSEIL GENERAL '=>' DEPARTEMENT ', )))); /* $raisonSociale=strtoupper(strtr($raisonSociale, '/(),-\\\'":',' ')); $raisonSociale=preg_replace('/[^0-9A-Z]/', ' ', strtr($raisonSociale, 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY')); $raisonSociale=preg_replace("/GERANT (.*)/",'', $raisonSociale); $raisonSociale=preg_replace("/^(MLLE |MELLE |MLE |MME |ME |M |MR )/",'', $raisonSociale); $raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.$raisonSociale.' ', 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 '=>' ', ' EARL '=>' ', ' EAR '=>' ', ' EA '=>' ',' SC '=>' ', ' DE '=>' ',' ET '=>' ',' LA '=>' ',' DU '=>'', ' DES '=>' ', ' L '=>' ', ' SOCIETE '=>' ', ' MONSIEUR '=>' ', ' MADAME '=>' ', ' STE '=>' ', ' CIVILE '=>' ', ' IMMOBILIERE '=>' ',' LIQUIDATION '=>' ', ' DISSOLUTION '=>' ', ))));*/ if ($entrep['CP']<>0) { $adresse=preg_replace('/[^0-9A-Z]/', ' ', strtr($entrep['Adr'], 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY')); $adresse=trim(preg_replace("/ +/",' ', strtr(' '.$adresse.' ', array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' ')))); $codePostal=$entrep['CP']; $ville=trim(strtr($entrep['ville'], '/(),',' ')); } else { $adresse=preg_replace('/[^0-9A-Z]/', ' ', strtr($entrep['AdrSiege'], 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY')); $adresse=trim(preg_replace("/ +/",' ', strtr(' '.$adresse.' ', array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' ')))); $codePostal=$entrep['codePostalSiege']; $ville=trim(strtr($entrep['villeSiege'], '/(),',' ')); } if ($i==3) { $strAdresse=$entrep['Adr']; $tabAdresse=$mInsee->structureVoie($entrep['Adr']); $adresse=trim(preg_replace("/ +/",' ', strtr(' '.$tabAdresse['libVoie'].' '.$tabAdresse['adrComp0'].' ', array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' ')))); $codePostal=$tabAdresse['cp']; $ville=$tabAdresse['ville']; // print_r($tabAdresse); // die(); } if ($i==2 && $entrep['sir']>1000 && $entrep['nic']>9) { $sirC=$entrep['sir']; $nicC=$entrep['nic']; $tabTmp=$mInsee->getIdentiteLight($sirC, $nicC); //print_r($tabTmp); // Entreprise recherchée ! $raisonSociale=strtoupper($entrep['RS']); $adresse=strtoupper($entrep['Adr']); $codePostal=strtoupper($entrep['CP']); $ville=strtoupper($entrep['ville']); $telephone=strtr(@$entrep['telephone'],array('.'=>'',','=>'',';'=>'','-'=>'','/'=>'','+33'=>'','0033'=>'','('=>'',')'=>'',' '=>'')); echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE cli : $sirC $nicC - $raisonSociale, $adresse, $codePostal $ville ($telephone)".EOL; // Entreprise lue (trouvée) $raisonSocialeLu=strtoupper($tabTmp['Nom']); $adresseLu=strtoupper($tabTmp['Adresse']); $codePostalLu=$tabTmp['CP']; $villeLu=strtoupper($tabTmp['Ville']); $sirL=$tabTmp['Siren']; $nicL=$tabTmp['Nic']; $telephoneLu=$tabTmp['Tel']; echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : TROUVEE cli : $sirL $nicL - $raisonSocialeLu, $adresseLu, $codePostalLu $villeLu ($telephoneLu)".EOL; $len=strlen($raisonSociale.$adresse.$codePostal.$ville); $lenLu=strlen($raisonSocialeLu.$adresseLu.$codePostalLu.$villeLu); $levRS=levenshtein($raisonSociale,$raisonSocialeLu); $levAdr=levenshtein($adresse,$adresseLu); $levCP=levenshtein($codePostal,$codePostalLu); $levVille=levenshtein($ville,$villeLu); $levTotal=$levRS+$levAdr+$levCP+$levVille; $len1=($lenLu+$len)/2; $ratio1=$levTotal/$len1*1.0; $ratio2=$len1/$levTotal; echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité $levTotal, $len1 => $ratio1, $ratio2 : "; if ($ratio1<0.4 && $table['table1']=='sirenage_clients') { $tabUpdate=array( 'siren'=>$sirL, 'nic'=>$nicL); $tabUpdate[$table['champSirenValide']]=1; $tabUpdate[$table['champNicValide']]=1; $iDb->update($table['table1'], $tabUpdate, "id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL); echo 'VALIDE'.EOL; continue; } echo 'non validé'.EOL; if ($telephone<>'') { $tabTmp=$mInsee->getEtablissementsParId('TEL', $telephone, $deb, $nbRep, $maxRep); $tabTrouve=$tabTmp['reponses']; if ($tabTmp[nbReponses]>0) { echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité TELEPHONE => $ratio1, $ratio2 : "; if ($tabTmp[nbReponses]==1 && $tabTrouve[0]['Siren']==$sirC) { $tabTrouv=$tabTrouve[0]; $tabUpdate=array( 'siren'=>$sirC, /*'nic'=>$nicL*/); $tabUpdate[$table['champSirenValide']]=1; $tabUpdate[$table['champNicValide']]=1; $iDb->update($table['table1'], $tabUpdate, "id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL); echo 'VALIDE'.EOL; continue; } echo 'non validé'.EOL; } } } $deb=0;$nbRep=20;$maxRep=20;$actif=''; $tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; /** On recherche au nom Commercial **/ /* if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } /** On recherche à l'enseigne **/ /* if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } /** On recherche au sigle **/ /* if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['sigle'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } /** On présume que le code postal n'est pas bon **/ /* if (count($tabTrouve)==0) { $tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et nom Commercial if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et à l'enseigne if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et au sigle if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['sigle'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } /** ** On présume que le numéro dans la rue est faux **/ /* if (count($tabTrouve)==0) { $tabTmp=$mInsee->rechercheEtab($raisonSociale, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et nom Commercial if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et à l'enseigne if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // et au sigle if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') { $tabTmp=$mInsee->rechercheEtab($entrep['sigle'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } // Recherche par le dernier mot de la RS if (count($tabTrouve)==0) { $tabMot=explode(' ', $raisonSociale); $rsFin=end($tabMot); $rsDeb=end($tabMot); if (strlen($motFin)>3) $tabTmp=$mInsee->rechercheEtab($rsFin, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); elseif (strlen($motDeb)>3) $tabTmp=$mInsee->rechercheEtab($rsDeb, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; if (count($tabTrouve)==0) { $tabMot=explode(' ', trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' '))))); $adrFin=end($tabMot); if (strlen($adrFin)>3) { $tabTmp=$mInsee->rechercheEtab($rsFin, $adrFin, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } } if (count($tabTrouve)==0) { $tabMot=explode(' ', $ville); $vilFin=end($tabMot); if (strlen($vilFin)>3) { $tabTmp=$mInsee->rechercheEtab($rsFin, $adrFin, '', $vilFin, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } } } /** Si l'adresse est "exhaustive", on cherche sans la raison sociale **/ /* if (count($tabTrouve)==0 && ($entrep['adrNum']<>0 || $entrep['adrSiegeNum']<>0)) { $tabTmp=$mInsee->rechercheEtab('', $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } /** Si l'adresse est "exhaustive", on cherche sans la raison sociale **/ /* if (count($tabTrouve)==0 && ($entrep['adrNum']<>0 || $entrep['adrSiegeNum']<>0)) { $tabTmp=$mInsee->rechercheEtab('', $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true); $tabTrouve=$tabTmp['reponses']; } */ //$adresse=trim(strtoupper(preg_replace("/[0-9]{1,4}( rue | avenue | boulevard )/i",'',strtr($entrep['Adr'], '/(),-',' ')))); //$ville=trim(strtr($entrep['Ville'], '/(),',' ')); echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE DE ". $entrep['id'].', '.$entrep['sir'].' : '.$raisonSociale.', '.$adresse.', '.$codePostal.' '.$ville.' ('.count($tabTrouve). " réponses)".EOL; $tabAnn=$iDb2->select('bodacc', 'annonce', 'id='.$entrep['id']); $annonce=$tabAnn[0][0]; //die($annonce); if ($i==3) { $tabTrouve2=array(); if (is_array($tabTrouve) && count($tabTrouve)>0) foreach ($tabTrouve as $iT=>$tabTrouveT) if ($tabTrouveT['FJ']>=9100 && $tabTrouveT['FJ']<=9300 && $tabTrouveT['Siret']>=1000) $tabTrouve2[]=$tabTrouveT; $tabTrouve=$tabTrouve2; } if (count($tabTrouve)==1) { $entrepT=$tabTrouve[0]; $siren=substr($entrepT['Siret'],0,9); $nic=substr($entrepT['Siret'],9,5); // Entreprise recherchée ! $raisonSociale=strtoupper($entrep['RS']); $adresse=strtoupper($entrep['Adr']); $codePostal=strtoupper($entrep['CP']); $ville=strtoupper($entrep['ville']); echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE : $raisonSociale, $adresse, $codePostal $ville".EOL; // Entreprise lue (trouvée) $raisonSocialeLu=strtoupper($entrepT['Nom']); $adresseLu=strtoupper($entrepT['Adresse']); $codePostalLu=$entrepT['CP']; $villeLu=strtoupper($entrepT['Ville']); echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : TROUVEE : $raisonSocialeLu, $adresseLu, $codePostalLu $villeLu".EOL; //die(print_r($entrep)); $len=strlen($raisonSociale.$adresse.$codePostal.$ville); $lenLu=strlen($raisonSocialeLu.$adresseLu.$codePostalLu.$villeLu); $levRS=levenshtein($raisonSociale,$raisonSocialeLu); $levAdr=levenshtein($adresse,$adresseLu); $levCP=levenshtein($codePostal,$codePostalLu); $levVille=levenshtein($ville,$villeLu); $levTotal=$levRS+$levAdr+$levCP+$levVille; $len1=($lenLu+$len)/2; $ratio1=$levTotal/$len1*1.0; $ratio2=$len1/$levTotal; echo "$siren $nic\n"; //print_r($entrepT);//die(); /*if ($table['db']<>'jo') $iDb->update($tableDB, array($table['champSiren']=>$siren), "id='".$entrep['id']."'", true) or die($iDb->getLastError()); else*/ //print_r($tabTmp); echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité $levTotal, $len1 => $ratio1, $ratio2 : "; if (($ratio1<0.4 && $table['table1']=='sirenage_clients') || ($ratio1<0.3 && $table['table1']=='asso' && $siren>1000) || ($ratio1<0.4 && $table['table1']=='boamp_lots' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') || ($ratio1<0.4 && $table['table1']=='boamp_detail' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') || ($ratio1<0.4 && $table['table1']=='marques' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') || ($ratio1<0.3 && $table['table1']=='tabCNCC' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') ) { //print_r($entrepT);die(); // Si bon rapprochement, on ne demande pas de confirmation ! if ($table['table1']=='boamp_lots' || $table['table1']=='boamp_detail') { $tabUpdate=array( 'siren'=>$siren, 'nic'=>$nic); $tabUpdate['sirenValide']=1; $tabUpdate['nicValide']=1; } elseif ($table['table1']=='marques') { $tabUpdate=array( 'sirenDeposant'=>$siren, 'sirenValide'=>4); } else { $tabUpdate=array( 'siren'=>$siren, 'nic'=>$nic); $tabUpdate[$table['champSirenValide']]=1; $tabUpdate[$table['champNicValide']]=1; } $iDb->update($table['table1'], $tabUpdate, "id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL.print_r($tabUpdate,1).EOL.$table['table1']); echo 'VALIDE'.EOL; continue; } echo 'non validé'.EOL; //fgets(STDIN); if (trim($siren)<>'') { /* $tabTmp=$iDb->select('bodacc_detail','count(*)', 'id='. $entrep['id'] ." AND siren=$siren", true); if ($tabTmp[0][0]<>0) { // Cette annonce est déjà ratachée au siren, on supprime donc ce lien inutile référençant le même siren //$iDb->delete('bodacc_detail', 'id='. $entrep['id'] .' AND siren='.$entrep['sir'], true); } else $iDb->update('bodacc_detail', array('siren'=>$siren, $table['champNic']=>$nic, $table['champSirenValide']=>3, $table['champNicValide']=>3), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die('ERREUR : '.$iDb->getLastError()); // On efface l'information de la table A sirener au cas où ! //$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die('ERREUR : '.$iDb->getLastError()); */ $tabInsert=array( 'idAnn'=>$entrep['id'], 'idTable'=>$table['table1'], 'siren'=>$entrep['sir'], 'siretProposes'=>$siren, 'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce), ); if ($iDb2->insert('bodacc_sirenage', $tabInsert, false, true)) $iDb2->update('bodacc_sirenage', array('siretProposes'=>$siren), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'", false, 0, true) or die('ERREUR 2 : '.$iDb->getLastError().EOL.print_r($tabInsert, true).EOL.'idAnn='.$entrep['id']." AND siren=".$entrep['sir']." AND idTable='".$table['table1']."'"); } } elseif (count($tabTrouve)==0) { echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : Pas de réponse !".EOL; $tabInsert=array( 'idAnn'=>$entrep['id'], 'idTable'=>$table['table1'], 'siren'=>$entrep['sir'], 'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce), ); if (!$iDb2->insert('bodacc_sirenage', $tabInsert, false, true)) $iDb2->update('bodacc_sirenage', array('siretProposes'=>''), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'", false, 0, true) or die('ERREUR 3 : '.$iDb->getLastError().EOL); } else { // Plusieurs siren possibles // print_r($tabTrouve); // die(); //echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : Plusieurs siren possibles".EOL; $siren1=substr($tabTrouve[0]['Siret'],0,9); $nic1=substr($tabTrouve[0]['Siret'],9,5); $sirenDiff=$sirenNomIdem=$sirenAdrIdem=false; $tabSiren=array(0=>0); $tabSiret=array(); foreach ($tabTrouve as $j=>$entrepT) { if($j==0) echo date('Y/m/d - H:i:s') ." - PROBABLES :".EOL; $siren=substr($entrepT['Siret'],0,9); $nic=substr($entrepT['Siret'],9,5); $tabSiren[]=$siren; $nomT=strtr($entrep['RS'], '/(),-',' '); $adresseT=trim(strtoupper(preg_replace("/[0-9]{1,4}(.*)( R | AV | RUE | AVENUE | BD | BOULEVARD )/i",'',strtr($entrepT['Adresse'], '/(),-',' ')))); if (levenshtein($raisonSociale,$nomT)>2) $sirenNomIdem=$siren; if ($siren<>$siren1) $sirenDiff=true; if (levenshtein($adresse,$adresseT)<2) $sirenAdrIdem=$siren; $num=$j+1; echo "$num. $siren $nic, ". $entrepT['Nom'].', '.$entrepT['Nom2'].', '.$entrepT['Enseigne'].', '.$entrepT['Adresse'].', '.$entrepT['CP'].', '.$entrepT['Ville']."\n"; $tabSiret[]=$entrepT['Siret'].'-'.$entrepT['Pertinence']; } echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : ".count($tabTrouve)." possibilités :\n"; $tabInsert=array( 'idAnn'=>$entrep['id'], 'idTable'=>$table['table1'], 'siren'=>$entrep['sir'], 'siretProposes'=>implode(';',$tabSiret), 'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce), ); //fgets(STDIN); // if ($sirenDiff==false) { // Tous les SIREN sont identiques, l'entreprise ttouvée est la bonne ! // echo "$num. Siren trouvé = $siren (tous les Sirens sont identiques) !\n"; // $iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>4, $table['champNicValide']=>0), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die('ERREUR : '.$iDb->getLastError()); // // On efface l'information de la table A sirener au cas où ! // $iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die('ERREUR : '.$iDb->getLastError()); // } else { // /** On insère en base toutes les multipropositions pour le sirenage manuel */ if ($iDb2->insert('bodacc_sirenage', $tabInsert, false, true)) { $tabUpdate=array('siretProposes'=>implode(';',$tabSiret)); $strUpdate='idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'"; // print_r($tabUpdate); // echo $strUpdate.EOL; $iDb2->update('bodacc_sirenage', $tabUpdate, $strUpdate, false, 0, true) or die('ERREUR 4 : '.$iDb->getLastError()); } // } //, 'id='.$entrep['id'].' AND '. $table['champSiren'] .'='.$entrep['sir'], true) or die(mysql_error()); /*elseif ($sirenNomIdem!=false) { echo "$num. Siren trouvé = $sirenNomIdem (raisons sociales identiques) !\n"; if ($table['db']<>'jo') $iDb->update($tableDB, array($table['champSiren']=>$sirenNomIdem), "id='".$entrep['id']."'", true) or die(mysql_error()); else $iDb->update($tableDB, array($table['champSiren']=>$sirenNomIdem, $table['champSirenValide']=>5), 'id='.$entrep['id'], true) or die(mysql_error()); } elseif ($sirenAdrIdem!=false) { echo "$num. Siren trouvé = $sirenNomIdem (adresses identiques) !\n"; if ($table['db']<>'jo') $iDb->update($tableDB, array($table['champSiren']=>$sirenAdrIdem), "id='".$entrep['id']."'", true) or die(mysql_error()); else $iDb->update($tableDB, array($table['champSiren']=>$sirenAdrIdem, $table['champSirenValide']=>6), 'id='.$entrep['id'], true) or die(mysql_error()); } else { //if ($semiManuel==true); $saisie=''; while($semiManuel==true && $saisie=='') { echo "Veuillez saisir le numéro qui identifie la bonne entreprise (0 si pas de réponse) : "; $saisie = trim(fgets(STDIN)); if ($saisie==0) break; elseif ($saisie>0 && $saisie<=$j+1) { $sir=$tabSiren[$saisie]; if ($table['db']<>'jo') $iDb->update($tableDB, array($table['champSiren']=>$sir), "id='".$entrep['id']."'", true) or die(mysql_error()); else $iDb->update($tableDB, array($table['champSiren']=>$sir, $table['champSirenValide']=>2), 'id='.$entrep['id'], true) or die(mysql_error()); break; } else $saisie=''; } }*/ } echo "\n"; } // $nbSirenage=count($listeNonSirene); if ($nbNonSirene>9 && $envoyerMail) { // On n'envoie pas de mails pour le sirenage de l'historique boamp if ($table['table1']=='boamp_lots' && $lastId7<768245) continue; /** Envoi d'un email aux Equipes de production pour le sirenage **/ $message="Il y a $nbNonSirene nouveaux rapprochements '".$table['table1']."' à faire."; sendMail('production@scores-decisions.com', 'jal42@scores-decisions.com', 'Nouvelles entreprises disponibles pour le sirenage.', $message); } //} unset($iDb); // A cause du changement possible de Base de Données } echo date('Y/m/d - H:i:s') ." - FIN du programme de SIRENAGE des annonces mal sirenés du BODACC.".EOL; die(); ?>