From 8de12160a60d78f7e3f6dedc42827dfd9657bdc9 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Wed, 5 Dec 2012 16:18:30 +0000 Subject: [PATCH] Maj Class Insee --- library/Metier/insee/classMInsee.php | 1437 +++++++++++++++----------- 1 file changed, 810 insertions(+), 627 deletions(-) diff --git a/library/Metier/insee/classMInsee.php b/library/Metier/insee/classMInsee.php index 6a4fbd49..b395d3a4 100644 --- a/library/Metier/insee/classMInsee.php +++ b/library/Metier/insee/classMInsee.php @@ -15,7 +15,7 @@ $tabEvenInsee=array( 'iFF'=>'Fermeture de l\'établissement entraînant la fermeture de l\'entreprise', 'iTC'=>'Création de l\'établissement dans le cadre d\'un transfert', 'iTR'=>'Réactivation de l\'établissement dans le cadre d\'un transfert', - 'iTO'=>'Modification simple ou de moyens de production sur l\'établissement dans le cadre d\'un transfert', + 'iT0'=>'Modification simple ou de moyens de production sur l\'établissement dans le cadre d\'un transfert', 'iTA'=>'Activation économique de l\'établissement par adjonction de moyens de production dans le cadre d\'un transfert', 'iTD'=>'Désactivation économique de l\'établissement par suppression de moyens de production dans le cadre d\'un transfert', 'iTF'=>'Fermeture de l\'établissement dans le cadre d\'un transfert', @@ -33,7 +33,7 @@ $tabEvenInsee=array( 'iMNP'=>'Etablissement présumé fermé (retour de courrier en NPAI)', // Décret n°2010-1042 du 01/09/2010 relatif à l'inscription au registre du commerce et des sociétés et au répertoire national mentionné à l'article R. 123-220 du code de commerce // Codification provisoire à changer dans l'attente de l'INSEE - 'iRCS'=>'Suppression du SIREN suite au refus d\'inscription au Registre du Commerce et des Sociétés', + 'i810'=>'Suppression du SIREN suite au refus d\'inscription au Registre du Commerce et des Sociétés', // Anciennement iRCS // Nouveaux évènements Sirene3 de la quotidienne Insee 'i110'=>'Création de l\'entreprise', 'i120'=>'Réactivation de l\'entreprise', @@ -740,48 +740,51 @@ function getNic($siren, $numEtab=1) { } /** - * Enter description here... + * Recherche Etablissements * - * @param unknown_type $raisonSociale - * @param unknown_type $adresse - * @param unknown_type $codePostal - * @param unknown_type $ville - * @param unknown_type $siege - * @param unknown_type $nbRep - * @param unknown_type $pertinence - * @param bool $uniquementAvecSiren + * @param string $raisonSociale + * @param string $adresse + * @param string $codePostal + * @param string $ville + * @param string $siege + * @param int $actif + * @param int $deb + * @param int $nbRep + * @param int $maxRep + * @param string $pertinence + * @param bool $uniquementAvecSiren + * @param string $ape_etab * @return unknown */ - public function rechercheEtab($raisonSociale, $adresse='', $codePostal='', $ville='', $siege='', $actif='', $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $uniquementAvecSiren='', $ape_etab='') { - $tabAdr=$this->structureVoie(strtoupper($adresse)); - $numAdresse=preg_replace('/^0+/','',''.$tabAdr['num']*1); - $adresse=trimAccent($tabAdr['libVoie']); - $formR=array('type'=>'ent', - 'siret'=>'', - 'raisonSociale'=>$raisonSociale, - 'numVoie'=>$numAdresse, - 'voie'=>$adresse, - 'cpVille'=>$codePostal.' '.$ville, - ); + public function rechercheEtab($raisonSociale, $adresse='', $codePostal='', $ville='', $siege='', $actif=2, $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $uniquementAvecSiren='', $ape_etab='') + { + $tabAdr = $this->structureVoie(strtoupper($adresse)); + $numAdresse = preg_replace('/^0+/','',''.$tabAdr['num']*1); + $adresse = trimAccent($tabAdr['libVoie']); + $formR = array( + 'type' => 'ent', + 'siret' => '', + 'raisonSociale' => $raisonSociale, + 'numVoie' => $numAdresse, + 'voie' => $adresse, + 'cpVille' => $codePostal.' '.$ville, + 'actif' => $actif, + 'siege' => $siege, + ); if ($ape_etab<>'') $formR['naf']=$ape_etab; - $version = defined('SPHINX_ENT_VERSION') ? SPHINX_ENT_VERSION : 1; - $result = array(); - switch($version) - { - case 1: - require_once 'Metier/sphinx/rechercheFonc.php'; - if ($uniquementAvecSiren=='') - $result = rechercheEnt($formR, $deb, $nbRep, $maxRep); - else - $result = rechercheEnt($formR, $deb, $nbRep, $maxRep, $uniquementAvecSiren); - break; - case 2: - require_once 'Metier/sphinx2/rechercheFonc.php'; - $recherche = new rechercheFonc(); - $result = $recherche->rechercheEnt($formR, $deb, $nbRep, $maxRep); - break; - } + require_once 'Metier/sphinx/rechercheFonc.php'; + if ($uniquementAvecSiren=='') + $result = rechercheEnt($formR, $deb, $nbRep, $maxRep); + else + $result = rechercheEnt($formR, $deb, $nbRep, $maxRep, $uniquementAvecSiren); + + //Utilisation recherche dlasserre + /* + require_once 'Metier/sphinx2/rechercheFonc.php'; + $recherche = new rechercheFonc(); + $result = $recherche->rechercheEnt($formR, $deb, $nbRep, $maxRep); + */ return $result; } @@ -946,6 +949,10 @@ public function rechercheDir($nom, $prenom='', $fonction='', $dateNaiss='', $vil $version = defined('SPHINX_DIR_VERSION') ? SPHINX_DIR_VERSION : 1; $result = array(); + require_once 'Metier/sphinx/rechercheFonc.php'; + $result = rechercheDir($formR, $deb, $nbRep, $maxRep); + + /* switch($version) { case 1: @@ -958,6 +965,7 @@ public function rechercheDir($nom, $prenom='', $fonction='', $dateNaiss='', $vil $result = $recherche->rechercheDir($formR, $deb, $nbRep, $maxRep); break; } + */ //debugLog('I',"rechercheDir".print_r($result,1),__LINE__,__FILE__, __FUNCTION__, __CLASS__); return $result; } @@ -1160,7 +1168,8 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ return ''; } - public function getEvenements($siren, $nic=0, $iDeb=0, $iMax=1000) { + public function getEvenements($siren, $nic=0, $iDeb=0, $iMax=1000) + { global $tabEvenInsee; global $tabDestinat; global $tabTypEtab; @@ -1387,6 +1396,15 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ return 'En instance de chiffrement'; } + public function getCodesFJ() { + $tabFJ=array(); + $tabTmp=$this->iDb->select('tabFJur', 'code AS FJ, libelle AS libFJ', 'code>=1000', false, MYSQL_ASSOC); + foreach ($tabTmp as $i=>$tabCJ) + $tabFJ[$tabCJ['FJ']]=$tabCJ['LibFJ']; + + return array_keys($tabFJ); + } + /** Découpe une ligne d'adresse textuelle en un tableau contenant les différentes composantes de l'adresse **
Array (
 	 **      [adrComp0] => Maison des associations
@@ -1461,61 +1479,76 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $
 		return $tabRet;
 	}
 	
-	public function getEtablissements($siren, $nic='', $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=-1) {
-		
-//		@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::getEtab sur $siren", "$siren, $nic, $deb, $nbRep, $maxRep, $dep, $actif");
+	/**
+	 * Liste des établissements par siren/nic
+	 * @param string $siren
+	 * @param string $nic
+	 * @param int $deb
+	 * @param int $nbRep
+	 * @param int $maxRep
+	 * @param int $dep
+	 * @param int $actif
+	 */
+	public function getEtablissements($siren, $nic='', $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=-1)
+	{
 		$this->setTabCodesNaf();
 		$deb=$deb*1;
 		$dep=$dep*1;
 		$nbRep=$nbRep*1;
 		$limit="LIMIT $deb, $nbRep";
 		$strInfo='';
-		if ($actif*1==1)		$strActif=' AND e.actif=1 ';
-		elseif ($actif*1==-1)	$strActif='';
-		else					$strActif=' AND e.actif=0 ';
-		/*								"CONCAT(e.siren, e.nic) as siret, e.actif",
-								"$where ORDER BY siege DESC, actif DESC, nic DESC $limit", false, MYSQL_ASSOC);
-		$etab=@$listeEtab[0];
 		
-		$nom=trim($etab['raisonSociale']);
-		// Cas des noms vides à l'INSEE (une centaine)
-		if ($nom=='') $nom=@preg_replace('/,.*$/','',$etab['identite_pre']);
-*/
+		$strActif='';
+		if 		(intval($actif)==1)		$strActif=' AND e.actif=1 ';
+		elseif 	(intval($actif)==0)		$strActif=' AND e.actif=0 ';
+		
 		if ($dep>0 && $dep<99999) {
-			if ($dep<96)	$strDep='AND adr_cp BETWEEN '.$dep.'000 AND '.$dep.'999';
+			
+			if ($dep<96)		$strDep='AND adr_cp BETWEEN '.$dep.'000 AND '.$dep.'999';
 			elseif ($dep>9999)	$strDep="AND adr_cp BETWEEN $dep AND $dep";
-			else 			$strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99';
-			$tabTmp=$this->iDb->select('etablissements', 'count(*)', "siren=$siren $strDep");
+			else 				$strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99';
+			
+			$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strDep $strActif");
 			$nbTot=$tabTmp[0][0];
+			
 			$listeEtab=$this->iDb->select('etablissements e',
-									"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
-									"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
-									"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
-									"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
-									"siren=$siren $strDep $strActif ORDER BY e.siege , e.actif DESC  $limit", false, MYSQL_ASSOC);
+				"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
+				"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
+				"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
+				"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
+				"siren=$siren $strDep $strActif ORDER BY e.siege , e.actif DESC  $limit", false, MYSQL_ASSOC);
+		
 		} elseif ($nic=='') {
-			$tabTmp=$this->iDb->select('etablissements', 'count(*)', "siren=$siren");
+			
+			$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strActif");
 			$nbTot=$tabTmp[0][0];
+			
 			$listeEtab=$this->iDb->select('etablissements e',
-									"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
-									"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
-									"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
-									"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
-									"e.siren=$siren $strActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
+				"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
+				"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
+				"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
+				"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
+				"e.siren=$siren $strActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC);
+			
 		} else {
+			
+			$tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren AND (nic=$nic OR siege=1) $strActif");
+			$nbTot=$tabTmp[0][0];
+			
 			$listeEtab=$this->iDb->select('etablissements e',
-									"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
-									"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
-									"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
-									"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
-									"siren=$siren AND (nic=$nic OR siege=1) $strActif ORDER BY e.siege , e.actif DESC  $limit", false, MYSQL_ASSOC);
-			$nbTot=count($listeEtab);
+				"'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ".
+				"e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ".
+				"e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ".
+				"CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre",
+				"siren=$siren AND (nic=$nic OR siege=1) $strActif ORDER BY e.siege , e.actif DESC  $limit", false, MYSQL_ASSOC);
+			
 		}
+		
 		if ($nbTot==0 && $actif==-1) {
+			
 			require_once 'Metier/sphinx/rechercheFonc.php';
 			$liste = verificationDuSiret($siren);
    			if ($liste != false) {
-        //print 'Essayez :
'; $listeSiren=array(); foreach ($liste as $s) { if (sommeDeControle($s) != 0) { @@ -1534,10 +1567,13 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ". "CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre", "siren IN ($strSiren) AND siege=1 ORDER BY e.rang DESC, e.actif DESC, e.nic ASC $limit", true, MYSQL_ASSOC); - $strInfo='Siren saisit invalide'; + $strInfo='Siren saisi invalide'; } + } - foreach ($listeEtab as $etab) { + + foreach ($listeEtab as $etab) + { $tel=sprintf('%010d', strtr($etab['tel'],array('-'=>'', '/'=>'','.'=>'',','=>''))); if ($tel<>'0000000000') $tel=implode('.', str_split($tel,2)); else $tel=''; @@ -1550,47 +1586,59 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ // Cas des noms vides à l'INSEE (une centaine) if ($nom=='') $nom=@preg_replace('/,.*$/','',$etab['identite_pre']); - $tabRet[]=array( 'Localisation'=>$etab['Loc'], - 'id'=>$etab['id'], - 'Pertinence'=>100, - 'Siret'=>$etab['siret'], - 'Siege'=>$etab['siege'], - 'Nom'=>$nom, - 'Sigle'=>$etab['sigle'], - 'Enseigne'=>$etab['enseigne'], - 'Adresse'=>trim(preg_replace('/ +/', ' ', trim( $etab['adr_num'] .' '. $etab['adr_btq'] .' '. - $etab['adr_typeVoie'] .' '. $etab['adr_libVoie']))), - 'Adresse2'=>trim(preg_replace('/ +/', ' ', $etab['adr_comp'])), - 'CP'=>$etab['adr_cp'], - 'Ville'=>$etab['adr_ville'], - 'Tel'=>$tel, - 'Fax'=>$fax, - 'FJ'=>$etab['cj'], - 'FJLib'=>$this->getLibelleFJ($etab['cj']), - 'Siren'=>$etab['siren'], - 'Nic'=>$etab['nic'], - 'Actif'=>$etab['actif'], - 'NafEtab'=>$etab['ape_etab'], // Etablissement - 'NafEnt'=>$etab['ape_entrep'], // Entreprise - 'NafEtabLib'=>$this->getLibelleNaf($etab['ape_etab']), - 'NafEntLib' =>$this->getLibelleNaf($etab['ape_entrep']), - 'EffEtTr'=>$etab['teff_etab'], - 'EffEtTrLib'=>self::$tabEffectif[$etab['teff_etab']], - ); + $tabRet[]=array( + 'Localisation'=>$etab['Loc'], + 'id'=>$etab['id'], + 'Pertinence'=>100, + 'Siret'=>$etab['siret'], + 'Siege'=>$etab['siege'], + 'Nom'=>$nom, + 'Sigle'=>$etab['sigle'], + 'Enseigne'=>$etab['enseigne'], + 'Adresse'=>trim(preg_replace('/ +/', ' ', trim( $etab['adr_num'] .' '. $etab['adr_btq'] .' '. + $etab['adr_typeVoie'] .' '. $etab['adr_libVoie']))), + 'Adresse2'=>trim(preg_replace('/ +/', ' ', $etab['adr_comp'])), + 'CP'=>$etab['adr_cp'], + 'Ville'=>$etab['adr_ville'], + 'Tel'=>$tel, + 'Fax'=>$fax, + 'FJ'=>$etab['cj'], + 'FJLib'=>$this->getLibelleFJ($etab['cj']), + 'Siren'=>$etab['siren'], + 'Nic'=>$etab['nic'], + 'Actif'=>$etab['actif'], + 'NafEtab'=>$etab['ape_etab'], // Etablissement + 'NafEnt'=>$etab['ape_entrep'], // Entreprise + 'NafEtabLib'=>$this->getLibelleNaf($etab['ape_etab']), + 'NafEntLib' =>$this->getLibelleNaf($etab['ape_entrep']), + 'EffEtTr'=>$etab['teff_etab'], + 'EffEtTrLib'=>self::$tabEffectif[$etab['teff_etab']], + ); } if ($dep==0) $dep=''; // Evite l'affichage d'un 0 inutile sur l'Extranet - return array( 'criteres'=>array('siren'=>$siren, 'nic'=>$nic, 'dep'=>$dep), - 'info'=>$strInfo, - 'nbReponses'=>count($tabRet), - 'nbReponsesTotal'=>$nbTot, - 'reponses'=>$tabRet); + return array( + 'criteres'=>array('siren'=>$siren, 'nic'=>$nic, 'dep'=>$dep), + 'info'=>$strInfo, + 'nbReponses'=>count($tabRet), + 'nbReponsesTotal'=>$nbTot, + 'reponses'=>$tabRet); } - - public function getEtablissementsParId($typeId, $id, $deb=0, $nbRep=20, $maxRep=200, $dep=0) { - + /** + * Liste des établissements par Identifiant TEL/AUTRE + * @param string $typeId + * @param string $id + * @param int $deb + * @param int $nbRep + * @param int $maxRep + * @param int $dep + * @param int $actif + * @return array + */ + public function getEtablissementsParId($typeId, $id, $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=2) + { $this->setTabCodesNaf(); $deb=$deb*1; $dep=$dep*1; @@ -1598,23 +1646,27 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ $nbRep=$nbRep*1; $limit="LIMIT $deb, $nbRep"; + $filtreActif = ''; + if ( $actif==1 || $actif==0 ) { + $filtreActif = " AND WHERE actif=$actif"; + } + if ($typeId=='TEL') { + debugLog('I',"Recherche par TEL de $id avec un maximum de $nbRep réponses",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - $tabTmp=$this->iDb->select('etablissements', 'count(*)', "TEL=$id OR FAX=$id"); + $tabTmp=$this->iDb->select('etablissements', 'count(*)', "TEL=$id OR FAX=$id $filtreActif"); $nbTot=$tabTmp[0][0]; - $listeEtab=$this->iDb->select('etablissements e', - "'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". - "e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ". - "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep,". - "CONCAT(e.siren, e.nic) as siret, e.actif", - "TEL=$id OR FAX=$id ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC); - /*if (count($listeEtab)==0) { - $iAmabis=new MAmabis(); - $repAmabis=$iAmabis->searchByTelFax($id); - }*/ + + $listeEtab = $this->iDb->select('etablissements e', + "'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". + "e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ". + "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep,". + "CONCAT(e.siren, e.nic) as siret, e.actif", + "TEL=$id OR FAX=$id $filtreActif ORDER BY e.siege DESC, e.actif DESC $limit", false, MYSQL_ASSOC); } elseif ($typeId=='AUTRE') { + /** Formatage des numéros de RC **/ $tabId=array($id); if (preg_match('/(\d*)(\D)(\d*)/', $id,$matches)) { @@ -1639,49 +1691,54 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ elseif ($dep>9999) $strDep="AND adr_cp BETWEEN $dep AND $dep"; else $strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99'; } - $tabTmp=$this->iDb->select('etablissements', 'count(*)', "autre_id IN ('$strId') $strDep"); + $tabTmp=$this->iDb->select('etablissements', 'count(*)', "autre_id IN ('$strId') $filtreActif $strDep"); $nbTot=$tabTmp[0][0]; + $listeEtab=$this->iDb->select('etablissements e', - "'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". - "e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ". - "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ". - "CONCAT(e.siren, e.nic) as siret, e.actif", - "autre_id IN ('$strId') $strDep ORDER BY siege DESC $limit", false, MYSQL_ASSOC); + "'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". + "e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ". + "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ". + "CONCAT(e.siren, e.nic) as siret, e.actif", + "autre_id IN ('$strId') $filtreActif $strDep ORDER BY siege DESC $limit", false, MYSQL_ASSOC); + } + foreach ($listeEtab as $etab) { - $tabRet[]=array( 'Localisation'=>$etab['Loc'], - 'id'=>$etab['id'], - 'Pertinence'=>100, - 'Siret'=>$etab['siret'], - 'Siege'=>$etab['siege'], - 'Nom'=>$etab['raisonSociale'], - 'Sigle'=>$etab['sigle'], - 'Enseigne'=>$etab['enseigne'], - 'Adresse'=>trim(preg_replace('/ +/', ' ', trim( $etab['adr_num'] .' '. $etab['adr_btq'] .' '. - $etab['adr_typeVoie'] .' '. $etab['adr_libVoie']))), - 'Adresse2'=>trim(preg_replace('/ +/', ' ', $etab['adr_comp'])), - 'CP'=>$etab['adr_cp'], - 'Ville'=>$etab['adr_ville'], - 'Tel'=>$etab['tel'], - 'Fax'=>$etab['fax'], - 'FJ'=>$etab['cj'], - 'FJLib'=>$this->getLibelleFJ($etab['cj']), - 'Siren'=>$etab['siren'], - 'Nic'=>$etab['nic'], - 'Actif'=>$etab['actif'], - 'NafEtab'=>$etab['ape_etab'], // Etablissement - 'NafEnt'=>$etab['ape_entrep'], // Entreprise - 'NafEtabLib'=>$this->getLibelleNaf($etab['ape_etab']), - 'NafEntLib' =>$this->getLibelleNaf($etab['ape_entrep']), - ); + $tabRet[]=array( + 'Localisation'=>$etab['Loc'], + 'id'=>$etab['id'], + 'Pertinence'=>100, + 'Siret'=>$etab['siret'], + 'Siege'=>$etab['siege'], + 'Nom'=>$etab['raisonSociale'], + 'Sigle'=>$etab['sigle'], + 'Enseigne'=>$etab['enseigne'], + 'Adresse'=>trim(preg_replace('/ +/', ' ', trim( $etab['adr_num'] .' '. $etab['adr_btq'] .' '. + $etab['adr_typeVoie'] .' '. $etab['adr_libVoie']))), + 'Adresse2'=>trim(preg_replace('/ +/', ' ', $etab['adr_comp'])), + 'CP'=>$etab['adr_cp'], + 'Ville'=>$etab['adr_ville'], + 'Tel'=>$etab['tel'], + 'Fax'=>$etab['fax'], + 'FJ'=>$etab['cj'], + 'FJLib'=>$this->getLibelleFJ($etab['cj']), + 'Siren'=>$etab['siren'], + 'Nic'=>$etab['nic'], + 'Actif'=>$etab['actif'], + 'NafEtab'=>$etab['ape_etab'], // Etablissement + 'NafEnt'=>$etab['ape_entrep'], // Entreprise + 'NafEtabLib'=>$this->getLibelleNaf($etab['ape_etab']), + 'NafEntLib' =>$this->getLibelleNaf($etab['ape_entrep']), + ); } if ($dep==0) $dep=''; // Evite l'affichage d'un 0 inutile sur l'Extranet - return array( 'criteres'=>array('autreId'=>$id, 'dep'=>$dep), - 'nbReponses'=>count($tabRet), - 'nbReponsesTotal'=>$nbTot, - 'reponses'=>$tabRet); + return array( + 'criteres'=>array('autreId'=>$id, 'dep'=>$dep), + 'nbReponses'=>count($tabRet), + 'nbReponsesTotal'=>$nbTot, + 'reponses'=>$tabRet); } /** Retourne juste si un siren existe @@ -1906,7 +1963,8 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ return $tabRet; } - function getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) { + function getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) + { global $timer; $timer=array('debutIdentite'=>microtime(true)); //$accesDist=false; @@ -2085,6 +2143,7 @@ public function rechercheDirOld($nom, $prenom='', $fonction='', $dateNaiss='', $ fclose($fp); $tab['latitude']=$mMap->latitudeDec; $tab['longitude']=$mMap->longitudeDec; + $tab['altitude']=$mMap->altitude; $tab['precis']=$mMap->precision; $timer['geoCodage']=microtime(true); @@ -2375,6 +2434,7 @@ print_r($tabTmp, true)); 'GeoLat'=>$tab['latitude'], 'GeoLon'=>$tab['longitude'], + 'GeoAlt'=>$tab['altitude'], 'GeoPrecis'=>$tab['precis'], 'TvaNumero'=>$vatNumber, @@ -2726,7 +2786,7 @@ print_r($tmp, true)); } /** Recherche de l'activité réelle **/ $bodacc=$this->iDb->select( 'bodacc_detail', 'Activite', "siren=$siren AND Activite<>'' AND Activite NOT LIKE 'non precis%' $strEvenVtLg ORDER BY Bodacc_Date_Parution DESC LIMIT 0,1", false, MYSQL_ASSOC); - $annCap=@$bodacc[0]; + $annCap=$bodacc[0]; if ($tabInsee['CJ']<7000 || $tabInsee['CJ']>7999) $tabRet['Activite']=trim(/*preg_replace("/Adjonction.{1,7}activit(?:e|é)(?:.|)\:", '', */$annCap['Activite']);//); @@ -2737,7 +2797,7 @@ print_r($tmp, true)); $siretMin=(''.$siren.'00000')*1; $siretMax=(''.$siren.'99999')*1; //$bodacc=$this->iDb->select( 'asso', 'Assoc_Web, Assoc_Mail, Assoc_Objet, Assoc_NObjet', "Siret BETWEEN $siretMin AND $siretMax AND (Assoc_Objet<>'' OR Assoc_NObjet<>'') ORDER BY Date_Parution DESC LIMIT 0,1", true, MYSQL_ASSOC); - $bodacc=$this->iDb->select( 'asso', 'Assoc_Web, Assoc_Mail, Assoc_Objet, Assoc_NObjet, Assoc_Nom, typeAsso, Waldec', "siren=$siren AND dateSuppr=0 AND (Assoc_Objet<>'' OR Assoc_NObjet<>'') ORDER BY Date_Parution DESC LIMIT 0,1", false, MYSQL_ASSOC); + $bodacc=$this->iDb->select( 'asso', 'Assoc_Web, Assoc_Mail, Assoc_Objet, Assoc_NObjet, Assoc_Nom, typeAsso, Waldec', "siren=$siren AND dateSuppr=0 ORDER BY Date_Parution DESC LIMIT 0,1", false, MYSQL_ASSOC); $annCap=@$bodacc[0]; $tabRet['Activite'] = trim($annCap['Assoc_NObjet']); if (trim($tabRet['AutreId'])=='') @@ -3474,283 +3534,289 @@ TOTAL : $dureeTot s\n"; return $tabRet; } - function getDirigeants($siren, $histo=true) { - $siren=$siren*1; - $tabRet=array(); + function getDirigeants($siren, $histo=true) + { + $siren=$siren*1; + $tabRet=array(); - if ($histo) { - $bodacc=$this->iDb->select( - 'bodacc_dirigeants d, bodacc_detail b, bodacc_fonctions f', - 'd.num, d.dateEffet, d.Rubrique, d.fonction, d.rs, d.nom, d.prenom, d.nomUsage, d.depart, d.dateInsert, f.libelle', - "b.SIREN=$siren AND b.id=d.id AND b.typeEven NOT BETWEEN 5000 AND 5700 AND b.typeEven NOT BETWEEN 2700 AND 2900 AND d.fonction=f.codeFct GROUP BY d.fonction, d.rs, d.nom, d.prenom ORDER BY d.dateEffet DESC, d.fonction DESC", true, MYSQL_ASSOC); - if (count($bodacc)>0) { - foreach ($bodacc as $k=>$ann) { - /* if (!$histo && ( - $ann['fonction']<>300 && // Commissaire aux comptes titulaire - $ann['fonction']<>301 && // Co-commissaire aux comptes suppléant - $ann['fonction']<>302 && // Co-commissaire aux comptes titulaire - $ann['fonction']<>303 && // Commissaire aux comptes suppléant - $ann['fonction']<>304) ) // Commissaire aux comptes - continue;*/ - $tabRet[]=array( 'Fonction' => $ann['fonction'], - 'Titre' => $ann['libelle'], - 'Societe' => $ann['rs'], - 'Nom' => trim(strtr($ann['nom'], array( "Modification d'"=>'', - "Modification de"=>'', - "Nomination d'un"=>'', - ))), - 'Prenom' => $ann['prenom'], - 'NomUsage' => $ann['nomUsage'], - 'Ancien' => $ann['depart'], - 'DateFct' => $ann['dateEffet'], - ); - } - } - $iDbHisto=new WDB('historiques'); - $iBodacc=new MBodacc(); - $bodaccHisto=$iDbHisto->select( - 'entrep e, texte x', - 'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt', - "e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.DATE BETWEEN 19890101 AND 20050101 AND x.annonceTxt LIKE '%Administration%' GROUP BY e.ANBASE ORDER BY e.DATE DESC", true, MYSQL_ASSOC); - if (count($bodaccHisto)>0) { - foreach ($bodaccHisto as $ann) { - if ($ann['DATE']<19960101 && $ann['E1GSIR']<>$ann['SIREN']) continue; - if ( ($ann['CODEVE']<20) || - ($ann['CODEVE']>=30 && $ann['CODEVE']<42) || - ($ann['CODEVE']>=51 && $ann['CODEVE']<80) ) { - if (preg_match('/Administration(?:.|)\:(.*)(?:Adresse.*|Commentaires?|Activit(?:e|é)|Etablissement principal|Date d\'effet|Date.de.d.but d.activit.)(?:.|)\:/Uis', $ann['annonceTxt'], $matches)) { - $iDir=0; - $tabAdministration=$iBodacc->getDirigeants($matches[1]); - foreach ($tabAdministration as $tabDir) { - /* $tabDir['num']=$numDir; - $tabDir['dateEffet']=$dateEffet; - $tabDir['id']=$idAnnRet; - $tabDir['Rubrique']='mmd'; - $tabDir['dateInsert']=$dateInsert; - //'fonction'=>$numFonction, 'rs'=>trim(str_replace(',','',$raisonSociale)), 'nom'=>$nom, 'prenom'=>$prenom, 'nomUsage'=>$usage, 'depart'=>$oldFonction); - - */ - $nom=trim(strtr(preg_replace('/ +/',' ', $tabDir['nom']), - array( "Modification d'"=>'', - "Modification"=>'', - "Modification de"=>'', - "Nomination d'un"=>'', - "Nomination en qualité d'"=>'', - "Nomination en qualité de"=>'', - "dont le est"=>'', - "nouvel"=>'', - "partant"=>'', - "ancien d'honneur"=>'', - "nouveaux"=>'', - "nouveau"=>'', - "ancien"=>'', - "Nouveau"=>'', - "Cette société se constitue Date de début d'"=>'', - ))); - if ($nom<>'') { - $tabRet[]=array( 'Fonction' => $tabDir['fonction'], - 'Titre' => $iBodacc->getFctDir($tabDir['fonction']),//.' ('.$tabDir['fonction'].')', - 'Societe' => $tabDir['rs'], - 'Nom' => $nom, - 'Prenom' => $tabDir['prenom'], - 'NomUsage' => $tabDir['nomUsage'], - 'Ancien' => $tabDir['depart'], - 'DateFct' => Wdate::dateT('Ymd','Y-m-d', $ann['DATE']), - ); - $this->iDb->insert('bodacc_dirigeants_histo', - array( 'siren' => $siren, - 'id' => $ann['ANBASE'], - 'num' => $iDir, - 'dateEffet' => Wdate::dateT('Ymd','Y-m-d', $ann['DATE']), - 'fonction' => $tabDir['fonction'], - 'rs' => $tabDir['rs'], - 'nom' => $nom, - 'prenom' => $tabDir['prenom'], - 'nomUsage' => $tabDir['nomUsage'], - 'depart' => $tabDir['depart'], - ), true); - /*if (mysql_errno()>0) { - echo mysql_errno().' : '.mysql_error().EOL; - }*/ - $iDir++; - } - } - //break; - } - } - } - } - } - - if (!$histo || ($histo && count($tabRet)==0) ) { - $dirs=$this->iDb->select( - 'rncs_dirigeants/* d, bodacc_fonctions f*/', - 'siren, raisonSociale, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, fonction_code, fonction_lib, cinf, dateFin, flux, dateInsert/*f.libelle*/', - "siren=$siren /*AND d.fonction_code=f.codeFct*/ AND actif%10=1", false, MYSQL_ASSOC); - - foreach ($dirs as $k=>$dir) { - if ($dir['naissance_date']<>'0000-00-00') - $dateNaiss=Wdate::dateT('Y-m-d','d/m/Y', $dir['naissance_date']); - else - $dateNaiss=''; - if ($dir['flux']<>'0000-00-00') - $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['flux']); - else - $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['dateInsert']); - $nom=trim($dir['nom']); - $nomUsage=''; - if (trim($dir['naissance_nom'])<>'') { - $nom=trim($dir['naissance_nom']); - $nomUsage=trim($dir['nom']); - } - $tabRet[]=array( 'Fonction' =>$dir['fonction_code'], - 'Titre' =>$dir['fonction_lib'], - 'Societe' =>$dir['dirRS'], - 'Civilite' =>$dir['civilite'], - 'Nom' =>$nom, - 'Prenom' =>$dir['prenom'], - 'NomUsage' =>$nomUsage, - 'NaissDate' =>$dateNaiss, - 'NaissVille' =>$dir['naissance_lieu'], - 'NaissDepPays' =>'', // 25 - 'Ancien' =>0, - 'DateFct' =>$dateModif, - 'Cinf' =>$dir['cinf'], - ); - } + if ($histo) { + $bodacc=$this->iDb->select( + 'bodacc_dirigeants d, bodacc_detail b, bodacc_fonctions f', + 'd.num, d.dateEffet, d.Rubrique, d.fonction, d.rs, d.nom, d.prenom, d.nomUsage, d.depart, d.dateInsert, f.libelle', + "b.SIREN=$siren AND b.id=d.id AND b.typeEven NOT BETWEEN 5000 AND 5700 AND b.typeEven NOT BETWEEN 2700 AND 2900 AND d.fonction=f.codeFct GROUP BY d.fonction, d.rs, d.nom, d.prenom ORDER BY d.dateEffet DESC, d.fonction DESC", true, MYSQL_ASSOC); + if (count($bodacc)>0) { + foreach ($bodacc as $k=>$ann) { + /* if (!$histo && ( + $ann['fonction']<>300 && // Commissaire aux comptes titulaire + $ann['fonction']<>301 && // Co-commissaire aux comptes suppléant + $ann['fonction']<>302 && // Co-commissaire aux comptes titulaire + $ann['fonction']<>303 && // Commissaire aux comptes suppléant + $ann['fonction']<>304) ) // Commissaire aux comptes + continue;*/ + $tabRet[]=array( 'Fonction' => $ann['fonction'], + 'Titre' => $ann['libelle'], + 'Societe' => $ann['rs'], + 'Nom' => trim(strtr($ann['nom'], array( "Modification d'"=>'', + "Modification de"=>'', + "Nomination d'un"=>'', + ))), + 'Prenom' => $ann['prenom'], + 'NomUsage' => $ann['nomUsage'], + 'Ancien' => $ann['depart'], + 'DateFct' => $ann['dateEffet'], + ); + } + } + $iDbHisto=new WDB('historiques'); + $iBodacc=new MBodacc(); + $bodaccHisto=$iDbHisto->select( + 'entrep e, texte x', + 'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt', + "e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.DATE BETWEEN 19890101 AND 20050101 AND x.annonceTxt LIKE '%Administration%' GROUP BY e.ANBASE ORDER BY e.DATE DESC", true, MYSQL_ASSOC); + if (count($bodaccHisto)>0) { + foreach ($bodaccHisto as $ann) { + if ($ann['DATE']<19960101 && $ann['E1GSIR']<>$ann['SIREN']) continue; + if ( ($ann['CODEVE']<20) || + ($ann['CODEVE']>=30 && $ann['CODEVE']<42) || + ($ann['CODEVE']>=51 && $ann['CODEVE']<80) ) { + if (preg_match('/Administration(?:.|)\:(.*)(?:Adresse.*|Commentaires?|Activit(?:e|é)|Etablissement principal|Date d\'effet|Date.de.d.but d.activit.)(?:.|)\:/Uis', $ann['annonceTxt'], $matches)) { + $iDir=0; + $tabAdministration=$iBodacc->getDirigeants($matches[1]); + foreach ($tabAdministration as $tabDir) { + /* $tabDir['num']=$numDir; + $tabDir['dateEffet']=$dateEffet; + $tabDir['id']=$idAnnRet; + $tabDir['Rubrique']='mmd'; + $tabDir['dateInsert']=$dateInsert; + //'fonction'=>$numFonction, 'rs'=>trim(str_replace(',','',$raisonSociale)), 'nom'=>$nom, 'prenom'=>$prenom, 'nomUsage'=>$usage, 'depart'=>$oldFonction); + + */ + $nom=trim(strtr(preg_replace('/ +/',' ', $tabDir['nom']), + array( "Modification d'"=>'', + "Modification"=>'', + "Modification de"=>'', + "Nomination d'un"=>'', + "Nomination en qualité d'"=>'', + "Nomination en qualité de"=>'', + "dont le est"=>'', + "nouvel"=>'', + "partant"=>'', + "ancien d'honneur"=>'', + "nouveaux"=>'', + "nouveau"=>'', + "ancien"=>'', + "Nouveau"=>'', + "Cette société se constitue Date de début d'"=>'', + ))); + if ($nom<>'') { + $tabRet[]=array( 'Fonction' => $tabDir['fonction'], + 'Titre' => $iBodacc->getFctDir($tabDir['fonction']),//.' ('.$tabDir['fonction'].')', + 'Societe' => $tabDir['rs'], + 'Nom' => $nom, + 'Prenom' => $tabDir['prenom'], + 'NomUsage' => $tabDir['nomUsage'], + 'Ancien' => $tabDir['depart'], + 'DateFct' => Wdate::dateT('Ymd','Y-m-d', $ann['DATE']), + ); + $this->iDb->insert('bodacc_dirigeants_histo', + array( 'siren' => $siren, + 'id' => $ann['ANBASE'], + 'num' => $iDir, + 'dateEffet' => Wdate::dateT('Ymd','Y-m-d', $ann['DATE']), + 'fonction' => $tabDir['fonction'], + 'rs' => $tabDir['rs'], + 'nom' => $nom, + 'prenom' => $tabDir['prenom'], + 'nomUsage' => $tabDir['nomUsage'], + 'depart' => $tabDir['depart'], + ), true); + /*if (mysql_errno()>0) { + echo mysql_errno().' : '.mysql_error().EOL; + }*/ + $iDir++; + } + } + //break; + } + } + } + } + } + + if (!$histo || ($histo && count($tabRet)==0) ) { + $dirs=$this->iDb->select( + 'rncs_dirigeants/* d, bodacc_fonctions f*/', + 'siren, raisonSociale, dirSiren, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, fonction_code, fonction_lib, cinf, dateFin, flux, dateInsert/*f.libelle*/', + "siren=$siren /*AND d.fonction_code=f.codeFct*/ AND actif%10=1", false, MYSQL_ASSOC); + + foreach ($dirs as $k=>$dir) { + if ($dir['naissance_date']<>'0000-00-00') + $dateNaiss=Wdate::dateT('Y-m-d','d/m/Y', $dir['naissance_date']); + else + $dateNaiss=''; + if ($dir['flux']<>'0000-00-00') + $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['flux']); + else + $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['dateInsert']); + $nom=trim($dir['nom']); + $nomUsage=''; + if (trim($dir['naissance_nom'])<>'') { + $nom=trim($dir['naissance_nom']); + $nomUsage=trim($dir['nom']); + } + $tabRet[]=array( 'Fonction' =>$dir['fonction_code'], + 'Titre' =>$dir['fonction_lib'], + 'Siren' =>$dir['dirSiren'], + 'Societe' =>$dir['dirRS'], + 'Civilite' =>$dir['civilite'], + 'Nom' =>$nom, + 'Prenom' =>$dir['prenom'], + 'NomUsage' =>$nomUsage, + 'NaissDate' =>$dateNaiss, + 'NaissVille' =>$dir['naissance_lieu'], + 'NaissDepPays' =>'', // 25 + 'Ancien' =>0, + 'DateFct' =>$dateModif, + 'Cinf' =>$dir['cinf'], + ); + } + } + + /** Recherche de CAC si liste des dirigeants actifs **/ + if (!$histo) { + $bodacc=$this->iDb->select( + 'bodacc_dirigeants d, bodacc_detail b, bodacc_fonctions f', + 'd.num, d.dateEffet, d.Rubrique, d.fonction, d.rs, d.nom, d.prenom, d.nomUsage, d.depart, d.dateInsert, f.libelle', + "b.SIREN=$siren AND b.id=d.id AND b.typeEven NOT BETWEEN 5000 AND 5700 AND b.typeEven NOT BETWEEN 2700 AND 2900 AND d.fonction=f.codeFct AND d.fonction BETWEEN 300 AND 304 GROUP BY d.fonction, d.rs, d.nom, d.prenom ORDER BY d.dateEffet DESC, d.fonction DESC", false, MYSQL_ASSOC); + if (count($bodacc)>0) { + foreach ($bodacc as $k=>$ann) { + $rs=trim(strtoupper($ann['rs'])); + $nom=preg_replace('/en fonction le .*/i','',$ann['nom']); + $nom=preg_replace('/Nomination .*/i','',$nom); + $nom=preg_replace('/Modification .*/i','',$nom); + $nom=preg_replace('/Nouvelles?\s+$/i','',trim($nom)); + $nom=preg_replace('/Nouveaux?\s+$/i','',trim($nom)); + $nom=preg_replace('/ancien.*/i','',$nom); + $nom=preg_replace('/en remplacement d.*/i','',$nom); + $nom=trim(strtoupper(preg_replace('/(\.|,)$/','',trim($nom)))); + $prenom=trim($ann['prenom']); + if ($prenom=='' && $rs=='' && $nom<>'') { + $rs=$nom; + $nom=''; + } + //if ($rs==$nom) + $tabRet[]=array('Fonction' => $ann['fonction'], + 'Titre' => $ann['libelle'], + 'Societe' => $rs, + 'Nom' => $nom, + 'Prenom' => $prenom, + 'NomUsage' => $ann['nomUsage'], + 'Ancien' => $ann['depart'], + 'DateFct' => $ann['dateEffet'], + ); + if ($k>1) break; // On s'arrête à 2 CAC (pb des co-cac non gérés) + } + } + } + + /** Si on ne trouve absolument rien, on regarde quand même dans l'histroique RNCS **/ + if (count($tabRet)==0) { + $dirs=$this->iDb->select( + 'rncs_dirigeants/* d, bodacc_fonctions f*/', + 'siren, raisonSociale, dirSiren, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, fonction_code, fonction_lib, cinf, dateFin, flux, dateInsert, /*f.libelle*/ date(dateUpdate)*1 as dateUpdate', + "siren=$siren /*AND d.fonction_code=f.codeFct*/ AND actif%10=0 ORDER BY dateUpdate DESC", false, MYSQL_ASSOC); + + $dateUpdatePre=$dirs[0]['dateUpdate']; + foreach ($dirs as $k=>$dir) { + if ($dir['naissance_date']<>'0000-00-00') + $dateNaiss=Wdate::dateT('Y-m-d','d/m/Y', $dir['naissance_date']); + else + $dateNaiss=''; + if ($dir['flux']<>'0000-00-00') + $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['flux']); + else + $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['dateInsert']); + if ($dir['dateUpdate']<>$dateUpdatePre) break; + $tabRet[]=array( 'Fonction' => $dir['fonction_code'], + 'Titre' => $dir['fonction_lib'], + 'Siren' => $dir['Siren'], + 'Societe' => $dir['dirRS'], + 'Civilite' => $dir['civilite'], + 'Nom' => trim($dir['nom']), + 'Prenom' => $dir['prenom'], + 'NomUsage' => $tabDir['nomUsage'], + 'NaissDate' => $dateNaiss, + 'NaissVille' => $dir['naissance_lieu'], + 'NaissDepPays' => '', // 25 + 'Ancien' => 1, + 'DateFct' => $dateModif, + 'Cinf' => $dir['cinf'], + ); + $dateUpdatePre=$dir['dateUpdate']; + } + } + + if (count($tabRet)==0) { + + if ($tabIdentite['FJ']*1>1000 && $tabIdentite['FJ']*1<2000) { + $tabTmp=explode(' ', $tabIdentite['Nom']); + $nom=$prenom=''; + foreach ($tabTmp as $mot) + if (strtoupper($mot)==$mot) + $nom.=' '.$mot; + else + $prenom.=' '.$mot; + if ($etab['Civilite']*1==1) { $genre='Monsieur '; $civilite='M'; } + elseif ($etab['Civilite']*1==2) { $genre='Madame '; $civilite='MME'; } + else { $genre=''; $civilite=''; } + + $tabTmp=$this->iDbInsee->select('identite', 'SIREN, CJ, CIVILITE, DIR_DATEN, DIR_LIEUN', + "SIREN=$siren AND (DIR_DATEN>0 OR DIR_LIEUN<>'') ORDER BY DIR_DATEN DESC, DIR_LIEUN DESC", + false, MYSQL_ASSOC); + $tabTmp=@$tabTmp[0]; + + $tabRet[]=array( 'Titre' =>'Personne physique', + 'Societe' =>'',//utf8_encode($dir['Societe']), + 'Civilite' =>$civilite, + 'Nom' =>trim($nom), + 'Prenom' =>trim($prenom), + 'NomUsage' =>'', + 'NaissDate' =>Wdate::dateT('Ymd', 'd/m/Y', $tabTmp['DIR_DATEN']),// 07/09/1961 + 'NaissVille' =>$tabTmp['DIR_LIEUN'], // LE RUSSEY//, + 'NaissDepPays' =>'', // 25 + 'Ancien' =>0, + 'DateFct' =>$tabIdentite['DateCrea'],//$tabIdentite['DateImma'], + ); + $this->iDb->insert('rncs_dirigeants', array('siren' => $siren, + 'raisonSociale' => $etab['Nom'], + 'civilite' => $civilite, + 'nom' => trim($nom), + 'prenom' => trim($prenom), + 'naissance_nom' => '', + 'naissance_date'=> $tabTmp['DIR_DATEN'], + 'naissance_lieu'=> $tabTmp['DIR_LIEUN'], + 'fonction_code' => 1050, + 'fonction_lib' => 'Personne physique', + 'actif' => 1, + 'dateInsert' => date('YmdHis'), + 'source' => 'inp', + ), true); + } + } + return $tabRet; } - /** Recherche de CAC si liste des dirigeants actifs **/ - if (!$histo) { - $bodacc=$this->iDb->select( - 'bodacc_dirigeants d, bodacc_detail b, bodacc_fonctions f', - 'd.num, d.dateEffet, d.Rubrique, d.fonction, d.rs, d.nom, d.prenom, d.nomUsage, d.depart, d.dateInsert, f.libelle', - "b.SIREN=$siren AND b.id=d.id AND b.typeEven NOT BETWEEN 5000 AND 5700 AND b.typeEven NOT BETWEEN 2700 AND 2900 AND d.fonction=f.codeFct AND d.fonction BETWEEN 300 AND 304 GROUP BY d.fonction, d.rs, d.nom, d.prenom ORDER BY d.dateEffet DESC, d.fonction DESC", false, MYSQL_ASSOC); - if (count($bodacc)>0) { - foreach ($bodacc as $k=>$ann) { - $rs=trim(strtoupper($ann['rs'])); - $nom=preg_replace('/en fonction le .*/i','',$ann['nom']); - $nom=preg_replace('/Nomination .*/i','',$nom); - $nom=preg_replace('/Modification .*/i','',$nom); - $nom=preg_replace('/Nouvelles?\s+$/i','',trim($nom)); - $nom=preg_replace('/Nouveaux?\s+$/i','',trim($nom)); - $nom=preg_replace('/ancien.*/i','',$nom); - $nom=preg_replace('/en remplacement d.*/i','',$nom); - $nom=trim(strtoupper(preg_replace('/(\.|,)$/','',trim($nom)))); - $prenom=trim($ann['prenom']); - if ($prenom=='' && $rs=='' && $nom<>'') { - $rs=$nom; - $nom=''; - } - //if ($rs==$nom) - $tabRet[]=array('Fonction' => $ann['fonction'], - 'Titre' => $ann['libelle'], - 'Societe' => $rs, - 'Nom' => $nom, - 'Prenom' => $prenom, - 'NomUsage' => $ann['nomUsage'], - 'Ancien' => $ann['depart'], - 'DateFct' => $ann['dateEffet'], - ); - if ($k>1) break; // On s'arrête à 2 CAC (pb des co-cac non gérés) - } - } - } - - if (count($tabRet)==0) { - $dirs=$this->iDb->select( - 'rncs_dirigeants/* d, bodacc_fonctions f*/', - 'siren, raisonSociale, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, fonction_code, fonction_lib, cinf, dateFin, flux, dateInsert, /*f.libelle*/ date(dateUpdate)*1 as dateUpdate', - "siren=$siren /*AND d.fonction_code=f.codeFct*/ AND actif%10=0 ORDER BY dateUpdate DESC", false, MYSQL_ASSOC); - $dateUpdatePre=$dirs[0]['dateUpdate']; - foreach ($dirs as $k=>$dir) { - if ($dir['naissance_date']<>'0000-00-00') - $dateNaiss=Wdate::dateT('Y-m-d','d/m/Y', $dir['naissance_date']); - else - $dateNaiss=''; - if ($dir['flux']<>'0000-00-00') - $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['flux']); - else - $dateModif=Wdate::dateT('Y-m-d','d/m/Y', $dir['dateInsert']); - if ($dir['dateUpdate']<>$dateUpdatePre) break; - $tabRet[]=array( 'Fonction' =>$dir['fonction_code'], - 'Titre' =>$dir['fonction_lib'], - 'Societe' =>'',//utf8_encode($dir['Societe']), - 'Civilite' =>$dir['civilite'], - 'Nom' =>trim($dir['nom']), - 'Prenom' =>$dir['prenom'], - 'NomUsage' => $tabDir['nomUsage'], - 'NaissDate' =>$dateNaiss, - 'NaissVille' =>$dir['naissance_lieu'], - 'NaissDepPays' =>'', // 25 - 'Ancien' =>1, - 'DateFct' =>$dateModif, - 'Cinf' =>$dir['cinf'], - ); - $dateUpdatePre=$dir['dateUpdate']; - } - } - - if (count($tabRet)==0) { - - if ($tabIdentite['FJ']*1>1000 && $tabIdentite['FJ']*1<2000) { - $tabTmp=explode(' ', $tabIdentite['Nom']); - $nom=$prenom=''; - foreach ($tabTmp as $mot) - if (strtoupper($mot)==$mot) - $nom.=' '.$mot; - else - $prenom.=' '.$mot; - if ($etab['Civilite']*1==1) { $genre='Monsieur '; $civilite='M'; } - elseif ($etab['Civilite']*1==2) { $genre='Madame '; $civilite='MME'; } - else { $genre=''; $civilite=''; } - - $tabTmp=$this->iDbInsee->select('identite', 'SIREN, CJ, CIVILITE, DIR_DATEN, DIR_LIEUN', - "SIREN=$siren AND (DIR_DATEN>0 OR DIR_LIEUN<>'') ORDER BY DIR_DATEN DESC, DIR_LIEUN DESC", - false, MYSQL_ASSOC); - $tabTmp=@$tabTmp[0]; - - $tabRet[]=array( 'Titre' =>'Personne physique', - 'Societe' =>'',//utf8_encode($dir['Societe']), - 'Civilite' =>$civilite, - 'Nom' =>trim($nom), - 'Prenom' =>trim($prenom), - 'NomUsage' =>'', - 'NaissDate' =>Wdate::dateT('Ymd', 'd/m/Y', $tabTmp['DIR_DATEN']),// 07/09/1961 - 'NaissVille' =>$tabTmp['DIR_LIEUN'], // LE RUSSEY//, - 'NaissDepPays' =>'', // 25 - 'Ancien' =>0, - 'DateFct' =>$tabIdentite['DateCrea'],//$tabIdentite['DateImma'], - ); - $this->iDb->insert('rncs_dirigeants', array('siren' => $siren, - 'raisonSociale' => $etab['Nom'], - 'civilite' => $civilite, - 'nom' => trim($nom), - 'prenom' => trim($prenom), - 'naissance_nom' => '', - 'naissance_date'=> $tabTmp['DIR_DATEN'], - 'naissance_lieu'=> $tabTmp['DIR_LIEUN'], - 'fonction_code' => 1050, - 'fonction_lib' => 'Personne physique', - 'actif' => 1, - 'dateInsert' => date('YmdHis'), - 'source' => 'inp', - ), true); - } - } - return $tabRet; - } - - /** Liste des annonces légales pour un siren donnée - ** - ** @param integer $siren - ** @param integer $idAnnonce - ** @param mixed $rubrique Filter par rubrique (P)rocol, (D)issolution, (R)adiation, (A)bsorption, (L)ocataire, - ** (G)érance:propriétaire, (V)endeur, bodacc (C), (BODA) (BODB) (BODC) ou tableau des codeEven - ** @param bool $forceVerif - ** @return array - **/ - function getAnnoncesLegales($siren, $idAnnonce=0, $rubrique='', $forceVerif=false, $allTextes=false) {// rubrique = + /** + * Liste des annonces légales pour un siren donnée + * @param integer $siren + * @param integer $idAnnonce + * @param mixed $rubrique Filter par rubrique (P)rocol, (D)issolution, (R)adiation, (A)bsorption, (L)ocataire, + * (G)érance:propriétaire, (V)endeur, bodacc (C), (BODA) (BODB) (BODC) ou tableau des codeEven + * @param bool $forceVerif + * @return array + */ + function getAnnoncesLegales($siren, $idAnnonce=0, $rubrique='', $forceVerif=false, $allTextes=false) + { $siren=$siren*1; $strIdAnn=''; $tabRet=array(); @@ -3820,9 +3886,9 @@ TOTAL : $dureeTot s\n"; if ($siren<>0) $strCle ="d.siren=$siren "; else $groupBy=' GROUP BY d.id '; $bodacc=$this->iDb->select( - 'bodacc_detail d, bodacc b, tribunaux t',//.codEven Code évènement du mouvement Bodacc libEven ', - "b.id, b.Bodacc_Code, b.Bodacc_Annee_Parution, b.Bodacc_Num, b.Num_Annonce, b.Bodacc_Date_Parution, b.Tribunal_Dept, b.Tribunal_Code, d.Rubrique, b.typeAnnonce, b.corrNum_Annonce, b.corrBodacc_Date_Parution, b.corrPage, b.corrNumParution, b.corrTexteRectificatif, b.annonce, b.dateInsert, t.triCode, t.triNom, t.triSiret, d.typeEven, d.dateEffet, d.dateDebutActivite, d.dateCessationActivite, d.dateJugement, d.dateFinObservation, d.VenteMt, d.VenteDev, d.FJ, d.Capital, d.CapitalDev, CONCAT(d.commentaires,' ',d.fusion) as complement, d.raisonSociale, d.nomCommercial, d.enseigne, d.sigle, d.adresse, d.codePostal, d.ville, d.adresseSiege, d.codePostalSiege, d.villeSiege", - "$strCle AND d.id=b.id AND b.Tribunal_Code=t.triCode AND d.dateSuppr=0 $strIdAnn $groupBy ORDER BY b.Bodacc_Date_Parution DESC", false, MYSQL_ASSOC); + 'bodacc_detail d, bodacc b, tribunaux t',//.codEven Code évènement du mouvement Bodacc libEven ', + "b.id, b.Bodacc_Code, b.Bodacc_Annee_Parution, b.Bodacc_Num, b.Num_Annonce, b.Bodacc_Date_Parution, b.Tribunal_Dept, b.Tribunal_Code, d.Rubrique, b.typeAnnonce, b.corrNum_Annonce, b.corrBodacc_Date_Parution, b.corrPage, b.corrNumParution, b.corrTexteRectificatif, b.annonce, b.dateInsert, t.triCode, t.triNom, t.triSiret, d.typeEven, d.dateEffet, d.dateDebutActivite, d.dateCessationActivite, d.dateJugement, d.dateFinObservation, d.VenteMt, d.VenteDev, d.FJ, d.Capital, d.CapitalDev, CONCAT(d.commentaires,' ',d.fusion) as complement, d.raisonSociale, d.nomCommercial, d.enseigne, d.sigle, d.adresse, d.codePostal, d.ville, d.adresseSiege, d.codePostalSiege, d.villeSiege", + "$strCle AND d.id=b.id AND b.Tribunal_Code=t.triCode AND d.dateSuppr=0 $strIdAnn $groupBy ORDER BY b.Bodacc_Date_Parution DESC", false, MYSQL_ASSOC); $k=0; if (count($bodacc)>0) { foreach ($bodacc as $k=>$ann) { @@ -4295,7 +4361,16 @@ TOTAL : $dureeTot s\n"; return $tabRet; } - function getAnnoncesBalo($siren, $idAnnonce=0) { + /** + * Retourne les annonces du bulletin des annonces légales officielles + * @param string $siren + * @param int $idAnnonce + * @param int $offset + * @param int $lignes + * @return array + */ + function getAnnoncesBalo($siren, $idAnnonce=0, $offset=0, $lignes=100) + { $siren=$siren*1; if ($siren<001000000) $siren='000'.$siren; @@ -4318,7 +4393,7 @@ TOTAL : $dureeTot s\n"; $mBalo=new MBalo(); - $bodacc=$this->iDb->select('balo', "Societe_Rcs, Categorie, Num_Affaire, Date_Parution, Num_Parution, Url_Annonce_Html, Url_Annonce_Pdf, Annonce_Html, dateInsert", "Societe_Rcs='$siren' AND Date_Parution>='2004-01-01' $strIdAnn ORDER BY Date_Parution DESC, Num_Affaire", false, MYSQL_ASSOC); + $bodacc=$this->iDb->select('balo', "Societe_Rcs, Categorie, Num_Affaire, Date_Parution, Num_Parution, Url_Annonce_Html, Url_Annonce_Pdf, Annonce_Html, dateInsert", "Societe_Rcs='$siren' AND Date_Parution>='2004-01-01' $strIdAnn ORDER BY Date_Parution DESC, Num_Affaire LIMIT $offset, $lignes", false, MYSQL_ASSOC); // $RP=mysql_select('balo', " ", "Societe_Rcs='$rcs' "); $k=0; if (count($bodacc)>0) { @@ -4348,7 +4423,32 @@ TOTAL : $dureeTot s\n"; return $tabRet; } - function getAnnoncesBoamp($siren, $idAnnonce='') { + /** + * Retourne le nombre d'annonce Balo pour un siren + * @param string $siren + * @return int + */ + function getAnnoncesBaloCount($siren) + { + $bodacc = $this->iDb->select('balo', "count(*) AS nb", "Societe_Rcs='$siren' AND Date_Parution>='2004-01-01' ORDER BY Date_Parution DESC, Num_Affaire", false, MYSQL_ASSOC); + $nb = 0; + if (count($bodacc)>0) { + $nb = $bodacc[0]['nb']; + } + return $nb; + } + + /** + * Retourne les annonces du bulletin officiel des annonces de marché publique + * @param string $siren + * @param string $idAnnonce + * @param string|array $type A:Avis d'attribution, M:Avis de marché + * @param int $offset + * @param int $lignes + * @return Ambigous multitype:multitype:string Ambigous , unknown> + */ + function getAnnoncesBoamp($siren, $idAnnonce='', $type=array('A', 'M'), $offset=0, $lignes=100) + { $siren=$siren*1; if ($siren<001000000) $siren='000'.$siren; @@ -4359,201 +4459,247 @@ TOTAL : $dureeTot s\n"; $idA=0; $tabRet=array(); - $mBoamp=new MBoamp(); - /** Recherche dans les avis d'attribution **/ - if ($idAnnonce<>'') { - $tmp=explode('.', $idAnnonce); - $idA=$tmp[1]; - //if (strlen($tmp[0])==9 && is_numeric($tmp[0])) $rcs=$tmp[0]; - if ($tmp[0]=='A') $strIdAnn=" AND l.id='$idA' "; - elseif ($tmp[0]=='O') $strIdAnn=""; - } - - $bodacc=$this->iDb->select( 'boamp_lots l, boamp b, boamp_detail d', - "l.id, l.idAnn, l.Boamp_Code, l.Boamp_Rubrique, b.Boamp_Rubrique_Lib, b.typeAnnonce, l.Boamp_Date_Parution, b.Boamp_Num, b.Boamp_Annee_Parution, b.Num_AnnoncePre, b.Num_Annonce, b.Boamp_Dept, b.annonce, l.num, l.`desc` AS description, l.nom, d.raisonSociale, l.montantTxt, sum(l.montant) AS montant, l.montantAnMin, l.montantAnMax, l.trancheCond, l.trancheFerme, l.dateAttrib, l.intitule, l.nomenclature, l.objets, l.cpv, l.cpvComp, l.volume, l.execution, l.livraison, l.dureeJours, l.dureeMois, l.dateDeb, l.dateFin, l.dateInsert, d.titre, d.objet, d.titreMarche, d.typeObjetMarche, d.objetAutre, d.autres", - "l.siren='$siren' AND l.idAnn=b.id AND l.idAnn=d.id $strIdAnn GROUP BY b.id ORDER BY l.Boamp_Date_Parution DESC", false, MYSQL_ASSOC); - $k=0; - if (count($bodacc)>0) { - foreach ($bodacc as $k=>$ann) { - $tabRetEven=array(); - /*montantTxt, l.montant, l.montantAnMin, , l.trancheCond, l.trancheFerme, l.dateAttrib*/ - if ($ann['nom']<>'') $strMontant=' "'.strtoupper($ann['raisonSociale']).'"'; + $mBoamp = new MBoamp(); + + if ( is_string($type) && $type=='A' || is_array($type) && in_array('A',$type) ) { + + /** Recherche dans les avis d'attribution **/ + if ($idAnnonce<>'') { + $tmp=explode('.', $idAnnonce); + $idA=$tmp[1]; + //if (strlen($tmp[0])==9 && is_numeric($tmp[0])) $rcs=$tmp[0]; + if ($tmp[0]=='A') $strIdAnn=" AND l.id='$idA' "; + elseif ($tmp[0]=='O') $strIdAnn=""; + } - if ($ann['montant']*1>0) $strMontant.=' ('.number_format($ann['montant'], 2, ',', ' ').' EUR)'; - elseif ($ann['montantTxt']<>'') $strMontant.=' ('.$ann['montantTxt'].')'; - elseif ($ann['montantAnMin']<>'' && $ann['montantAnMax']) - $strMontant.=' ('.$ann['montantAnMin'].' à '. - $ann['montantAnMax'].')'; - elseif ($ann['trancheCond']<>'' && $ann['trancheFerme']) - $strMontant.=' ('.$ann['trancheCond'].' / '. - $ann['trancheFerme'].')'; - else $strMontant.=''; - $tabRetEven[]=array('CodeEven'=>$mBoamp->getCodEvenSd($ann['Boamp_Rubrique']), - 'LibEven'=>$mBoamp->getLibEvenBoamp($ann['Boamp_Rubrique'], $ann['Boamp_Rubrique_Lib']).$strMontant); - // Axxx pour lot attribué ou Oxxx pour Organisation - if ($ann['Num_AnnoncePre']<>0) $numAnn=$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce']; - else $numAnn=$ann['Num_Annonce']; - if ($ann['Boamp_Code']=='MAPA') - $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution=MAPA&num_annonce='.$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce'].'&total=500&_s=0&indice=0';//&affichage_avis=officiel'; - else { - $lettre = substr($ann['Boamp_Code'],-1); - $annee = $ann['Boamp_Annee_Parution']; - $num = sprintf("%04d",$ann['Boamp_Num']); - $numPar=$lettre.$annee.$num; - $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution='.$numPar.'&num_annonce='.$ann['Num_Annonce'].'&total=500&_s=0&indice=0'; - } - $infosComp=''; - $objetMarche=trim($ann['objet'].' '.$ann['objetAutre'].' '.$ann['autres']); - //titre, titreMarche, typeObjetMarche - $tabRet[$k]=array( 'id'=>'A.'.$ann['id'], - 'BodaccCode'=>$ann['Boamp_Code'], - 'BodaccNum'=>$ann['Boamp_Num'], - 'NumAnnonce'=>$numAnn, - 'DateParution'=>$ann['Boamp_Date_Parution'], - 'Departement'=>$ann['Boamp_Dept'], - //'Tribunal'=>$ann['triNom'], - //'TribunalSiret'=>$ann['triSiret'], - //'Rubrique'=>$ann['Boamp_Rubrique_Lib'], - 'typeAnnonce'=>$ann['typeAnnonce'], - 'dateInsertionSD'=>$ann['dateInsert'], - 'Montant'=>$ann['montant'], - 'Organisme'=>strtoupper($ann['raisonSociale']), - 'Objet'=>$objetMarche, - 'evenements'=>$tabRetEven, - 'infosComp'=>$infosComp, // Non géré - 'Lien_Annonce_Html'=>$lienMapa, // Non géré - ); - /**/ - if ($idA<>0) + $bodacc = $this->iDb->select( + 'boamp_lots l, boamp b, boamp_detail d', + "l.id, l.idAnn, l.Boamp_Code, l.Boamp_Rubrique, b.Boamp_Rubrique_Lib, b.typeAnnonce, l.Boamp_Date_Parution, b.Boamp_Num, b.Boamp_Annee_Parution, b.Num_AnnoncePre, b.Num_Annonce, b.Boamp_Dept, b.annonce, l.num, l.`desc` AS description, l.nom, d.raisonSociale, l.montantTxt, sum(l.montant) AS montant, l.montantAnMin, l.montantAnMax, l.trancheCond, l.trancheFerme, l.dateAttrib, l.intitule, l.nomenclature, l.objets, l.cpv, l.cpvComp, l.volume, l.execution, l.livraison, l.dureeJours, l.dureeMois, l.dateDeb, l.dateFin, l.dateInsert, d.titre, d.objet, d.titreMarche, d.typeObjetMarche, d.objetAutre, d.autres", + "l.siren='$siren' AND l.idAnn=b.id AND l.idAnn=d.id $strIdAnn GROUP BY b.id ORDER BY l.Boamp_Date_Parution DESC LIMIT $offset,$lignes", false, MYSQL_ASSOC + ); + + $k=0; + if (count($bodacc)>0) { + foreach ($bodacc as $k=>$ann) { + $tabRetEven=array(); + /*montantTxt, l.montant, l.montantAnMin, , l.trancheCond, l.trancheFerme, l.dateAttrib*/ + if ($ann['nom']<>'') $strMontant=' "'.strtoupper($ann['raisonSociale']).'"'; + + if ($ann['montant']*1>0) $strMontant.=' ('.number_format($ann['montant'], 2, ',', ' ').' EUR)'; + elseif ($ann['montantTxt']<>'') $strMontant.=' ('.$ann['montantTxt'].')'; + elseif ($ann['montantAnMin']<>'' && $ann['montantAnMax']) + $strMontant.=' ('.$ann['montantAnMin'].' à '. + $ann['montantAnMax'].')'; + elseif ($ann['trancheCond']<>'' && $ann['trancheFerme']) + $strMontant.=' ('.$ann['trancheCond'].' / '. + $ann['trancheFerme'].')'; + else $strMontant.=''; + $tabRetEven[]=array('CodeEven'=>$mBoamp->getCodEvenSd($ann['Boamp_Rubrique']), + 'LibEven'=>$mBoamp->getLibEvenBoamp($ann['Boamp_Rubrique'], $ann['Boamp_Rubrique_Lib']).$strMontant); + // Axxx pour lot attribué ou Oxxx pour Organisation + if ($ann['Num_AnnoncePre']<>0) $numAnn=$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce']; + else $numAnn=$ann['Num_Annonce']; if ($ann['Boamp_Code']=='MAPA') - $tabRet[$k]['texteAnnonce']=$ann['annonce']; - else - $tabRet[$k]['texteAnnonce']= - strtr( preg_replace('//Uis', '', - preg_replace('//Uis', '', - preg_replace('/( class=".*")/ie', ' ', $ann['annonce']))), - array(' '=>' ', ''=>'', ''=>'', '

'=>'
') - ); + $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution=MAPA&num_annonce='.$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce'].'&total=500&_s=0&indice=0';//&affichage_avis=officiel'; + else { + $lettre = substr($ann['Boamp_Code'],-1); + $annee = $ann['Boamp_Annee_Parution']; + $num = sprintf("%04d",$ann['Boamp_Num']); + $numPar=$lettre.$annee.$num; + $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution='.$numPar.'&num_annonce='.$ann['Num_Annonce'].'&total=500&_s=0&indice=0'; + } + $infosComp=''; + $objetMarche=trim($ann['objet'].' '.$ann['objetAutre'].' '.$ann['autres']); + //titre, titreMarche, typeObjetMarche + $tabRet[$k]=array( 'id'=>'A.'.$ann['id'], + 'BodaccCode'=>$ann['Boamp_Code'], + 'BodaccNum'=>$ann['Boamp_Num'], + 'NumAnnonce'=>$numAnn, + 'DateParution'=>$ann['Boamp_Date_Parution'], + 'Departement'=>$ann['Boamp_Dept'], + //'Tribunal'=>$ann['triNom'], + //'TribunalSiret'=>$ann['triSiret'], + //'Rubrique'=>$ann['Boamp_Rubrique_Lib'], + 'typeAnnonce'=>$ann['typeAnnonce'], + 'dateInsertionSD'=>$ann['dateInsert'], + 'Montant'=>$ann['montant'], + 'Organisme'=>strtoupper($ann['raisonSociale']), + 'Objet'=>$objetMarche, + 'evenements'=>$tabRetEven, + 'infosComp'=>$infosComp, // Non géré + 'Lien_Annonce_Html'=>$lienMapa, // Non géré + ); + /**/ + if ($idA<>0) + if ($ann['Boamp_Code']=='MAPA') + $tabRet[$k]['texteAnnonce']=$ann['annonce']; + else + $tabRet[$k]['texteAnnonce']= + strtr( preg_replace('//Uis', '', + preg_replace('//Uis', '', + preg_replace('/( class=".*")/ie', ' ', $ann['annonce']))), + array(' '=>' ', ''=>'', ''=>'', '

'=>'
') + ); + } } } - /** Recherche dans les avis de marchés **/ + if ( is_string($type) && $type=='M' || is_array($type) && in_array('M',$type) ) { + // Recherche dans les avis de marchés if ($idAnnonce<>'') { - $tmp=explode('.', $idAnnonce); - $idA=$tmp[1]; - //if (strlen($tmp[0])==9 && is_numeric($tmp[0])) $rcs=$tmp[0]; - if ($tmp[0]=='A') $strIdAnn=" AND d.id='$idA' "; - elseif ($tmp[0]=='O') $strIdAnn=""; - } - - $bodacc=$this->iDb->select( 'boamp b, boamp_detail d', - "d.id, d.Boamp_Code, d.Boamp_Rubrique, b.Boamp_Rubrique_Lib, b.typeAnnonce, d.Boamp_Date_Parution, b.Boamp_Num, b.Boamp_Annee_Parution, b.Num_AnnoncePre, b.Num_Annonce, b.Boamp_Dept, b.annonce, titre AS description, d.raisonSociale, d.estimValeur AS montantTxt, d.estimValeurMin AS montantAnMin, d.estimValeurMax AS montantAnMax, objet, cpv_obj, cpv_comp, d.dateInsert", - "d.siren='$siren' AND d.id=b.id $strIdAnn GROUP BY b.id ORDER BY d.Boamp_Date_Parution DESC", false, MYSQL_ASSOC); - if (count($bodacc)>0) { - foreach ($bodacc as $k=>$ann) { - $id=$ann['id']; - $rub=$ann['Boamp_Rubrique']; - $tabRetEven=array(); - $strMontant=''; - if ($ann['objet']<>'') $strMontant.=' "'.$ann['objet'].'"'; + $tmp=explode('.', $idAnnonce); + $idA=$tmp[1]; + //if (strlen($tmp[0])==9 && is_numeric($tmp[0])) $rcs=$tmp[0]; + if ($tmp[0]=='A') $strIdAnn=" AND d.id='$idA' "; + elseif ($tmp[0]=='O') $strIdAnn=""; + } - if ($rub=='6' || // Avis d'attribution - $rub=='7' || // Avis en cas de transparence ex ante volontaire - $rub=='77' || // Avis d'attribution - $rub=='8' || // Avis d'attribution - $rub=='82' || // Rectificatif - $rub=='83' || // Rectificatif - $rub=='84' || // Avis d'attribution comportant des lots infructueux - $rub=='9' || // Résultat de marché - $rub=='92' || // Rectificatif - $rub=='93' || // Résultat de marché / Infructueux - Sans suite - $rub=='94' || // Résultat de marché / Résultat de marché comportant des lots infructueux - $rub=='96' || // Annulation - Rectificatif - Sans suite - Infructueux - $rub=='977' // Annulation - Rectificatif / Avis en cas de transparence ex ante volontaire - ) { - $tabTmp=$this->iDb->select( 'boamp_lots l', - "l.id, l.idAnn, l.Boamp_Code, l.Boamp_Rubrique, l.Boamp_Date_Parution, l.num, l.`desc` AS description, l.nom, l.montantTxt, l.montant, l.montantAnMin, l.montantAnMax, l.trancheCond, l.trancheFerme, l.dateAttrib, l.intitule, l.nomenclature, l.objets, l.cpv, l.cpvComp, l.volume, l.execution, l.livraison, l.dureeJours, l.dureeMois, l.dateDeb, l.dateFin", - "l.idAnn=$id", false, MYSQL_ASSOC); - foreach ($tabTmp as $k2=>$ann2) { - if ($ann2['nom']<>'') $strMontant.=' "'.strtoupper($ann2['nom']).'"'; - if ($ann2['montant']*1>0) $strMontant.=' ('.number_format($ann2['montant'], 2, ',', ' ').' EUR)'; - elseif ($ann2['montantTxt']<>'') $strMontant.=' ('.$ann2['montantTxt'].')'; - elseif ($ann2['montantAnMin']<>'' && $ann2['montantAnMax']) - $strMontant.=' ('.$ann2['montantAnMin'].' à '. - $ann2['montantAnMax'].')'; - elseif ($ann2['trancheCond']<>'' && $ann2['trancheFerme']) - $strMontant.=' ('.$ann['trancheCond'].' / '. - $ann['trancheFerme'].')'; - else $strMontant.=''; + $bodacc=$this->iDb->select( + 'boamp b, boamp_detail d', + "d.id, d.Boamp_Code, d.Boamp_Rubrique, b.Boamp_Rubrique_Lib, b.typeAnnonce, d.Boamp_Date_Parution, b.Boamp_Num, b.Boamp_Annee_Parution, b.Num_AnnoncePre, b.Num_Annonce, b.Boamp_Dept, b.annonce, titre AS description, d.raisonSociale, d.estimValeur AS montantTxt, d.estimValeurMin AS montantAnMin, d.estimValeurMax AS montantAnMax, objet, cpv_obj, cpv_comp, d.dateInsert", + "d.siren='$siren' AND d.id=b.id $strIdAnn GROUP BY b.id ORDER BY d.Boamp_Date_Parution DESC", + false, MYSQL_ASSOC + ); + + if (count($bodacc)>0) { + foreach ($bodacc as $k=>$ann) { + $id=$ann['id']; + $rub=$ann['Boamp_Rubrique']; + $tabRetEven=array(); + $strMontant=''; + if ($ann['objet']<>'') $strMontant.=' "'.$ann['objet'].'"'; + + if ($rub=='6' || // Avis d'attribution + $rub=='7' || // Avis en cas de transparence ex ante volontaire + $rub=='77' || // Avis d'attribution + $rub=='8' || // Avis d'attribution + $rub=='82' || // Rectificatif + $rub=='83' || // Rectificatif + $rub=='84' || // Avis d'attribution comportant des lots infructueux + $rub=='9' || // Résultat de marché + $rub=='92' || // Rectificatif + $rub=='93' || // Résultat de marché / Infructueux - Sans suite + $rub=='94' || // Résultat de marché / Résultat de marché comportant des lots infructueux + $rub=='96' || // Annulation - Rectificatif - Sans suite - Infructueux + $rub=='977' // Annulation - Rectificatif / Avis en cas de transparence ex ante volontaire + ) { + $tabTmp=$this->iDb->select( 'boamp_lots l', + "l.id, l.idAnn, l.Boamp_Code, l.Boamp_Rubrique, l.Boamp_Date_Parution, l.num, l.`desc` AS description, l.nom, l.montantTxt, l.montant, l.montantAnMin, l.montantAnMax, l.trancheCond, l.trancheFerme, l.dateAttrib, l.intitule, l.nomenclature, l.objets, l.cpv, l.cpvComp, l.volume, l.execution, l.livraison, l.dureeJours, l.dureeMois, l.dateDeb, l.dateFin", + "l.idAnn=$id", false, MYSQL_ASSOC); + foreach ($tabTmp as $k2=>$ann2) { + if ($ann2['nom']<>'') $strMontant.=' "'.strtoupper($ann2['nom']).'"'; + if ($ann2['montant']*1>0) $strMontant.=' ('.number_format($ann2['montant'], 2, ',', ' ').' EUR)'; + elseif ($ann2['montantTxt']<>'') $strMontant.=' ('.$ann2['montantTxt'].')'; + elseif ($ann2['montantAnMin']<>'' && $ann2['montantAnMax']) + $strMontant.=' ('.$ann2['montantAnMin'].' à '. + $ann2['montantAnMax'].')'; + elseif ($ann2['trancheCond']<>'' && $ann2['trancheFerme']) + $strMontant.=' ('.$ann['trancheCond'].' / '. + $ann['trancheFerme'].')'; + else $strMontant.=''; + } } - } - $tabRetEven[]=array('CodeEven'=>$mBoamp->getCodEvenSd($ann['Boamp_Rubrique']), - 'LibEven'=>$mBoamp->getLibEvenBoamp($ann['Boamp_Rubrique'], $ann['Boamp_Rubrique_Lib']).$strMontant); - // Axxx pour lot attribué ou Oxxx pour Organisation - if ($ann['Num_AnnoncePre']<>0) $numAnn=$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce']; - else $numAnn=$ann['Num_Annonce']; - if ($ann['Boamp_Code']=='MAPA') - $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution=MAPA&num_annonce='.$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce'].'&total=500&_s=0&indice=0';//&affichage_avis=officiel'; - else { - $lettre = substr($ann['Boamp_Code'],-1); - $annee = $ann['Boamp_Annee_Parution']; - $num = sprintf("%04d",$ann['Boamp_Num']); - $numPar=$lettre.$annee.$num; - $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution='.$numPar.'&num_annonce='.$ann['Num_Annonce'].'&total=500&_s=0&indice=0'; - } - $infosComp=''; - $tabRet[$k]=array( 'id'=>'O.'.$id, - 'BodaccCode'=>$ann['Boamp_Code'], - 'BodaccNum'=>$ann['Boamp_Num'], - 'NumAnnonce'=>$numAnn, - 'DateParution'=>$ann['Boamp_Date_Parution'], - 'Departement'=>$ann['Boamp_Dept'], - //'Tribunal'=>$ann['triNom'], - //'TribunalSiret'=>$ann['triSiret'], - //'Rubrique'=>$ann['Boamp_Rubrique_Lib'], - 'typeAnnonce'=>$ann['typeAnnonce'], - 'dateInsertionSD'=>$ann['dateInsert'], - 'evenements'=>$tabRetEven, - 'infosComp'=>$infosComp, // Non géré - 'Lien_Annonce_Html'=>$lienMapa, // Non géré - ); - /**/ - if ($idA<>0) + $tabRetEven[]=array('CodeEven'=>$mBoamp->getCodEvenSd($ann['Boamp_Rubrique']), + 'LibEven'=>$mBoamp->getLibEvenBoamp($ann['Boamp_Rubrique'], $ann['Boamp_Rubrique_Lib']).$strMontant); + // Axxx pour lot attribué ou Oxxx pour Organisation + if ($ann['Num_AnnoncePre']<>0) $numAnn=$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce']; + else $numAnn=$ann['Num_Annonce']; if ($ann['Boamp_Code']=='MAPA') - $tabRet[$k]['texteAnnonce']=$ann['annonce']; - else - $tabRet[$k]['texteAnnonce']= - strtr( preg_replace('//Uis', '', - preg_replace('//Uis', '', - preg_replace('/( class=".*")/ie', ' ', $ann['annonce']))), - array(' '=>' ', ''=>'', ''=>'', '

'=>'
') - ); + $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution=MAPA&num_annonce='.$ann['Num_AnnoncePre'].'-'.$ann['Num_Annonce'].'&total=500&_s=0&indice=0';//&affichage_avis=officiel'; + else { + $lettre = substr($ann['Boamp_Code'],-1); + $annee = $ann['Boamp_Annee_Parution']; + $num = sprintf("%04d",$ann['Boamp_Num']); + $numPar=$lettre.$annee.$num; + $lienMapa='http://www.boamp.fr/index.php?action=avis&num_parution='.$numPar.'&num_annonce='.$ann['Num_Annonce'].'&total=500&_s=0&indice=0'; + } + $infosComp=''; + $tabRet[$k]=array( 'id'=>'O.'.$id, + 'BodaccCode'=>$ann['Boamp_Code'], + 'BodaccNum'=>$ann['Boamp_Num'], + 'NumAnnonce'=>$numAnn, + 'DateParution'=>$ann['Boamp_Date_Parution'], + 'Departement'=>$ann['Boamp_Dept'], + //'Tribunal'=>$ann['triNom'], + //'TribunalSiret'=>$ann['triSiret'], + //'Rubrique'=>$ann['Boamp_Rubrique_Lib'], + 'typeAnnonce'=>$ann['typeAnnonce'], + 'dateInsertionSD'=>$ann['dateInsert'], + 'evenements'=>$tabRetEven, + 'infosComp'=>$infosComp, // Non géré + 'Lien_Annonce_Html'=>$lienMapa, // Non géré + ); + + if ($idA<>0) + if ($ann['Boamp_Code']=='MAPA') + $tabRet[$k]['texteAnnonce']=$ann['annonce']; + else + $tabRet[$k]['texteAnnonce']= + strtr( preg_replace('//Uis', '', + preg_replace('//Uis', '', + preg_replace('/( class=".*")/ie', ' ', $ann['annonce']))), + array(' '=>' ', ''=>'', ''=>'', '

'=>'
') + ); + } } } debugLog('I', "getAnnoncesBoamp(siren=$siren, idAnnonce=$idAnnonce, $idA)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); return $tabRet; } - function getAnnoncesAsso($siren, $idAnnonce=0) { + /** + * Nombre total d'annonces BOAMP + * @param string $siren + * @param string $type A:avis d'attribution, M:Avis de marché + */ + public function getAnnoncesBoampCount($siren, $type='') + { + $bodaccA = array(); + $bodaccM = array(); + if ( $type=='' || $type=='A' ) { + + /** Recherche dans les avis d'attribution **/ + $bodaccA=$this->iDb->select( + 'boamp_lots l, boamp b, boamp_detail d', + "l.id", + "l.siren='$siren' AND l.idAnn=b.id AND l.idAnn=d.id GROUP BY b.id ORDER BY l.Boamp_Date_Parution", + false, MYSQL_ASSOC + ); + + } + if ( $type=='' || $type=='M') { + + /** Recherche dans les avis de marchés **/ + $bodaccM=$this->iDb->select( 'boamp b, boamp_detail d', + "d.id", + "d.siren='$siren' AND d.id=b.id GROUP BY b.id ORDER BY d.Boamp_Date_Parution DESC", + false, MYSQL_ASSOC + ); + + } + $nb = count($bodaccA) + count($bodaccM); + return $nb; + } + + function getAnnoncesAsso($siren, $idAnnonce=0, $offset=0, $lignes=100) + { debugLog('I', "Début getAnnoncesAsso(siren=$siren, idAnnonce=$idAnnonce)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $siretMin=$siren.'00000'; $siretMax=$siren.'99999'; $strIdAnn=''; $tabRet=array(); - - if ($idAnnonce>0){ - $strIdAnn=" AND id=$idAnnonce "; - //$mAsso=new MAsso(); - if ($siren==0) { - //$bodacc=$this->iDb->select('asso', "Waldec", "Siret BETWEEN $siretMin AND $siretMax $strIdAnn AND Waldec<>''"); - $bodacc=$this->iDb->select('asso', "Waldec", "siren=$siren $strIdAnn AND Waldec<>'' AND dateSuppr=0"); - if (@$bodacc[0][0]<>'') $strIdAnn=" AND Waldec='".$bodacc[0][0]."' "; - } + + if ($idAnnonce>0) { + $strIdAnn="id=$idAnnonce"; + } elseif (substr($siren,0,1)=='W' && $idAnnonce == 0) { + $strIdAnn = "Waldec='$siren'"; + } else { + $strIdAnn = "siren=$siren"; } - //$bodacc=$this->iDb->select('asso', "id, Assoc_Nom, Siret, Waldec, Activite, Num_Annonce, Date_Parution, Num_Parution, Departement, Sous_Prefecture, Type_Annonce, Annonce_Html, Assoc_Objet, Assoc_Adresse, Assoc_NObjet, Assoc_AObjet, Assoc_NAdresse, Assoc_Fusion, Assoc_Annulation, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration, Assoc_Date_Declaration2, dateInsert", "Siret BETWEEN $siretMin AND $siretMax $strIdAnn ORDER BY Date_Parution DESC", true, MYSQL_ASSOC); - $bodacc=$this->iDb->select('asso', "id, Assoc_Nom, siren, nic, Waldec, Activite, Num_Annonce, Date_Parution, Num_Parution, Departement, Sous_Prefecture, Type_Annonce, Annonce_Html, Assoc_Objet, Assoc_Adresse, Assoc_NObjet, Assoc_AObjet, Assoc_NAdresse, Assoc_Fusion, Assoc_Annulation, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration, Assoc_Date_Declaration2, typeAnnonce, codEven, dateInsert", "siren=$siren $strIdAnn AND dateSuppr=0 ORDER BY Date_Parution DESC", false, MYSQL_ASSOC); - // $RP=mysql_select('balo', " ", "Societe_Rcs='$rcs' "); + + $bodacc=$this->iDb->select('asso', "id, Assoc_Nom, siren, nic, Waldec, Activite, Num_Annonce, Date_Parution, Num_Parution, Departement, Sous_Prefecture, Type_Annonce, Annonce_Html, Assoc_Objet, Assoc_Adresse, Assoc_NObjet, Assoc_AObjet, Assoc_NAdresse, Assoc_Fusion, Assoc_Annulation, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration, Assoc_Date_Declaration2, typeAnnonce, codEven, dateInsert", "$strIdAnn AND dateSuppr=0 ORDER BY Date_Parution DESC LIMIT $offset,$lignes", false, MYSQL_ASSOC); + $k=0; if (count($bodacc)>0) { foreach ($bodacc as $k=>$ann) { @@ -4627,6 +4773,32 @@ TOTAL : $dureeTot s\n"; return $tabRet; } + + /** + * Nombre d'annonces association + * @param int $idAnnonce + * @param string $siren + */ + public function getAnnoncesAssoCount($siren, $idAnnonce = 0) + { + $strIdAnn = ''; + + if ($idAnnonce>0) { + $strIdAnn="id=$idAnnonce"; + } elseif (substr($siren,0,1)=='W' && $idAnnonce == 0) { + $strIdAnn = "Waldec='$siren'"; + } else { + $strIdAnn = "siren=$siren"; + } + + $bodacc=$this->iDb->select('asso', "COUNT(*) AS nb", "$strIdAnn AND dateSuppr=0", false, MYSQL_ASSOC); + $nb = 0; + if (count($bodacc)>0) { + $nb = $bodacc[0]['nb']; + } + return $nb; + } + /** @todo $nic inutilisé pour l'instant **/ function getIdentitePart($siren, $rs, $enseigne, $sigle, $nic=0, $refresh=false) { @@ -5270,11 +5442,12 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ $tabRet['L6_POST']=$l6; return $tabRet; + /** RNCS ? **/ /*$tabTmp=$this->iDb->select('rncs_etab','enseigne, nomCommercial, adrNumVoie, adrIndRep, adrLibVoie, adrTypeVoie, adrVoie, cp, commune, adrComp, adresse1, adresse2, adresse3', "siren=$siren AND nic=$nic", false, MYSQL_ASSOC); - $tabIdentite=$tabTmp[0];* + $tabIdentite=$tabTmp[0];*/ } function getActivite($siren, $nic=0) { @@ -5716,9 +5889,9 @@ 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, insEVE, insDESTINAT, insTYPETAB, insORIGINE', - "insSIREN=$siren AND insNIC<>$nic AND insEVE IN ('510','520','530','540') AND insDATEMAJ IN ( - SELECT insDATEMAJ FROM insee_even WHERE insSIREN=$siren AND insNIC=$nic AND insEVE IN ('510','520','530','540') )", 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', + "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); foreach ($ret as $iRet=>$tabEve) { switch($tabEve['insTYPETAB']*1) { case 8: @@ -5736,22 +5909,32 @@ ORDER BY a.dateJugement DESC".EOL.EOL.print_r($collecte,true));*/ $typeLien='suc'; break; default: - if ($lien<>0) continue; - $typeLien='ind'; - break; + switch($tabEve['insTRAN']) { + case 'D': if ($lien==1) continue; $typeLien='pre'; break(2); + case 'A': if ($lien==-1) continue; $typeLien='suc'; break(2); + default : if ($lien<>0) continue; $typeLien='ind'; break; + } } + + $adr1=$tabEve['insL1_NOMEN']; + if ($adr1==NULL) $adr1=$tabEve['insNOMEN']; + $adr2=$tabEve['insL2_COMP']; + if ($adr2==NULL) $adr2=$tabEve['insENSEIGNE']; + $adr4=$tabEve['insL4_VOIE']; + if ($adr4==NULL) $adr4=preg_replace('/ +/',' ', $tabEve['insNUMVOIE'].' '.$tabEve['insINDREP'].' '.$tabEve['insTYPVOIE'].' '.$tabEve['insLIBVOIE']); + $tabRet[$typeLien]=array('siren' => $tabEve['insSIREN'], 'nic' => $tabEve['insNIC'], 'apeEtab' => $tabEve['insAPET700'], 'codeEve' => $tabEve['insEVE'], 'dateEve' => $tabEve['insDATEVE'], - 'adrL1' => $tabEve['insL1_NOMEN'], - 'adrL2' => $tabEve['insL2_COMP'], - 'adrL3' => prepareString($tabEve['insL3_CADR']), - 'adrL4' => $tabEve['insL4_VOIE'], - 'adrL5' => $tabEve['insL5_DISP'], - 'adrL6' => $tabEve['insL6_POST'], - 'adrL7' => $tabEve['insL7_ETRG'], + 'adrL1' => trim($adr1), + 'adrL2' => trim($adr2), + 'adrL3' => trim(prepareString($tabEve['insL3_CADR'])), + 'adrL4' => trim($adr4), + 'adrL5' => trim($tabEve['insL5_DISP']), + 'adrL6' => trim($tabEve['insL6_POST']), + 'adrL7' => trim($tabEve['insL7_ETRG']), 'depCom' => $tabEve['insDEPCOM'], 'rivoli' => $tabEve['insCODEVOIE'], 'siege' => $tabEve['insSIEGE'],