diff --git a/1.1/old/base64decode.php b/1.1/old/base64decode.php new file mode 100644 index 00000000..6ec96208 --- /dev/null +++ b/1.1/old/base64decode.php @@ -0,0 +1,815 @@ +#!/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(); + ?> diff --git a/1.1/old/calculRatios.php b/1.1/old/calculRatios.php index b9a71b1b..1f8fe582 100644 --- a/1.1/old/calculRatios.php +++ b/1.1/old/calculRatios.php @@ -18,13 +18,16 @@ Options : -i:XXX Reprendre à la ligne XXX -c Mettre à jour le cache -d:SSAAMMJJhhiiss Forcer la date de dernière MAJ à ... + -m:SSAA Recalculer tous les ratios de l'année SSAA + -r:XXX,YYY,... Limiter le calcul au ratios suivant : séparateur virgule (*) Option par défaut si aucun argument n'est passé. ";/* -e:X Calculer pour les X derniers exercices (3 par défaut) -f Calculer les scores financiers */ $iDeb=0; -$updateCache=false; +$updateCache=$millesime=$ratio=$modeVerbose=false; +$tabRatiosToCalc=array(); for ($i=1; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { @@ -37,6 +40,16 @@ for ($i=1; isset($argv[$i]); $i++) { case 'd': $dateDeb=substr($argv[$i],3)*1; break; + case 'm': + $millesime=substr($argv[$i],3)*1; + break; + case 'r': + $ratio=true; + $tabRatiosToCalc=explode(',',substr($argv[$i],3)); + break; + case 'v': + $modeVerbose=true; + break; case 'c': $updateCache=true; break; @@ -96,6 +109,7 @@ for ($i=1; isset($argv[$i]); $i++) { $lastUpdate=$tabLast[0]['lastInsert']; if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; if ($dateDeb>20000101123000) $lastUpdate=$dateDeb; + $lastDateUpdate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>'')); echo(date('Y/m/d - H:i:s') ." - La dernière mise à jour des ratios secteurs date du $lastUpdate...".EOL); @@ -107,34 +121,50 @@ for ($i=1; isset($argv[$i]); $i++) { /** On met en table temporaire les siren en cas de plantage du script **/ $modeSuite=false; - // Date du dernier bilan inseré - $tabLast=$iDb->select( 'bilans', - 'MAX(dateInsert) AS lastDateInsert', - "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC"); - $lastDateBilan=strtr($tabLast[0]['lastDateInsert'],array(' '=>'',':'=>'','-'=>'')); - echo(date('Y/m/d - H:i:s') ." - Le dernier bilan inséré en base date du $lastDateBilan...".EOL); - - // Liste des derniers Bilans insérés depuis le dernier calcul des ratios - $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); - $lastDate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>'')); - echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL; + if ($millesime) { + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateExercice BETWEEN $milles"."0101 AND $millesime"."1231 AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec des bilans millésimes $millesime pour calcul des ratios secteurs...".EOL; + //die(); + } else { + // Date du dernier bilan inseré + $tabLast=$iDb->select( 'bilans', + 'MAX(dateInsert) AS lastDateInsert', + "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC"); + $lastDateBilan=strtr($tabLast[0]['lastDateInsert'],array(' '=>'',':'=>'','-'=>'')); + echo(date('Y/m/d - H:i:s') ." - Le dernier bilan inséré en base date du $lastDateBilan...".EOL); + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL; + } $iDb2->query('DROP TABLE IF EXISTS ratios_tmp;'); if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; - $strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp ( siren int(9) unsigned zerofill NOT NULL, lastUpdate bigint(14) unsigned zerofill NOT NULL, lastBilan bigint(14) unsigned zerofill NOT NULL, PRIMARY KEY(siren) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;"; + $strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp ( + siren int(9) unsigned zerofill NOT NULL, + lastUpdate bigint(14) unsigned zerofill NOT NULL COMMENT 'Date de dernière mise à jour de la table ratio', + lastBilan bigint(14) unsigned zerofill NOT NULL COMMENT 'Dernier bilan enregistré dans la table bilan', + millesime year(4) unsigned NULL DEFAULT NULL COMMENT 'Paramètre millesime si défini', + PRIMARY KEY(siren) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TEMP - Liste des bilans dont il faut calculer les ratios';"; $iDb2->query($strSQL); if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; while($entrep=$iDb->fetch(MYSQL_ASSOC)) { - $iDb2->insert('ratios_tmp', array('siren'=>$entrep['siren'], 'lastUpdate'=>$lastDate, 'lastBilan'=>$lastDateBilan)); + if (!$millesime) $millesimeDb='NULL'; else $millesimeDb=$millesime; + $iDb2->insert('ratios_tmp', array( 'siren' =>$entrep['siren'], + 'lastUpdate'=>$lastDateUpdate, // Date de dernière mise à jour de la table ratio + 'lastBilan' =>$lastDateBilan, // Dernier bilan enregistré dans la table bilan + 'millesime' =>$millesimeDb)); // On enregistre le paramètre millesime } echo date('Y/m/d - H:i:s') ." - Les éléments ont été mis en table temporaire en cas de reprise sur erreur !".EOL; - $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate, lastBilan', "1", false, MYSQL_ASSOC, true); + $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate, lastBilan, millesime', "1", false, MYSQL_ASSOC, true); } - + $k=0; // Compteur d'entreprises $b=0; // Compteur total de bilans while($entrep=$iDb->fetch(MYSQL_ASSOC)) { - if ($modeSuite && $k==0) $lastDate=$entrep['lastUpdate']; - + if ($modeSuite && $k==0) $lastDateUpdate=$entrep['lastUpdate']; + $millesime=$entrep['millesime']; + $k++; if ($k<$iDeb) continue; @@ -158,52 +188,68 @@ for ($i=1; isset($argv[$i]); $i++) { $nbBilansTot=count($tabBilans); $tabBilans2=array(); foreach ($tabBilans as $mil=>$infosBilan) { - /** On vérifie s'il n'y a pas de Bilans vides **/ + /** On vérifie s'il n'y a pas de Bilan vide **/ if ($infosBilan['dureeExercice']==0) { - print_r($infosBilan); - echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL; + if ($modeVerbose) { + print_r($infosBilan); + echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL; + } + $iDb2->delete('ratios_tmp', "siren=$siren"); continue(2); } /** On ne garde que les Bilans dont la date de provenance est > à la date de dernière Mise à jour ** car les ratios secteurs des autres bilans on déjà été calculés ! **/ - if ($infosBilan['dateInsert']>=$lastDate) + if ($millesime && $infosBilan['millesime']==$millesime) + //echo "APRES ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime'].EOL; $tabBilans2[$mil]=$infosBilan; + elseif (!$millesime && $infosBilan['dateInsert']>=$lastDateUpdate) + $tabBilans2[$mil]=$infosBilan; + /*else + echo "DALLE ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime']." ### QUE DALLE !!!!".EOL;*/ } $nbBilans=count($tabBilans2); $tabBilan=$tabBil=array(); if ($nbBilans==0) { - print_r($tabBilans2); - echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL; - print_r($tabBilans); - //die(); + if ($modeVerbose) { + print_r($tabBilans2); + echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL; + print_r($tabBilans); + } + $iDb2->delete('ratios_tmp', "siren=$siren"); continue; } - $tabRatios=@calculRatios($tabBilans2, $tabIdentite, false); + $tabRatios=@calculRatios($tabBilans2, $tabIdentite, false, 999); if (strlen($naf)>4) $naf5=$naf; else $naf4=$naf; if ($tabBilan[0]['CONSOLIDE']=='A') $naf4='ASSU'; elseif ($tabBilan[0]['CONSOLIDE']=='B') $naf4='BANQ'; - if ($naf4=='ASSU' || $naf4=='BANQ') { - sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de Banque ou Assurance", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans)); + if ($modeVerbose && ($naf4=='ASSU' || $naf4=='BANQ')) { + //sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de e", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans)); + echo "Bilan '$naf4' pour le siren $siren et l'année $annee !".EOL; } foreach ($tabFormules as $f=>$formule) { foreach ($tabRatios as $i=>$R) { - if ($f==0) $b++; $id=$formule['id']; + // Si on demande seulement le calcul d'un ratio alors on vérifie le numéro du ratio + if ($ratio && !in_array($id, $tabRatiosToCalc)) continue; + + if ($f==0) $b++; // Si on n'est pas une banque/assurance, on ne calcul pas les ratios 700 à 799 if ($naf4<>'ASSU' && $naf4<>'BANQ' && $id>=700 && $id<800) continue; $annee=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); + // Si on demande seulement le calcul d'un millésime alors on vérifie la date du bilan + if ($millesime && $annee<>$millesime) continue; - if ($R[$id]==='NS' || $R[$id]===false ) - //echo "Le ratio n°$id est non significatif (".$R[$id].") pour le siren $siren et l'année $annee !".EOL; + if ($R[$id]==='NS' || $R[$id]===false ) { + if ($modeVebose) echo "Le ratio n°$id est non significatif (".$R[$id].") pour le siren $siren et l'année $annee !".EOL; continue; - + } /** Si c'est un ratio EUR, on le passe en K€ **/ if ($formule['unite']=='EUR') $mt=$R[$id]/1000; @@ -211,10 +257,10 @@ for ($i=1; isset($argv[$i]); $i++) { /** On vérifie les bornes MIN et MAX **/ if ($formule['min']<>'' && $mt<$formule['min']) { - echo "Ratio n°$id, borne Mini non nulle (".$formule['min'].") et le montant est inférieur : $mt<".$formule['min']." pour le siren $siren et l'année $annee".EOL; + if ($modeVerbose) echo "Ratio n°$id, borne Mini non nulle (".$formule['min'].") et le montant est inférieur : $mt<".$formule['min']." pour le siren $siren et l'année $annee".EOL; continue; } elseif ($formule['max']<>'' && $mt>$formule['max']) { - echo "Ratio n°$id, borne Maxi non nulle (".$formule['max'].") et le montant est supérieur : $mt>".$formule['max']." pour le siren $siren et l'année $annee".EOL; + if ($modeVerbose) echo "Ratio n°$id, borne Maxi non nulle (".$formule['max'].") et le montant est supérieur : $mt>".$formule['max']." pour le siren $siren et l'année $annee".EOL; continue; } //else //echo "Ratio n°$id compris entre bornes ".$formule['min']." < $mt < ".$formule['max']." pour le siren $siren et l'année $annee".EOL; diff --git a/1.1/old/calculRatios2.php b/1.1/old/calculRatios2.php new file mode 100644 index 00000000..8af61e14 --- /dev/null +++ b/1.1/old/calculRatios2.php @@ -0,0 +1,315 @@ +#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini +select( 'ratios_formules', + 'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert', + '1'); + $lastUpdate=$tabLast[0]['lastInsert']; + if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; + + /** On vérifie la présence du cache de calcul des ratios **/ + if (!file_exists(INCLUDE_PATH.'tmp/configMRatios.php')) + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'existe pas !".EOL); + /** On vérifie qu'il n'y a pas de nouvelles formules à mettre dans le cache de calcul des ratios **/ + elseif (strtr($lastUpdate, array(':'=>'','-'=>'', ' '=>''))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) { + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR FATALE, le cache ratio n'est pas à jour !", date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !"); + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !".EOL); + } + /** On vérifie que le programme de MAJ du cache n'a pas été modifié **/ + elseif (date('YmdHis',filectime(INCLUDE_PATH.'scores/classMRatios.php'))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) // Le fichier de cache est déprécié + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (programme modifié). Relancer à l'option -c !".EOL); + + include_once(INCLUDE_PATH.'tmp/configMRatios.php'); + + echo date('Y/m/d - H:i:s') ." - Formules de calcul des ratios déjà en cache.".EOL; + + /** Recherche de la dernière mise à jour des ratios secteurs **/ + $tabLast=$iDb->select( 'ratios_secteurs', + 'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert', + '1'); + $lastUpdate=$tabLast[0]['lastInsert']; + if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; + if ($dateDeb>20000101123000) $lastUpdate=$dateDeb; + $lastDateUpdate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>'')); + + echo(date('Y/m/d - H:i:s') ." - La dernière mise à jour des ratios secteurs date du $lastUpdate...".EOL); + + $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate', "1", false, MYSQL_ASSOC, true); + if ($nbRows>0) { + $modeSuite=true; + echo date('Y/m/d - H:i:s') ." - Il reste $nbRows entreprises pour lesquels il faut mettre à jour les ratios secteurs...".EOL; + } else { + /** On met en table temporaire les siren en cas de plantage du script **/ + $modeSuite=false; + + if ($millesime) { + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateExercice BETWEEN $milles"."0101 AND $millesime"."1231 AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec des bilans millésimes $millesime pour calcul des ratios secteurs...".EOL; + //die(); + } else { + // Date du dernier bilan inseré + $tabLast=$iDb->select( 'bilans', + 'MAX(dateInsert) AS lastDateInsert', + "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC"); + $lastDateBilan=strtr($tabLast[0]['lastDateInsert'],array(' '=>'',':'=>'','-'=>'')); + echo(date('Y/m/d - H:i:s') ." - Le dernier bilan inséré en base date du $lastDateBilan...".EOL); + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL; + } + $iDb2->query('DROP TABLE IF EXISTS ratios_tmp;'); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + $strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp ( + siren int(9) unsigned zerofill NOT NULL, + lastUpdate bigint(14) unsigned zerofill NOT NULL COMMENT 'Date de dernière mise à jour de la table ratio', + lastBilan bigint(14) unsigned zerofill NOT NULL COMMENT 'Dernier bilan enregistré dans la table bilan', + millesime year(4) unsigned NULL DEFAULT NULL COMMENT 'Paramètre millesime si défini', + PRIMARY KEY(siren) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TABLE TEMPORAIRE - Liste des bilans dont il faut calculer les ratios';"; + $iDb2->query($strSQL); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + if (!$millesime) $millesimeDb='NULL'; else $millesimeDb=$millesime; + $iDb2->insert('ratios_tmp', array( 'siren' =>$entrep['siren'], + 'lastUpdate'=>$lastDateUpdate, // Date de dernière mise à jour de la table ratio + 'lastBilan' =>$lastDateBilan, // Dernier bilan enregistré dans la table bilan + 'millesime' =>$millesimeDb)); // On enregistre le paramètre millesime + } + echo date('Y/m/d - H:i:s') ." - Les éléments ont été mis en table temporaire en cas de reprise sur erreur !".EOL; + $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate, lastBilan, millesime', "1", false, MYSQL_ASSOC, true); + } + + $k=0; // Compteur d'entreprises + $b=0; // Compteur total de bilans + while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + if ($modeSuite && $k==0) $lastDateUpdate=$entrep['lastUpdate']; + $millesime=$entrep['millesime']; + + $k++; + if ($k<$iDeb) continue; + + $siren=$entrep['siren']; + if ($siren<100) continue; + // else echo "$siren\n"; + $naf4=$naf5=''; + unset($mBil); + + $mBil=new MBilans($siren); + + /** Récupération des informations Identitaires **/ + $tabIdentite=@$iInsee->getIdentiteLight($siren); + $naf=$tabIdentite['NafEnt']; + $nafLib=$tabIdentite['NafEntLib']; + $efftr=$tabIdentite['Effectif']; + $fj=$tabIdentite['FJ']; + + /** On Recherche le dernier Bilan mis à jour **/ + $tabBilans=$mBil->listeBilans(); + $nbBilansTot=count($tabBilans); + $tabBilans2=array(); + foreach ($tabBilans as $mil=>$infosBilan) { + /** On vérifie s'il n'y a pas de Bilan vide **/ + if ($infosBilan['dureeExercice']==0) { + if ($modeVerbose) { + print_r($infosBilan); + echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL; + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + continue(2); + } + /** On ne garde que les Bilans dont la date de provenance est > à la date de dernière Mise à jour + ** car les ratios secteurs des autres bilans on déjà été calculés ! **/ + if ($millesime && $infosBilan['millesime']==$millesime) { + //echo "APRES ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime'].EOL; + $tabBilans2[$mil]=$infosBilan; + } + elseif (!$millesime && $infosBilan['dateInsert']>=$lastDateUpdate) + $tabBilans2[$mil]=$infosBilan; + /*else + echo "DALLE ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime']." ### QUE DALLE !!!!".EOL;*/ + } + + $nbBilans=count($tabBilans2); + $tabBilan=$tabBil=array(); + if ($nbBilans==0) { + if ($modeVerbose) { + print_r($tabBilans2); + echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL; + print_r($tabBilans); + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + continue; + } + + $tabRatios=@calculRatios($tabBilans2, $tabIdentite, false, 999); + if (strlen($naf)>4) $naf5=$naf; else $naf4=$naf; + + if ($tabBilan[0]['CONSOLIDE']=='A') $naf4='ASSU'; + elseif ($tabBilan[0]['CONSOLIDE']=='B') $naf4='BANQ'; + + if ($modeVerbose && ($naf4=='ASSU' || $naf4=='BANQ')) { + //sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de e", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans)); + echo "Bilan '$naf4' pour le siren $siren et l'année $annee !".EOL; + } + + foreach ($tabFormules as $f=>$formule) { + foreach ($tabRatios as $i=>$R) { + $id=$formule['id']; + // Si on demande seulement le calcul d'un ratio alors on vérifie le numéro du ratio + if ($ratio && !in_array($id, $tabRatiosToCalc)) continue; + + if ($f==0) $b++; + // Si on n'est pas une banque/assurance, on ne calcul pas les ratios 700 à 799 + if ($naf4<>'ASSU' && $naf4<>'BANQ' && $id>=700 && $id<800) + continue; + + $annee=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); + // Si on demande seulement le calcul d'un millésime alors on vérifie la date du bilan + if ($millesime && $annee<>$millesime) continue; + + if ($R[$id]==='NS' || $R[$id]===false ) { + if ($modeVebose) echo "Le ratio n°$id est non significatif (".$R[$id].") pour le siren $siren et l'année $annee !".EOL; + continue; + } + + /** Si c'est un ratio EUR, on le passe en K€ **/ + if ($formule['unite']=='EUR') $mt=$R[$id]/1000; + else $mt=$R[$id]; + + /** On vérifie les bornes MIN et MAX **/ + if ($formule['min']<>'' && $mt<$formule['min']) { + if ($modeVerbose) echo "Ratio n°$id, borne Mini non nulle (".$formule['min'].") et le montant est inférieur : $mt<".$formule['min']." pour le siren $siren et l'année $annee".EOL; + continue; + } elseif ($formule['max']<>'' && $mt>$formule['max']) { + if ($modeVerbose) echo "Ratio n°$id, borne Maxi non nulle (".$formule['max'].") et le montant est supérieur : $mt>".$formule['max']." pour le siren $siren et l'année $annee".EOL; + continue; + } //else + //echo "Ratio n°$id compris entre bornes ".$formule['min']." < $mt < ".$formule['max']." pour le siren $siren et l'année $annee".EOL; + + /** Lecture des chiffres existants dans la table ratios_secteurs **/ + $tabTmp=$iDb2->select( 'ratios_secteurs', + 'montant, nombre, id, naf4, naf5, annee', + "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) { + $mt2=$mt+$tabTmp[0]['montant']; + $nb2=$tabTmp[0]['nombre'] + 1; + } else { + $mt2=$mt; + $nb2=1; + } + + $tabUpdate=array( 'montant' => $mt2, + 'nombre' => $nb2, + ); + if (!$iDb2->update('ratios_secteurs', $tabUpdate, "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee") || $iDb2->getAffectedRows()==0 ) { // getAffectedRows ajouté le 14 mai 2009 + $tabInsert=array_merge($tabUpdate, array( 'id'=>$id, + 'naf4'=>$naf4, + 'naf5'=>$naf5, + 'annee'=>$annee, + 'dateInsert'=>$lastDateBilan, + )); + if (!$iDb2->insert('ratios_secteurs', $tabInsert) && mysql_errno()<>1062) { + $pct=round(($k/$nbRows)*100,2); + echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL; + echo date('Y/m/d - H:i:s') .' - ERREUR SQL n°'.mysql_errno().' : '.mysql_error().EOL; + die(); + } + } + + if ($k%1000==0 && $f==0 && $i==0) { + $pct=round(($k/$nbRows)*100,2); + echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL; + } + } + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la suppression des informations temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + } +echo date('Y/m/d - H:i:s') ." - Les ratios ont été mis à jour ; suppression des informations temporaires.".EOL; + +$iDb2->query('DROP TABLE IF EXISTS jo.ratios_tmp;'); + +die(date('Y/m/d - H:i:s') ." - Fin du programme.".EOL); + + ?> \ No newline at end of file diff --git a/1.1/old/calculRatiosIni.php b/1.1/old/calculRatiosIni.php index 3bdb390b..24581aa1 100644 --- a/1.1/old/calculRatiosIni.php +++ b/1.1/old/calculRatiosIni.php @@ -14,11 +14,11 @@ Calcul des ratios de toute la base entreprise S&D. Options : -t Calculer tous les ratios (*) - -i:XXX Reprendre à la ligne XXX - -c Mettre à jour le cache + -i:XXX Reprendre à la ligne XXX + -c Mettre à jour le cache -(*) Option par défaut si aucun argument n'est passé. -";/* -e:X Calculer pour les X derniers exercices (3 par défaut) +(*) Option par défaut si aucun argument n'est passé. +";/* -e:X Calculer pour les X derniers exercices (3 par défaut) -f Calculer les scores financiers */ $iDeb=0; @@ -65,21 +65,21 @@ for ($i=1; isset($argv[$i]); $i++) { $tabFormule['f'.$id]['min']=$formule['borneMin']; $tabFormule['f'.$id]['max']=$formule['borneMax']; } - echo date('Y/m/d - H:i:s') ." - Formules mises en mémoire ...".EOL; + echo date('Y/m/d - H:i:s') ." - Formules mises en mémoire ...".EOL; //print_r($tabFormule);die(); for ($iDeb=0; $iDeb<=$iFin*$limit; $iDeb+=$limit) { $nbRows=$iDb->select( 'ratios_test2', 'siren, id, naf4, naf5, millesime, montant', "1 LIMIT $iDeb,$limit", false, MYSQL_ASSOC, true); $iDebAff=$iDeb/$limit; - echo date('Y/m/d - H:i:s') ." - Tranche de ratios n°$iDebAff/$iFin...".EOL; + echo date('Y/m/d - H:i:s') ." - Tranche de ratios n°$iDebAff/$iFin...".EOL; while($entrep=$iDb->fetch(MYSQL_ASSOC)) { if ($tabFormule['f'.$entrep['id']]['unite']=='EUR') $mt=$entrep['montant']/1000; else $mt=$entrep['montant']; if ($tabFormule['f'.$entrep['id']]['min']!==NULL && $mt<$tabFormule['f'.$entrep['id']]['min']) { - //echo 'Borne Mini non nulle ('.$tabFormule['f'.$entrep['id']]['min'].") et le montant est inférieur : $mt<".$tabFormule['f'.$entrep['id']]['min']."!\n"; + //echo 'Borne Mini non nulle ('.$tabFormule['f'.$entrep['id']]['min'].") et le montant est inférieur : $mt<".$tabFormule['f'.$entrep['id']]['min']."!\n"; continue; } elseif ($tabFormule['f'.$entrep['id']]['max']!==NULL && $mt>$tabFormule['f'.$entrep['id']]['max']) { - //echo 'Borne Maxi non nulle ('.$tabFormule['f'.$entrep['id']]['max'].") et le montant est supéreiur : $mt>".$tabFormule['f'.$entrep['id']]['max']."!\n"; + //echo 'Borne Maxi non nulle ('.$tabFormule['f'.$entrep['id']]['max'].") et le montant est supéreiur : $mt>".$tabFormule['f'.$entrep['id']]['max']."!\n"; continue; } /*else echo 'Ratio compris entre bornes '.$tabFormule['f'.$entrep['id']]['min']." < $mt < ".$tabFormule['f'.$entrep['id']]['max'].".\n"; @@ -102,7 +102,7 @@ for ($i=1; isset($argv[$i]); $i++) { 'dateInsert'=> $dateInsert, ); if (!$iDb->insert('ratios_secteurs', $tabInsert)) { - echo date('Y/m/d - H:i:s') ." - Erreur MySQL N°".mysql_errno().' : '.mysql_error().EOL; + echo date('Y/m/d - H:i:s') ." - Erreur MySQL N°".mysql_errno().' : '.mysql_error().EOL; print_r($tabInsert); } } diff --git a/1.1/old/calculRedevances.php b/1.1/old/calculRedevances.php index 52913fff..6cdbeb33 100644 --- a/1.1/old/calculRedevances.php +++ b/1.1/old/calculRedevances.php @@ -20,11 +20,11 @@ include_once(FWK_PATH.'mail/sendMail.php'); include_once(INCLUDE_PATH.'scores/classMRegression.php'); $strInfoScript='Usage : '.basename($argv[0]). "