From 8537d02b2279a0030c0acf150d1e614a0d20e7a2 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Mon, 8 Dec 2014 13:35:51 +0000 Subject: [PATCH] Update librairies from old server --- config/configure.php | 2 +- includes/insee/classMInsee.php | 215 ++++++++-- includes/partenaires/classMAmabis.php | 568 ++++++++++++++++++++++++-- 3 files changed, 723 insertions(+), 62 deletions(-) diff --git a/config/configure.php b/config/configure.php index 330e6720..f658561f 100644 --- a/config/configure.php +++ b/config/configure.php @@ -14,7 +14,7 @@ options : } $action = $argv[1]; -$profil = strtoupper($argv[2]); +$profil = $argv[2]; switch ($action) { diff --git a/includes/insee/classMInsee.php b/includes/insee/classMInsee.php index f68b8dae..e37447d8 100644 --- a/includes/insee/classMInsee.php +++ b/includes/insee/classMInsee.php @@ -63,6 +63,31 @@ $tabEvenInsee=array( 'i780'=>'Modification de l\'établissement', 'i781'=>'Modification de l\'établissement suite à correction d\'erreur', 'i795'=>'Personne radiée à sa demande de de la base SIRENE diffusion', + // Nouveaux évènements Sirene4 de la quotidienne Insee (Syracuse) + 'iCE' =>'Création établissement', + 'iCS' =>'Création siège', + 'iCTE' =>'Création établissement (transfert)', + 'iCTS' =>'Création siège (transfert)', + 'iSU' =>'Cessation juridique', + 'iME' =>'Modification établissement', + 'iMS' =>'Modification siège', + 'iMTDE' =>'Modification établissement départ (transfert)', + 'iMTAE' =>'Modification établissement arrivée (transfert)', + 'iMTDS' =>'Modification siège départ (transfert)', + 'iMTAS' =>'Modification siège arrivée (transfert)', + 'iMU' =>'Modification entreprise', + 'iRE' =>'Réactivation établissement', + 'iRS' =>'Réactivation siège', + 'iSE' =>'Fermeture (ou désactivation) établissement', + 'iSS' =>'Fermeture (ou désactivation) siège', + 'iSTE' =>'Fermeture établissement (transfert)', + 'iSTS' =>'Fermeture siège (transfert)', + 'iRI' =>'Refus d\'immatriculation au RCS', + 'iCC' =>'Création par le calage', + 'iMC' =>'Modification par le calage', + 'iSC' =>'Suppression par le calage', + 'iI' =>'Entrée dans le champ de la diffusion commerciale', + 'iO' =>'Sortie du champ de la diffusion commerciale', ); global $tabDestinat; @@ -650,6 +675,7 @@ function valideSiren($siren, $nic='', $erreur=false) { return $erreur; $SIRET=$siren.$nic; + if ($siren<>356000000) { $somme=0; for ($i=0; $i<=12; $i+=2) { // Traitement PAIR @@ -664,8 +690,16 @@ function valideSiren($siren, $nic='', $erreur=false) { if ((integer)($somme/10)!=($somme/10))// Le Siret est faux return $erreur; + } else { + // Cas particulier du siren de LA POSTE : 356 000 000 00000 + $somme=14; + for ($i=9; $i<=13; $i++) + $somme+=(integer)substr($SIRET,$i,1); + if ($somme%5!=0) // Le NIC de l'établissement de LA POSTE est faux ! + return $erreur; } } + } return true; } @@ -1994,7 +2028,7 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ /** Informations INSEE **/ if ($siren>100) { - $insee=$this->iDbInsee->select('identite', 'ACTIF%10 AS ACTIF, actifEco%10 AS actifEco, NOM, NOM2, SIGLE, ENSEIGNE, ADR_NUMVOIE, ADR_BTQ, ADR_TYPVOIE, ADR_LIBVOIE, ADR_LIBCOM, ADR_CP, ADR_COMP, ADR_DISTSP, PAYS, DCREN, SIEGE, AUXILT, SAISONAT, CJ, CIVILITE, NBETAB, APE_ENT, APE_ETAB, PROCOL, PROCOL_TYPE, PROCOL_DATE, CAPITAL, EFF_ENT, NUMRC, TEL, FAX, DIR_FCT, DIR_IDEN, DIR_DATEN, DIR_LIEUN, CAPITAL_DATE, CAPITAL_DEV, DCRET, TEFF_ENT, ADR_DEP, ADR_COM, TCA, TCAEXP, EFF_ET, TEFF_ET, CODEVOIE, DATE_MAJ, APRM, ACTIVNAT, ORIGINE, MODET, EXPLET, LIEUACT, ACTISURF, DEFET, MODEN, PRODPART, EXPLEN, MONOREG, REGIMP, MONOACT, DEFEN, DEFET, IDENTITE_PRE', + $insee=$this->iDbInsee->select('identite', 'ACTIF%10 AS ACTIF, actifEco%10 AS actifEco, NOM, NOM2, SIGLE, ENSEIGNE, ADR_NUMVOIE, ADR_BTQ, ADR_TYPVOIE, ADR_LIBVOIE, ADR_LIBCOM, ADR_CP, ADR_COMP, ADR_DISTSP, PAYS, DCREN, SIEGE, AUXILT, SAISONAT, CJ, CIVILITE, NBETAB, APE_ENT, APE_ETAB, PROCOL, PROCOL_TYPE, PROCOL_DATE, CAPITAL, EFF_ENT, NUMRC, TEL, FAX, DIR_FCT, DIR_IDEN, DIR_DATEN, DIR_LIEUN, CAPITAL_DATE, CAPITAL_DEV, DCRET, TEFF_ENT, ADR_DEP, ADR_COM, TCA, TCAEXP, EFF_ET, TEFF_ET, CODEVOIE, DATE_MAJ, APRM, ACTIVNAT, ORIGINE, MODET, EXPLET, LIEUACT, ACTISURF, DEFET, MODEN, PRODPART, EXPLEN, MONOREG, REGIMP, MONOACT, DEFEN, DEFET, IDENTITE_PRE, insL1_NOMEN, insL2_COMP, insL3_CADR, insL4_VOIE, insL5_DISP, insL6_POST, insL7_ETRG, dateMajRNVP, insCATEGORIE, insIND_PUBLIPO, RPET, ARRONET, CTONET, DU, TU, UU, TCD, ZEMET, ESAANN, ESAAPEN, DREACTET, AMINTRET, DREACTEN, AMINTREN, NOMEN_LONG, CEDEX, EPCI, NOM_COM, NATETAB, PRODET, PRODEN', "SIREN=$siren $strNic ORDER BY SIEGE DESC, ACTIF DESC LIMIT 0,1",false,MYSQL_ASSOC); if (count($insee)>0) { $tabInsee=$insee[0]; @@ -2003,6 +2037,12 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ $tabInsee['RECME']=$tabNotice['insRECME']; // On force l'indicateur "actifEco" à 0 si l'établissement est juridiquement inactif if ($tabInsee['ACTIF']*1==0) $tabInsee['actifEco']=0; + if (trim($tabInsee['CODEVOIE'])=='') { + $codeCommune=$tabInsee['ADR_DEP'].sprintf("%03s",$tabInsee['ADR_COM']); + //echo $codeCommune.','.$tabInsee['ADR_TYPVOIE'].','.$tabInsee['ADR_LIBVOIE'].EOL; + $tabInsee['CODEVOIE']=$this->getCodeVoieRivoli($codeCommune, $tabInsee['ADR_TYPVOIE'], $tabInsee['ADR_LIBVOIE']); + //echo $tabInsee['CODEVOIE'].EOL; + } } else { // Siren absent de l'Insee $tabInsee=array( @@ -2336,6 +2376,10 @@ print_r($tabTmp, true)); } } + if ($tabInsee['CIVILITE']==1) $dir1Genre='M'; + elseif ($tabInsee['CIVILITE']==2) $dir1Genre='F'; + elseif ($tabRet['dir1Genre']<>'M' && $tabRet['dir1Genre']<>'F') $dir1Genre=''; + $tabRet=array( 'id'=>$etab['id'], 'Siret'=>$etab['siret'], 'SiretSiege'=>$siretSiege, @@ -2394,7 +2438,7 @@ print_r($tabTmp, true)); 'Source'=>$etab['source'], 'SourceId'=>$etab['source_id'], 'Isin'=>$tab['isin'], - 'Capital'=>$etab['capital'],//IKI + 'Capital'=>$etab['capital'], 'CapitalDev'=>$etab['capitalDev'], 'CapitalSrc'=>$etab['capitalSrc'], @@ -2425,6 +2469,8 @@ print_r($tabTmp, true)); 'dir1Titre'=>self::$tabFct[$tabInsee['DIR_FCT']], 'dir1NomPrenom'=>preg_replace('/^EIRL\s/','',$tabInsee['DIR_IDEN']), + 'dir1Genre'=>$dir1Genre, + 'Rivoli'=>substr($tabInsee['CODEVOIE'],0,4).' '.substr($tabInsee['CODEVOIE'],-1), 'InfosIris'=>$tabIris, 'NatureActivite'=>$tabInsee['ACTIVNAT'], // Nature de l'activité @@ -2447,6 +2493,41 @@ print_r($tabTmp, true)); 'APRM'=>$tabInsee['APRM'], 'APRM_Lib'=>$this->getLibelleNafa($tabInsee['APRM']), 'AutreSiret'=>$tabAssoc, + + 'L1_NOMEN'=>$tabInsee['insL1_NOMEN'], // Nom ou raison sociale de l'entreprise pour l'adressage + 'L2_COMP'=> $tabInsee['insL2_COMP'], // Complément de nom de l'entreprise pour l'adressage + 'L3_CADR'=> $tabInsee['insL3_CADR'], // Complément d'adresse pour l.adressage + 'L4_VOIE'=> $tabInsee['insL4_VOIE'], // Numéro et libellé dans la voie + 'L5_DISP'=> $tabInsee['insL5_DISP'], // Distribution spéciale + 'L6_POST'=> $tabInsee['insL6_POST'], // Ligne d'acheminement postal pour l'adressage + 'L7_ETRG'=> $tabInsee['insL7_ETRG'], // Libellé du pays pour les adresses à l'étranger + 'IND_PUBLIPO'=> $tabInsee['insIND_PUBLIPO'], // Indicateur du champ de publipostage + 'dateMajRNVP'=>$tabInsee['dateMajRNVP'], + 'RNVP_Niveau'=>0, + + 'RPET'=> $tabInsee['RPET'], // + 'ARRONET'=> $tabInsee['ARRONET'], // + 'CTONET'=> $tabInsee['CTONET'], // + 'DU'=> $tabInsee['DU'], // + 'TU'=> $tabInsee['TU'], // + 'UU'=> $tabInsee['UU'], // + 'TCD'=> $tabInsee['TCD'], // + 'ZEMET'=> $tabInsee['ZEMET'], // + 'ESAANN'=> $tabInsee['ESAANN'], // + 'ESAAPEN'=> $tabInsee['ESAAPEN'], // + + 'DREACTET'=> $tabInsee['DREACTET'], // + 'AMINTRET'=> $tabInsee['AMINTRET'], // + 'DREACTEN'=> $tabInsee['DREACTEN'], // + 'AMINTREN'=> $tabInsee['AMINTREN'], // + + 'CATEGORIE'=> $tabInsee['insCATEGORIE'], // Catégorie d'entreprise + 'NOMEN_LONG'=> $tabInsee['NOMEN_LONG'], // Nom ou raison sociale de l'entreprise + 'PRODET'=> $tabInsee['PRODET'], + 'PRODEN'=> $tabInsee['PRODEN'], + 'NATETAB'=> $tabInsee['NATETAB'], + 'CEDEX'=> $tabInsee['CEDEX'], + 'EPCI'=> $tabInsee['EPCI'], // MODET, ); @@ -2597,10 +2678,10 @@ print_r($tmp, true)); 'Début du plan : '. $this->debutPlan .EOL. 'Durée du plan : '. $this->dureePlan .' mois'.EOL. 'Fin du plan : '. $this->finPlan);*/ - } elseif ($this->dureePlan>0 && date('Ymd')>=$this->finPlan) + } elseif ($this->dureePlan>0 && date('Ymd')>=$this->finPlan) { // Plan révolu $tabRet['SituationJuridique']=''; - elseif ($this->appelJugement) + } elseif ($this->appelJugement) // Appel de jugement $tabRet['SituationJuridique']='PA'; else @@ -2636,16 +2717,22 @@ print_r($tmp, true)); $tabRet['dir1Titre']=self::$tabFct['PP']; if ($tabInsee['CIVILITE']>0 && $tabRet['dir1NomPrenom']=='') { - if ($tabInsee['CIVILITE']==1) $tabRet['dir1NomPrenom']='M. '; - elseif ($tabInsee['CIVILITE']==2) $tabRet['dir1NomPrenom']='Mme '; + if ($tabInsee['CIVILITE']==1) { $tabRet['dir1NomPrenom']='M. '; $tabRet['dir1Genre']='M'; } + elseif ($tabInsee['CIVILITE']==2) { $tabRet['dir1NomPrenom']='Mme '; $tabRet['dir1Genre']='F'; } + elseif ($tabRet['dir1Genre']<>'M' && $tabRet['dir1Genre']<>'F') $tabRet['dir1Genre']=''; $tabRet['dir1NomPrenom'].=$tabInsee['NOM']; } if ($tabInsee['CIVILITE']>0 && ($tabRet['dir1Nom']=='' || $tabRet['dir1Prenom'])) { - $tmp=$this->iDbInsee->select( 'insee_even', 'dirNom, dirNomUsage, dirPrenom', "insSIREN=$siren ORDER BY insDATEVE DESC LIMIT 0,1", false, MYSQL_ASSOC); + $tmp=$this->iDbInsee->select( 'insee_even', 'dirNom, dirNomUsage, dirPrenom, insCIVILITE', "insSIREN=$siren ORDER BY insDATEVE DESC LIMIT 0,1", false, MYSQL_ASSOC); $tabRet['dir1Nom']=@strtoupper($tmp[0]['dirNom']); $tabRet['dir1Prenom']=@ucwords(strtolower(@$tmp[0]['dirPrenom'])); $tabRet['dir1NomUsage']=@strtoupper($tmp[0]['dirNomUsage']); + if ($tmp[0]['insCIVILITE']==1) $tabRet['dir1Genre']='M'; + elseif ($tmp[0]['insCIVILITE']==2) $tabRet['dir1Genre']='F'; + elseif ($tabRet['dir1Genre']<>'M' && $tabRet['dir1Genre']<>'F') $tabRet['dir1Genre']=''; + + $entrep['sexe']=$tabRet['dir1Genre']; unset($tmp); } @@ -2812,10 +2899,13 @@ print_r($tmp, true)); $tabRet['dir'.$k.'Code']=$ann['code']; $tabRet['dir'.$k.'Titre']=$ann['libelle']; if (trim($ann['naissance_nom'])<>'') { - if ($ann['civilite']=='MME' || $ann['civilite']=='MLLE') + if ($ann['civilite']=='MME' || $ann['civilite']=='MLLE') { $nomNaiss=' née '.trim($ann['naissance_nom']); - elseif ($ann['civilite']=='M') + $tabRet['dir'.$k.'Genre']='F'; + } elseif ($ann['civilite']=='M') { $nomNaiss=' né '.trim($ann['naissance_nom']); + $tabRet['dir'.$k.'Genre']='M'; + } else $nomNaiss=' né(e) '.trim($ann['naissance_nom']); } else $nomNaiss=''; @@ -2827,6 +2917,10 @@ print_r($tmp, true)); $tabRet['dir'.$k.'NomPrenom']=$ann['nom'].' '.$ann['prenom'].$nomNaiss; $tabRet['dir'.$k.'Nom']=$ann['nom']; $tabRet['dir'.$k.'Prenom']=$ann['prenom']; + if ($ann['civilite']=='M') + $tabRet['dir'.$k.'Genre']='M'; + elseif ($ann['civilite']=='MME' || $ann['civilite']=='MLLE') + $tabRet['dir'.$k.'Genre']='F'; } $tabRet['dir'.$k.'DateFct']=$ann['dateEffet']; $tabRet['dir'.$k.'DateNaiss']=$ann['dateNaiss']; @@ -2849,6 +2943,7 @@ print_r($tmp, true)); $tabRet['dir'.$k.'Nom']=$ann['nom']; $tabRet['dir'.$k.'Prenom']=$ann['prenom']; $tabRet['dir'.$k.'DateFct']=$ann['dateEffet']; + $tabRet['dir'.$k.'Genre']=''; if ($k==2) break; $k++; } @@ -2965,12 +3060,14 @@ print_r($tmp, true)); } if ($fjInpi>=1000 && $fjInpi<2000) { $tabRet['dir1Titre']='Personne physique'; + $tabRet['dir1Code']='1050'; $tabRet['dir1NomPrenom']=strtoupper($entrep['nom']).' '.ucwords(strtolower($entrep['prenom'])); $tabRet['dir1Nom']=strtoupper($entrep['nom']); $tabRet['dir1Prenom']=ucwords(strtolower($entrep['prenom'])); $tabRet['dir1NomUsage']=strtoupper($entrep['nomUsage']); $tabRet['dir1DateNaiss']=$entrep['dateNaiss']; $tabRet['dir1LieuNaiss']=$entrep['lieuNaiss']; + $tabRet['dir1Genre']=$entrep['sexe']; } if ($tabRet['DateMajRCS']=='') { @@ -3104,6 +3201,11 @@ print_r($tmp, true)); } } + if ($tabRet['dir1Genre']=='M' || $tabRet['dir1Genre']=='F') { + $tabRet['dir1Titre']='Personne physique'; + $tabRet['dir1Code']='1050'; + } + if ( $accesDist && // Département couvert par Infogreffe $tabRet['Dept']<>57 && $tabRet['Dept']<>67 && $tabRet['Dept']<>68 && $tabRet['Dept']<>97 && $tabRet['Dept']<>98 && $tabRet['Dept']<>99 && @@ -4679,6 +4781,7 @@ TOTAL : $dureeTot s\n"; // On ne rafraichie que si demandé et // que la requête en base est trop ancienne et nscrl est vide ou tel ou web + $refresh=false; if ($refresh && $dateUpdate<$lastYear && ($idComp['nscrl']==0 || $idComp['tel']=='') ) { $timeout=20; // La mise à jour ne se fera pas si lastMAJ<365 @@ -4686,9 +4789,9 @@ TOTAL : $dureeTot s\n"; $timeout=10; $strUpdate='AND nscrl<>0 AND DATEDIFF(NOW(),dateUpdate)>0';*/ $referer=''; - $url='http://www.cofacerating.fr/portail/entreprise_identite/identite.asp?ip=pagespro&lg=fr&nsiren='.$siren; + $url='http://www.elliscore.fr/portail/entreprise_identite/identite.asp?ip=pagespro&lg=fr&nsiren='.$siren; $tdeb=microtime(1); - $page=getUrl($url, '', '', $referer, false, 'www.cofacerating.fr', '', $timeout); + $page=getUrl($url, '', '', $referer, false, 'www.elliscore.fr', '', $timeout); $duree=round(microtime(1)-$tdeb,3); $this->body=$page['body']; $this->codeRetour=$page['code']; @@ -4957,6 +5060,12 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ if (trim($ann['strEven'])<>'') { foreach ($tabEven as $even) { $tabRetEven[]=array('CodeEven'=>$even,'LibEven'=>$this->iBodacc->getEvenement($even)); + if ($even>=1000 && $even<2000) $rubriqueRet='procol'; + elseif ($even>=2000 && $even<3000) $rubriqueRet='mmd'; + elseif ($even>=3000 && $even<4000) $rubriqueRet='comptes'; + elseif ($even>=4000 && $even<5000) $rubriqueRet='creations'; + elseif ($even>=5000 && $even<6000) $rubriqueRet='ventes'; + elseif ($even>=6000 && $even<7000) $rubriqueRet='radiations'; if ($even==2102 || $even==2100) $capital=true; } } @@ -5020,7 +5129,7 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ 'Departement'=>$dept, 'Tribunal'=>$ann['triNom'], 'TribunalSiret'=>$ann['triSiret'], - 'Rubrique'=>'procol', + 'Rubrique'=>$rubriqueRet, 'typeAnnonce'=>'insertion', 'dateEffet'=>$ann['dateCessationPaiement'], 'dateJugement'=>$ann['dateJugement'], @@ -5173,6 +5282,8 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ function getInfosNotice($siren, $nic) { /** Elements provenant du Notice 80 hors identité **/ $tabTmp=$this->iDbInsee->select('insee_notices', 'insSIREN, insNIC, insL4_VOIE, insL6_POST, insRPET, insDEPCOMEN, insRPEN, insARRONET, insCTONET, insTCD, insZEMET, insDU, insTU, insUU, insMMINTRET, insMMINTREN, insVMAJ, insVMAJ1, insVMAJ2, insVMAJ3, insRECME, insEAEANT, insEAEAPET, insEAESEC1T, insEAESEC2T, insEAEANN, insEAEAPEN, insEAESEC1N, insEAESEC2N, insEAESEC3N, insEAESEC4N, dateNotice', "insSIREN=$siren AND insNIC=$nic ORDER BY dateNotice DESC LIMIT 0,1", false, MYSQL_ASSOC); + if (count($tabTmp)==0) + $tabTmp=$this->iDbInsee->select('insee_even', "insSIREN, insNIC, insL4_VOIE, insL6_POST, insRPET, insDEPCOMEN, insRPEN, insARRONET, insCTONET, insTCD, insZEMET, insDU, insTU, insUU, insAMINTRET, insAMINTREN, insVMAJ, insVMAJ1, insVMAJ2, insVMAJ3, '' AS insRECME, '' AS insEAEANT, '' AS insEAEAPET, '' AS insEAESEC1T, '' AS insEAESEC2T, insESAANN AS insEAEANN, insESAPEN AS insEAEAPEN, insESASEC1N AS insEAESEC1N, insESASEC2N AS insEAESEC2N, insESASEC3N AS insEAESEC3N, insESASEC4N AS insEAESEC4N, dateInsert AS dateNotice", "insSIREN=$siren AND insNIC=$nic ORDER BY dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC); return $tabTmp[0]; } @@ -5200,7 +5311,7 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ } $tabTmp=$this->iDb->select('tabAdrDom', 'id, siren, nic, enActif, etActif, procol, nom, nom2, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, adrComp, adrDistSp, cj, apen, apet, nbEntrep, dateInsert, dateUpdate', - "adrNum=$num AND adrBtq='$indRep' AND adrTypVoie LIKE '%$typeVoie%' AND adrLibVoie LIKE '%$libVoie%' AND cp=$cp $strAdrActive", false, MYSQL_ASSOC); + "adrNum=$num AND adrBtq='$indRep' AND adrTypVoie LIKE '%$typeVoie%' AND adrLibVoie LIKE '%$libVoie%' AND cp=$cp $strAdrActive GROUP BY siren ORDER BY enActif DESC, nbEntrep DESC", false, MYSQL_ASSOC); if (count($tabTmp)>0) { /* sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Adresse de domiciliation", print_r($tabAdr,true).EOL.print_r($tabTmp, true).EOL. "num=$num=$adresseNum".EOL. @@ -5660,7 +5771,21 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ return $tabRet; } - public function getIdOPS($naf5, $codeCommune, $fj, $dateCreation, $activiteReelle='') { + /** Retourne l'identifiant de l'Organisme de protection sociale compétent + ** + ** @param string $naf5 Code Naf de l'entreprise + ** @param integer $codeCommune Code commune de l'entreprise + ** @param integer $fj Forme juridique de l'entreprise + ** @param date $dateCreation Date de création de l'entreprise + ** @param integer $activiteReelle Activité réelle de l'entreprise + ** @return + */ + public function getOPS($naf5, $codeCommune, $fj, $dateCreation, $activiteReelle='') { + /* + * 1. Vérifier si le NAF est dans la table sdv1.retraiteNaf (répertoire professionnel) + * 1.1. Si présent, + * + */ $tabRet=array(); $naf4=substr($naf5,0,4); $dep=substr($codeCommune,0,2); @@ -5671,20 +5796,26 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ $ret=$this->iDb->select('sdv1.retraiteNaf', 'codeOPS, libInstitution, codeAnnexe, Limitations', "naf5='$naf5' or naf5='$naf4'", false, MYSQL_ASSOC); + //print_r($ret); + //die(); if (count($ret)>0) { + $tabRet=array('competenceType'=>'professionnel'); foreach ($ret as $iRet=>$tabCaisses) { if (count($ret)==1) { $limite=$tabCaisses['Limitations']; if ($tabCaisses['codeOPS']<>null) { - echo "Cas 1 : NAF $naf5 unique".EOL; + echo "Cas 1 : NAF $naf5 unique, annexe ".$tabCaisses['codeAnnexe']." - ".$tabCaisses['libInstitution']." (".$tabCaisses['Limitations'].")".EOL; + print_r($this->getInfoOPS($tabCaisses['codeOPS'])); return $tabCaisses['codeOPS']; } elseif ($tabCaisses['Annexe']<>'') { $annexe=$tabCaisses['Annexe']; echo "Cas 2 : NAF $naf5, Annexe $annexe".EOL; + //print_r($this->getInfoOPS($idOPS)); break; } } else { echo "Cas 3.1 : Non géré $naf5 !".EOL; + //print_r($this->getInfoOPS($idOPS)); print_r($tabCaisses); } } @@ -5695,21 +5826,24 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ 'codeOPS, libInstitution', "codeDep=$dep AND codeAnnexe IN ('$annexe','A','B') GROUP BY codeAnnexe ASC", false, MYSQL_ASSOC); if (count($ret)>0) { + $tabRet=array('competenceType'=>'interprofessionnel'); foreach ($ret as $iRet=>$tabCaisses) { - if (count($ret)==1) { + //if (count($ret)==1) { if ($tabCaisses['codeOPS']<>'') { - echo "Cas 2.1 : NAF $naf5, Annexe $annexe".EOL; +// echo "Cas 2.1 : NAF $naf5, Annexe $annexe".EOL; + echo "Cas 2.1 : NAF $naf5, annexe ".$tabCaisses['codeAnnexe']." - ".$tabCaisses['libInstitution']." (".$tabCaisses['Limitations'].")".EOL; + print_r($this->getInfoOPS($tabCaisses['codeOPS'])); return $tabCaisses['codeOPS']; } else { echo "Cas 2.2 : Non géré $naf5".EOL; print_r($tabCaisses); } - } else { - echo "Cas 3.2 : Non géré $naf5".EOL; - print_r($tabCaisses); + /*} else { + echo "Cas 3.2 : Non géré $naf5".EOL; + print_r($tabCaisses); + }*/ } } - } //die(); //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::listeProduits sur $naf", print_r($tabRet, true)); @@ -5747,10 +5881,15 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ public function getSiretAssoc($siren, $nic, $lien=0) { $tabRet=array(); $ret=$this->iDbInsee->select('insee_even', - 'insSIREN, insNIC, insDATEVE, insEVE, insAPET700, insSIEGE, insLIBCOM, insL1_NOMEN, insL2_COMP, insL4_VOIE, insL3_CADR, insL5_DISP, insL6_POST, insCODPOS, insL7_ETRG, insDEPCOM, insCODEVOIE, insNICTRAN, insSIRETPS, insDATEMAJ, idFlux, insSIRETASS, insDESTINAT, insTYPETAB, insORIGINE, insTRAN, insNOMEN, insENSEIGNE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE', - "insSIREN=$siren AND insNIC<>$nic AND (insEVE IN ('510','520','530','540') OR insEVE LIKE 'T%') AND insDATEMAJ IN ( - SELECT insDATEMAJ FROM insee_even WHERE insSIREN=$siren AND insNIC=$nic AND (insEVE IN ('510','520','530','540') OR insEVE LIKE 'T%') )", false, MYSQL_ASSOC); + 'insSIREN, insNIC, insDATEVE, insEVE, insAPET700, insSIEGE, insLIBCOM, insL1_NOMEN, insL2_COMP, insL4_VOIE, insL3_CADR, insL5_DISP, insL6_POST, insCODPOS, insL7_ETRG, insDEPCOM, insCODEVOIE, insNICTRAN, insSIRETPS, insDATEMAJ, idFlux, insSIRETASS, insDESTINAT, insTYPETAB, insORIGINE, insTRAN, insNOMEN, insENSEIGNE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insVMAJ, sirVersion', + "insSIREN=$siren AND insNIC<>$nic AND (insEVE IN ('510','520','530','540', 'CTS','CTE','STS','STE','MTDS','MTDE','MTAS','MTAE') OR insEVE LIKE 'T%') AND insDATEMAJ IN ( + SELECT insDATEMAJ FROM insee_even WHERE insSIREN=$siren AND insNIC=$nic AND (insEVE IN ('510','520','530','540', 'CTS','CTE','STS','STE','MTDS','MTDE','MTAS','MTAE') OR insEVE LIKE 'T%') )", false, MYSQL_ASSOC); foreach ($ret as $iRet=>$tabEve) { + if ($tabEve['sirVersion']==4) { + if ($tabEve['insEVE']=='CTE' || $tabEve['insEVE']=='CTS' || $tabEve['insEVE']=='MTAE' || $tabEve['insEVE']=='MTAS') $typeLien='suc'; + elseif ($tabEve['insEVE']=='STE' || $tabEve['insEVE']=='STS' || $tabEve['insEVE']=='MTDE' || $tabEve['insEVE']=='MTDS') $typeLien='pre'; + else $typeLien='ind'; + } else { switch($tabEve['insTYPETAB']*1) { case 8: case 10: @@ -5773,6 +5912,7 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ default : if ($lien<>0) continue; $typeLien='ind'; break; } } + } $adr1=$tabEve['insL1_NOMEN']; if ($adr1==NULL) $adr1=$tabEve['insNOMEN']; @@ -5984,6 +6124,33 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ } else return 0; } + + + + public function getCodeVoieRivoli($codeCommune, $adrTypVoie, $adrLibVoie) { + $codeVoie=''; + $adrLibVoie2=addslashes($adrLibVoie); + $tDeb=microtime(1); + // $ret=$this->iDbInsee->select( 'fantoirVoi', "codComInsee, idVoieCom, cleRivoli, voieNature, voieLib, MATCH (codComInsee, voieNature, voieLib) AGAINST ('$codeCommune $adrTypVoie $adrLibVoie2' IN NATURAL LANGUAGE MODE) AS score", + // "codComInsee='$codeCommune' AND MATCH (codComInsee, voieNature, voieLib) AGAINST ('$codeCommune $adrTypVoie $adrLibVoie2' IN NATURAL LANGUAGE MODE) ORDER BY score DESC",false, MYSQL_ASSOC); + $ret=$this->iDbInsee->select( 'fantoirVoi', "codComInsee, idVoieCom, cleRivoli, voieNature, voieLib, 1 AS score", + "codComInsee='$codeCommune' AND voieNature='$adrTypVoie' AND voieLib='$adrLibVoie2'",false, MYSQL_ASSOC); + $nbRet=count($ret); + if ($nbRet==0) return '';//'Aucune correspondance Rivoli'.EOL; + else { + foreach($ret as $i=>$iRet) { + // echo "$codeCommune : je compare '$adrTypVoie' avec '".$iRet['voieNature']."' et '$adrLibVoie' avec '".$iRet['voieLib']."' "; + if ($iRet['voieNature']==$adrTypVoie && $iRet['voieLib']==$adrLibVoie) { + $codeVoie=$iRet['idVoieCom']; + // echo 'OK ('.round(microtime(1)-$tDeb,3).'s.)'.EOL; + break; + } + // echo 'ko ('.round(microtime(1)-$tDeb,3).'s.) !!!'.EOL; + } + } + return $codeVoie; + } + } diff --git a/includes/partenaires/classMAmabis.php b/includes/partenaires/classMAmabis.php index 5a48ef45..887fcddb 100644 --- a/includes/partenaires/classMAmabis.php +++ b/includes/partenaires/classMAmabis.php @@ -56,7 +56,7 @@ class MAmabis { $dep3=substr($cp,0,3)*1; switch ($dep2) { case 0: - case 5: + /* case 5: case 9: case 15: case 19: @@ -64,7 +64,7 @@ class MAmabis { case 32: case 46: case 48: - case 82: + case 82:*/ case 97: // DOM case 98: // TOM case 99: // Etranger @@ -79,10 +79,18 @@ class MAmabis { $iDb=new WDB(); $adresse=addslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoie $adrLibVoie"))); $ville=addslashes($ville); - $ret=$iDb->select( 'zonage', 'zus, zru, zfu, cucs', "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'",false, MYSQL_ASSOC); + $majForcee=false; + + $ret=$iDb->select( 'zonage', 'zus, zru, zfu, cucs, rnvpStatut, rnvpCorr, rnvpTrt, adr3, adr4, adr5, adr6, adr7, numVoieA, indRepA, + typeVoieAlong, typeVoieAcourt, corpVoie, motDir, motDirD, libVoieSec, adr4n32, adr4n38, clePostaleVoie, + secteur, cleRoutage, cpx, cleAd, codPaysIso2, codPaysIso3, libPays, codeInsee', + "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville'",false, MYSQL_ASSOC); + $zones=@$ret[0]; if (count($ret)>0) { - $zones=$ret[0]; - $tabRep['ZUS']=$tabRep['ZFU']=$tabRep['ZRU']=$tabRep['CUCS']='NON'; + if ($zones['rnvpStatut']===null && $rnvp) $majForcee=true; + $tabRep['ZUS'] =$tabRep['ZFU'] =$tabRep['ZRU'] =$tabRep['CUCS'] ='NON'; + //$tabRep['NZUS']=$tabRep['NZFU']=$tabRep['NZRU']=$tabRep['NCUCS']=''; + if (trim($zones['zus'])<>'') { if (trim($zones['zus'])=='NSP') $tabRep['ZUS']='NSP'; else $tabRep['ZUS']='OUI'; @@ -103,8 +111,23 @@ class MAmabis { else $tabRep['CUCS']='OUI'; $tabRep['NCUCS']=$zones['cucs']; } - //return $tabRep; - } else { + + /** Autres Informations de la RNVP + **/ + if ($rnvp) { + //$tabRep['ADR1']=@trim($tabZones['ADR1']); + //$tabRep['ADR2']=@trim($tabZones['ADR2']); + if (strtoupper(@trim($zones['adr7']))=='FRANCE') $zones['adr7']=''; + $tabRep['ADR3']=@trim($zones['adr3']); + $tabRep['ADR4']=@trim($zones['adr4']); + $tabRep['ADR5']=@trim($zones['adr5']); + $tabRep['ADR6']=@trim($zones['adr6']); + $tabRep['ADR7']=trim($zones['adr7']); + } + + } + + if (count($ret)==0 || $majForcee) { try { if (trim($raisonSociale)=='') $raisonSociale='TEST'; // Le RNVP ne fonctionne pas sans la Raison Sociale qui est la 1ère ligne d'adresse @@ -124,54 +147,129 @@ class MAmabis { fwrite($fp, date('d-m-Y H:i:s').' - '.implode("\n", $rep)."\n============================================================================\n"); fclose($fp); + //print_r($rep); + //die(); + $tabZones=explode(',',$rep['zonage']); // ZUS=OUI,NZUS=1127020,ZFU=OUI,NZFU=11270ZF,CUCS=OUI,NCUCS=1127020 foreach ($tabZones as $zone) { $tabTmp=explode('=',$zone); if (trim($tabTmp[0])<>'') $tabRep[$tabTmp[0]]=$tabTmp[1]; } - if ($tabRep['ZUS']=='NSP') $tabRep['NZUS']='NSP'; - if ($tabRep['ZRU']=='NSP') $tabRep['NZRU']='NSP'; - if ($tabRep['ZFU']=='NSP') $tabRep['NZFU']='NSP'; - if ($tabRep['CUCS']=='NSP') $tabRep['NCUCS']='NSP'; + if (@$tabRep['ZUS']=='NSP') $tabRep['NZUS']='NSP'; + if (@$tabRep['ZRU']=='NSP') $tabRep['NZRU']='NSP'; + if (@$tabRep['ZFU']=='NSP') $tabRep['NZFU']='NSP'; + if (@$tabRep['CUCS']=='NSP') $tabRep['NCUCS']='NSP'; $adresse=stripslashes(trim(preg_replace('/ +/',' ', "$adrNum $adrIndRep $adrTypeVoie $adrLibVoie"))); $ville=stripslashes($ville); + $tabRepTmp=array(); + $tabTmp=explode('=',utf8_decode($rep['objdesc'])); + //print_r($tabTmp); + //die(); + $tabZones=array(); + foreach ($tabTmp as $iZone=>$zone) { + $pos=strrpos($zone,','); + if ($iZone==0) { + $nomZoneSuiv=$zone; + continue; + } + $tabZones[$nomZoneSuiv]=substr($zone,0,$pos); + $nomZoneSuiv=substr($zone,$pos+1); + } + if (strtoupper(@trim($tabZones['ADR7']))=='FRANCE') $tabZones['ADR7']=''; + $tabTmp=explode('|', $tabZones['VOIEA']); + $typeVoieAcourt=@trim($tabTmp[1]); $tabInsert=array( 'address'=>$adresse, 'adr_cp'=>$cp, 'adr_ville'=>$ville, - 'zus'=>$tabRep['NZUS'], - 'zru'=>$tabRep['NZRU'], - 'zfu'=>$tabRep['NZFU'], - 'cucs'=>$tabRep['NCUCS'], - 'adrNum'=>$adrNum, + 'zus'=>@$tabRep['NZUS'], + 'zru'=>@$tabRep['NZRU'], + 'zfu'=>@$tabRep['NZFU'], + 'cucs'=>@$tabRep['NCUCS'], + ); + $tabUpdate=array( 'adrNum'=>$adrNum, 'adrIndRep'=>$adrIndRep, 'adrTypeVoie'=>$adrTypeVoie, 'adrLibVoie'=>$adrLibVoie, 'rivoli'=>$codeRivoli, + // Ajouté le 16/12/2013 + 'rnvpStatut' => substr($tabZones['STATUTC'],0,2), + 'rnvpCorr' => substr($tabZones['STATUTC'],2,1), + 'rnvpTrt' => trim(substr($tabZones['STATUTC'],3,2)), + 'adr3' => @trim($tabZones['ADR3']), + 'adr4' => @trim($tabZones['ADR4']), + 'adr5' => @trim($tabZones['ADR5']), + 'adr6' => @trim($tabZones['ADR6']), + 'adr7' => trim($tabZones['ADR7']), + 'numVoieA' => @trim($tabZones['NUM1']), + 'indRepA' => @trim($tabZones['BTQC1']), + 'typeVoieAlong' => @trim($tabZones['TYPVOIEL']), + 'typeVoieAcourt' => $typeVoieAcourt, + 'corpVoie' => @trim($tabZones['CORPSVOIE']), + 'motDir' => @trim($tabZones['MOTDIR']), + 'motDirD' => @trim($tabZones['MOTDIRD']), + 'libVoieSec' => @trim($tabZones['VOIREFLIBS']), + 'adr4n32' => @trim($tabZones['VOIREFLIBPOS']), + 'adr4n38' => @trim($tabZones['VOIREFLIBPOS2']), + 'clePostaleVoie' => @trim($tabZones['VOIREFCLEPOST']), + 'secteur' => @trim($tabZones['SECTEUR']), + 'cleRoutage' => @trim($tabZones['CLER']), + 'cpx' => @trim($tabZones['CPX']), + 'cleAd' => @trim($tabZones['CLEAD']), + 'codPaysIso2' => @trim($tabZones['NATREFISO2']), + 'codPaysIso3' => @trim($tabZones['NATREFISO3']), + 'libPays' => @trim($tabZones['NATREFLIB']), + 'codeInsee' => @trim($tabZones['LOCREFCLEO']), + 'source' => 'Amabis', ); - $iDb->insert('zonage', $tabInsert); + $dateInsert=0; + if ($majForcee) { + $adresseL=addslashes($adresse); + $villeL=addslashes($ville); + + $ret=$iDb->select('zonage', 'dateInsert*1 as dateInsert', "address='$adresseL' AND adr_cp='$cp' AND adr_ville='$villeL'", false); + $dateInsert=@$ret[0]['dateInsert']*1; + $iDb->update('zonage', array_merge($tabUpdate,array('dateInsert'=>$dateInsert)), "address='$adresseL' AND adr_cp='$cp' AND adr_ville='$villeL'", false); + echo "Mise à jour de l'adresse du $dateInsert pour address='$adresseL' AND adr_cp='$cp' AND adr_ville='$villeL'".EOL; + } + + if ($dateInsert==0) { + $iDb->insert('zonage', array_merge($tabInsert,$tabUpdate), false); + //echo "Insertion de l'adresse (".$zones['rnvpStatut'].")!".EOL; + } + + $tabTmp[0]=explode(',', $tabZones['LOCREFCLEP']); + $tabTmp[1]=explode(',', $tabZones['LOCREFCP']); + $tabTmp[2]=explode(',', $tabZones['LOCREFTYPP']); + $tabTmp[3]=explode(',', $tabZones['LOCREFLIBD']); + $tabTmp[4]=explode(',', $tabZones['LOCREFLIBD2']); + foreach($tabTmp[0] as $iCleP=>$cleP) { + $tabInsert=array( + 'codeInsee' => @trim($tabZones['LOCREFCLEO']), + 'villeLib' => @trim($tabZones['LOCREFLIBP']), + 'villePopu' => @trim($tabZones['LOCREFPOP']), + 'cleAchPost'=> $cleP, + 'codePostal'=> $tabTmp[1][$iCleP], + 'typePostal'=> $tabTmp[2][$iCleP], + 'libAchP32' => @preg_replace('/^\//','',$tabTmp[3][$iCleP]), + 'libAchP38' => @preg_replace('/^\//','',$tabTmp[4][$iCleP]), + 'source' => 'Amabis', + 'dateInsert'=> date('YmdHis'), + ); + $iDb->insert('villesCP', $tabInsert, false); + //echo mysql_error().EOL; + } /** Autres Informations de la RNVP - **/ - if ($rnvp || $debug) { - $tabRepTmp=array(); - $tabZones=explode(',',$rep['objdesc']); - foreach ($tabZones as $zone) { - $tabTmp=explode('=',$zone); - if (trim($tabTmp[0])<>'') - $tabRepTmp[$tabTmp[0]]=$tabTmp[1]; - } - if (!$debug) { - $tabRep['ADR1']=@$tabRepTmp['ADR1']; - $tabRep['ADR2']=@$tabRepTmp['ADR2']; - $tabRep['ADR3']=@$tabRepTmp['ADR3']; - $tabRep['ADR4']=@$tabRepTmp['ADR4']; - $tabRep['ADR5']=@$tabRepTmp['ADR5']; - $tabRep['ADR6']=@$tabRepTmp['ADR6']; - $tabRep['ADR7']=@$tabRepTmp['ADR7']; - } else { - $tabRep=array_merge($tabRep, $tabRepTmp); - } + **/ + if ($rnvp) { + //$tabRep['ADR1']=@trim($tabZones['ADR1']); + //$tabRep['ADR2']=@trim($tabZones['ADR2']); + $tabRep['ADR3']=@trim($tabZones['ADR3']); + $tabRep['ADR4']=@trim($tabZones['ADR4']); + $tabRep['ADR5']=@trim($tabZones['ADR5']); + $tabRep['ADR6']=@trim($tabZones['ADR6']); + $tabRep['ADR7']=trim($tabZones['ADR7']); } } catch (SoapFault $fault) { echo 'ERREUR SOAP :'.EOL; @@ -184,6 +282,9 @@ class MAmabis { } //return $tabRep; } + + /** Zonages AFR et ZRR + **/ $codeInsee=substr($codeRivoli,0,5); $ret=$iDb->select( 'zonageInsee', 'typeZone, arreteDate, decretDate, decretNum, decretModifieDate, decretModifieNum, dateDebut, dateFin', "codeInsee='$codeInsee'",false, MYSQL_ASSOC); $tabRep['ZRR']=$tabRep['AFR']='NON'; @@ -218,6 +319,399 @@ class MAmabis { fclose($fp); } + /** + * @todo Corriger les adresses présentes dans CEDEXA (toutes les lignes) + * @todo Ligne 3, acheter HEXALIGNE3 + */ + function normaliseAdresse($adrL1, $adrL2, $adrL3, $adrL4, $adrL5, $adrL6, $adrL7='', $norme=38, $debug=true) { + if ($norme<>32 && $norme<>38) { + return 'La norme doit être 32 ou 38 caractères (38 par défaut)'.EOL; + } + + $iInsee=new MInsee(); + $iDb=new WDB('villes'); + $adrL=array(); + $adrL[1]=$adrL1=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL1))))); + $adrL[2]=$adrL2=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL2))))); + $adrL[3]=$adrL3=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL3))))); + $adrL[4]=$adrL4=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL4))))); + $adrL[5]=$adrL5=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL5))))); + $adrL[6]=$adrL6=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL6))))); + $adrL[7]=$adrL7=trim(preg_replace('/\s+/',' ',preg_replace('/[^a-z\d ]/i', ' ', strtoupper(trimAccent($adrL7))))); + if ($adrL7<>'' || $adrL7<>'FRANCE' || $adrL7<>'MONACO') + + $L1=$adrL1; + $L2=$adrL2; + + // Ligne 3, acheter HEXALIGNE3 + $L3=$adrL3; + + // Ligne 5 et 7 par défaut + $L7=$adrL7; + $L5=$adrL5; + + // Ligne 6 : CP + Localité + $idAdr56=false; + $tabAdr56k=$tabAdr56L=array(); + $cp=substr(trim($adrL6),0,5); + $cp2=substr($cp,0,2); + $ville=trim(strtr(substr($adrL6,5),array(' SAINT '=>' ST ',' SAINTE '=>' STE '))); + $ret=$iDb->select( 'hexaviaVilles', + "idAdr56, codeInseeCom, libCom$norme, codeInseeGlobal, indPluridis, libLigne5n$norme, indRoudis, codePostal, libLigne6n$norme, codeInseePre, codeMaj$norme, dateMaj$norme, MATCH (codePostal, libCom38) AGAINST ('$cp $ville' IN NATURAL LANGUAGE MODE) AS score", + "(MATCH (codePostal, libCom38) AGAINST ('$cp $ville' IN NATURAL LANGUAGE MODE) OR MATCH (codePostal, libCom38) AGAINST ('$cp2 $ville' IN NATURAL LANGUAGE MODE)) ORDER BY score DESC /*OR codePostal='$cp' AND libCom$norme='$ville'*/",false, MYSQL_ASSOC); + $nbRet=count($ret); + if ($nbRet==0) return 'Aucune correspondance CP VILLE'.EOL; + else { + foreach($ret as $i=>$iRet) { + if ($debug) echo "je compare '$cp' avec '".$iRet['codePostal']."' et '$ville' avec '".$iRet["libCom$norme"]."' (".$iRet['idAdr56'].")".EOL; + if (($iRet['codePostal']==$cp || substr($iRet['codePostal'],0,2)==$cp2) && ($iRet["libCom$norme"]==$ville || preg_replace('/ 0/', ' ',$iRet["libCom$norme"])==$ville) || (strpos($iRet["libCom$norme"],$ville)>0 && $nbRet==1)) { + $idAdr56=$iRet['idAdr56']; + $dateMajHexavia=$iRet["dateMaj$norme"]; + $hexaViaComCod=$iRet['codeInseeCom']; + $hexaViaComLib=$iRet["libCom$norme"]; + $hexaViaCP=$iRet['codePostal']; + $L5=$iRet["libLigne5n$norme"]; + $L6=$iRet['codePostal'].' '.$iRet["libLigne6n$norme"]; + $L7=''; + $tabAdr56k[]=$idAdr56; + $tabAdr56L['_'.$idAdr56]=array('L5'=>$L5,'L6'=>$L6,'L7'=>$L7,); + //break; + } + } + if (!$idAdr56) { + $iRet=$ret[0]; + if ($debug) echo "On prend le score le + élevé s'il est > à 15 : je compare '$cp' avec '".$iRet['codePostal']."' et '$ville' avec '".$iRet["libCom$norme"]."' (".$iRet['idAdr56'].")".EOL; + echo '['.trim(preg_replace('/ (1ER|2EME|3EME|\d+)/', ' ',$iRet["libCom$norme"])) .'-v/s-'.trim(preg_replace('/ (1ER|2EME|3EME|\d+)/', ' ',$ville)).']'.EOL; + if (($iRet['codePostal']==$cp || substr($iRet['codePostal'],0,2)==$cp2) && ($iRet["libCom$norme"]==$ville || (substr(trim(preg_replace('/ (1ER|2EME|3EME|\d+)/', ' ',$iRet["libCom$norme"])),0,26)==trim(preg_replace('/ (1ER|2EME|3EME|\d+)/', ' ',$ville)) && $iRet['score']>17) || (strpos($iRet["libCom$norme"],$ville)>0 && $nbRet==1))) { + $idAdr56=$iRet['idAdr56']; + $dateMajHexavia=$iRet["dateMaj$norme"]; + $hexaViaComCod=$iRet['codeInseeCom']; + $hexaViaComLib=$iRet["libCom$norme"]; + $hexaViaCP=$iRet['codePostal']; + $L5=$iRet["libLigne5n$norme"]; + $L6=$iRet['codePostal'].' '.$iRet["libLigne6n$norme"]; + $L7=''; + $tabAdr56k[]=$idAdr56; + $tabAdr56L['_'.$idAdr56]=array('L5'=>$L5,'L6'=>$L6,'L7'=>$L7,); + } else { + print_r($ret); + die('Plusieurs correspondances CP VILLE'.EOL); + return 'Plusieurs correspondances CP VILLE'.EOL; + } + } + } + + /*if (count($ret)>1) { + print_r($ret); + die('Plusieurs correspondances CP VILLE'.EOL); + return 'Plusieurs correspondances CP VILLE'.EOL; + } + elseif (count($ret)==1) { + $ret=$ret[0]; + $idAdr56=$ret['idAdr56']; + $L5=$ret["libLigne5n$norme"]; + $L6=$ret['codePostal'].' '.$ret["libLigne6n$norme"]; + $L7=''; + }*/ + + // Ligne 4 : + $matriculeHexavia=false; + if(preg_match('/(^(\d{0,4})\s?([a-z]{0,1}))\s(.*)$/i', $adrL4, $matches)) { + $numVoieRep=$matches[1]; + $numVoie=$matches[2]; + $indRep=$matches[3]; + $libVoie=$matches[4]; + $libVoie5=substr($libVoie,0,5); + $tabAdr=$iInsee->structureVoie($libVoie); + $typeVoie=@$tabAdr['typeVoie']; + preg_match('/([a-z\d]{1,20})$/i', $libVoie, $matches2); + $derMot=$matches2[1]; + $derMot5=substr($derMot,0,5); + //print_r($matches); + //die($derMot); + //foreach($tabAdr56 as $k=>$tabAdr56) //=array('idAdr56'=>$idAdr56,'L5'=>$L5,'L6'=>$L6,'L7'=>$L7,); + $strAdr56=implode("','", $tabAdr56k); + $ret=$iDb->select( 'hexaviaVoies', + "idAdr56, codeVoie, derElemVoie, libVoie$norme, typeVoie, descLibVoie, indStand$norme, indScind, indHomo, codePostal, codeRoudis, codeMaj$norme, dateMaj$norme + numImpMin, numImpMinExt, numImpMax, numImpMaxExt, numPairMin, numPairMinExt, numPairMax, numPairMaxExt, MATCH (libVoie38) AGAINST ('$libVoie' IN NATURAL LANGUAGE MODE) AS score", + // "idAdr56='$idAdr56' AND (MATCH (libVoie38) AGAINST ('$libVoie' IN NATURAL LANGUAGE MODE) OR libVoie38 LIKE '$libVoie5%' OR derElemVoie LIKE '$libVoie5%')/*AND typeVoie='$typeVoie' AND derElemVoie='$derMot'*/",false, MYSQL_ASSOC); + "idAdr56 IN ('$strAdr56') AND (MATCH (libVoie38) AGAINST ('$libVoie' IN NATURAL LANGUAGE MODE) OR libVoie38 LIKE '$libVoie5%' OR derElemVoie LIKE '$libVoie5%')/*AND typeVoie='$typeVoie' AND derElemVoie='$derMot'*/",false, MYSQL_ASSOC); + $nbRet=count($ret); + if ($nbRet==0) { + // Vérifier si la commune à des voies normées 98816 + $ret=$iDb->select( 'hexaviaVoies', "codeVoie", "idAdr56 IN('$strAdr56')",false, MYSQL_ASSOC); + $nbVoiesCom=count($ret); + if (count($ret)==0) { + return "Aucune Voie recensée dans cette commune ('$strAdr56') !".EOL; + } + return "Aucune correspondance Voie pour '$adrL4', '$libVoie' ($nbVoiesCom voies dans la commune #$idAdr56)".EOL; + } + else { + foreach($ret as $i=>$iRet) { + if ($debug) echo "je compare '$libVoie' avec '".$iRet["libVoie$norme"]."'".EOL; + if ($iRet["libVoie$norme"]==$libVoie || $iRet['derElemVoie']==$derMot || /*substr($iRet["libVoie$norme"],0,5)==$libVoie5 || */substr($iRet['derElemVoie'],0,5)==$derMot5) { + $tabAdr=$iInsee->structureVoie($libVoie); + if ($tabAdr['typeVoie']<>$iRet['typeVoie'] && $nbRet>1) continue; + $idAdr56=$iRet['idAdr56']; + $L4=preg_replace('/\s+/', ' ', trim($numVoie.' '.$indRep.' '.$iRet["libVoie$norme"])); + $L4=preg_replace('/^0+/','',$L4); + $hexaViaVoie=$iRet["libVoie$norme"]; + if (strlen($L4)>$norme) return "Taille de la ligne 4 générée en sortie plus longue que $norme !".EOL; + $matriculeHexavia=$iRet['codeVoie']; + $codeRoudis=$iRet['codeRoudis']; + $L5=$tabAdr56L['_'.$idAdr56]['L5']; + $L6=$tabAdr56L['_'.$idAdr56]['L6']; + $L7=$tabAdr56L['_'.$idAdr56]['L7']; + break; + } + } + if (!$matriculeHexavia) { + print_r($ret); + echo ("Plusieurs correspondances Voies pour $adrL4 $adrL6 dans cette commune ('$strAdr56') !".EOL); + //die("Plusieurs correspondances Voies pour $adrL4 $adrL6 dans cette commune ('$strAdr56') !".EOL); + return 'Plusieurs correspondances Voies'.EOL; + } + } + } +/* + if (count($ret)==0) { + // Vérifier si la commune à des voies normées 98816 + $ret=$iDb->select( 'hexaviaVoies', "codeVoie", "idAdr56='$idAdr56'",false, MYSQL_ASSOC); + if (count($ret)==0) { + return 'Aucune Voie recensée dans cette commune !'.EOL; + } + return 'Aucune correspondance Voie'.EOL; + } + elseif (count($ret)>1) { + print_r($ret); + $tabAdr=$iInsee->structureVoie($libVoie); + print_r($tabAdr); + return 'Plusieurs correspondances Voies'.EOL; + } + elseif (count($ret)==1) { + $ret=$ret[0]; + $L4=preg_replace('/\s+/', ' ', trim($numVoie.' '.$indRep.' '.$ret["libVoie$norme"])); + if (strlen($L4)>$norme) return "Taille de la ligne 4 générée en sortie plus longue que $norme !".EOL; + $matriculeHexavia=$ret['codeVoie']; + $codeRoudis=$ret['codeRoudis']; + } + } +*/ + + if (!$matriculeHexavia && @strlen($L4)==0) $L4=$adrL4; + + + $tabLen=$tabMaxLen=array(); + $tabLen[1]=strlen($L1); + if ($tabLen[1]>$norme) { + $L1=$this->normaliseRS($L1, $norme); + $tabLen[1]=strlen($L1); if ($tabLen[1]>$norme) $tabMaxLen[]=1; + } + $tabLen[2]=strlen($L2); + if ($tabLen[2]>$norme) { + $L2=$this->normaliseRS($L2, $norme); + $tabLen[2]=strlen($L2); if ($tabLen[2]>$norme) $tabMaxLen[]=2; + } + $tabLen[3]=strlen($L3); + if ($tabLen[3]>$norme) { + $L3=$this->normaliseRS($L3, $norme); + $tabLen[3]=strlen($L3); if ($tabLen[3]>$norme) $tabMaxLen[]=3; + } + $tabLen[4]=strlen($L4); if ($tabLen[4]>$norme) $tabMaxLen[]=4; + $tabLen[5]=strlen($L5); if ($tabLen[5]>$norme) $tabMaxLen[]=5; + $tabLen[6]=strlen($L6); if ($tabLen[6]>$norme) $tabMaxLen[]=6; + $tabLen[7]=strlen($L7); if ($tabLen[7]>$norme) $tabMaxLen[]=7; + if (count($tabMaxLen)>0) { + foreach($tabMaxLen as $j) { + echo "La ligne n°$j fait ".$tabLen[$j]." caractères : '".$adrL[$j]."'".EOL; + } + if ($j>1) die("Une des lignes fait plus de $norme caractères !".EOL); + return "Une des lignes fait plus de $norme caractères !".EOL; + } + + $tabAdr=array( 'L1'=>$L1, + 'L2'=>$L2, + 'L3'=>$L3, + 'L4'=>$L4, + 'L5'=>$L5, + 'L6'=>$L6, + 'L7'=>$L7, + 'HexaviaDateRef'=>$dateMajHexavia, + 'HexaviaComCod'=>$hexaViaComCod, + 'HexaviaComLib'=>$hexaViaComLib, + 'HexaviaCP'=>$hexaViaCP, + 'HexaVia56'=>$idAdr56, + 'HexaViaVoie'=>$hexaViaVoie, + 'HexaViaMat'=>$matriculeHexavia, + 'RoudisId'=>$codeRoudis); + return $tabAdr; + /* + if ($adresseNum=='' && $adresseBtq=='' && $adresseVoie=='' && $adresseRue=='' && $cp=='' && $ville=='') + return false; + + $tabAdr=$this->structureVoie($adresseNum.' '.$adresseBtq.' '.$adresseVoie.' '.$adresseRue); + $num=$tabAdr['num']*1; + if ($num==0) return false; + $indRep=trim($tabAdr['indRep']); + $typeVoie=trim($tabAdr['typeVoie']); + $libVoie=trim(substr($tabAdr['libVoie'],-5)); + + $strAdrActive=''; + if ($active) { + $strAdrActive.=" AND (enActif=1 OR etActif=1) AND nbEntrep>30 AND pasEntrepDom=0 AND siren>1000 "; + } + $tabTmp=$this->iDb->select('tabAdrDom', + 'id, siren, nic, enActif, etActif, procol, nom, nom2, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, adrComp, adrDistSp, cj, apen, apet, nbEntrep, dateInsert, dateUpdate', + "adrNum=$num AND adrBtq='$indRep' AND adrTypVoie LIKE '%$typeVoie%' AND adrLibVoie LIKE '%$libVoie%' AND cp=$cp $strAdrActive GROUP BY siren ORDER BY enActif DESC, nbEntrep DESC", false, MYSQL_ASSOC); + if (count($tabTmp)>0) { + return $tabTmp; + } + */ + return false; + } + + /** Retourne le tableau des abbréviations existantes par type d'abréviation + */ + function getAbreviations($typeAbrev) { + $iDb=new WDB('villes'); + $tabRet=array(); + if ($typeAbrev=='P') { + $ret=$iDb->select( 'tabPrenoms', + "prenom", + "LENGTH(prenom)>3 AND nbTot>0 ORDER BY LENGTH(prenom) DESC",false, MYSQL_ASSOC); + foreach($ret as $iRet) { + $tabTmp=explode('-',$iRet['prenom']); + $tabTmp2=array(); + foreach($tabTmp as $subPrenom) + $tabTmp2[]=substr($subPrenom,0,1); + $tabRet[$iRet['prenom']]=implode('-', $tabTmp2); + } + } else { + $ret=$iDb->select( 'tabAbreviations', + "abrCode, abrLib", + "abrType='$typeAbrev' AND dateSuppr=0 AND idSuppr=0 ORDER BY LENGTH(abrLib) DESC, LENGTH(abrCode) ASC",false, MYSQL_ASSOC); + foreach($ret as $iRet) { + $tabTmp=explode('/', $iRet['abrLib']); + foreach($tabTmp as $abrLib) { + if ($typeAbrev=='A') + $tabRet[$abrLib]=''; + else + $tabRet[$abrLib]=$iRet['abrCode']; + } + } + } + //print_r($tabRet);die(); + return $tabRet; + } + + /** Normalise une raison sociale ou un nom + **/ + function normaliseRS($nomLong, $taille=38) { + $nomCourt=preg_replace('/[^A-Z0-9%\'\"\-&\*\/\s]/','',trim(strtoupper($nomLong))); + $tabMots=split("[^[:alpha:]]+", $nomCourt); + $passage=0; + echo $nomCourt.EOL; + while (strlen($nomCourt)>$taille) { + // 1. Remplacement des Libellés de Voies par leurs code Voie + $tabTmp=$this->getAbreviations('V'); + foreach ($tabTmp as $lib=>$abr) { + $nomCourt=trim(str_replace(" $lib".'ES ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'E ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'S ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib ", ' '.$abr.' ', " $nomCourt ")); + if (strlen($nomCourt)<=$taille) break; + } + echo "1-Voies=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + //print_r($tabMots); + // 2. Remplacement des Titres par leurs abréviation + $tabTmp=$this->getAbreviations('T'); + foreach ($tabTmp as $lib=>$abr) { + $nomCourt=trim(str_replace(" $lib".'ES ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'E ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'S ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib ", ' '.$abr.' ', " $nomCourt ")); + if (strlen($nomCourt)<=$taille) break; + } + echo "2a-Titres=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + // 2. Remplacement des Formes Juridiques + $tabTmp=$this->getAbreviations('J'); + foreach ($tabTmp as $lib=>$abr) + $nomCourt=trim(str_replace(" $lib ", ' '.$abr.' ', " $nomCourt ")); + echo "2b-FJ=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + // 4. Suppression des articles + $tabTmp=$this->getAbreviations('A'); + foreach ($tabTmp as $lib=>$abr) { + if (strpos($lib,"'")>0) + $nomCourt=trim(str_replace(' '.$lib, ' ', " $nomCourt ")); + else + $nomCourt=trim(str_replace(" $lib ", ' ', " $nomCourt ")); + if (strlen($nomCourt)<=$taille) break; + } + echo "4-Articles=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + // 3. Remplacement des Prénoms par leurs initiales + $tabTmp=$this->getAbreviations('P'); + foreach ($tabTmp as $lib=>$abr) { + $nomCourt=trim(str_replace(" $lib ", ' '.$abr.' ', " $nomCourt ")); + if (strlen($nomCourt)<=$taille) break; + } + echo "3-Prenoms=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + $tabTmp=$this->getAbreviations('N'); + foreach ($tabTmp as $lib=>$abr) { + $nomCourt=trim(str_replace(" $lib".'ES ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'E ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib".'S ', ' '.$abr.' ', " $nomCourt ")); + $nomCourt=trim(str_replace(" $lib ", ' '.$abr.' ', " $nomCourt ")); + if (strlen($nomCourt)<=$taille) break; + } + echo "5-Autres Noms=$nomCourt".EOL; + if (strlen($nomCourt)<=$taille) break; + + $nomCourt=substr($nomCourt,0,$taille); + //die($nomCourt); +/** @todo A finir +Tronquer ou abréger dans cette ordre +- type de voie +- titres +- initiale du prénom +- supprimez les articles (mais pas les particules dans un nom propre) +- tronquer à 4 caractères les types de voie non normalisés +- tronquer les extensions de voie +- réduire le nom de la voie en supprimant les mots de la gauche vers la droite + +Gérer les pluriels pour les voies, nom, titres, et formes juridiques +**/ + $passage++; + } + return $nomCourt; + } + + + // Code Insee de la commune libCom32 Libellé de la commune (Ancienne norme 32) libCom38 Libellé + function getLibCommune($codeInsee, $norme=38) { + if ($norme<>32 && $norme<>38) { + return 'La norme doit être 32 ou 38 caractères (38 par défaut)'.EOL; + } + + $iDb=new WDB('villes'); + $ret=$iDb->select( 'hexaviaVilles', + "libCom32 , libCom38", + "codeInseeCom='$codeInsee' LIMIT 0,1",false, MYSQL_ASSOC); + $nbRet=count($ret); + if ($nbRet==0) return 'Aucune correspondance VILLE'.EOL; + + if ($norme==32) return $ret[0]['libCom32']; + return $ret[0]['libCom38']; + } } ?> \ No newline at end of file