From b8f646c1d22c3f6996b9addf9a221cf8553e0773 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Tue, 29 May 2012 09:34:56 +0000 Subject: [PATCH] On autorise seulement des siren avec des chiffres --- batch/enrichissement.php | 275 ++++++++++++++++++++------------------- 1 file changed, 141 insertions(+), 134 deletions(-) diff --git a/batch/enrichissement.php b/batch/enrichissement.php index a1e98fdb..22a6f366 100644 --- a/batch/enrichissement.php +++ b/batch/enrichissement.php @@ -54,31 +54,31 @@ $tabDico = array( 'etablissements' => array( 'db' => 'jo.etablissements', 'cle' => array( - 'idSd' => "CONCAT(source,'-',source_id) AS idSd", - 'source' => '', - 'triCode' => '', - 'autre_id' => '', - 'actif' => '', - 'siege' => '', - 'raisonSociale' => '', - 'enseigne' => '', - 'sigle' => '', - 'marques' => '', - 'adr_num' => '', - 'adr_btq' => '', - 'adr_typeVoie' => '', - 'adr_libVoie' => '', - 'adr_comp' => '', - 'adr_cp' => '', - 'adr_ville' => '', - 'adr_dep' => '', - 'adr_codeCom' => 'CONCAT(if (adr_dep>100,round(adr_dep/10),adr_dep*1),adr_com) AS adr_codeCom', - 'telEtab' => 'tel as telEtab', - 'faxEtab' => 'fax as faxEtab', - 'cj' => '', - 'capital' => '', - 'capitalDev' => '', - 'ape_etab' => '', + 'idSd' => "CONCAT(source,'-',source_id) AS idSd", + 'source' => '', + 'triCode' => '', + 'autre_id' => '', + 'actif' => '', + 'siege' => '', + 'raisonSociale' => '', + 'enseigne' => '', + 'sigle' => '', + 'marques' => '', + 'adr_num' => '', + 'adr_btq' => '', + 'adr_typeVoie' => '', + 'adr_libVoie' => '', + 'adr_comp' => '', + 'adr_cp' => '', + 'adr_ville' => '', + 'adr_dep' => '', + 'adr_codeCom' => 'CONCAT(if (adr_dep>100,round(adr_dep/10),adr_dep*1),adr_com) AS adr_codeCom', + 'telEtab' => 'tel as telEtab', + 'faxEtab' => 'fax as faxEtab', + 'cj' => '', + 'capital' => '', + 'capitalDev' => '', + 'ape_etab' => '', 'ape_entrep' => '', 'SiretEnBase' => 'nic>0 as SiretEnBase', ), @@ -126,7 +126,7 @@ $tabDico = array( 'DCRET' => '', 'EFF_ET' => '', 'CODEVOIE' => '', - 'dateMajInsee' => 'dateUpdate as dateMajInsee', + 'dateMajInsee' => 'dateUpdate as dateMajInsee', ), 'where' => ' WHERE SIREN=$siren AND NIC=$nicV', ), @@ -139,7 +139,7 @@ $tabDico = array( 'insARRONET' => '', 'insCTONET' => '', 'insTCD' => '', - 'insZEMET' => '', + 'insZEMET' => '', 'insDU' => '', 'insTU' => '', 'insUU' => '', @@ -207,7 +207,7 @@ $tabDico = array( 'web' => '', 'mail' => '', ), - 'where' => ' WHERE siren=$siren', + 'where' => ' WHERE siren=$siren', ), 'data' => array( 'nicSiege', @@ -218,7 +218,7 @@ $tabDico = array( 'situationJuridique', 'situationParution', 'situationDernCode', - 'situationDernEven', + 'situationDernEven', 'indiScore', 'dirigeant', 'bilanN', @@ -285,7 +285,7 @@ try { exit ( $e->getMessage() ); } -$tabExtract = array(); +$tabExtract = array(); $tabEntete = array(); $tabIdentifiant = array(); $tabData = array(); @@ -299,8 +299,8 @@ $inFile = $path->data.'/clients/'.$file.'.csv'; $row = 0; if (($handle = fopen($inFile, 'r')) !== FALSE) { while (($data = fgetcsv($handle, 0, ',', '"')) !== FALSE) { - $num = count($data); - + $num = count($data); + //Traitement de la première ligne if ($row == 0) { for ($c=0; $c < $num; $c++) { @@ -323,7 +323,7 @@ if (($handle = fopen($inFile, 'r')) !== FALSE) { } if ($posKeySiren===false && $posKeySiret===false){ die("Aucune clé détecté!"); - } + } //Traitement des identifiants } else { @@ -333,16 +333,16 @@ if (($handle = fopen($inFile, 'r')) !== FALSE) { $tabIdentifiant[] = $data[$posKeySiren].$data[$posKeyNic]; } elseif ( $posKeySiren !==false ){ $tabIdentifiant[] = $data[$posKeySiren]; - } - + } + for ($c=0; $c < $num; $c++) { - $colname = $tabExtract[$c]; + $colname = $tabExtract[$c]; if (!in_array(strtolower($colname), array('siren', 'siret', 'nic'))){ $tabData[$row-1][$colname] = $data[$c]; } } - - } + + } $row++; } fclose($handle); @@ -364,7 +364,7 @@ $dico = new Enrichissement(); foreach($tabExtract as $key) { $strKey = false; - + //Détection element(VAL1,VAL2) $values = false; if (preg_match('/(.*)\((.*)\)/', $key, $matches)) @@ -372,43 +372,43 @@ foreach($tabExtract as $key) $key = $matches[1]; $values = $matches[2]; } - + //Traitement spécial pour le champs, ajout et remplacement sur entete if (function_exists($key.'Entete')){ $keys = call_user_func($key.'Entete', $values); foreach($keys as $item){ $tabEntete[] = $item; - } - } else { + } + } else { $tabEntete[] = $key; } - + //Ajout à la requete SQL foreach($tabDico as $element => $select) { if ( array_key_exists('db', $select) && array_key_exists($key, $select['cle']) ) { if (isset(${$element.'Fields'})){ ${$element.'Fields'}.= ', '; } - + if ($select['cle'][$key]!=''){ $strKey = $select['cle'][$key]; } - + if ($strKey!==false){ ${$element.'Fields'}.= $strKey; } else { ${$element.'Fields'}.= $key; } break; - } - if ( $element == 'data' && in_array($key, $select) ) - { + } + if ( $element == 'data' && in_array($key, $select) ) + { ${$key.'Data'} = $values; } } } //Ajout colonne obligatoire SiretValide -$tabEntete[] = 'SiretValide'; +$tabEntete[] = 'SiretValide'; unset($tabExtract); //Construction de l'entete pour le fichier @@ -421,19 +421,19 @@ if (count($tabEntete)>0){ } else { $tabEnteteF[] = $key; } - } + } } //Définition du fichier de sortie if ( $opts->reprise ) { $outFile = $path->data.'/export/'.$commande->fichierOut; - + $rowReprise = 0; $fp = fopen($outFile, 'r+'); while (($data = fgetcsv($fp, 0, ',', '"')) !== FALSE) { $rowReprise++; } - + } else { $outFile = $path->data.'/export/'.$file.'-'.date('YmdHis').'.csv'; @@ -442,7 +442,7 @@ if ( $opts->reprise ) { if (count($tabEnteteF)>0){ fputcsv($fp, $tabEnteteF, ',', '"'); } - + //Mise à jour des éléments if ($opts->id) { $commandesM->update(array( @@ -450,62 +450,69 @@ if ( $opts->reprise ) { 'fichierOut' => basename($outFile)), "id = ".$commande->id); } - + } $row = 0; //Vérification et création des données -foreach($tabIdentifiant as $item) +foreach($tabIdentifiant as $item) { echo "Ligne ".($row+1)." - "; - + if ( $opts->reprise && $row < $rowReprise ) { - //Reprise + //Reprise $row++; echo "Reprise"; } else { - + $siretValide = false; $sirenValide = false; - + $siren = substr($item, 0, 9); $nic = substr($item, 9); - - //Vérification par algorithme - $siretValide = siretValide($item); - if ($posKeySiret!==false){ - if ($siretValide===false){ - $sirenValide = sirenValide($siren); - } else { - $sirenValide = true; - } - } - - if ($posKeySiren!==false && $posKeyNic!==false) { - $sirenValide = sirenValide($siren); + + //Simple vérification, seulement des chiffres + if (!preg_match('/[0-9]{9}/', $siren)) { + $siretValide = $sirenValide = false; + } else { + //Vérification par algorithme + $siretValide = siretValide($item); + if ($posKeySiret!==false) { + if ($siretValide===false) { + $sirenValide = sirenValide($siren); + } else { + $sirenValide = true; + } + } + + if ($posKeySiren!==false && $posKeyNic!==false) { + $sirenValide = sirenValide($siren); + } } - + //On définit le tableau de retour if ( $posKeySiret!==false ){ $tabData[$row]['siret'] = $item; } elseif ( $posKeySiren!==false && $posKeyNic!==false ){ $tabData[$row]['siren'] = $siren; $tabData[$row]['nic'] = $nic; - } elseif ( $posKeySiren !==false ){ + } elseif ( $posKeySiren !==false ){ $tabData[$row]['siren'] = $siren; } - + $tabData[$row]['SiretValide'] = ($siretValide===true) ? 1 : 0; - + if ( $sirenValide===false || intval($siren)==0 ){ //Siren faux } else { - + //Vérifier les nic, ou sélectionner le nic du siege actif $nicV = $nic; //Surcharge pour le nic $strNic = ''; $sqlNic = 'SELECT nic as nicTmp, cj as cjTmp FROM jo.etablissements WHERE siren='.$siren; + + //Si identifiant est un siret, char(14) alors on vérifie que le NIC existe if (strlen($item)==14 && intval($nic)>0){ $stmt = $dbMetier->query($sqlNic.' AND nic='.$nic); $result = $stmt->fetchAll(); @@ -517,7 +524,7 @@ foreach($tabIdentifiant as $item) $fJur = $result[0]['cjTmp']; } } - + if (intval($nicV)==0){ $strNic = ' AND nic>-1 AND actif>-1 ORDER BY siege DESC, actif DESC, nicTmp DESC LIMIT 0,1'; $stmt = $dbMetier->query($sqlNic.$strNic); @@ -529,13 +536,13 @@ foreach($tabIdentifiant as $item) $nicV = '00000'; $fJur = '0000'; } - } - + } + if ( $posKeySiren!==false && $posKeyNic!==false ){ $tabData[$row]['siren'] = $siren; $tabData[$row]['nic'] = $nic; } - + //Récupération des données foreach($tabDico as $element => $select) { @@ -544,58 +551,58 @@ foreach($tabIdentifiant as $item) $where = $select['where']; eval( "\$where = \"$where\";" ); ${$element.'SQL'} = 'SELECT '.${$element.'Fields'}.' FROM '.$select['db'].$where; - + try { - $stmt = $dbMetier->query(${$element.'SQL'}); + $stmt = $dbMetier->query(${$element.'SQL'}); $result = $stmt->fetchAll(); if ( count($result)>0 ) { $tabData[$row] = array_merge( $tabData[$row] , $result[0]); } } catch (Zend_Db_Exception $e) { - + //Enregistrement du message d'erreur if ($opts->id) { $commandesM->update(array('error'=>$e->getMessage()), "id = ".$commande->id); } - + //Arret du script exit; } - + } //Traitement par fonction - if( $element == 'data' ) + if( $element == 'data' ) { foreach($select as $item) { - if (isset(${$item.'Data'})) + if (isset(${$item.'Data'})) { $values = false; if( ${$item.'Data'}!=false ){ $values = ${$item.'Data'}; - } + } $retour = call_user_func($item.'Data', $siren, $nicV, $values); $tabData[$row] = $tabData[$row] + $retour; } - } - } + } + } } - + } - + //Trier pour la sortie $tabSortie = array(); foreach($tabEntete as $key){ $tabSortie[] = isset($tabData[$row][$key]) ? $tabData[$row][$key] : ''; } fputcsv($fp, $tabSortie, ',', '"'); - + $row++; echo "OK"; } - + echo "\n"; - + //Mise à jour des lignes traitées dans la base if ($opts->id) { $commandesM->update(array('nbLigneT'=>$row), "id = ".$commande->id); @@ -603,7 +610,7 @@ foreach($tabIdentifiant as $item) } fclose($fp); if ($opts->id) { - $commandesM->update( array('dateStop' => date('Y-m-d H:i:s')) , "id = ".$commande->id); + $commandesM->update( array('dateStop' => date('Y-m-d H:i:s')) , "id = ".$commande->id); } @@ -628,7 +635,7 @@ function dateFermetureEtEntete($values) return array( 'dateFermetureEt', 'codeFermetureEt', - ); + ); } function dateFermetureEtData($siren, $nic, $values = false) @@ -640,7 +647,7 @@ function dateFermetureEtData($siren, $nic, $values = false) $ret = $iDb->select('insee.insee_even', 'insEVE, insDATEVE', "insSIRETPS=$siret AND insEVE IN('510','530') ORDER BY insDATEVE DESC LIMIT 1", false, MYSQL_ASSOC); } $tabData['dateFermetureEt'] = isset($ret[0]['insDATEVE']) ? $ret[0]['insDATEVE'] : ''; - $tabData['codeFermetureEt'] = isset($ret[0]['insEVE']) ? $ret[0]['insEVE'] : ''; + $tabData['codeFermetureEt'] = isset($ret[0]['insEVE']) ? $ret[0]['insEVE'] : ''; return $tabData; } @@ -678,10 +685,10 @@ function situationJuridiqueEntete($values) 'situationParution', 'situationDernCode', 'situationDernEven', - ); + ); } -function situationJuridiqueData($siren, $nic, $values = false) +function situationJuridiqueData($siren, $nic, $values = false) { $tabTmp = array('P','A','D'); $tabData['situationJuridique']=''; @@ -707,7 +714,7 @@ function situationJuridiqueData($siren, $nic, $values = false) $tabData['situationDernCode']=''; $tabData['situationDernEven']=''; } - + return $tabData; } @@ -724,7 +731,7 @@ function dirigeantEntete($values) 'dirigeant2LieuNaiss', ); } - + function dirigeantData($siren, $nic, $values = false) { $iInsee = new MInsee(); @@ -738,15 +745,15 @@ function dirigeantData($siren, $nic, $values = false) $tabData['dirigeant2DateNaiss'] = ''; $tabData['dirigeant2LieuNaiss'] = ''; if (count($tmp)>0 ) { - $dir = $tmp[0]; - if ($dir['Societe']<>'') $tabData['dirigeant1Nom'].= $dir['Societe'].' repr. par '; - $tabData['dirigeant1Nom'].= trim($dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']); + $dir = $tmp[0]; + if ($dir['Societe']<>'') $tabData['dirigeant1Nom'].= $dir['Societe'].' repr. par '; + $tabData['dirigeant1Nom'].= trim($dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']); $tabData['dirigeant1Fonction'] = $dir['Titre']; $tabData['dirigeant1DateNaiss'] = $dir['NaissDate']; - $tabData['dirigeant1LieuNaiss'] = $dir['NaissVille']; + $tabData['dirigeant1LieuNaiss'] = $dir['NaissVille']; } if (count($tmp)>1) { - $dir = $tmp[1]; + $dir = $tmp[1]; if ($dir['Societe']<>'') $tabData['dirigeant2Nom'].=$dir['Societe'].' repr. par '; $tabData['dirigeant2Nom'].= trim($dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']); $tabData['dirigeant2Fonction'] = $dir['Titre']; @@ -763,11 +770,11 @@ function bilanNEntete($values) $tmp = array(); foreach($values as $value){ $tmp[] = 'bilanN'.$value; - } - return array_merge( + } + return array_merge( array('bilanNdateCloture', 'bilanNdureeMois') - , $tmp - ); + , $tmp + ); } else { return array('bilanNdateCloture', 'bilanNdureeMois'); } @@ -775,15 +782,15 @@ function bilanNEntete($values) function bilanNData($siren, $nic, $values = false) { require_once 'Metier/partenaires/classMBilans.php'; - $tabPostes = explode(',', $values); + $tabPostes = explode(',', $values); $annee = 0; $tabData = array(); $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans(false, 9); - if (count($tabBilans)>0) { + if (count($tabBilans)>0) { $tabBi = findBilan($siren, $tabBilans, $annee); $tabData['bilanNdateCloture'] = $tabBi['DATE_CLOTURE']; - $tabData['bilanNdureeMois'] = $tabBi['DUREE_MOIS']; + $tabData['bilanNdureeMois'] = $tabBi['DUREE_MOIS']; if (count($tabPostes)>0) { foreach ($tabPostes as $poste) { if (isset($tabBi[$poste])){ @@ -802,11 +809,11 @@ function bilanN1Entete($values) $tmp = array(); foreach($values as $value){ $tmp[] = 'bilanN1'.$value; - } - return array_merge( + } + return array_merge( array('bilanN1dateCloture', 'bilanN1dureeMois') - , $tmp - ); + , $tmp + ); } else { return array('bilanN1dateCloture', 'bilanN1dureeMois'); } @@ -819,10 +826,10 @@ function bilanN1Data($siren, $nic, $values = false) $tabData = array(); $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans(false, 9); - if (count($tabBilans)>0) { + if (count($tabBilans)>0) { $tabBi = findBilan($siren, $tabBilans, $annee); $tabData['bilanN1dateCloture'] = $tabBi['DATE_CLOTURE']; - $tabData['bilanN1dureeMois'] = $tabBi['DUREE_MOIS']; + $tabData['bilanN1dureeMois'] = $tabBi['DUREE_MOIS']; if (count($tabPostes)>0) { foreach ($tabPostes as $poste) { if (isset($tabBi[$poste])){ @@ -841,11 +848,11 @@ function bilanN2Entete($values) $tmp = array(); foreach($values as $value){ $tmp[] = 'bilanN2'.$value; - } - return array_merge( + } + return array_merge( array('bilanN2dateCloture', 'bilanN2dureeMois') - , $tmp - ); + , $tmp + ); } else { return array('bilanN2dateCloture', 'bilanN2dureeMois'); } @@ -858,10 +865,10 @@ function bilanN2Data($siren, $nic, $values = false) $tabData = array(); $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans(false, 9); - if (count($tabBilans)>0) { + if (count($tabBilans)>0) { $tabBi = findBilan($siren, $tabBilans, $annee); $tabData['bilanN2dateCloture'] = $tabBi['DATE_CLOTURE']; - $tabData['bilanN2dureeMois'] = $tabBi['DUREE_MOIS']; + $tabData['bilanN2dureeMois'] = $tabBi['DUREE_MOIS']; if (count($tabPostes)>0) { foreach ($tabPostes as $poste) { if (isset($tabBi[$poste])){ @@ -879,7 +886,7 @@ function findBilan($siren, $tabBilans, $position = 0) $mBil = new MBilans($siren); //Trier et Supprimer les bilans consolidés $tabBilN = $tabBilS = array(); - foreach ($tabBilans as $typeMil => $bilan) { + foreach ($tabBilans as $typeMil => $bilan) { $temp = $mBil->getBilan(substr($typeMil,1), substr($typeMil,0,1)); $annee = $bilan['millesime']; if (substr($typeMil,0,1)=='N') { @@ -899,7 +906,7 @@ function findBilan($siren, $tabBilans, $position = 0) } if ($tabBi['CONSOLIDE'] == 'S'){ $bilanT = bilanSimplifie2Normal($tabBi); - $tabBi = $tabBi + $bilanT; + $tabBi = $tabBi + $bilanT; } return $tabBi; } @@ -1014,7 +1021,7 @@ function bilanSimplifie2Normal($bilanRS) 'YZ'=>'378', 'YP'=>'376', ); - + $bilanRN=array(); foreach ($tabBS2BN as $posteRN => $formule) { if (preg_match('/\+|\-/', $formule)) { @@ -1045,7 +1052,7 @@ function bilanSimplifie2Normal($bilanRS) $bilanRN['BN']=$bilanRS['050']; $bilanRN['BO']=$bilanRS['052']; } - + if ($bilanRS['070']<>0 || $bilanRS['074']<>0 || $bilanRS['052']<>0 || $bilanRS['062']<>0) $bilanRN['GC']=$bilanRS['256']; elseif ($bilanRS['070']==0 && $bilanRS['074']==0 && $bilanRS['052']==0 && $bilanRS['062']==0 && $bilanRS['254']<>0) @@ -1078,7 +1085,7 @@ function annoncesEntete($values) } return $tmp; } else { - return array(); + return array(); } } function annoncesData($siren, $nic, $values = false) @@ -1097,11 +1104,11 @@ function annoncesData($siren, $nic, $values = false) $dateEven = $tabAnn['dateJugement']; if ($dateEven=='0000-00-00') $dateEven=$tabAnn['dateEffet']; if ($dateEven=='0000-00-00') $dateEven=$tabAnn['DateParution']; - + $tabData['Annonce'.$even.'Lib'] = strtr($codEve['LibEven'],array(','=>' ',"'"=>' ','"'=>' ',';'=>' ')); $tabData['Annonce'.$even.'Date'] = $dateEven; $tabData['Annonce'.$even.'DateParution'] = $tabAnn['DateParution']; - + } } }