authenticate(); $this->permission('identite'); //Initialisation if (empty($id)) { $id = 0; } $forceVerif = false; $tabRet = array(); $len = strlen($siret); $siren = substr($siret,0,9); if ($len == 14) { $nic = substr($siret,9,5)*1; } elseif ($len == 9) { $nic = 0; } if ($siren*1==0 && $id==0) { $this->sendError('1010'); } elseif ($len!=14 && $len!=9) { $this->sendError('1020'); } $iInsee = new MInsee(); $entrep = $iInsee->getIdentiteEntreprise($siren, $nic, $id, $forceVerif); if (empty($entrep) || empty($entrep['id']) ) { debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1020'); } $iBourse = new MBourse($siren); $bourse = $iBourse->getInfosBourse($siren); $identite = new Identite(); $identite->id = $entrep['id']; $identite->Siret = $entrep['Siret']; $identite->SiretSiege = $entrep['SiretSiege']; $identite->Siege = $entrep['Siege']; $identite->AncienSiege = $entrep['AncienSiege']; $identite->AncienSiegeDateFin = $entrep['AncienSiegeDateFin']; $identite->TribunalCode = prepareString($entrep['Tribunal']); $identite->TribunalLib = prepareString($entrep['TribunalLib']); //'NumGreffe' = $entrep['numGreffe'], // Ajouté le 4 08 2009 $identite->NumRC = $entrep['numRC']; // Ajouté le 4 08 2009 $identite->Actif = $entrep['Actif']; $identite->ActifEco = $entrep['ActifEco']; // Etab éco actif, ajout le 28/04/2011 $identite->ActifEcoDate = $entrep['ActifEcoDate']; // Date si éco inactif et jur actif $identite->ActifEcoType = $entrep['ActifEcoType']; // vide ou NPAI ou PFER ou ECOF $identite->EntActiveRCS = $entrep['EntActiveRCS']; $identite->AutreId = $entrep['AutreId']; $identite->Source = $entrep['Source']; $identite->SourceId = $entrep['SourceId']; $identite->Isin = $entrep['Isin']; $identite->Nom = $entrep['NOMEN_LONG']; if (empty($identite->Nom)) { $identite->Nom = prepareString(strtr($entrep['Nom'],'/*',' ')); } $identite->Nom2 = prepareString($entrep['Nom2']); $identite->NomLong = prepareString($entrep['nomLong']); // Ajouté le 4 08 2009 $identite->NomCommercial = prepareString($entrep['NomCommercial']); // Ajouté le 16 11 2010 $identite->Siret = $entrep['Siret']; $identite->Sigle = prepareString($entrep['Sigle']); $identite->SigleLong = prepareString($entrep['sigleLong']); // Ajouté le 4 08 2009 $identite->Enseigne = prepareString($entrep['Enseigne']); $identite->EnseigneLong = prepareString($entrep['enseigneLong']); // Ajouté le 16 11 2010 $identite->Adresse = prepareString($entrep['Adresse']); $identite->Adresse2 = prepareString($entrep['Adresse2']); $identite->AdresseNum = prepareString($entrep['AdresseNum']); $identite->AdresseBtq = prepareString($entrep['AdresseBtq']); $identite->AdresseVoie = prepareString($entrep['AdresseVoie']); $identite->AdresseRue = prepareString($entrep['AdresseRue']); $identite->CP = $entrep['CP']; $identite->Ville = prepareString($entrep['Ville']); $identite->Pays = prepareString($entrep['Pays']); // Ajouté le 18 02 2008 $identite->PaysIso2 = $entrep['PaysIso2']; $identite->AdresseDom = $entrep['AdresseDom']; $tabAdresseDomEnt = array(); if (isset($entrep['AdresseDomEnt']) && count($entrep['AdresseDomEnt'])>0){ foreach ($entrep['AdresseDomEnt'] as $element){ $adresseDomEnt = new AdresseDomEnt(); $adresseDomEnt->siren = $element['siren']; $adresseDomEnt->nom = $element['nom']; $tabAdresseDomEnt[] = $adresseDomEnt; } } $identite->AdresseDomEnt = $tabAdresseDomEnt; $identite->AdresseDomNb = $entrep['AdresseDomNb']; $identite->Civilite = $entrep['Civilite']; $identite->NbEtab = $entrep['NbEtab']; $identite->Tel = prepareString($entrep['Tel']); $identite->Fax = prepareString($entrep['Fax']); $identite->Web = prepareString($entrep['Web']); $identite->Mail = prepareString($entrep['Mail']); $identite->GeoLat = $entrep['GeoLat']; $identite->GeoLon = $entrep['GeoLon']; $identite->GeoPrecis = $entrep['GeoPrecis']; $geoInfos = new GeoInfos(); $geoInfos->CUCS = $entrep['GeoInfos']['CUCS']; $geoInfos->NCUCS = $entrep['GeoInfos']['NCUCS']; $geoInfos->ZRU = $entrep['GeoInfos']['ZRU']; $geoInfos->NZRU = $entrep['GeoInfos']['NZRU']; $geoInfos->ZFU = $entrep['GeoInfos']['ZFU']; $geoInfos->NZFU = $entrep['GeoInfos']['NZFU']; $geoInfos->ZUS = $entrep['GeoInfos']['ZUS']; $geoInfos->NZUS = $entrep['GeoInfos']['NZUS']; $geoInfos->AFR = $entrep['GeoInfos']['AFR']; $geoInfos->NAFR = $entrep['GeoInfos']['NAFR']; $geoInfos->ZRR = $entrep['GeoInfos']['ZRR']; $geoInfos->NZRR = $entrep['GeoInfos']['NZRR']; $identite->GeoInfos = $geoInfos; $identite->TvaNumero = $entrep['TvaNumero']; $identite->TvaAttribue = $entrep['TvaAttribue']; $identite->FJ = $entrep['FJ']; $identite->FJ_Lib = $entrep['FJ_lib']; $identite->FJ2 = $entrep['FJ2']; // Ajouté le 4 08 2009 $identite->FJ2_Lib = $entrep['FJ2_Lib']; // Ajouté le 4 08 2009 $identite->Siren = $entrep['Siren']; $identite->Nic = $entrep['Nic']; $identite->NafEnt = $entrep['NafEnt']; $identite->NafEntLib = $entrep['NafEntLib']; $identite->NafEtab = $entrep['NafEtab']; $identite->NafEtabLib = $entrep['NafEtabLib']; $identite->NaceEtab = $entrep['NaceEtab']; $identite->NaceEnt = $entrep['NaceEnt']; $identite->Nafa = $entrep['APRM']; $identite->NafaLib = prepareString($entrep['APRM_Lib']); $identite->NumRM = $entrep['NumRM']; $identite->Activite = $entrep['Activite']; $identite->Capital = $entrep['Capital']; $identite->CapitalDev = $entrep['CapitalDev']; $identite->CapitalLib = $entrep['CapitalLib']; // Ajouté le 18 02 2008 $identite->CapitalType = prepareString($entrep['CapitalType']); // Ajouté le 4 08 2009 $classWdate = new WDate(); $identite->DateCreaEt = $classWdate->dateT('Ymd','Y-m-d',$entrep['DateCreaEt']); $identite->DateCreaEn = $classWdate->dateT('Ymd','Y-m-d',$entrep['DateCreaEn']); $identite->DateClotEt = $entrep['DateClotEt']; //@todo : date $identite->DateImmat = $entrep['dateImmat']; // Ajouté le 4 08 2009 $identite->DateRadiation = $entrep['dateRad']; // Ajouté le 4 08 2009 //'DateMajRCS' = $entrep['DateMajRCS'], // Ajouté le 4 08 2009 $identite->EffEnTr = $entrep['EffEnTr']; $identite->EffEnTrLib = $entrep['EffEnTrLib']; $identite->Effectif = $entrep['Effectif']; $identite->EffEtTr = $entrep['EffEtTr']; // Ajout le 11 08 2010 $identite->EffEtTrLib = $entrep['EffEtTrLib']; // Ajout le 11 08 2010 $identite->EffectifEtab = $entrep['EffectifEtab']; // Ajout le 11 08 2010 $identite->Dept = $entrep['Dept']; $identite->codeCommune = prepareString($entrep['codeCommune']); $identite->AnneeEffEn = $entrep['AnneeEffEn']; $identite->AnneeEffEt = $entrep['AnneeEffEt']; $identite->AnneeTCA = $entrep['AnneeTCA']; $identite->TrancheCA = $entrep['TrancheCA']; $identite->TrancheCALib = $entrep['TrancheCALib']; $identite->TrancheCAType = $entrep['TrancheCAType']; $identite->dir1Code = $entrep['dir1Code']; $identite->dir1Titre = prepareString($entrep['dir1Titre']); $identite->dir1NomPrenom = prepareString($entrep['dir1NomPrenom']); $identite->dir1DateFct = prepareString($entrep['dir1DateFct']); //@todo : date $identite->dir1DateNaiss = $entrep['dir1DateNaiss']; //@todo : date // Ajouté le 4 08 2009 $identite->dir1LieuNaiss = prepareString($entrep['dir1LieuNaiss']); // Ajouté le 4 08 2009 $identite->dir2Code = $entrep['dir2Code']; $identite->dir2Titre = prepareString($entrep['dir2Titre']); $identite->dir2NomPrenom = prepareString($entrep['dir2NomPrenom']); $identite->dir2DateFct = $entrep['dir2DateFct']; //@todo : date $identite->dir2DateNaiss = prepareString($entrep['dir2DateNaiss']); //@todo : date // Ajouté le 4 08 2009 $identite->dir2LieuNaiss = prepareString($entrep['dir2LieuNaiss']); // Ajouté le 4 08 2009 $identite->Rivoli = $entrep['Rivoli']; $identite->InfosIris->codIris = $entrep['InfosIris']['codIris']; $identite->InfosIris->codComIris = $entrep['InfosIris']['codComIris']; $identite->InfosIris->libIris = prepareString($entrep['InfosIris']['libIris']); $identite->InfosIris->typIris = prepareString($entrep['InfosIris']['typIris']); $identite->InfosIris->evoIris = $entrep['InfosIris']['evoIris']; $identite->InfosIris->trIris = $entrep['InfosIris']['trIris']; $identite->InfosIris->grdQuartier = $entrep['InfosIris']['grdQuartier']; $identite->NatureActivite = $entrep['NatureActivite']; // Nature de l'activité $identite->OrigineCreation = $entrep['OrigineCreation']; // Origine de la création $identite->TypeExploitation = $entrep['TypeExploitation']; $identite->Auxiliaire = $entrep['Auxiliaire']; // 1=Auxiliaire / 0=Non auxiliaire $identite->Saisonnalite = $entrep['Saisonnalite']; // P=Activité permanente / S=Activité saisonnière $identite->SurfaceMagasin = $entrep['ACTISURF']*1; // 0=N/D, 1=inf. à 300m2,2=300 à 400m2, 3=400 à 2500m2, 4=sup. à 2500m2 $identite->SituationJuridique = $entrep['SituationJuridique']; $identite->Bilan->Millesime = $entrep['bilanAnnee']; $identite->Bilan->Cloture = $entrep['bilanDate']; //@todo : date $identite->Bilan->Duree = $entrep['bilanMois']; $identite->Bilan->Devise = $entrep['bilanDevise']; $identite->Bilan->Capital = $entrep['bilanDA']; $identite->Bilan->CA = $entrep['bilanFL']; $identite->Bilan->CAestime = $entrep['bilanFLestime']; $identite->Bilan->Resultat = prepareString($entrep['bilanHN']); $identite->Bilan->Effectif = $entrep['bilanYP']; $identite->Bourse->placeCotation = $bourse['placeCotation']; $identite->Bourse->nombreTitres = $bourse['nombreTitres']; $identite->Bourse->capitalisation = $bourse['close']*$bourse['nombreTitres']; $identite->Bourse->derCoursDate = $bourse['date']; //@todo : date $identite->Bourse->derCoursCloture = $bourse['close']; //@todo : date $tabAutreSiren = array(); if (isset($entrep['AutreSiren'])) { $autreSiren = new AutreSiren(); $autreSiren->siren = $entrep['AutreSiren']['listeSiren']['siren']; $autreSiren->type = $entrep['AutreSiren']['listeSiren']['type']; $tabAutreSiren[] = $autreSiren; } $identite->AutreSiren = $tabAutreSiren; $tabAutreSiret = array(); if (count($entrep['AutreSiret'])) { foreach($entrep['AutreSiret'] as $type => $item) { $autreSiret = new AutreSiret(); $autreSiret->type = $type; $autreSiret->siren = $item['siren']; $autreSiret->nic = $item['nic']; $autreSiret->apeEtab = $item['apeEtab']; $autreSiret->codeEve = $item['codeEve']; $autreSiret->dateEve = $item['dateEve']; $autreSiret->adrL1 = $item['adrL1']; $autreSiret->adrL2 = $item['adrL2']; $autreSiret->adrL3 = $item['adrL3']; $autreSiret->adrL4 = $item['adrL4']; $autreSiret->adrL5 = $item['adrL5']; $autreSiret->adrL6 = $item['adrL6']; $autreSiret->adrL7 = $item['adrL7']; $autreSiret->depCom = $item['depCom']; $autreSiret->rivoli = $item['rivoli']; $autreSiret->siege = $item['siege']; $autreSiret->destinat = $item['destinat']; $autreSiret->typEtab = $item['typeEtab']; $autreSiret->origine = $item['origine']; $tabAutreSiret[] = $autreSiret; } } $identite->AutreSiret = $tabAutreSiret; $identite->DateMajINSEE = $entrep['DateMajINSEE']; //@todo : date $identite->DateMajRCS = $entrep['DateMajRCS']; //@todo : date $identite->DateMajBILAN = $entrep['bilanDateMaj']; //@todo : date $identite->DateMajANN = $entrep['dateMajANN']; //@todo : date $identite->DateMajID = $entrep['dateMajIdentite']; //@todo : date if (preg_match('/NAF4/i', $this->User->pref)) { $entrep2 = $iInsee->getNaf4($siren, $nic, $id); if ( $entrep2 !== false ) { $identite->Naf4Ent = $entrep2['apen4']; $identite->Naf4Etab = $entrep2['apet4']; $identite->Naf4EntLib = prepareString($entrep2['apen4_lib']); $identite->Naf4EtabLib = prepareString($entrep2['apet4_lib']); } } $this->wsLog('identite',$siret,$id); return $identite; } /** * Avis RNCS * @param string $siren * @return AvisRncs */ public function getAvisRncs($siren) { $this->authenticate(); $this->permission('avisrncs'); $len = strlen($siren); if ( $len != 9 ) { $this->sendError('1020'); } $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $output = new AvisRncs(); $iDb = new WDB(); $rncs = new MRncs($iDb); //jo.etablissements => insee uniquement, rncs ? //Entreprise $infosEtab = $rncs->getIdentiteEtab($siren); if ( $infosEtab === false ) { throw new SoapFault('MSG', "Cette entreprise n'est pas inscrite au RNCS ou radié depuis plus de 5 ans."); } $output->Nom = $infosEtab['raisonSociale']; //@todo personne physique $output->Sigle = $infosEtab['sigle']; $output->Enseigne = $infosEtab['enseigne']; $output->NomCommercial = $infosEtab['nomCommercial']; $output->Siren = $infosEtab['siren']; $output->NumGest = $infosEtab['numRC']; $output->RadiationDate = $infosEtab['dateRad']; $output->ImmatDate = $infosEtab['dateImma']; $output->NafCode = $infosEtab['nafEnt']; $output->NafLabel = $infosEtab['nafEntLib']; if (empty($infosEtab['dateRad']) || $infosEtab['dateRad'] = '0000-00-00') { $output->TribunalCode = $infosEtab['triCode']; //@todo $output->TribunalLabel = $infosEtab['libGreffe']; // @todo $output->FjCode = $infosEtab['cj']; $output->FjLabel = $infosEtab['cjLib']; $output->Capital = $infosEtab['capital']; $output->CapitalDev = 'EUR'; if ( !empty($infosEtab['capitalDevIso'])) { $output->CapitalDev = $infosEtab['capitalDevIso']; } $output->CapitalType = $infosEtab['capitalType']; $output->SiegeAdresseNum = $infosEtab['adrNumVoie']; $output->SiegeAdresseBtq = $infosEtab['adrIndRep']; $output->SiegeAdresseVoieType = $infosEtab['adrTypeVoie'] ; $output->SiegeAdresseVoieLabel = $infosEtab['adrVoie']; $output->SiegeAdresseComp = $infosEtab['adrComp']; $output->SiegeAdresseCP = $infosEtab['cp']; $output->SiegeAdresseVille = $infosEtab['commune']; $output->DateMajRCS = $infosEtab['DateMajRCS']; //Durée de la société - impossible $output->DureeDate = ''; //Date du dernier bilan - MOIS/JOUR au pire chercher dans l'annonce try { $bilanM = new Application_Model_JoBilans(); $sql = $bilanM->select(true) ->columns(array('dateExercice')) ->where('siren=?', $siren) ->order('dateExercice DESC')->limit(1); $result = $bilanM->fetchRow($sql); if ($result !== null) { $output->CompteArretMois = substr($result->dateExercice,4,2); $output->CompteArretJour = substr($result->dateExercice,6,2); } } catch(Zend_Db_Exception $e) {} //=> Avec l'adresse du premier siège $output->ConstitutionTribunalCode = ''; $output->ConstitutionTribunalLabel = ''; $iInsee = new MInsee($iDb); $dirs = $iInsee->getDirigeants($siren, false); $liste = array(); foreach ($dirs as $nb => $dir) { $dirigeant = new AvisRncsAdmin(); $dirigeant->Code = $dir['Fonction']; $dirigeant->Label = $dir['Titre']; $dirigeant->CompanyName = $dir['Societe']; $dirigeant->CompanyId = (array_key_exists('Siren', $dir) && intval($dir['Siren'])!=0) ? $dir['Siren'] : '' ; $dirigeant->Civilite = $dir['Civilite']; $dirigeant->Nom = $dir['Nom']; $dirigeant->Prenom = $dir['Prenom']; $dirigeant->NomUsage = $dir['NomUsage']; $dirigeant->NaissanceDate = $dir['NaissDate']; $dirigeant->NaissanceVille = $dir['NaissVille']; $dirigeant->NaissanceCp = $dir['NaissDepPays']; $liste[] = $dirigeant; } $output->Administration = $liste; $insee = $iInsee->getIdentiteEntreprise($siren); //Origine, code à transformer - getIdentiteEntreprise - insee $output->Origine = $insee['OrigineCreation']; //Activité réelle - getIdentiteEntreprise - insee $output->Activite = $insee['Activite']; $output->BodaccActivite = $insee['Activite']; //Date de création à l'insee - getIdentiteEntreprise - insee $output->ActiviteDate = substr($insee['DateCreaEn'],0,4).'-'.substr($insee['DateCreaEn'],4,2).'-'.substr($insee['DateCreaEn'],6,2); //Type d'exploitation - getIdentiteEntreprise - insee $output->Exploitation = $insee['TypeExploitation']; //Liste des jugements $output->Evenements = array(); $evens = $rncs->getListeJugements($siren); if ( count($evens)>0 ) { foreach ( $evens as $even ) { $output->Evenements[] = $even['dateEffet'] . ' - ' . $even['libEven']; } } //Liste des dépots $output->Depots = array(); require_once 'Metier/Infogreffe/InfogreffeAc.php'; $infogreffe = new Metier_Infogreffe_Ac($siren); $depots = $infogreffe->getList(true); if ( count($depots)>0 ) { $i = 0; $listNumDepot = array(); foreach ( $depots as $depot ) { $acte = new AvisRncsDepot(); $acte->DepotNum = $depot->DepotNum; $acte->DepotDate = $depot->DepotDate; $acte->ActeNum = $depot->ActeNum; $acte->ActeDate = $depot->ActeDate; $acte->ActeType = $depot->ActeType; $acte->ActeTypeLabel = $depot->ActeTypeLabel; $acte->infos = $depot->infos; $result = $rncs->getListeDepots($siren, $depot->DepotDate); if (count($result)>0) { foreach ($result as $infos) { $acte->infos[] = $infos['libDepot']; } } //Acte constitutif - Statut $date = substr($depot->ActeDate,0,4); if ( in_array($depot->ActeType, array('04')) && intval($date)>1995 ) { $output->ConstitutionActeDate = $depot->ActeDate; $output->ConstitutionDepotDate = $depot->DepotDate; } $i++; if ($i < 4 || $i > count($depots)-4) { $output->Depots[] = $acte; } } } //Liste des établissements actifs au RNCS $output->Etablissements = array(); $result = $iInsee->getEtablissements($siren, '', 0, 200, 200, 0, 1); if ( count($result['reponses'])>0 ) { foreach ( $result['reponses'] as $item ) { $output->Etablissements[] = $item['Adresse'] . ' ' . $item['Adresse2'] . ' - ' . $item['CP'] . ' ' . strtoupper($item['Ville']); } } } $this->wsLog('avisrncs', $siren); return $output; } /** * Retourne les informations identitaires de l'entreprise ou de l'établissement demandé * @param string $siret Siren de l'entreprise ou siret de l'établissement * @param integer $id Identifiant S&D de l'établissement * @return IdentiteProcol Fiche d'identité de l'établissement */ public function getIdentiteProcol($siret, $id=0, $forceVerif=false) { $this->authenticate(); $this->permission('idprocol'); debugLog('I',"Identité AGS demandée pour siret $siret (id=$id)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabRet = array(); $siret = trim($siret); $len = strlen($siret); $siren = substr($siret,0,9); if ($len == 14) { $nic = substr($siret,9,5)*1; } elseif ($len == 9) { $nic = 0; } if (intval($siren)==0 && $id==0) { $this->sendError('1010'); } elseif ($len!=14 && $len!=9) { $this->sendError('1020'); } $iInsee = new MInsee(); $entrep = $iInsee->getIdentiteEntreprise($siren, $nic, $id, $forceVerif); if (empty($entrep)) { debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1020'); } $iBourse = new MBourse($siren); $bourse = $iBourse->getInfosBourse($siren); $identiteProcol = new IdentiteProcol(); //Element identite $identite = new Identite(); $identite->id = $entrep['id']; $identite->Siret = $entrep['Siret']; $identite->SiretSiege = $entrep['SiretSiege']; $identite->Siege = $entrep['Siege']; $identite->TribunalCode = $entrep['Tribunal']; $identite->TribunalLib = $entrep['TribunalLib']; $identite->NumRC = $entrep['numRC']; // Ajouté le 4 08 2009 $identite->Actif = $entrep['Actif']; $identite->EntActiveRCS = $entrep['EntActiveRCS']; $identite->AutreId = $entrep['AutreId']; $identite->Source = $entrep['Source']; $identite->SourceId = $entrep['SourceId']; $identite->Isin = $entrep['Isin']; $identite->Nom = strtr($entrep['Nom'],'/*',' '); $identite->Nom2 = $entrep['Nom2']; $identite->NomLong = $entrep['nomLong']; // Ajouté le 4 08 2009 $identite->NomCommercial = $entrep['NomCommercial']; // Ajouté le 16 11 2010 $identite->Siret = $entrep['Siret']; $identite->Sigle = $entrep['Sigle']; $identite->SigleLong = $entrep['sigleLong']; // Ajouté le 4 08 2009 $identite->Enseigne = $entrep['Enseigne']; $identite->EnseigneLong = $entrep['enseigneLong']; // Ajouté le 16 11 2010 $identite->Adresse = $entrep['Adresse']; $identite->Adresse2 = $entrep['Adresse2']; $identite->AdresseNum = $entrep['AdresseNum']; $identite->AdresseBtq = $entrep['AdresseBtq']; $identite->AdresseVoie = $entrep['AdresseVoie']; $identite->AdresseRue = $entrep['AdresseRue']; $identite->CP = $entrep['CP']; $identite->Ville = $entrep['Ville']; $identite->Pays = $entrep['Pays']; // Ajouté le 18 02 2008 $identite->PaysIso2 = $entrep['PaysIso2']; $identite->AdresseDom = $entrep['AdresseDom']; $tabAdresseDomEnt = array(); if (isset($entrep['AdresseDomEnt']) && count($entrep['AdresseDomEnt'])>0){ foreach ($entrep['AdresseDomEnt'] as $element){ $adresseDomEnt = new AdresseDomEnt(); $adresseDomEnt->siren = $element['siren']; $adresseDomEnt->nom = $element['nom']; $tabAdresseDomEnt[] = $adresseDomEnt; } } $identite->AdresseDomEnt = $tabAdresseDomEnt; $identite->AdresseDomNb = $entrep['AdresseDomNb']; $identite->Civilite = $entrep['Civilite']; $identite->NbEtab = $entrep['NbEtab']; $identite->Tel = $entrep['Tel']; $identite->Fax = $entrep['Fax']; $identite->Web = $entrep['Web']; $identite->Mail = $entrep['Mail']; $identite->GeoLat = $entrep['GeoLat']; $identite->GeoLon = $entrep['GeoLon']; $identite->GeoPrecis = $entrep['GeoPrecis']; $identite->GeoInfos = $entrep['GeoInfos']; $identite->TvaNumero = $entrep['TvaNumero']; $identite->TvaAttribue = $entrep['TvaAttribue']; $identite->FJ = $entrep['FJ']; $identite->FJ_Lib = $entrep['FJ_lib']; $identite->FJ2 = $entrep['FJ2']; // Ajouté le 4 08 2009 $identite->FJ2_Lib = $entrep['FJ2_Lib']; // Ajouté le 4 08 2009 $identite->Siren = $entrep['Siren']; $identite->Nic = $entrep['Nic']; $identite->NafEnt = $entrep['NafEnt']; $identite->NafEntLib = $entrep['NafEntLib']; $identite->NafEtab = $entrep['NafEtab']; $identite->NafEtabLib = $entrep['NafEtabLib']; $identite->NaceEtab = $entrep['NaceEtab']; $identite->NaceEnt = $entrep['NaceEnt']; $identite->Nafa = $entrep['APRM']; $identite->NafaLib = $entrep['APRM_Lib']; $identite->NumRM = $entrep['NumRM']; $identite->Activite = $entrep['Activite']; $identite->Capital = $entrep['Capital']; $identite->CapitalDev = $entrep['CapitalDev']; $identite->CapitalLib = $entrep['CapitalLib']; // Ajouté le 18 02 2008 $identite->CapitalType = $entrep['CapitalType']; // Ajouté le 4 08 2009 $identite->DateCreaEt = WDate::dateT('Ymd','Y-m-d',$entrep['DateCreaEt']); $identite->DateCreaEn = WDate::dateT('Ymd','Y-m-d',$entrep['DateCreaEn']); $identite->DateClotEt = $entrep['DateClotEt']; //@todo : date $identite->DateImmat = $entrep['dateImmat']; // Ajouté le 4 08 2009 $identite->DateRadiation = $entrep['dateRad']; // Ajouté le 4 08 2009 $identite->EffEnTr = $entrep['EffEnTr']; $identite->EffEnTrLib = $entrep['EffEnTrLib']; $identite->Effectif = $entrep['Effectif']; $identite->EffEtTr = $entrep['EffEtTr']; // Ajout le 11 08 2010 $identite->EffEtTrLib = $entrep['EffEtTrLib']; // Ajout le 11 08 2010 $identite->EffectifEtab = $entrep['EffectifEtab']; // Ajout le 11 08 2010 $identite->Dept = $entrep['Dept']; $identite->codeCommune = $entrep['codeCommune']; $identite->AnneeEffEn = $entrep['AnneeEffEn']; $identite->AnneeEffEt = $entrep['AnneeEffEt']; $identite->AnneeTCA = $entrep['AnneeTCA']; $identite->TrancheCA = $entrep['TrancheCA']; $identite->TrancheCALib = $entrep['TrancheCALib']; $identite->dir1Code = $entrep['dir1Code']; $identite->dir1Titre = $entrep['dir1Titre']; $identite->dir1NomPrenom = $entrep['dir1NomPrenom']; $identite->dir1DateFct = $entrep['dir1DateFct']; //@todo : date $identite->dir1DateNaiss = $entrep['dir1DateNaiss']; //@todo : date // Ajouté le 4 08 2009 $identite->dir1LieuNaiss = $entrep['dir1LieuNaiss']; // Ajouté le 4 08 2009 $identite->dir2Code = $entrep['dir2Code']; $identite->dir2Titre = $entrep['dir2Titre']; $identite->dir2NomPrenom = $entrep['dir2NomPrenom']; $identite->dir2DateFct = $entrep['dir2DateFct']; //@todo : date $identite->dir2DateNaiss = $entrep['dir2DateNaiss']; //@todo : date // Ajouté le 4 08 2009 $identite->dir2LieuNaiss = $entrep['dir2LieuNaiss']; // Ajouté le 4 08 2009 $identite->Rivoli = $entrep['Rivoli']; $identite->InfosIris->codIris = $entrep['InfosIris']['codIris']; $identite->InfosIris->codComIris = $entrep['InfosIris']['codComIris']; $identite->InfosIris->libIris = $entrep['InfosIris']['libIris']; $identite->InfosIris->typIris = $entrep['InfosIris']['typIris']; $identite->InfosIris->evoIris = $entrep['InfosIris']['evoIris']; $identite->InfosIris->trIris = $entrep['InfosIris']['trIris']; $identite->InfosIris->grdQuartier = $entrep['InfosIris']['grdQuartier']; $identite->NatureActivite = $entrep['NatureActivite']; // Nature de l'activité $identite->OrigineCreation = $entrep['OrigineCreation']; // Origine de la création $identite->TypeExploitation = $entrep['TypeExploitation']; $identite->Auxiliaire = $entrep['Auxiliaire']; // 1=Auxiliaire / 0=Non auxiliaire $identite->Saisonnalite = $entrep['Saisonnalite']; // P=Activité permanente / S=Activité saisonnière $identite->SituationJuridique = $entrep['SituationJuridique']; $identite->Bilan->Cloture = $entrep['bilanDate']; //@todo : date $identite->Bilan->Duree = $entrep['bilanMois']; $identite->Bilan->Devise = $entrep['bilanDevise']; $identite->Bilan->Capital = $entrep['bilanDA']; $identite->Bilan->CA = $entrep['bilanFL']; $identite->Bilan->Resultat = $entrep['bilanHN']; $identite->Bilan->Effectif = $entrep['bilanYP']; $identite->Bourse->placeCotation = $bourse['placeCotation']; $identite->Bourse->nombreTitres = $bourse['nombreTitres']; $identite->Bourse->capitalisation = $bourse['close']*$bourse['nombreTitres']; $identite->Bourse->derCoursDate = $bourse['date']; //@todo : date $identite->Bourse->derCoursCloture = $bourse['close']; //@todo : date $tabAutreSiren = array(); if (isset($entrep['AutreSiren'])) { $autreSiren = new AutreSiren(); $autreSiren->siren = $entrep['AutreSiren']['listeSiren']['siren']; $autreSiren->type = $entrep['AutreSiren']['listeSiren']['type']; $tabAutreSiren[] = $autreSiren; } $identite->AutreSiren = $tabAutreSiren; $identite->DateMajINSEE = $entrep['DateMajINSEE']; //@todo : date $identite->DateMajRCS = $entrep['DateMajRCS']; //@todo : date $identite->DateMajBILAN = $entrep['bilanDateMaj']; //@todo : date $identite->DateMajANN = $entrep['dateMajANN']; //@todo : date $identite->DateMajID = $entrep['dateMajIdentite']; //@todo : date if (preg_match('/NAF4/i', $this->User->pref)) { $entrep2 = $iInsee->getNaf4($siren, $nic, $id); if ( $entrep2 !== false ) { $identite->Naf4Ent = $entrep2['apen4']; $identite->Naf4Etab = $entrep2['apet4']; $identite->Naf4EntLib = prepareString($entrep2['apen4_lib']); $identite->Naf4EtabLib = prepareString($entrep2['apet4_lib']); } } $identiteProcol->Identite = $identite; //Eléments annonces légales $tabRetAnn = $tabLastEven = array(); if (intval($siren)!=0) { $anns = $this->getAnnonces($siren, 1); $anns = $anns->result; $tribunalProcol = false; foreach ($anns as $nb=>$ann) { $tabRetEven = array(); foreach ($ann->evenements as $tabEven) { // On ignore les éléments suivants if ($tabEven->CodeEven>=7000) continue; if ($tabEven->CodeEven>=4000 && $tabEven->CodeEven<=4999) continue; // Par défaut, on force le tribunal à celui présent dans la dernière annonce de Procol if ($tribunalProcol==false && $tabEven->CodeEven>=1000 && $tabEven->CodeEven<2000 && $ann->BodaccCode=='BODA') { $identiteProcol->TribunalCode = $ann->TribunalCode; $identiteProcol->TribunalLib = prepareString($ann->Tribunal); $tribunalProcol=true; } // On ne prend que le dernier élément de chaque type if (in_array($tabEven->CodeEven, $tabLastEven)) continue; $tabLastEven[] = $tabEven->CodeEven; $tabRetEven[] = $tabEven; } if (count($tabRetEven)>0) { $annonce = new Annonce(); $annonce->id = $ann->id; $annonce->BodaccCode = $ann->BodaccCode; $annonce->BodaccNum = $ann->BodaccNum; $annonce->NumAnnonce = $ann->NumAnnonce; $annonce->DateParution = $ann->DateParution; //@todo : date $annonce->Departement = $ann->Departement; $annonce->Tribunal = $ann->Tribunal; $annonce->TribunalCode = $ann->TribunalCode; $annonce->TribunalSiret = $ann->TribunalSiret; $annonce->Rubrique = $ann->Rubrique; $annonce->typeAnnonce = $ann->typeAnnonce; $annonce->texteRectificatif = $ann->texteRectificatif; $annonce->texteAnnonce = utf8_encode($ann->texteAnnonce); $annonce->dateEffet = $ann->dateEffet; //@todo : date $annonce->dateJugement = $ann->dateJugement; //@todo : date $annonce->dateInsertionSD = $ann->dateInsertionSD; //@todo : date $annonce->evenements = $tabRetEven; $annonce->Lien_Annonce_Pdf = $ann->Lien_Annonce_Pdf; $tabRetAnn[] = $annonce; } } $identiteProcol->Annonces = $tabRetAnn; $iRncs = new MRncs(); if ($entrep['Siege']==1 || $entrep['Siege']==11) { $identiteProcol->LibTypeEtab = 'Etablissement Siege'; } else { $tabEtabRncs = $iRncs->getIdentiteEtab($siren, $entrep['Nic']); if ($tabEtabRncs['Siege']==2) $identiteProcol->LibTypeEtab = 'Etablissement Principal'; elseif ($tabEtabRncs['Siege']==1) $identiteProcol->LibTypeEtab = 'Etablissement Complementaire'; elseif ($tabEtabRncs['Siege']==0) $identiteProcol->LibTypeEtab = 'Etablissement Secondaire'; } //@todo $tabJuge = $iRncs->getIntervenants($siren); $tabDepots=array(); foreach ($tabJuge as $iDepot=>$depot) { $organe = new Organe(); $organe->codEven = $depot['codEven']; $organe->libEven = prepareString($depot['libEven']); $organe->dateEffet = $depot['dateEffet']; $organe->admcode = $depot['admcode']; $organe->admfonction = prepareString($depot['admfonction']); $organe->admnom = prepareString($depot['admnom']); $organe->admadrNum = $depot['admadrNum']; $organe->admadrInd = $depot['admadrInd']; $organe->admadrVoie = $depot['admadrVoie']; // @todo : adm1adr1, adm1adr2, adm1adr3, $organe->admadrCP = $depot['admadrCP']; $organe->admadrVille = $depot['admadrVille']; $tabDepots[] = $organe; } $identiteProcol->Organes = $tabDepots; require_once 'Metier/partenaires/classMLiens.php'; $mLiens = new MLiens($siren); $tabA = $mLiens->getActionnaires($siren, 1); $nbA = count($tabA); $tabAct = array(); foreach ($tabA as $i=>$lien) { $liens = new Actionnaire(); $liens->Pmin = $lien['Pmin']; $liens->MajMin = $lien['MajMin']; $liens->RaisonSociale = $lien['RaisonSociale']; $liens->Pays = $lien['Pays']; $liens->Siren = $lien['Siren']; $liens->Actif = $lien['Actif']; $tabAct[] = $liens; } $identiteProcol->Actionnaires = $tabAct; $iGreffes = new MGreffes(); $tabActes = $iGreffes->getListeActes($siren); $identiteProcol->StatutsModifDepot = $identiteProcol->StatutsModif = '0000-00-00'; foreach ($tabActes as $i=>$acte) { if ('_'.$acte['acte_type']=='_04') { // STATUTS CONSTITUTIFS $identiteProcol->StatutsConstDepot = $acte['depot_date']; // => 1997-12-18 $identiteProcol->StatutsConst = $acte['acte_date']; // => 1997-11-13 break; } elseif (in_array('_'.$acte['acte_type'], array( //'_04', // STATUTS CONSTITUTIFS '_06', // STATUTS A JOUR 9 0000-00-00 2009-09-02 17:05:55 '_07', // STATUTS A JOUR 9 0000-00-00 2009-09-02 17:05:55 '_08', // STATUTS A JOUR ET DECLARATION DE CONFORMITE 9 0000-00-00 2009-09-02 17:05:55 '_09', // STATUTS APRES TRANSFERT DE SIEGE 9 0000-00-00 2009-09-02 17:05:55 '_A1', // STATUTS 9 0000-00-00 2009-09-02 17:05:55 '_AH', // AVENANT AUX STATUTS ))) { // On ne prend que la dernière modif if ($identiteProcol->StatutsModifDepot=='0000-00-00' && $identiteProcol->StatutsModif=='0000-00-00') { $identiteProcol->StatutsModifDepot = $acte['depot_date'];// => 1997-12-18 $identiteProcol->StatutsModif = $acte['acte_date']; // => 1997-11-13 } } } /** Y a t il eu des informations relatives à une cession ? **/ $tabCes = $iGreffes->getInfosCessions($siren); if ($tabCes) { $identiteProcol->CessionJugeLib = $tabCes['cessJuge']; $identiteProcol->CessionJugeDate = $tabCes['cessDateJuge']; $identiteProcol->CessionAvisBodac = $tabCes['cessDateBod']; $identiteProcol->CessionInvenDate = $tabCes['cessDateInv']; $identiteProcol->CessionCAdeclare = $tabCes['cessCAdec']; $identiteProcol->CessionEffectif = $tabCes['cessEffectif']; $identiteProcol->CessionDesc = $tabCes['cessDesc']; $identiteProcol->CessionDescDate = $tabCes['cessDateDesc']; $identiteProcol->CessionOffreDate = $tabCes['cessDateLim']; $identiteProcol->CessionMandataire = $tabCes['cessMand']; } } //sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug $siren", print_r($tabRet,true)) ; debugLog('I', 'Etablissement retourné = '. $entrep['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('identite', $siret, $id); return $identiteProcol; } /** * Retourne les liens financiers pour une entreprise. * @param string $siren Siren de l'entreprise * @param string $type Type de lien (actionnaire|participation) * @return LiensReturn */ public function getLiens($siren, $type = null) { $this->authenticate(); $this->permission('liens'); //Load country table try { $countryM = new Application_Model_JoTabPays(); $sql = $countryM->select()->from($countryM, array('codPays3', 'libPays')); $result = $countryM->fetchAll($sql); } catch (Zend_Db_Adapter_Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } catch (Zend_Exception $e) { throw new SoapFault('ERR', "Application error"); } $tabPays = array(); if ( $result->count()>0 ) { foreach ( $result as $item ) { $tabPays[$item->codPays3] = $item->libPays; } } $tabAct = $tabPar = $tabDir = array(); try { require_once 'Metier/partenaires/classMLiens2.php'; $liensM = new MLiens2($siren, 'siren'); //Actionnaires $liens = $liensM->getActionnaires(null, true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new Lien(); $detail->id = $item->id; $detail->idFiche = $item->idAct; $detail->nom = $item->RS; $detail->sigle = $item->sigle; $libPays = ''; if ($item->adresse_pays!='') { $libPays = array_key_exists($item->adresse_pays, $tabPays) ? $tabPays[$item->adresse_pays] : $item->adresse_pays; } else { $libPays = $tabPays['FRA']; } $detail->pays = $libPays; if ($item->PpPm=='PP' && intval($siren)==0) { $detail->nom = $item->civilite.' '.$item->nom.' '.$item->prenom; } $detail->siren = str_pad($item->siren, 9, "0", STR_PAD_LEFT); $detail->PDetention = $item->PDetention; $detail->Pvote = $item->Pvote; $detail->MajMin = $item->MajMin; if ($item->dateUpdate=='0000-00-00 00:00:00'){ $detail->date = substr($item->dateInsert,0,10); } else { $detail->date = substr($item->dateUpdate,0,10); } $nbIdNum = 3; $refs = array(); $idM = new Application_Model_Sdv1TabIdLocal(); for ($i=0;$i<$nbIdNum;$i++) { if( !empty($item->{'idLoc'.$i.'Num'}) ) { $ref = new LienRefId(); $ref->num = $item->{'idLoc'.$i.'Num'}; if ( !empty($item->{'idLoc'.$i.'Type'}) ) { $sql = $idM->select()->from($idM, array('idLocal', 'idPrincipal')) ->where('id=?', $item->{'idLoc'.$i.'Type'}); $result = $idM->fetchRow($sql); if (null!==$result) { $ref->label = $result->idLocal; $ref->type = $result->idPrincipal; } else { $ref->label = ''; $ref->type = 0; } } else { $ref->label = 'Identifiant local'; $ref->type = 1; } $refs[] = $ref; } } $detail->identification = $refs; $tabAct[] = $detail; } } //Participations $liens = $liensM->getParticipations(null, true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new Lien(); $detail->id = $item->id; $detail->idFiche = $item->idPar; $detail->nom = $item->RS; $detail->sigle = $item->sigle; $libPays = ''; if ($item->adresse_pays!='') { $libPays = array_key_exists($item->adresse_pays, $tabPays) ? $tabPays[$item->adresse_pays] : $item->adresse_pays; } else { $libPays = $tabPays['FRA']; } $detail->pays = $libPays; if ($item->PpPm=='PP' && intval($siren)==0) { $detail->nom = $item->civilite.' '.$item->nom.' '.$item->prenom; } $detail->siren = str_pad($item->siren, 9, "0", STR_PAD_LEFT); $detail->PDetention = $item->PDetention; $detail->Pvote = $item->Pvote; $detail->MajMin = $item->MajMin; if ($item->dateUpdate=='0000-00-00 00:00:00'){ $detail->date = substr($item->dateInsert,0,10); } else { $detail->date = substr($item->dateUpdate,0,10); } $nbIdNum = 3; $refs = array(); $idM = new Application_Model_Sdv1TabIdLocal(); for ($i=0;$i<$nbIdNum;$i++) { if( !empty($item->{'idLoc'.$i.'Num'}) ) { $ref = new LienRefId(); $ref->num = $item->{'idLoc'.$i.'Num'}; if ( !empty($item->{'idLoc'.$i.'Type'}) ) { $sql = $idM->select()->from($idM, array('idLocal', 'idPrincipal')) ->where('id=?', $item->{'idLoc'.$i.'Type'}); $result = $idM->fetchRow($sql); if (null!==$result) { $ref->label = $result->idLocal; $ref->type = $result->idPrincipal; } else { $ref->label = ''; $ref->type = 0; } } else { $ref->label = 'Identifiant local'; $ref->type = 1; } $refs[] = $ref; } } $detail->identification = $refs; $tabPar[] = $detail; } } //Directions $liens = $liensM->getDirections(true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new LienDirection(); $detail->siren = $item->siren; $detail->nom = $item->raisonSociale; $detail->fonction = $item->fonction_lib; $detail->dirRS = $item->dirRS; $nom = ''; if (!empty($item->civilite)) { $nom.= $item->civilite.'. '; } if (!empty($item->nom)) { $nom.= $item->nom.' '; } if (!empty($item->prenom)) { $nom.= $item->prenom; } $detail->dirNom = $nom; $detail->dirNaissLieu = $item->naissance_lieu; $detail->dirNaissDate = $item->naissance_date; $tabDir[] = $detail; } } } catch(Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } $output = new LiensReturn(); $output->actionnaires = $tabAct; $output->participations = $tabPar; $output->directions = $tabDir; $this->wsLog('liens', $siren); return $output; } /** * Retourne les liens financiers pour une entreprise. * @param int $id Identifiant de référence de l'entreprise * @param string $type Type de lien (actionnaire|participation) * @return LiensReturn */ public function getLiensById($id, $type = null) { $this->authenticate(); $this->permission('liens'); try { $countryM = new Application_Model_JoTabPays(); $sql = $countryM->select()->from($countryM, array('codPays3', 'libPays')); $result = $countryM->fetchAll($sql); } catch (Zend_Db_Adapter_Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } catch (Zend_Exception $e) { throw new SoapFault('ERR', "Application error"); } $tabPays = array(); if ( $result->count()>0 ) { foreach ( $result as $item ) { $tabPays[$item->codPays3] = $item->libPays; } } $tabAct = $tabPar = $tabDir = array(); try { require_once 'Metier/partenaires/classMLiens2.php'; $liensM = new MLiens2($id); //Actionnaires $liens = $liensM->getActionnaires(null, true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new Lien(); $detail->id = $item->id; $detail->idFiche = $item->idAct; $detail->nom = $item->RS; $detail->sigle = $item->sigle; $libPays = ''; if ($item->adresse_pays!='') { $libPays = array_key_exists($item->adresse_pays, $tabPays) ? $tabPays[$item->adresse_pays] : $item->adresse_pays; } else { $libPays = $tabPays['FRA']; } $detail->pays = $libPays; if ($item->PpPm=='PP') { $detail->nom = $item->civilite.' '.$item->nom.' '.$item->prenom; } $detail->siren = str_pad($item->siren, 9, "0", STR_PAD_LEFT); $detail->PDetention = $item->PDetention; $detail->Pvote = $item->Pvote; $detail->MajMin = $item->MajMin; if ($item->dateUpdate=='0000-00-00 00:00:00'){ $detail->date = substr($item->dateInsert,0,10); } else { $detail->date = substr($item->dateUpdate,0,10); } $nbIdNum = 3; $refs = array(); $idM = new Application_Model_Sdv1TabIdLocal(); for ($i=0;$i<$nbIdNum;$i++) { if( !empty($item->{'idLoc'.$i.'Num'}) ) { $ref = new LienRefId(); $ref->num = $item->{'idLoc'.$i.'Num'}; if ( !empty($item->{'idLoc'.$i.'Type'}) ) { $sql = $idM->select()->from($idM, array('idLocal', 'idPrincipal')) ->where('id=?', $item->{'idLoc'.$i.'Type'}); $result = $idM->fetchRow($sql); if (null!==$result) { $ref->label = $result->idLocal; $ref->type = $result->idPrincipal; } else { $ref->label = ''; $ref->type = 0; } } else { $ref->label = 'Identifiant local'; $ref->type = 1; } $refs[] = $ref; } } $detail->identification = $refs; $tabAct[] = $detail; } } //Participations $liens = $liensM->getParticipations(null, true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new Lien(); $detail->id = $item->id; $detail->idFiche = $item->idPar; $detail->nom = $item->RS; $detail->sigle = $item->sigle; $libPays = ''; if ($item->adresse_pays!='') { $libPays = array_key_exists($item->adresse_pays, $tabPays) ? $tabPays[$item->adresse_pays] : $item->adresse_pays; } else { $libPays = $tabPays['FRA']; } $detail->pays = $libPays; if ($item->PpPm=='PP') { $detail->nom = $item->civilite.' '.$item->nom.' '.$item->prenom; } $detail->siren = str_pad($item->siren, 9, "0", STR_PAD_LEFT); $detail->PDetention = $item->PDetention; $detail->Pvote = $item->Pvote; $detail->MajMin = $item->MajMin; if ($item->dateUpdate=='0000-00-00 00:00:00'){ $detail->date = substr($item->dateInsert,0,10); } else { $detail->date = substr($item->dateUpdate,0,10); } $nbIdNum = 3; $refs = array(); $idM = new Application_Model_Sdv1TabIdLocal(); for ($i=0;$i<$nbIdNum;$i++) { if( !empty($item->{'idLoc'.$i.'Num'}) ) { $ref = new LienRefId(); $ref->num = $item->{'idLoc'.$i.'Num'}; if ( !empty($item->{'idLoc'.$i.'Type'}) ) { $sql = $idM->select()->from($idM, array('idLocal', 'idPrincipal')) ->where('id=?', $item->{'idLoc'.$i.'Type'}); $result = $idM->fetchRow($sql); if (null!==$result) { $ref->label = $result->idLocal; $ref->type = $result->idPrincipal; } else { $ref->label = ''; $ref->type = 0; } } else { $ref->label = 'Identifiant local'; $ref->type = 1; } $refs[] = $ref; } } $detail->identification = $refs; $tabPar[] = $detail; } } //Directions $liens = $liensM->getDirections(true); if (count($liens)>0) { foreach ( $liens as $item ) { $detail = new LienDirection(); $detail->siren = $item->siren; $detail->nom = $item->raisonSociale; $detail->fonction = $item->fonction_lib; $detail->dirRS = $item->dirRS; $nom = ''; if (!empty($item->civilite)) { $nom.= $item->civilite.'. '; } if (!empty($item->nom)) { $nom.= $item->nom.' '; } if (!empty($item->prenom)) { $nom.= $item->prenom; } $detail->dirNom = $nom; $detail->dirNaissLieu = $item->naissance_lieu; $detail->dirNaissDate = $item->naissance_date; $tabDir[] = $detail; } } } catch(Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } $output = new LiensReturn(); $output->actionnaires = $tabAct; $output->participations = $tabPar; $output->directions = $tabDir; $this->wsLog('liens', '', $id); return $output; } /** * Fiche identite Référence lien * @param int $id * Identifiant interne SD * @throws SoapFault * @return LienRef */ public function getLienRef($id) { $this->authenticate(); $this->permission('liens'); $refM = new Application_Model_JoLiensRef(); try { $rows = $refM->find($id); } catch (Zend_Db_Exception $e) { if ($this->User->idClient!=1) { throw new SoapFault('ERR', "Application error"); } else { throw new SoapFault('ERR', $e->getMessage()); } } if ($rows->count()==0) { throw new SoapFault('MSG', 'Aucun résultat'); } $result = $rows->current()->toArray(); $output = new LienRef(); $output->siren = $result['siren']; $output->actif = $result['actif']; $output->PpPm = $result['PpPm']; $output->raisonSociale = $result['RS']; $output->civilite = $result['civilite']; $output->nom = $result['nom']; $output->prenom = $result['prenom']; $output->nomUsage = $result['nom_usage']; $output->naissanceDate = $result['naissance_date']; $output->naissanceDeptPays = $result['naissance_dept_pays']; $output->naissanceLieu = $result['naissance_lieu']; $output->nat = $result['nat']; $output->isin = $result['isin']; $output->adresseNum = $result['adresse_num']; $output->adresseBtq = $result['adresse_btq']; $output->adresseCodeVoie = $result['adresse_codvoie']; $output->adresseLibVoie = $result['adresse_libvoie']; $output->adressComp = $result['adresse_comp']; $output->adresseCp = $result['adresse_cp']; $output->adresseVille = $result['adresse_ville']; $output->capital = new stdClass(); $output->capital->amount = $result['capital']; $output->capital->currency = $result['devCapital']; //@todo : Utiliser le libellé du pays $output->adressePays = $result['adresse_pays']; if ($result['dateUpdate']=='0000-00-00 00:00:00'){ $output->date = substr($result['dateInsert'],0,10); } else { $output->date = substr($result['dateUpdate'],0,10); } $refs = array(); $nbIdNum = 3; $refs = array(); $idM = new Application_Model_Sdv1TabIdLocal(); for ($i=0;$i<$nbIdNum;$i++) { if( !empty($result['idLoc'.$i.'Type']) ) { $ref = new LienRefId(); $ref->num = $result['idLoc'.$i.'Num']; $sql = $idM->select()->from($idM, array('idLocal', 'idPrincipal')) ->where('id=?', $result['idLoc'.$i.'Type']); $result = $idM->fetchRow($sql); if (null!==$result) { $ref->label = $result->idLocal; $ref->type = $result->idPrincipal; } else { $ref->label = ''; $ref->type = 0; } $refs[] = $ref; } } $output->identification = $refs; $this->wsLog('liens', 0, $id); return $output; } /** * Liste des établissements d'une entreprise * @param string $siren Siren de l'entreprise * @param integer $departement Limiter aux établissements du departement * @param integer $actif Otpionnel 1=Uniquements les actifs, 0=inactifs, Néant=Tous * @param integer $position * @param integer $nbRep * * @return ListeEtablissementsReturn */ public function getListeEtablissements($siren, $dep = 0, $actif = -1, $position = 0, $nbRep = 20) { $this->authenticate(); $this->permission('etablissements'); //Initialisation if (empty($dep)) { $dep = 0; } if (!in_array($actif, array(0,1))) { $actif = -1; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 20; } $departement = $dep; debugLog('I',"Liste des établissements demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)<>9) { debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); $rep = $iInsee->getEtablissements($siren, '', $position, $nbRep, 200, $departement, $actif); $etabs = $rep['reponses']; $nbReponses = $rep['nbReponsesTotal']; $result = array(); if (count($etabs)>0) { foreach ($etabs as $nb => $etab) { $etablissement = new Etablissement(); $etablissement->id = $etab['id']; $etablissement->Siege = $etab['Siege']; $etablissement->Enseigne = $etab['Enseigne']; $etablissement->Adresse = $etab['Adresse']; $etablissement->Adresse2 = $etab['Adresse2']; $etablissement->CP = $etab['CP']; $etablissement->Ville = $etab['Ville']; $etablissement->Tel = $etab['Tel']; $etablissement->Fax = $etab['Fax']; $etablissement->Nic = $etab['Nic']; $etablissement->Actif = $etab['Actif']; $etablissement->NafEtab = $etab['NafEtab']; $etablissement->NafEtabLib = $etab['NafEtabLib']; $etablissement->EffEtTr = $etab['EffEtTr']; $etablissement->EffEtTrLib = $etab['EffEtTrLib']; $result[] = $etablissement; } } debugLog('I', "Nb Etablissements retournés ($departement, $actif) = ". count($result), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('etablissements',$siren); $output = new ListeEtablissementsReturn(); $output->nbReponses = $nbReponses; $output->result = $result; return $output; } /** * Retourne l'ensemble des informations identitaires des dirigeants de l'entreprise * * @param string $siren Siren de l'entreprise * @param bool $histo Afficher l'historique des dirigeants * @return DirigeantsReturn Liste des dirigeants actifs de l'entreprise */ public function getDirigeants( $siren , $histo = false) { $this->authenticate(); $this->permission('dirigeants'); //Initialisation if (empty($histo)) { $histo = false; } //Zend_Registry::get('WsLogger')->info('HISTO : '.$histo); debugLog('I',"Dirigeants demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabRet = array(); if (strlen($siren)<>9) { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); $dirs = $iInsee->getDirigeants($siren, $histo); //debugLog('W', print_r($dirs, true), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $liste = array(); foreach ($dirs as $nb => $dir) { //debugLog('I', "Siren/Siret $siren trouvé : ".$etab['Siren'].' '.$etab['Nic'].', '.$etab['Nom'] .', '.$etab['CP'].', '.$etab['Ville'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); $dirigeant = new Dirigeant(); $dirigeant->Code = $dir['Fonction']; $dirigeant->Titre = $dir['Titre']; $dirigeant->Societe = $dir['Societe']; $dirigeant->Siren = (array_key_exists('Siren', $dir) && intval($dir['Siren'])!=0) ? $dir['Siren'] : '' ; $dirigeant->Civilite = $dir['Civilite']; $dirigeant->Nom = $dir['Nom']; $dirigeant->Prenom = $dir['Prenom']; $dirigeant->NomUsage = $dir['NomUsage']; $dirigeant->NaissDate = $dir['NaissDate']; //@todo : date $dirigeant->NaissVille = $dir['NaissVille']; $dirigeant->NaissDepPays = $dir['NaissDepPays']; $dirigeant->Ancien = $dir['Ancien']; $dirigeant->DateFct = $dir['DateFct']; //@todo : date $liste[] = $dirigeant; } $this->wsLog('dirigeants',$siren,$option); debugLog('I', 'Nb Dirigeants retournés = '. count($dirs), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $output = new DirigeantsReturn(); $output->result = $liste; return $output; } /** * Retourne la liste des annonces légales relative à une entreprise * * @todo Revoir cette fonction pour la faire marcher avec les associations * * @param string $siren Siren de l'entreprise * @param integer $filtre 1=BODACC, 2=B.A.L.O, 3=JO Association, 4=Boamp * @param string $idAnn Identifiant de l'annonce * @param integer $position * @param integer $nbRep * @return AnnoncesReturn */ protected function getAnnonces($siren, $filtre = 1, $idAnn = '', $position = 0, $nbRep = 100) { $this->authenticate(); $this->permission('annonces'); //Initialisation if (empty($filtre)) { $filtre = 1; } if (empty($idAnn)) { $idAnn = ''; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 100; } //Valeur max if($nbRep > 200) { $nbRep = 200; } debugLog('I',"Annonces demandées pour $siren ($filtre, $idAnn)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $liste = array(); if (strlen($siren)!=9) { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif (intval($siren)==0 && $idAnn=='') { debugLog('W', "Siren $siren ou annonce $idAnn inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); /* if ($siren>100 && $filtre==3) $asso=true; else { $asso=false; $tabIdentite=$this->iInsee->getIdentiteLight($siren); if ($tabIdentite['FJ']>90 && $tabIdentite['FJ']<94 || $tabIdentite['FJ']>9000 && $tabIdentite['FJ']<9400) $asso=true; }*/ //@todo : Connaitre le nombre d'annonce /* getAnnoncesBoamp => Avis de marché, Avis d'attribution getAnnoncesAsso => Rien de particulier getAnnoncesBalo => Rien de particulier getAnnoncesLegales => Plusieurs requetes SQL suivant la situation */ if ($idAnn=='') { $anns=$iInsee->getAnnoncesLegales($siren); $annsB=$iInsee->getAnnoncesBalo($siren); $annsA=$iInsee->getAnnoncesAsso($siren); $annsM=$iInsee->getAnnoncesBoamp($siren, $idAnn); } elseif ($filtre==1) { $anns=$iInsee->getAnnoncesLegales($siren, $idAnn); } elseif ($filtre==2) { $annsB=$iInsee->getAnnoncesBalo($siren, $idAnn); } elseif ($filtre==3) { $annsA=$iInsee->getAnnoncesAsso($siren, $idAnn); } elseif ($filtre==4) { $annsM=$iInsee->getAnnoncesBoamp($siren, $idAnn); } //debugLog('W', print_r($entrep, true), __LINE__, __FILE__, __FUNCTION__, __CLASS__); if (empty($anns) && empty($annsB) && empty($annsA) && empty($annsM)) { debugLog('W', "Aucune annonce pour le siren $siren (source=$filtre, id=$idAnn)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $error->errnum = 102; $error->errmsg = 'Siren inexistant B '.$siren.' '.$idAnn; } else { foreach ($anns as $nb=>$ann) { //debugLog('I', "Siren/Siret $siren trouvé : ".$etab['Siren'].' '.$etab['Nic'].', '.$etab['Nom'] .', '.$etab['CP'].', '.$etab['Ville'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; $annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = prepareString($ann['texteAnnonce']); $annonce->libFJ = $ann['libFJ']; $annonce->codFJ = $ann['codFJ']; $annonce->capital = $ann['capital']; $annonce->capitalDev = $ann['capitalDev']; $annonce->raisonSociale = $ann['raisonSociale']; $annonce->nomCommercial = $ann['nomCommercial']; $annonce->sigle = $ann['sigle']; $annonce->adresse = $ann['adresse']; $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $liste[] = $annonce; } if (is_array($annsB)) { foreach ($annsB as $nb=>$ann) { //debugLog('I', "Siren/Siret $siren trouvé : ".$etab['Siren'].' '.$etab['Nic'].', '.$etab['Nom'] .', '.$etab['CP'].', '.$etab['Ville'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; //$annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = utf8_encode($ann['texteAnnonce']); //$annonce->libFJ = $ann['libFJ']; //$annonce->codFJ = $ann['codFJ']; //$annonce->capital = $ann['capital']; //$annonce->capitalDev = $ann['capitalDev']; $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $liste[] = $annonce; } } if (is_array($annsA)) { foreach ($annsA as $nb=>$ann) { //debugLog('I', "Siren/Siret $siren trouvé : ".$etab['Siren'].' '.$etab['Nic'].', '.$etab['Nom'] .', '.$etab['CP'].', '.$etab['Ville'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; //$annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = utf8_encode($ann['texteAnnonce']); //$annonce->libFJ = $ann['libFJ']; //$annonce->codFJ = $ann['codFJ']; //$annonce->capital = $ann['capital']; //$annonce->capitalDev = $ann['capitalDev']; //@todo : date $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $liste[] = $annonce; } } if (is_array($annsM)) { foreach ($annsM as $nb=>$ann) { $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; //$annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = utf8_encode($ann['texteAnnonce']); //$annonce->libFJ = $ann['libFJ']; //$annonce->codFJ = $ann['codFJ']; //$annonce->capital = $ann['capital']; //$annonce->capitalDev = $ann['capitalDev']; $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $liste[] = $annonce; } } } $nbReponses = count($liste); if ($nbReponses>0){ //$liste = array_slice($liste, $position, $nbRep); } debugLog('I', "Nb Annonces $filtre retournées pour $siren (source=$filtre, id=$idAnn) = ". count($liste), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('annonces',$siren,$filtre.'/'.$idAnn); $output = new AnnoncesReturn(); $output->nbReponses = $nbReponses; $output->result = $liste; return $output; } /** * Retourne le nombre d'élément pour chaque type * @param string $siren * @return AnnonceNum[] */ public function getAnnoncesNum($siren) { $this->authenticate(); $output = array(); if ( substr($siren,0,1)=='W' ) { $iInsee = new MInsee(); $nb = new AnnonceNum(); $nb->type = 'asso'; $nb->num = $iInsee->getAnnoncesAssoCount($siren); $output[] = $nb; } elseif (intval($siren)!=0) { $types = array('bodacc', 'balo', 'boamp', 'asso'); $iInsee = new MInsee(); foreach ($types as $type) { switch($type) { case 'bodacc': $anns = $iInsee->getAnnoncesLegales($siren); $total = count($anns); break; case 'balo': $total = $iInsee->getAnnoncesBaloCount($siren); break; case 'boamp': $total = $iInsee->getAnnoncesBoampCount($siren); break; case 'asso': $total = $iInsee->getAnnoncesAssoCount($siren); break; } $nb = new AnnonceNum(); $nb->type = $type; $nb->num = $total; $output[] = $nb; } } return $output; } /** * Retourne les annonces légales * @param string $siren * @param string $idAnn * @param AnnonceFilter[] $filtre * @param int $position * @param int $nbRep * @return AnnoncesReturn */ public function getAnnoncesLegales($siren, $idAnn = null, $filtre = null, $position = 0, $nbRep = 20) { $this->authenticate(); $this->permission('annonces'); //Initialisation if (empty($idAnn)) { $idAnn = null; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 100; } //Valeur max if($nbRep > 200) { $nbRep = 200; } debugLog('I',"Annonces demandées pour $siren ($idAnn)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)!=9) { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif (intval($siren)==0 && $idAnn=='') { debugLog('W', "Siren $siren ou annonce $idAnn inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); $isList = false; if ( is_null($idAnn) ) { $anns = $iInsee->getAnnoncesLegales($siren, 0, '', false, false, true); $nbReponses = count($anns); $isList = true; } else { $anns = $iInsee->getAnnoncesLegales($siren, $idAnn, '', false, false, true); $nbReponses = count($anns); } $liste = array(); $cpt = 0; if (is_array($anns)) { foreach ($anns as $nb => $ann) { if ($isList===true && $nb<$position) { continue; } $cpt++; if ($isList===true && $cpt>$nbRep) { break; } //@todo : Entites $entites = array(); if (in_array($ann['BodaccCode'], array('BODA', 'BODB', 'BODC'))) { $detailM = new Application_Model_JoBodaccDetail(); $sql = $detailM->select()->from($detailM, array( 'LPAD(siren, 9, 000000000) AS siren', 'LPAD(nic, 5, 00000) AS nic', 'raisonSociale','adresse', 'codePostal', 'ville', 'typeEven') )->where('id=?', $ann['id']); $result = $detailM->fetchAll($sql); if (count($result)>1) { foreach ($result as $entity) { $entite = new AnnonceEntite(); $entite->siret = $entity->siren.$entity->nic; $entite->raisonSociale = $entity->raisonSociale; $iBodacc = new MBodacc(); $even = new AnnonceEvenement(); $even->CodeEven = $entity->typeEven; $even->LibEven = $iBodacc->getEvenement($entity->typeEven); $entite->event = $even; $entites[] = $entite; } } } //List events $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; $annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteAnnonce = $ann['texteAnnonce']; $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->entites = $entites; $annonce->deleted = $ann['deleted']; $liste[] = $annonce; } } $this->wsLog('annonces',$siren,$idAnn); $output = new AnnoncesReturn(); $output->nbReponses = $nbReponses; $output->result = $liste; return $output; } /** * Retourne les annonces du journal officiel des associations * @param string $siren * @param string $idAnn * @param AnnonceFilter[] $filtre * @param int $position * @param int $nbRep * @return AnnoncesReturn */ public function getAnnoncesAsso($siren, $idAnn = null, $filtre = null, $position = 0, $nbRep = 20) { $this->authenticate(); $this->permission('annonces'); //Initialisation if (empty($idAnn)) { $idAnn = 0; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 20; } //Valeur max if($nbRep > 200) { $nbRep = 200; } debugLog('I',"Annonces demandées pour $siren ($filtre, $idAnn)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)!=9 && substr($siren,0,1)!='W') { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif (intval($siren)==0 && is_null($idAnn)) { debugLog('W', "Siren $siren ou annonce $idAnn inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); $nbReponses = $iInsee->getAnnoncesAssoCount($siren, $idAnn); $anns = $iInsee->getAnnoncesAsso($siren, $idAnn, $position, $nbRep); $liste = array(); if (is_array($anns)) { foreach ($anns as $nb=>$ann) { $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; //$annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = utf8_encode($ann['texteAnnonce']); //$annonce->libFJ = $ann['libFJ']; //$annonce->codFJ = $ann['codFJ']; //$annonce->capital = $ann['capital']; //$annonce->capitalDev = $ann['capitalDev']; //@todo : date $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $annonce->deleted = $ann['deleted']; $liste[] = $annonce; } } $this->wsLog('annonces',$siren,$idAnn); $output = new AnnoncesReturn(); $output->nbReponses = $nbReponses; $output->result = $liste; return $output; } protected function getAnnoncesBoampList($siren, $filtre = null, $position = 0, $nbRep = 20) { } /** * Retourne les annonces de marché public * @param string $siren * @param string $idAnn * @param AnnonceFilter[] $filtre * @param int $position * @param int $nbRep * @return AnnoncesReturn */ public function getAnnoncesBoamp($siren, $idAnn = null, $filtre = null, $position = 0, $nbRep = 20) { $this->authenticate(); $this->permission('annonces'); //Initialisation if (empty($idAnn)) { $idAnn = ''; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 20; } //Valeur max if($nbRep > 200) { $nbRep = 200; } $type = array('A', 'M'); if (is_array($filtre->item) && count($filtre->item)>0) { foreach($filtre->item as $item) { if ( $item->key == 'type' ) { $type = $item->value; } } } if (strlen($siren)<>9) { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif (intval($siren)==0 && is_null($idAnn)) { debugLog('W', "Siren $siren ou annonce $idAnn inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); if ( empty($idAnn) ) { $nbReponses = $iInsee->getAnnoncesBoampCount($siren, $type); $anns = $iInsee->getAnnoncesBoamp($siren, $idAnn, $type, $position, $nbRep); } else { $anns = $iInsee->getAnnoncesBoamp($siren, $idAnn, $type, 0, 1); $nbReponses = count($anns); } $liste = array(); if (is_array($anns) && count($anns)>0) { foreach ($anns as $nb=>$ann) { $entites = array(); //Add acheteur $identite = $iInsee->getIdentiteLight($siren); $entite = new AnnonceEntite(); $entite->siret = $identite['Siret']; $entite->raisonSociale = $identite['Nom']; $even = new AnnonceEvenement(); //$even->CodeEven = ''; $even->LibEven = 'Acheteur'; $entite->event = $even; $entites[] = $entite; //Search titulaire $boamplotsM = new Application_Model_JoBoampLots(); $sql = $boamplotsM->select()->from($boamplotsM, array( 'LPAD(siren, 9, 000000000) AS siren', 'LPAD(nic, 5, 00000) AS nic', 'nom','adresse','cp', 'ville', 'pays') )->where('idAnn=?', substr($ann['id'],2)); $result = $boamplotsM->fetchAll($sql); if (count($result)>0) { foreach ($result as $entity) { $entite = new AnnonceEntite(); $entite->siret = $entity->siren.$entity->nic; $entite->raisonSociale = $entity->nom; $even = new AnnonceEvenement(); //$even->CodeEven = ''; $even->LibEven = 'Attributaire'; $entite->event = $even; $entites[] = $entite; } } //Events $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; //$annonce->TribunalCode = $ann['TribunalCode']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = $ann['texteAnnonce']; //$annonce->libFJ = $ann['libFJ']; //$annonce->codFJ = $ann['codFJ']; //$annonce->capital = $ann['capital']; //$annonce->capitalDev = $ann['capitalDev']; $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->entites = $entites; $annonce->deleted = $ann['deleted']; $liste[] = $annonce; } } $this->wsLog('annonces',$siren,$idAnn); $output = new AnnoncesReturn(); $output->nbReponses = $nbReponses; $output->result = $liste; return $output; } /** * Retourne les annonces du bulletins des annonces légales obligatoires * @param string $siren * @param string $idAnn * @param AnnonceFilter[] $filtre * @param int $position * @param int $nbRep * @return AnnoncesReturn */ public function getAnnoncesBalo($siren, $idAnn = null, $filtre = null, $position = 0, $nbRep = 20) { $this->authenticate(); $this->permission('annonces'); //Initialisation if (empty($idAnn)) { $idAnn = null; } if (empty($position)) { $position = 0; } if (empty($nbRep)) { $nbRep = 20; } //Valeur max if($nbRep > 200) { $nbRep = 200; } debugLog('I',"Annonces demandées pour $siren ($filtre, $idAnn)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)<>9) { debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif (intval($siren)==0 && is_null($idAnn)) { debugLog('W', "Siren $siren ou annonce $idAnn inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); if ( is_null($idAnn) ) { $nbReponses = $iInsee->getAnnoncesBaloCount($siren); $anns = $iInsee->getAnnoncesBalo($siren, $idAnn, $position, $nbRep); } else { $anns = $iInsee->getAnnoncesBalo($siren, $idAnn, 0, 1); $nbReponses = count($anns); } $liste = array(); if (is_array($anns) && count($anns)>0) { foreach ($anns as $nb=>$ann) { $evens = array(); foreach ($ann['evenements'] as $tabEven) { $even = new AnnonceEvenement(); $even->CodeEven = $tabEven['CodeEven']; $even->LibEven = $tabEven['LibEven']; $evens[] = $even; } $annonce = new Annonce(); $annonce->id = $ann['id']; $annonce->BodaccCode = $ann['BodaccCode']; $annonce->BodaccNum = $ann['BodaccNum']; $annonce->NumAnnonce = $ann['NumAnnonce']; $annonce->DateParution = $ann['DateParution']; //@todo : date $annonce->Departement = $ann['Departement']; $annonce->Tribunal = $ann['Tribunal']; $annonce->TribunalSiret = $ann['TribunalSiret']; $annonce->Rubrique = $ann['Rubrique']; $annonce->typeAnnonce = $ann['typeAnnonce']; $annonce->texteRectificatif = prepareString($ann['texteRectificatif']); $annonce->texteAnnonce = utf8_encode($ann['texteAnnonce']); $annonce->dateEffet = $ann['dateEffet']; //@todo : date $annonce->dateJugement = $ann['dateJugement']; //@todo : date $annonce->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $annonce->evenements = $evens; $annonce->Lien_Annonce_Pdf = $ann['Lien_Annonce_Pdf']; $annonce->deleted = $ann['deleted']; $liste[] = $annonce; } } $this->wsLog('annonces',$siren,$idAnn); $output = new AnnoncesReturn(); $output->nbReponses = $nbReponses; $output->result = $liste; return $output; } /** * Evaluation indiScore d'une entreprise * @param string $siren Siren de l'entreprise * @param string $nic Nic de l'établissement * @param integer $niveau Niveau des commentaires (Suivant droits d'accès 1=INDISCORE, 2=INDISCORE2, 3=INDISCORE3) * @param bool $plus Si true, mise en surveillance privilèges * @param string $ref Si $plus=true, référence de la mise en Surveillance * @param integer $encours Si $plus=true, encours client demandé lors de la mise en Surveillance * @param string $email Si $plus=true, email client pour la mise en surveillance * @return Indiscore */ public function getIndiScore($siren, $nic=0, $niveau=2, $plus=false, $ref='', $encours=0, $email='') { $this->authenticate(); //Initialisation $accesDist = true; if (empty($nic)) { $nic = 0; } if (empty($niveau)) { $niveau = 2; } if (empty($plus)) { $plus = false; } if ( !in_array($niveau, array(0,1,2,3,4,5)) ) { $niveau = 2; } $perm = false; //@todo : Gestion des droits switch($niveau){ case 3: $perms = array('indiscore3', 'indiscore3p'); break; case 2: $perms = array('indiscore2', 'indiscore2p', 'indiscore3', 'indiscore3p'); break; case 1: $perms = array('indiscore', 'indiscorep'); break; } foreach($perms as $item){ if ( $this->checkPerm($item) ){ $perm = true; break; } } if ($perm === false) { $this->sendError('0902'); } $tabRet = array(); debugLog('I',"IndiScore demandée pour $siren en niveau $niveau",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)>9 || (substr($siren,0,9)*1)<100 ){ debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $tDeb = microtime(true); require_once 'Metier/scores/classMScores.php'; $tabRet = calculIndiScore($siren, $nic, $accesDist, $niveau, false, 'scores'); $duree = round(microtime(true)-$tDeb,3); debugLog('W', "indiscore DUREE = $duree s", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $output = new Indiscore(); foreach($tabRet as $key => $value){ if ($key=='paiements'){ $parMont = $value['parMont']; $parTrim = $value['parTrim']; $tabMont = array(); foreach($parMont as $parMontK => $parMontV){ $paiementMont = new IndiscorePaiementDetail(); $paiementMont->id = $parMontK; $paiementMont->nb = $parMontV['nb']; if (array_key_exists('d=180', $parMontV)){ $paiementMont->d180 = $parMontV['d=180']; } if (array_key_exists('d=150', $parMontV)){ $paiementMont->d150 = $parMontV['d=150']; } if (array_key_exists('d=120', $parMontV)){ $paiementMont->d120 = $parMontV['d=120']; } if (array_key_exists('d=90', $parMontV)){ $paiementMont->d90 = $parMontV['d=90']; } if (array_key_exists('d=60', $parMontV)){ $paiementMont->d60 = $parMontV['d=60']; } if (array_key_exists('d=30', $parMontV)){ $paiementMont->d30 = $parMontV['d=30']; } $tabMont[] = $paiementMont; } $tabTrim = array(); foreach($parTrim as $parTrimK => $parTrimV){ $paiementTrim = new IndiscorePaiementDetail(); $paiementTrim->id = $parTrimK; $paiementTrim->nb = $parTrimV['nb']; if (array_key_exists('d=180', $parTrimV)){ $paiementTrim->d180 = $parTrimV['d=180']; } if (array_key_exists('d=150', $parTrimV)){ $paiementTrim->d150 = $parTrimV['d=150']; } if (array_key_exists('d=120', $parTrimV)){ $paiementTrim->d120 = $parTrimV['d=120']; } if (array_key_exists('d=90', $parTrimV)){ $paiementTrim->d90 = $parTrimV['d=90']; } if (array_key_exists('d=60', $parTrimV)){ $paiementTrim->d60 = $parTrimV['d=60']; } if (array_key_exists('d=30', $parTrimV)){ $paiementTrim->d30 = $parTrimV['d=30']; } $tabTrim[] = $paiementTrim; } $paiement = new IndiscorePaiement(); $paiement->parMont = $tabMont; $paiement->parTrim = $tabTrim; $output->paiements = $paiement; } elseif ($key=='Notes_Structure') { $notesStructure = new IndiscoreNotesStructure(); $notesStructure->activite = $value['activite']; $notesStructure->naf4 = $value['naf4']; $notesStructure->age = $value['age']; $notesStructure->capital = $value['capital']; $notesStructure->effectif = $value['effectif']; $notesStructure->fj = $value['fj']; $notesStructure->localite = $value['localite']; $notesStructure->singulier = $value['singulier']; $output->Notes_Structure = $notesStructure; } elseif ($key=='tabBilans') { $tabRet = array(); foreach($value as $bilan) { $element = new ListeBilans(); $element->dateProvPartenaire = $bilan['dateProvPartenaire']; //@todo : date $element->dateInsert = $bilan['dateInsert']; //@todo : date $element->typeBilan = $bilan['typeBilan']; $element->dureeExercice = $bilan['dureeExercice']; $element->dateExercice = $bilan['dateExercice']; //@todo : date $element->millesime = $bilan['millesime']; $element->dateExercicePre = $bilan['dateExercicePre']; //@todo : date $element->dureeExercicePre = $bilan['dureeExercicePre']; $element->monnaie = $bilan['monnaie']; $element->source = $bilan['source']; $tabRet[] = $element; } $output->tabBilans = $tabRet; } elseif ($key=='tabBilan') { $tabRet = array(); foreach($value as $bilan){ $resultBilan = new Bilan(); $tabPoste = array(); foreach($bilan as $bilan_key => $bilan_value){ if(!in_array($bilan_key, array('SIREN', 'DATE_FRAICHE_BILAN', 'DATE_CLOTURE', 'DATE_CLOTURE_PRE', 'DUREE_MOIS', 'DUREE_MOIS_PRE', 'MONNAIE', 'CONSOLIDE', 'MONNAIE_ORI', 'MONNAIE_LIV_UNITE', 'SOURCE', 'devise'))){ $resultPoste = new BilanPoste(); $resultPoste->id = $bilan_key; $resultPoste->val = $bilan_value; $tabPoste[] = $resultPoste; } else { $resultBilan->$bilan_key = $bilan_value; } } $resultBilan->POSTES = $tabPoste; $tabRet[] = $resultBilan; } $output->tabBilan = $tabRet; } elseif ($key=='tabInfosNotations') { $infosNotation = new IndiscoreInfosNotations(); $infosNotation->SituationFinanciere = $value['SituationFinanciere']; $infosNotation->Notation = $value['Notation']; $infosNotation->ProbabiliteDefaut = $value['ProbabiliteDefaut']; $output->tabInfosNotations = $infosNotation; } elseif ($key=='tabImportExport') { $tabRet = array(); foreach($value as $element){ $importExport = new IndiscoreImportExport(); $importExport->importExport = $element['importExport']; $importExport->annee = $element['annee']; $importExport->rangNational = $element['rangNational']; $importExport->deptSiege = $element['deptSiege']; $tabRet[] = $importExport; } $output->tabImportExport = $tabRet; } elseif ($key=='tabCommentaires') { $tab = array(); if (count($value)>0) { foreach($value as $comment) { require_once 'i18n/cleanchar.php'; $tab[] = fixEncoding($comment); } } $output->tabCommentaires = $tab; } elseif ($key=='tabVariables') { $tab = $value['CA_Y']; $tabVar = array(); if (count($tab)>0) { foreach($tab as $varName => $varVal){ $var = new CA_Y(); $var->id = $varName; $var->val = $varVal; $tabVar[] = $var; } } $variables = new IndiscoreVariables(); $variables->CA_Y = $tabVar; $output->tabVariables = $variables; } elseif ($key=='Bilans') { $tab = array(); foreach($value as $item) { $objet = new IndiscoreBilans(); $objet->Millesime = $item['Millesime']; $objet->FraisPerso = $item['FraisPerso']; $objet->CA = $item['CA']; $objet->EBE = $item['EBE']; $objet->TxInvest = $item['TxInvest']; $objet->TxEndett = $item['TxEndett']; $objet->DettesCT = $item['DettesCT']; $objet->FraisFi = $item['FraisFi']; $objet->BFR = $item['BFR']; $objet->FR = $item['FR']; $objet->FondsPr = $item['FondsPr']; $objet->DelaiCli = $item['DelaiCli']; $objet->DelaiFour = $item['DelaiFour']; $tab[] = $objet; } $output->$key = $tab; } else { $output->$key = $value; } } if ($plus) { if (empty($ref)) $ref='Indiscore+'; if (empty($email)) $email=$this->User->email; $this->setSurveillance($siren, $email, $ref, 'privileges'); $this->setSurveillance($siren, $email, $ref, 'score', false, $encours); if ($this->User->idClient==89) $this->setSurveillance($siren, $email, $ref, 'annonces'); $this->wsLog('indiscore+',$siren); } else $this->wsLog('indiscore',$siren); return $output; } /** * Evaluation valorsation d'une entreprise * @param string $siren Siren de l'entreprise * @param string $nic Nic de l'établissement * @param integer $niveau Niveau des commentaires * @return Valo */ public function getValo($siren, $nic=0, $niveau=2) { $this->authenticate(); $this->permission('VALORISATION'); //Initialisation $accesPartenaire = true; if (APPLICATION_ENV == 'development') { $accesPartenaire = false; } if (empty($nic)) { $nic = 0; } $niveau = 2; $tabRet = array(); debugLog('I',"IndiScore demandée pour $siren en niveau $niveau",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)>9 || (substr($siren,0,9)*1)<100 ){ debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $tDeb = microtime(true); require_once 'Metier/scores/classMScores.php'; $tabRet = calculIndiScore($siren, $nic, $accesPartenaire, $niveau, false, 'valo'); $duree = round(microtime(true)-$tDeb,3); debugLog('W', "indiscore DUREE = $duree s", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $ouput = new Valo(); $Indiscore = new Indiscore(); foreach($tabRet as $key => $value){ if ($key=='paiements'){ $parMont = $value['parMont']; $parTrim = $value['parTrim']; $tabMont = array(); foreach($parMont as $parMontK => $parMontV){ $paiementMont = new IndiscorePaiementDetail(); $paiementMont->id = $parMontK; $paiementMont->nb = $parMontV['nb']; if (array_key_exists('d=180', $parMontV)){ $paiementMont->d180 = $parMontV['d=180']; } if (array_key_exists('d=150', $parMontV)){ $paiementMont->d150 = $parMontV['d=150']; } if (array_key_exists('d=120', $parMontV)){ $paiementMont->d120 = $parMontV['d=120']; } if (array_key_exists('d=90', $parMontV)){ $paiementMont->d90 = $parMontV['d=90']; } if (array_key_exists('d=60', $parMontV)){ $paiementMont->d60 = $parMontV['d=60']; } if (array_key_exists('d=30', $parMontV)){ $paiementMont->d30 = $parMontV['d=30']; } $tabMont[] = $paiementMont; } $tabTrim = array(); foreach($parTrim as $parTrimK => $parTrimV){ $paiementTrim = new IndiscorePaiementDetail(); $paiementTrim->id = $parTrimK; $paiementTrim->nb = $parTrimV['nb']; if (array_key_exists('d=180', $parTrimV)){ $paiementTrim->d180 = $parTrimV['d=180']; } if (array_key_exists('d=150', $parTrimV)){ $paiementTrim->d150 = $parTrimV['d=150']; } if (array_key_exists('d=120', $parTrimV)){ $paiementTrim->d120 = $parTrimV['d=120']; } if (array_key_exists('d=90', $parTrimV)){ $paiementTrim->d90 = $parTrimV['d=90']; } if (array_key_exists('d=60', $parTrimV)){ $paiementTrim->d60 = $parTrimV['d=60']; } if (array_key_exists('d=30', $parTrimV)){ $paiementTrim->d30 = $parTrimV['d=30']; } $tabTrim[] = $paiementTrim; } $paiement = new IndiscorePaiement(); $paiement->parMont = $tabMont; $paiement->parTrim = $tabTrim; $Indiscore->paiements = $paiement; } elseif ($key=='Notes_Structure') { $notesStructure = new IndiscoreNotesStructure(); $notesStructure->activite = $value['activite']; $notesStructure->naf4 = $value['naf4']; $notesStructure->age = $value['age']; $notesStructure->capital = $value['capital']; $notesStructure->effectif = $value['effectif']; $notesStructure->fj = $value['fj']; $notesStructure->localite = $value['localite']; $notesStructure->singulier = $value['singulier']; $Indiscore->Notes_Structure = $notesStructure; } elseif ($key=='tabBilans') { $tabRet = array(); foreach($value as $bilan) { $element = new ListeBilans(); $element->dateProvPartenaire = $bilan['dateProvPartenaire']; //@todo : date $element->dateInsert = $bilan['dateInsert']; //@todo : date $element->typeBilan = $bilan['typeBilan']; $element->dureeExercice = $bilan['dureeExercice']; $element->dateExercice = $bilan['dateExercice']; //@todo : date $element->millesime = $bilan['millesime']; $element->dateExercicePre = $bilan['dateExercicePre']; //@todo : date $element->dureeExercicePre = $bilan['dureeExercicePre']; $element->monnaie = $bilan['monnaie']; $element->source = $bilan['source']; $tabRet[] = $element; } $Indiscore->tabBilans = $tabRet; } elseif ($key=='tabBilan') { $tabRet = array(); foreach($value as $bilan){ $resultBilan = new Bilan(); $tabPoste = array(); foreach($bilan as $bilan_key => $bilan_value){ if(!in_array($bilan_key, array('SIREN', 'DATE_FRAICHE_BILAN', 'DATE_CLOTURE', 'DATE_CLOTURE_PRE', 'DUREE_MOIS', 'DUREE_MOIS_PRE', 'MONNAIE', 'CONSOLIDE', 'MONNAIE_ORI', 'MONNAIE_LIV_UNITE', 'SOURCE', 'devise'))){ $resultPoste = new BilanPoste(); $resultPoste->id = $bilan_key; $resultPoste->val = $bilan_value; $tabPoste[] = $resultPoste; } else { $resultBilan->$bilan_key = $bilan_value; } } $resultBilan->POSTES = $tabPoste; $tabRet[] = $resultBilan; } $Indiscore->tabBilan = $tabRet; } elseif ($key=='tabInfosNotations') { $infosNotation = new IndiscoreInfosNotations(); $infosNotation->SituationFinanciere = $value['SituationFinanciere']; $infosNotation->Notation = $value['Notation']; $infosNotation->ProbabiliteDefaut = $value['ProbabiliteDefaut']; $Indiscore->tabInfosNotations = $infosNotation; } elseif ($key=='tabImportExport') { $tabRet = array(); foreach($value as $element){ $importExport = new IndiscoreImportExport(); $importExport->importExport = $element['importExport']; $importExport->annee = $element['annee']; $importExport->rangNational = $element['rangNational']; $importExport->deptSiege = $element['deptSiege']; $tabRet[] = $importExport; } $Indiscore->tabImportExport = $tabRet; } elseif ($key=='tabCommentaires') { $tab = array(); foreach($value as $comment) { require_once 'i18n/cleanchar.php'; $tab[] = fixEncoding($comment); } $Indiscore->tabCommentaires = $tab; } elseif ($key=='tabVariables') { $tab = $value['CA_Y']; $tabVar = array(); if (count($tab)>0) { foreach($tab as $varName => $varVal){ $var = new CA_Y(); $var->id = $varName; $var->val = $varVal; $tabVar[] = $var; } } $variables = new IndiscoreVariables(); $variables->CA_Y = $tabVar; $Indiscore->tabVariables = $variables; } elseif ($key=='Bilans') { $tab = array(); foreach($value as $item) { $objet = new IndiscoreBilans(); $objet->Millesime = $item['Millesime']; $objet->FraisPerso = $item['FraisPerso']; $objet->CA = $item['CA']; $objet->EBE = $item['EBE']; $objet->TxInvest = $item['TxInvest']; $objet->TxEndett = $item['TxEndett']; $objet->DettesCT = $item['DettesCT']; $objet->FraisFi = $item['FraisFi']; $objet->BFR = $item['BFR']; $objet->FR = $item['FR']; $objet->FondsPr = $item['FondsPr']; $objet->DelaiCli = $item['DelaiCli']; $objet->DelaiFour = $item['DelaiFour']; $tab[] = $objet; } $Indiscore->$key = $tab; } else { $Indiscore->$key = $value; } } $output->Indiscore = $Indiscore; //Tableau d'infos sur les formules $tabFormules = include APPLICATION_PATH . '/../library/Metier/scores/Data/Formules.php'; $tabBorneMin = $tabBorneMax = array(); foreach ($tabFormules as $formule) { $id = $formule['id']*1; $libelle = $formule['libelle']; $unite = $formule['unite']; $commentaires = $formule['commentaires']; $tabFormulesInfos[$id] = $formule; //Pour la gestion des unités des ratios secteur $ratiosInfos = new RatiosInfos(); $ratiosInfos->id = 'r'.$id; $ratiosInfos->libelle = $formule['libelle']; $ratiosInfos->unite = $formule['unite']; $ratiosInfos->commentaires = $formule['commentaires']; $tabRatiosInfos[] = $ratiosInfos; $tabBorneMin[$id] = $formule['borneMin']; $tabBorneMax[$id] = $formule['borneMax']; } //Ratios global $tva, $mBil, $efftr, $tabInfla; require_once 'Metier/scores/classMRatios.php'; $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans($accesPartenaire); $nbBilans = count($tabBilans); $tabBilan = $tabBil = array(); if ($nbBilans>0) { $iInsee = new MInsee(); $tabIdentite = $iInsee->getIdentiteEntreprise($siren,0,0,false,false); debugLog('I',"Liste des Ratios demandée pour $siren après getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $naf = $tabIdentite['NafEnt']; $nafLib = $tabIdentite['NafEntLib']; $efftr = $tabIdentite['Effectif']*1; $fj = $tabIdentite['FJ']; foreach ($tabBilans as $millesime => $item) { $tabBilan[] = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), ''); } $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesPartenaire); } $nbRatios = count($tabRatios); debugLog('I',"Liste des Ratios demandée pour $siren après calculRatios ($nbRatios)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabAnnees = array(); if ( $nbRatios > 0 ) { foreach ( $tabRatios as $i=>$R ) { //Informations sur le bilan $bilansInfos = new RatiosBilansInfos(); $bilansInfos->dateCloture = $tabBilan[$i]['DATE_CLOTURE']; //@todo : date $bilansInfos->duree = $tabBilan[$i]['DUREE_MOIS']; $bilansInfos->devise = $tabBilan[$i]['MONNAIE']; $bilansInfos->typeBilan = $tabBilan[$i]['CONSOLIDE']; $bilansInfos->unite = 'U'; if ( substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900 ){ $tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); } $tabRatiosEntrep = array(); $tabRatiosEntrepEvol = array(); foreach ( $R as $Ridx=>$Rmont ) { if ($Rmont<>'NS') { if ( $tabBorneMin[$Ridx]<>'' && $Rmont<$tabBorneMin[$Ridx] ){ $Rmont='<'.$tabBorneMin[$Ridx]; } elseif ( $tabBorneMax[$Ridx]<>'' && $Rmont>$tabBorneMax[$Ridx] ){ $Rmont='>'.$tabBorneMax[$Ridx]; } } // RatiosEntrep $ratiosEntrep = new Ratios(); if (substr($Rmont,0,1)=='N' || substr($Rmont,0,1)=='<' || substr($Rmont,0,1)=='>'){ $ratiosEntrep->id = 'r'.$Ridx; $ratiosEntrep->val = $Rmont; } else { $ratiosEntrep->id = 'r'.$Ridx; $ratiosEntrep->val = round($Rmont,2); } $tabRatiosEntrep[] = $ratiosEntrep; if ( ( $tabBilan[$i]['CONSOLIDE']=='S' && isset($tabRatios[$i+1]) && ($tabBilan[$i+1]['CONSOLIDE']=='S' || ($tabBilan[$i+1]['CONSOLIDE']=='N' && $tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']) ) ) || ( $tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='N' || ($tabBilan[$i+1]['CONSOLIDE']=='S'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) ) { $Rmont=(($R[$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]); } elseif ( ( $tabBilan[$i]['CONSOLIDE']=='S' && isset($tabRatios[$i+1]) && ($tabBilan[$i+2]['CONSOLIDE']=='S' || ($tabBilan[$i+2]['CONSOLIDE']=='N' && $tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) || ( $tabBilan[$i]['CONSOLIDE']=='N' && isset($tabRatios[$i+1]) && ($tabBilan[$i+2]['CONSOLIDE']=='N' || ($tabBilan[$i+2]['CONSOLIDE']=='S'&& $tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) ) { $Rmont = (($R[$Ridx]-$tabRatios[$i+2][$Ridx])*100)/abs($tabRatios[$i+2][$Ridx]); } else { $Rmont = 'NS'; } // RatiosEntrepEvol $ratiosEntrepEvol = new Ratios(); if ($Rmont=='NS' || $Rmont<-800 || $Rmont>800){ $ratiosEntrepEvol->id = 'r'.$Ridx; $ratiosEntrepEvol->val = 'NS'; } else { $ratiosEntrepEvol->id = 'r'.$Ridx; $ratiosEntrepEvol->val = number_format($Rmont,2,',',' '); } $tabRatiosEntrepEvol[] = $ratiosEntrepEvol; } $bilansInfos->RatiosEntrep = $tabRatiosEntrep; $bilansInfos->RatiosEntrepEvol = $tabRatiosEntrepEvol; $tabBilansR[] = $bilansInfos; } } debugLog('I',"Liste des Ratios demandée pour $siren après EVOLUTION",__LINE__,__FILE__, __FUNCTION__, __CLASS__); // Tableau des ratios secteurs if (strlen($naf)>4) $strNaf = " AND naf5='$naf' "; else $strNaf = " AND naf4='$naf' "; $strAnnees = implode(',', $tabAnnees); $tabRatiosSecteurs = array(); $tabAnnees = array_unique($tabAnnees); if ( count($tabAnnees)>0 ) { $iDb = new WDB('jo'); $tabTmp = $iDb->select('ratios_secteurs', 'annee, naf5, naf4, id, (montant/nombre) AS ratio, nombre', "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC", false, MYSQL_ASSOC); $nbRatiosSec = 0; foreach($tabAnnees as $annee) { $ratiosSecteur = new RatiosSecteur(); $ratiosSecteur->annee = $annee; foreach ($tabTmp as $tmp) { if ($tmp['annee']== $annee) { $Ridx = $tmp['id']; if ($tmp['nombre']>$nbRatiosSec){ $nbRatiosSec = $tmp['nombre']; } $unite = $tabFormulesInfos[$Ridx]['unite']; if ($unite=='EUR'){ $montant = round($tmp['ratio']*1000); } else { $montant = round($tmp['ratio']); } if ($tabBorneMin[$Ridx]<>'' && $montant<$tabBorneMin[$Ridx]){ $montant='<'.$tabBorneMin[$Ridx]; } elseif ($tabBorneMax[$Ridx]<>'' && $montant>$tabBorneMax[$Ridx]){ $montant='>'.$tabBorneMax[$Ridx]; } $ratiosSecteurListe = new Ratios(); if (substr($montant,0,1)=='N' || substr($montant,0,1)=='<' || substr($montant,0,1)=='>'){ $ratiosSecteurListe->id = 'r'.$Ridx; $ratiosSecteurListe->val = $montant; } else { $ratiosSecteurListe->id = 'r'.$Ridx; $ratiosSecteurListe->val = round($montant,2); } $ratiosSecteur->liste[] = $ratiosSecteurListe; } } $tabRatiosSecteurs[] = $ratiosSecteur; } } $output->RatiosBilansInfos = $tabBilansR; $output->RatiosInfos = $tabRatiosInfos; $output->RatiosSecteur = $tabRatiosSecteurs; $this->wsLog('valorisation',$siren); return $output; } /** * Liste de tous les évènements enregistrés à l'INSEE pour une entreprise * @param string $siren Siren de l'entreprise * @param string $nic Nic de l'entreprise (Si définit filtre les événéments à l'établissements) * @param integer $position * @param integer $nbRep * @return InseeReturn **/ public function getListeEvenements($siren, $nic=0, $position=0, $nbRep=50) { $this->authenticate(); $this->permission('eveninsee'); //Initialisation if (empty($nic)) { $nic = 0; } if (empty($position)) { $position = 0; } if (empty($nbRep) || $nbRep>50) { $nbRep = 50; } $tabRet = array(); if (strlen($siren)<>9) { $this->sendError('1010'); } elseif ($siren*1==0) { $this->sendError('1010'); } $iInsee = new MInsee(); $nbReponses = $iInsee->getEvenementsCount($siren, $nic); $output = new InseeReturn(); $output->nbReponses = $nbReponses; if ( $nbReponses > 0 ) { $evens = $iInsee->getEvenements($siren, $nic, $position, $nbRep); $tabRet = array(); if (count($evens)>0) { foreach ($evens as $nb=>$even) { $iEven = new InseeEven(); $iEven->Nic = $even['nic']; $iEven->Siege = $even['siege']; $iEven->SiretAss = $even['siretAssocie']; $iEven->TypeSiretAss = $even['typeSiretAss']; $iEven->EvenCode = $even['codeEven']; $iEven->EvenLib = $even['libEven']; $iEven->EvenLibDet = $even['libEvenDet']; $iEven->EvenDate = $even['dateEven']; $iEven->DateInfo = $even['dateMAJ']; $tabRet[] = $iEven; } } $output->result = $tabRet; } $this->wsLog('evenements',$siren); return $output; } /** * Recherche * @param EntrepriseCriteres $criteres * @param integer $position Position de parcours des résultats retournées (0 par défaut) * @param integer $nbRep Nombre de réponses retournées lors d'une requête (20 par défaut) * @param integer $maxRep Nombre de réponses maximum pouvant être retournées lors d'une requête (200 par défaut) * @param boolean $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (false par défaut) * @param boolean $avecSiren Seulement les entités sirénées (false par défaut) * @return SearchEntrepriseReturn */ public function searchEntreprise($criteres, $position = 0, $nbRep = 20, $maxRep = 200, $pertinence = false, $avecSiren = false) { $this->authenticate(); if (empty($position)) { $position = 0;} if (empty($nbRep)) { $nbRep = 20; } if (empty($maxRep)) { $maxRep = 200; } require_once 'i18n/cleanchar.php'; $entCriteres = new EntrepriseCriteres(); $entCriteres = $criteres; $identifiant = $entCriteres->identifiant; $typeId = ''; //Detection autour de l'identifiant if ($identifiant!='') { $len = strlen($identifiant); //Numéro WALDEC if (strtoupper(substr($identifiant,0,1))=='W') { $typeId = 'W'; //Code ISIN } elseif ($len==12){ $typeId = 'I'; //TVA Intracommunautaire } elseif (in_array(substr($identifiant,0,2), array('AT','BE','BG','CY','CZ','DE','DK','EE','EL','ES', 'FI','GB','HU','IE','IT','LT','LU','LV','MT','NL','PL', 'PT','RO','SE','SI','SK'))){ //"La recherche par numéro de TVA n'est pas encore possible sur ce pays !"; //Pour la france } elseif (substr($identifiant,0,2)=='FR') { $typeId = 'S'; if ($len==13) $identifiant = substr($identifiant,4,9); else $identifiant = ''; //Numéro RC } elseif (preg_match('/A|B|C|D/i', $identifiant)) { $typeId = 'R'; //Siren normal on enleve tout ce qui n'est pas un chiffre } else { $typeId = 'S'; } } $adresse = trim($entCriteres->adresse); //Détection Tel/Fax uniquement if ( empty($typeId) && empty($entCriteres->raisonSociale) && empty($adresse) && empty($entCriteres->codePostal) && empty($entCriteres->ville) && empty($entCriteres->naf) ){ $typeId = 'TEL'; } if (in_array($typeId, array('R', 'W', 'I'))){ $O = $this->searchAutreId( $typeId, $identifiant, $entCriteres->codePostal, $entCriteres->actif, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep ); $output = new SearchEntrepriseReturn(); $output->nbReponses = $O->nbReponses; $output->nbReponsesTotal = $O->nbReponsesTotal; $output->result = $O->result; return $output; } elseif ($typeId == 'S'){ $O = $this->searchSiren( $identifiant, $entCriteres->codePostal, $entCriteres->actif, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep ); $output = new SearchEntrepriseReturn(); $output->nbReponses = $O->nbReponses; $output->nbReponsesTotal = $O->nbReponsesTotal; $output->result = $O->result; $output->info = $O->info; return $output; } elseif ($typeId == 'TEL'){ $O = $this->searchTelFax( $entCriteres->telFax, $entCriteres->actif, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep ); $output = new SearchEntrepriseReturn(); $output->nbReponses = $O->nbReponses; $output->nbReponsesTotal = $O->nbReponsesTotal; $output->result = $O->result; return $output; } else { $O = $this->searchNomAdr( cleanstring($entCriteres->raisonSociale), cleanstring($entCriteres->adresse), $entCriteres->codePostal, cleanstring($entCriteres->ville), empty($entCriteres->siege) ? false : $entCriteres->siege, $entCriteres->actif, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep, empty($pertinence) ? false : $pertinence, empty($avecSiren) ? false : $avecSiren, $entCriteres->naf, $entCriteres->fj ); $output = new SearchEntrepriseReturn(); $output->nbReponses = $O->nbReponses; $output->nbReponsesTotal = $O->nbReponsesTotal; $output->result = $O->result; return $output; } } /** * Recherche d'entreprise par dirigeants * @param DirigeantCriteres $criteres * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) * @return SearchDirReturn */ public function searchDir($criteres, $deb=0, $nbRep=20, $maxRep=200) { $this->authenticate(); $nom = $criteres->nom; $prenom = $criteres->prenom; $dateNaiss = $criteres->dateNaiss; $lieuNaiss = $criteres->lieuNaiss; $pertinence = $criteres->pertinence; debugLog('I',"Recherche Dirigeant de $nom, $prenom, $dateNaiss, $lieuNaiss (Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (empty($prenom)) $prenom = ''; if (empty($dateNaiss)) $dateNaiss = ''; if (empty($lieuNaiss)) $lieuNaiss = ''; if (empty($pertinence)) $pertinence = false; if (empty($deb)) $deb = 0; if (empty($nbRep)) $nbRep = 20; if (empty($maxRep)) $maxRep = 200; $iInsee = new MInsee(); $etabs = $iInsee->rechercheDir($nom, $prenom, '', $dateNaiss, $lieuNaiss, $deb, $nbRep, $maxRep, $pertinence); $tabRet = array(); foreach ($etabs['reponses'] as $etab) { $item = new EntrepriseDirItem(); $item->id = $etab['id']; $item->Pertinence = $etab['Pertinence']; $item->Siret = $etab['Siret']; $item->Siege = $etab['Siege']; $item->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); $item->Nom2 = prepareString($etab['Nom2']); $item->Sigle = prepareString($etab['Sigle']); $item->Enseigne = prepareString($etab['Enseigne']); $item->Adresse = prepareString($etab['Adresse']); $item->Adresse2 = prepareString($etab['Adresse2']); $item->CP = $etab['CP']; $item->Ville = prepareString($etab['Ville']); $item->Pays = $etab['Pays']; $item->Tel = $etab['Tel']; $item->Fax = $etab['Fax']; $item->FJ = $etab['FJ']; $item->FJLib = $iInsee->getLibelleFJ($etab['FJ']); $item->Siren = $etab['Siren']; $item->Nic = $etab['Nic']; $item->Actif = $etab['Actif']; $item->NafEtab = $etab['NafEtab']; // Etablissement $item->NafEtabLib = prepareString($iInsee->getLibelleNaf($etab['NafEtab'])); // Etablissement $item->NafEnt = $etab['NafEnt']; // Entreprise $item->NafEntLib = prepareString($iInsee->getLibelleNaf($etab['NafEnt'])); // Dirigeant $item->DirRs = prepareString($etab['DirRs']); $item->DirNom = prepareString($etab['DirNom']); $item->DirPrenom = prepareString($etab['DirPrenom']); $item->DirNomUsage = prepareString($etab['DirNomUsage']); $item->DirDateEffet = $etab['DirDateEffet']; $item->DirFonction = prepareString($etab['DirFonction']); $item->DirDepart = $etab['DirDepart']; $tabRet[] = $item; } if ($etabs['nbReponses']==0){ debugLog('W', "Aucun résultat pour cette recherche !", __LINE__, __FILE__, __FUNCTION__, __CLASS__); } $search = new SearchDirReturn(); $search->nbReponses = $etabs['nbReponses']; $search->nbReponsesTotal = $etabs['nbReponsesTotal']; $search->result = $tabRet; return $search; } /** * Recherche d'entreprise ou d'établissement par un autre Identifiant * * @param string $typeId I=Code Isin, W=N°Waldec (Associations) ou R=N°RC (Registre Greffe) * @param string $identifiant Identifiant recherché * @param integer $dep Département * @param integer $actif 0 : Filtre sur les inactfis, 1: Filtre sur les actifs, 2 : Tous (defaut) * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) * @return SearchReturn */ public function searchAutreId($typeId, $identifiant, $dep=0, $actif=2, $deb=0, $nbRep=20, $maxRep=200) { $this->authenticate(); if (empty($deb)) $deb = 0; if (empty($nbRep)) $nbRep = 0; if (empty($maxRep)) $maxRep = 0; if (empty($dep)) $dep = 0; if (!in_array($actif, array(0,1,2))) $actif = 2; $typeId = substr(trim(strtoupper($typeId)),0,1); if ($typeId!='I' && $typeId!='W' && $typeId!='R') { debugLog('I',"Type d'identifiant $typeId inexistant",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $this->sendError('1021'); } $tabRet = array(); debugLog('I',"Recherche par identifiant $typeId de $identifiantavec un maximum de $nbRep réponses",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if ($typeId=='W' || $typeId=='R') { $iInsee = new MInsee(); $rep = $iInsee->getEtablissementsParId('AUTRE', $identifiant, $deb, $nbRep, $maxRep, $dep, $actif); $etabs = $rep['reponses']; foreach ($etabs as $nb=>$etab) { $item = new EntrepriseItem(); $item->id = $etab['id']; $item->Pertinence = $etab['Pertinence']; $item->Source = $etab['Source']; $item->SourceId = $etab['SourceId']; $item->Siret = $etab['Siret']; $item->Siege = $etab['Siege']; $item->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); $item->Nom2 = prepareString($etab['Nom2']); $item->Sigle = prepareString($etab['Sigle']); $item->Enseigne = prepareString($etab['Enseigne']); $item->Adresse = prepareString($etab['Adresse']); $item->Adresse2 = prepareString($etab['Adresse2']); $item->CP = $etab['CP']; $item->Ville = prepareString($etab['Ville']); $item->Pays = $etab['Pays']; $item->Tel = $etab['Tel']; $item->Fax = $etab['Fax']; $item->FJ = $etab['FJ']; $item->FJLib = prepareString($etab['FJLib']); $item->Siren = $etab['Siren']; $item->Nic = $etab['Nic']; $item->Actif = $etab['Actif']; $item->NafEtab = $etab['NafEtab']; // Etablissement $item->NafEtabLib = prepareString($etab['NafEtabLib']); // Etablissement $item->NafEnt = $etab['NafEnt']; // Entreprise $item->NafEntLib = prepareString($etab['NafEntLib']); $tabRet[] = $item; } $output = new SearchReturn(); $output->nbReponses = $rep['nbReponses']; $output->nbReponsesTotal = $rep['nbReponsesTotal']; $output->result = $tabRet; return $output; } else { $iBourse = new MBourse($siren); $siren = $iBourse->getCodeSiren($identifiant); return $this->searchSiren($siren, $dep, $actif, $deb, $nbRep, $maxRep); } } /** * Recherche d'entreprise ou d'établissement par leur TEL FAX * * @param string $telFax Téléphone ou fax de l'établissement (ex: 0175438010) * @param integer $actif 0 : Filtre sur les inactfis, 1: Filtre sur les actifs, 2 : Tous (defaut) * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) * @return SearchReturn */ public function searchTelFax($telFax, $actif=2, $deb=0, $nbRep=20, $maxRep=200) { $this->authenticate(); if (empty($deb)) $deb = 0; if (empty($nbRep)) $nbRep = 0; if (empty($maxRep)) $maxRep = 0; if (!in_array($actif, array(0,1,2))) $actif = 2; $tabRet = array(); debugLog('I',"Recherche par Tel/Fax de $telFax avec un maximum de $nbRep réponses",__LINE__,__FILE__, __FUNCTION__, __CLASS__); //$assocs=$this->iInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $nbRep, $pertinence); /** @todo A FAIRE **/ if (strlen($telFax)<10 || strlen($telFax)>14) { debugLog('W', "Tel/Fax $telFax incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1011'); } $iInsee = new MInsee(); $rep = $iInsee->getEtablissementsParId('TEL', $telFax, $deb, $nbRep, $maxRep, 0, $actif); $etabs = $rep['reponses']; foreach ($etabs as $nb=>$etab) { $pays = 'France'; if ( $etab['adr_dep']==99 ) { $resultPays = $this->iDb->select("tabPays", "libPays", "codePaysInsee = ".$etab['adr_com'], false, MYSQL_ASSOC); $pays = $resultPays[0]['libPays']; } $item = new EntrepriseItem(); $item->id = $etab['id']; $item->Pertinence = $etab['Pertinence']; $item->Siret = $etab['Siret']; $item->Siege = $etab['Siege']; $item->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); $item->Nom2 = prepareString($etab['Nom2']); $item->Sigle = prepareString($etab['Sigle']); $item->Enseigne = prepareString($etab['Enseigne']); $item->Adresse = prepareString($etab['Adresse']); $item->Adresse2 = prepareString($etab['Adresse2']); $item->CP = $etab['CP']; $item->Ville = prepareString($etab['Ville']); $item->Pays = $etab['Pays']; $item->Tel = $etab['Tel']; $item->Fax = $etab['Fax']; $item->FJ = $etab['FJ']; $item->FJLib = prepareString($etab['FJLib']); $item->Siren = $etab['Siren']; $item->Nic = $etab['Nic']; $item->Actif = $etab['Actif']; $item->NafEtab = $etab['NafEtab']; // Etablissement $item->NafEtabLib = prepareString($etab['NafEtabLib']); // Etablissement $item->NafEnt = $etab['NafEnt']; // Entreprise $item->NafEntLib = prepareString($etab['NafEntLib']); $tabRet[] = $item; } $output = new SearchReturn(); $output->nbReponses = $rep['nbReponses']; $output->nbReponsesTotal = $rep['nbReponsesTotal']; $output->result = $tabRet; return $output; } /** * Recherche entreprise par nom et adresse * @param string $raisonSociale Raison Sociale ou Enseigne ou Sigle * @param string $adresse Adresse de l'entreprise, du type : 3 rue des Plantes * @param string $codePostal Code postal (ex: 75014) * @param string $ville Ville * @param boolean $siege Limitation de la recherche aux sièges (si true) * @param integer $actif 0 : Filtre sur les inactfis, 1: Filtre sur les actifs, 2 : Tous (defaut) * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) * @param boolean $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (si true) * @param boolean $avecSiren Ne proposer que les entités sirénées * @param string $ape_etab * @param integer $fj Code Forme juridique * @return SearchReturn */ public function searchNomAdr($raisonSociale, $adresse='', $codePostal='', $ville='', $siege=false, $actif=2, $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $avecSiren=false, $ape_etab='', $fj=null) { $this->authenticate(); debugLog('I',"Recherche Entreprise de $raisonSociale, $adresse, $codePostal $ville (Siège=$siege / Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (empty($adresse)) $adresse = ''; if (empty($codePostal)) $codePostal = ''; if (empty($ville)) $ville = ''; if (empty($siege)) $siege = false; if (!in_array($actif, array(0,1,2))) $actif = 2; if (empty($deb)) $deb = 0; if (empty($nbRep)) $nbRep = 20; if (empty($maxRep)) $maxRep = 200; if (empty($pertinence)) $pertinence = false; if (empty($avecSiren)) $avecSiren = false; if (empty($ape_etab)) $ape_etab = ''; if (!preg_match('/[0-9]{4}/',$fj)) $fj = null; $iInsee = new MInsee(); $etabs = $iInsee->rechercheEtab( $raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren, $ape_etab, $fj ); $result = new SearchReturn(); $tabRet = array(); if (count($etabs['reponses'])) { foreach ($etabs['reponses'] as $etab) { $reponse = new EntrepriseItem(); $reponse->id = $etab['id']; $reponse->Pertinence = $etab['Pertinence']; $reponse->Source = $etab['Source']; $reponse->SourceId = $etab['SourceId']; $reponse->Siret = $etab['Siret']; $reponse->Siege = $etab['Siege']; $reponse->Nom = strtr($etab['Nom'],'/*',' '); $reponse->Nom2 = $etab['Nom2']; $reponse->Sigle = $etab['Sigle']; $reponse->Enseigne = $etab['Enseigne']; $reponse->Adresse = $etab['Adresse']; $reponse->Adresse2 = $etab['Adresse2']; $reponse->CP = $etab['CP']; $reponse->Ville = $etab['Ville']; $reponse->Pays = $etab['Pays']; $reponse->Tel = $etab['Tel']; $reponse->Fax = $etab['Fax']; $reponse->FJ = $etab['FJ']; $reponse->FJLib = $iInsee->getLibelleFJ($etab['FJ']); $reponse->Siren = $etab['Siren']; $reponse->Nic = $etab['Nic']; $reponse->Actif = $etab['Actif']; $reponse->NafEtab = $etab['NafEtab']; // Etablissement $reponse->NafEtabLib = prepareString($iInsee->getLibelleNaf($etab['NafEtab'])); // Etablissement $reponse->NafEnt = $etab['NafEnt']; // Entreprise $reponse->NafEntLib = prepareString($iInsee->getLibelleNaf($etab['NafEnt'])); $tabRet[] = $reponse; } } $siretTrouve = 0; if ($etabs['nbReponses']==0) { debugLog('I', "rechercheEtab : AUCUN RESULTAT, S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab ($siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $result->nbReponses = count($tabRet); $result->nbReponsesTotal = $etabs['nbReponsesTotal']; $result->result = $tabRet; return $result; } if ($etabs['nbReponses']==1) $siretTrouve=$etabs['reponses'][0]['Siret']; debugLog('I', "rechercheEtab : ".$etabs['nbReponses']." RESULTATS, S=$raisonSociale, R=$adresse, L=$codePostal, V=$ville, A=$ape_etab ($siege, $actif, $deb, $nbRep, $maxRep, $pertinence, $avecSiren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $result->nbReponses = $etabs['nbReponses']; $result->nbReponsesTotal = $etabs['nbReponsesTotal']; $result->result = $tabRet; return $result; } /** * Recherche d'entreprise ou d'établissement par leur identifiant SIREN ou SIRET * @param string $siret Siren ou Siret de l'entreprise ou de l'établissement sur 9 ou 14 chiffres significatifs * @param integer $dep Département * @param integer $actif 0 : Filtre sur les inactfis, 1: Filtre sur les actifs, 2 : Tous (defaut) * @param integer $deb Position du curseur dans la liste des réponses (0 par défaut) * @param integer $nbRep Nombre de réponses retournées au maximum par cette requete (20 par défaut) * @param integer $maxRep Nombre de réponses recherchées au maximum (200 par défaut) * @return SearchReturn */ public function searchSiren($siret, $dep=0, $actif=2, $deb=0, $nbRep=20, $maxRep=200) { $this->authenticate(); debugLog('I',"Recherche par Siret de $siret (dep=$dep) avec un maximum de $maxRep réponses pour la tranche $deb à $nbRep",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if ( strlen($siret)!=14 && strlen($siret)!=9 ){ debugLog('W', "Siren/Siret $siret incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } if (empty($deb)) $deb = 0; if (empty($nbRep)) $nbRep = 20; if (empty($maxRep)) $maxRep = 200; if (empty($dep)) $dep = 0; if (empty($siege)) $siege = null; if (!in_array($actif, array(0,1,2))) $actif = 2; if ( $actif==2 ) $actif = -1; $nbReponsesTotal = $nbReponses = 0; $siren = substr($siret,0,9); if (strlen($siret)==14) $nic = substr($siret,9,5); elseif (strlen($siret)== 9) $nic = ''; $iInsee = new MInsee(); $rep = $iInsee->getEtablissements($siren, $nic, $deb, $nbRep, $maxRep, $dep, $actif, $siege); if ( count($rep['reponses'])==0 && $dep>0 ) { $rep = $iInsee->getEtablissements($siren, $nic, $deb, $nbRep, $maxRep, 0, $actif, $siege); } $etabs = $rep['reponses']; $tabRet = array(); if (count($etabs)>0){ foreach ($etabs as $nb=>$etab) { $reponse = new EntrepriseItem(); $reponse->id = $etab['id']; $reponse->Pertinence = $etab['Pertinence']; $reponse->Source = $etab['Source']; $reponse->SourceId = $etab['sourceId']; $reponse->Siret = $etab['Siret']; $reponse->Siege = $etab['Siege']; $reponse->Nom = prepareString(strtr($etab['Nom'],'/*',' ')); $reponse->Nom2 = prepareString($etab['Nom2']); $reponse->Sigle = prepareString($etab['Sigle']); $reponse->Enseigne = prepareString($etab['Enseigne']); $reponse->Adresse = prepareString($etab['Adresse']); $reponse->Adresse2 = prepareString($etab['Adresse2']); $reponse->CP = $etab['CP']; $reponse->Ville = prepareString($etab['Ville']); $reponse->Pays = prepareString($etab['Pays']); $reponse->Tel = $etab['Tel']; $reponse->Fax = $etab['Fax']; $reponse->FJ = $etab['FJ']; $reponse->FJLib = prepareString($etab['FJLib']); $reponse->Siren = $etab['Siren']; $reponse->Nic = $etab['Nic']; $reponse->Actif = $etab['Actif']; $reponse->NafEtab = $etab['NafEtab']; // Etablissement $reponse->NafEtabLib = $etab['NafEtabLib']; // Etablissement $reponse->NafEnt = $etab['NafEnt']; // Entreprise $reponse->NafEntLib = $etab['NafEntLib']; $tabRet[] = $reponse; } } $nbReponsesTotal = $rep['nbReponsesTotal']; $nbReponses = $rep['nbReponses']; /** Si le siren est valide, on part chez Infogreffe **/ if (count($tabRet)==0 && $iInsee->valideSiren($siren)) { $iGeffes = new MGreffes(); $etab = $iGeffes->getIdentite($siren); if ($etab) { $reponse = new EntrepriseItem(); $reponse->id = $etab['id']; $reponse->Pertinence = $etab['Pertinence']; $reponse->Siret = $etab['Siret']; $reponse->Siege = $etab['Siege']; $reponse->Nom = prepareString($etab['Nom']); $reponse->Nom2 = prepareString($etab['Nom2']); $reponse->Sigle = prepareString($etab['Sigle']); $reponse->Enseigne = prepareString($etab['Enseigne']); $reponse->Adresse = prepareString($etab['Adresse']); $reponse->Adresse2 = prepareString($etab['Adresse2']); $reponse->CP = $etab['CP']; $reponse->Ville = prepareString($etab['Ville']); $reponse->Pays = 'France'; $reponse->Tel = $etab['Tel']; $reponse->Fax = $etab['Fax']; $reponse->FJ = $etab['FJ']; $reponse->FJLib = $etab['FJLib']; $reponse->Siren = $etab['Siren']; $reponse->Nic = $etab['Nic']; $reponse->Actif = $etab['Actif']; $reponse->NafEtab = $etab['NafEtab']; $reponse->NafEtabLib = $etab['NafEtabLib']; $reponse->NafEnt = $etab['NafEnt']; $reponse->NafEntLib = $etab['NafEntLib']; $tabRet[] = $reponse; $nbReponses = 1; $nbReponsesTotal = 1; } else { $iDb = new WDB(); $iDb->insert('siren_inexistants', array( 'siren'=>$siren, 'nic'=>$nic, 'dep'=>$dep, 'login'=>$this->User->login, 'client'=>$this->User->idClient, 'dateInsert'=>date('YmdHis'))); $nbReponses = 0; $nbReponsesTotal = 0; } } $output = new SearchReturn(); $output->nbReponses = $nbReponses; $output->nbReponsesTotal = $nbReponsesTotal; $output->result = $tabRet; $output->info = $rep['info']; return $output; } /** * Retourne la fiche d'identité simplifié d'une entreprise avec son numéro de TVA. * * @param string $siren Identifiant Siren de l'entreprise * @return TvaReturn */ public function getTVA($siren) { $this->authenticate(); //Initialisation $siren = trim($siren); debugLog('I',"TVA demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabRet = array(); if (strlen($siren)<>9) { debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } debugLog('I', "Avant getIdentiteEntreprise($siren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $iInsee = new MInsee(); $entrep = $iInsee->getIdentiteEntreprise($siren); debugLog('I', "Après getIdentiteEntreprise($siren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); if (empty($entrep)) { debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1020'); } debugLog('I', "Avant MTva($siren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $iTva = new MTva($siren); if ($iTva->vatDefined) $tva=$iTva->vatNumber; else $tva='N/A'; debugLog('I', "Après MTva($siren)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $output = new TvaReturn(); $output->id = $entrep['id']; $output->AutreId = $entrep['AutreId']; $output->Nom = $entrep['Nom']; $output->Sigle = $entrep['Sigle']; $output->Enseigne = $entrep['Enseigne']; $output->Adresse = $entrep['Adresse']; $output->Adresse2 = $entrep['Adresse2']; $output->CP = $entrep['CP']; $output->Ville = $entrep['Ville']; $output->Siren = $entrep['Siren']; $output->Tva = $tva; debugLog('I', "TVA retournée = $tva (".$entrep['Nom'].')', __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('tva',$siren); return $output; } /** * Retourne tout ou patie des informations règlementées sur l'entreprise * * @param string $siren SIREN de l'entreprise * @param integer $id Id du communiqué * @return InfosRegReturn */ public function getInfosReg( $siren, $id = null ) { $this->authenticate(); $this->permission('infosreg'); //Initialisation if (empty($id)) $id = null; $tabRet = array(); $siren = substr($siren,0,9); debugLog('I',"Infos règlementées demandées pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iBourse = new MBourse($siren); $anns = $iBourse->getInfosReg($siren, $id); //debugLog('W', print_r($entrep, true), __LINE__, __FILE__, __FUNCTION__, __CLASS__); if ( empty($anns) ){ debugLog('W', "Aucune info règlementée pour le siren $siren", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1030'); } foreach ($anns as $nb=>$ann) { //debugLog('I', "Siren/Siret $siren trouvé : ".$etab['Siren'].' '.$etab['Nic'].', '.$etab['Nom'] .', '.$etab['CP'].', '.$etab['Ville'], __LINE__, __FILE__, __FUNCTION__, __CLASS__); if ($id === null) { $infos = new InfosReg(); $infos->id = $ann['id']; $infos->source = $ann['source']; $infos->DateParution = $ann['DateParution']; //@todo : date $infos->raisonSociale = $ann['raisonSociale']; $infos->titre = $ann['titre']; $infos->pj = $ann['pj']; $infos->url = $ann['url']; $infos->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $tabRet[] = $infos; } else { $infos = new InfosReg(); $infos->id = $ann['id']; $infos->source = $ann['source']; $infos->DateParution = $ann['DateParution']; //@todo : date $infos->raisonSociale = $ann['raisonSociale']; $infos->titre = $ann['titre']; $infos->communique = $ann['communique']; $infos->communiqueHtml = $ann['communiqueHtml']; $infos->pj = $ann['pj']; $infos->url = $ann['url']; $infos->dateInsertionSD = $ann['dateInsertionSD']; //@todo : date $tabRet[] = $infos; } } debugLog('I', 'Nb infos retournés = '. count($anns), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('infosreg',$siren,$id); $output = new InfosRegReturn(); $output->result = $tabRet; return $output; } /** * Retourne les informations boursières de l'entreprise * @param string $siren SIREN de l'entreprise * @return InfosBourse */ public function getInfosBourse($siren) { $this->authenticate(); $this->permission('bourse'); //Initialisation $error = new ErrorType(); debugLog('I',"Infos bourse demandées pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $siren = substr($siren,0,9); if ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iBourse = new MBourse($siren); $bourse = $iBourse->getInfosBourse($siren); //debugLog('W', print_r($entrep, true), __LINE__, __FILE__, __FUNCTION__, __CLASS__); if (empty($bourse)) { debugLog('W', "Aucune info bourse pour le siren $siren", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1030'); } $result = new InfosBourse(); $result->Siren = $bourse['siren']; $result->RaisonSociale = $bourse['raisonSociale']; $result->Adresse = $bourse['adresse']; $result->Effectif = $bourse['effectif']; $result->CodeSicovam = $bourse['code_sicovam']; $result->CodeMnemo = $bourse['code_mnemo']; $result->CodeBloomberg = $bourse['code_bloomberg']; $result->CodeDatastream = $bourse['code_datastream']; $result->Isin = $bourse['code_isin']; $result->CodeRic = $bourse['code_ric']; $result->DateIntroduction = $bourse['dateIntroduction']; //@todo : date $result->DateDerAG = $bourse['dateDerAG']; //@todo : date $result->DateRadiation = $bourse['dateRadiation']; //@todo : date $result->AutreIsin = $bourse['autre_isin']; $result->EligibleSRD = $bourse['eligibleSRD']; $result->EligiblePEA = $bourse['eligiblePEA']; $result->Tel = $bourse['tel1']; $result->Tel2 = $bourse['tel2']; $result->Fax = $bourse['fax1']; $result->Fax2 = $bourse['fax2']; $result->Web = $bourse['web']; $result->Mail = $bourse['mail']; $result->Marche = $bourse['marche']; $result->Description = $bourse['description']; $result->Secteur = $bourse['secteur']; $result->Activite = $bourse['activite']; $result->ActiviteDet = $bourse['activiteDet']; $result->placeCotation = $bourse['placeCotation']; $result->nombreTitres = $bourse['nombreTitres']; $result->capitalisation = $bourse['close']*$bourse['nombreTitres']; $result->derCoursDate = $bourse['date']; //@todo : date $result->derCoursCloture = $bourse['close']; $result->derCoursOuverture = $bourse['open']; $result->derCoursPlusHaut = $bourse['high']; $result->derCoursPlusBas = $bourse['low']; $result->derCoursVolume = $bourse['volume']; $result->coursMin = $bourse['coursMin']; $result->coursMoy = $bourse['coursMoy']; $result->coursMax = $bourse['coursMax']; $this->wsLog('bourse',$siren,$id); return $result; } /** * Ajout d'une surveillance * * @param string $siret Siret/Siren * @param string $email Adresse email du client * @param string $ref Référence de la surveillance * @param string $source Type de source en surveillance (insee, annonces, bilans, actes, privileges, score, dirigeants, paiements, liens) * @param boolean $delete Suppression de la ligne * @param integer $encoursClient Encours demandé par le client * @return SetSurveillanceReturn */ public function setSurveillance($siret, $email, $ref='', $source='annonces', $delete=false, $encoursClient=0) { $this->authenticate(); $source = strtolower($source); switch ($source) { case 'insee': $this->permission('survinsee'); break; case 'bilans': $this->permission('survbilan'); break; case 'actes': $this->permission('survactes'); break; case 'privileges': $this->permission('survpriv'); break; case 'dirigeants': $this->permission('survdirigeants'); break; case 'score': $this->permission('survscore'); break; case 'paiements': $this->permission('survpaiements'); break; case 'liens': $this->permission('survliens'); break; case 'annonces': default: $this->permission('survannonce'); break; } //Initialisation if (empty($ref)) $ref = ''; if (empty($delete)) $delete = false; if (empty($encoursClient)) $encoursClient = false; $result = false; $siren = substr($siret,0,9); $nic = substr($siret,9,5); if (empty($nic)) { $nic = '00000'; } debugLog('I',"setSurveillances(siret=$siret, email=$email, ref=$ref, source=$source, delete=$delete)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $iDb = new WDB(); $login = $this->User->login; switch ($source) { case 'insee': case 'annonces': case 'bilans': case 'actes': case 'privileges': case 'paiements': case 'liens': case 'dirigeants': $encoursClient=0; break; case 'score': $encoursClient=$encoursClient*1; break; default: $source='annonces'; break; } /** * Suppression de la surveillance * @todo : Déplacer dans la table de mouvement */ if ($delete) { $tabUpdate = array('dateSuppr'=>date('Y-m-d')); $result = $iDb->update('surveillances_site', $tabUpdate, "source='$source' AND login='$login' AND email='$email' AND siren=$siren AND nic=$nic AND ref='$ref'" ); } else { /** * Calcul d'initialisation du score lors d'un ajout */ if ( $source == 'score' ) { $survM = new Application_Model_JoScoresSurveillance(); $item = $survM->find($siren); if ( $item === null ) { require_once 'Metier/scores/classMScores.php'; calculIndiScore($siren, 0, false, 0); } } $where = "source='$source' AND login='$login' AND email='$email' AND siren=$siren AND nic=$nic AND ref='$ref'"; $detect = $iDb->select('surveillances_site', 'siren', $where, false, MYSQL_ASSOC); if ( count($detect)>0 ) { //Si la donnée existe déjà et que la source=score alors il faut mettre à jour l'encours client if ($source == 'score' && $detect[0]['dateSuppr']=='0000-00-00 00:00:00') { $data = array ( 'encoursClient' => $encoursClient, ); $result = $iDb->update('surveillances_site', $data, $where, false, 0, true); } elseif ( $detect[0]['dateSuppr']!='0000-00-00 00:00:00') { $data = array ( 'dateAjout' => date('Y-m-d'), 'dateSuppr' => '0000-00-00 00:00:00', ); $result = $iDb->update('surveillances_site', $data, $where, false, 0, true); } } else { $iInsee = new MInsee(); $tabIdentite = $iInsee->getIdentiteLight($siren, $nic); $data = array( 'source' => $source, 'login' => $login, 'email' => $email, 'siren' => $siren, 'nic' => $nic, 'ref' => $ref, 'encoursClient' => $encoursClient, 'rs' => $tabIdentite['Nom'], 'cp' => $tabIdentite['CP'], 'ville' => $tabIdentite['Ville'], 'dateAjout'=>date('Y-m-d'), 'dateSuppr'=>0, ); $result = $iDb->insert('surveillances_site', $data, false, true); } } $output = new SetSurveillanceReturn(); $output->result = $result; return $output; } /** * getSurveillances * @param SurveillancesFiltre $filtre * @param integer $deb * @param integer $nbRep * @return SurveillancesReturn */ public function getSurveillances($filtre, $position=0, $nbRep=100) { $this->authenticate(); //$this->permission('survliste'); //Initialisation if (empty($position)) $position = 0; if (empty($nbRep)) $nbRep = 100; $error = new ErrorType(); $tabRet = array(); $siren = 0; $login = $this->User->login; $strSiren = ""; if (!empty($filtre->item) && $filtre->itemMode == 'siren'){ $siren = substr($filtre->item,0,9); $nic = substr($filtre->item,9,5); $strSiren = " AND siren='$siren'"; } elseif (!empty($filtre->item) && $filtre->itemMode == 'search') { $identifiant = trim($filtre->item); if (preg_match('/([0-9]{9})|([0-9]{3}\s[0-9]{3}\s[0-9]{3})/',$identifiant, $matches)){ $identifiant = str_replace(' ', '', $identifiant); $strSiren = " AND ( siren='$identifiant' )"; } else { $strSiren = " AND ( ref='$filtre->item' OR rs='$filtre->item' )"; } } //Ordre pour le tri $triMode = strtoupper(trim($filtre->triMode)); if ($triMode == 'DESC') { $triMode = 'DESC'; } else { $triMode = 'ASC'; } //Option de tri $tri = strtolower(trim($filtre->tri)); switch ($tri) { case 'ref': $orderBy='ORDER BY ref'; break; case 'dateAjout': $orderBy='ORDER BY dateAjout'; break; case 'dateDerEnvoi': $orderBy='ORDER BY dateDerEnvoi'; break; case 'rs': $orderBy='ORDER BY rs'; break; case 'cp': $orderBy='ORDER BY cp'; break; case 'ville': $orderBy='ORDER BY ville'; break; default: $orderBy='ORDER BY siren'; break; // siren ou vide ou autre } $orderBy = $orderBy.' '.$triMode; if ($filtre->detail) { $strSelect = 'source, email, siren, nic, ref, dateAjout, encoursClient, rs, cp, ville, dateDerEnvoi'; } else { $strSelect = 'source, email, siren, nic, ref, dateAjout, dateDerEnvoi'; } if ($filtre->source!='') $strSource = " AND source='$filtre->source' "; else $strSource = ''; $iDb = new WDB(); if ($filtre->source!='') { // Il faut compter le nombre de siren au total $tabTmp = $iDb->select( 'surveillances_site', 'count(*) as nb', "login='$login' AND dateSuppr=0 $strSiren $strSource", false, MYSQL_ASSOC ); $nbRepTot = $tabTmp[0]['nb']; // Récupération des résultats $tabTmp = $iDb->select( 'surveillances_site', $strSelect, "login='$login' AND dateSuppr=0 $strSiren $strSource $orderBy LIMIT $position,$nbRep", false, MYSQL_ASSOC ); } else { // Il faut compter le nombre de siren au total $tabTmp = $iDb->select( 'surveillances_site', 'siren', "login='$login' AND dateSuppr=0 $strSiren GROUP BY siren", false, MYSQL_ASSOC ); $nbRepTot = count($tabTmp); // Récupération des résultats if ($nbRepTot>0){ $tabTmp = $iDb->select( 'surveillances_site', 'siren', "login='$login' AND dateSuppr=0 $strSiren GROUP BY siren ORDER BY siren LIMIT $position,$nbRep", false, MYSQL_ASSOC ); $listeSiren = array(); foreach($tabTmp as $i => $v) { $listeSiren[] = $v['siren']; } $tabTmp = $iDb->select( 'surveillances_site', $strSelect, "login='$login' AND dateSuppr=0 AND siren IN (".join(',',$listeSiren).") $strSiren ORDER BY siren", false, MYSQL_ASSOC ); } } if (count($tabTmp)>0) { //Tri pour avoir le nombre de réponse correct suivant la structure $listeRetour = array(); foreach ($tabTmp as $i => $tabSurv) { $rs = ''; $cp = ''; $ville = ''; $encoursClient = 0; if ($filtre->detail) { $encoursClient = $tabSurv['encoursClient']; if (trim($tabSurv['rs'])<>'') { $rs = $tabSurv['rs']; $cp = $tabSurv['cp']; $ville = $tabSurv['ville']; } else { $iInsee = new MInsee(); $tabIdentite = $iInsee->getIdentiteLight($tabSurv['siren'], $tabSurv['nic']); $rs = $tabIdentite['Nom']; $cp = $tabIdentite['CP']; $ville = $tabIdentite['Ville']; $iDb->update('surveillances_site', array( 'rs' => $rs, 'cp' => $cp, 'ville' => $ville), "login='$login' AND dateSuppr=0 AND siren=".$tabSurv['siren']." AND nic=".$tabSurv['nic']." $strSource", false ); } } $listeRetour[$tabSurv['siren']][] = array( 'rs' => $rs, 'cp' => $cp, 'ville' => $ville, 'source' => $tabSurv['source'], 'email' => $tabSurv['email'], 'nic' => $tabSurv['nic'], 'ref' => $tabSurv['ref'], 'encoursClient' => $encoursClient, 'dateAjout' => $tabSurv['dateAjout'], 'dateDerEnvoi' => $tabSurv['dateDerEnvoi'], ); } foreach ($listeRetour as $siren => $item) { $liste = new Surveillance(); $liste->siren = $siren; foreach($item as $s) { $source = new stdClass(); $source->rs = $s['rs']; $source->cp = $s['cp']; $source->ville = $s['ville']; $source->source = $s['source']; $source->email = $s['email']; $source->nic = $s['nic']; $source->ref = $s['ref']; $source->encoursClient = $s['encoursClient']; $source->dateAjout = $s['dateAjout']; //@todo : date $source->dateDerEnvoi = $s['dateDerEnvoi']; //@todo : date $liste->sources[] = $source; } $tabRet[] = $liste; } } $output = new SurveillancesReturn(); $output->nbReponses = count($tabRet); $output->nbReponsesTotal = $nbRepTot; $output->result = $tabRet; return $output; } /** * Recherche par référence client * @param string $search * @param integer $position * @param integer $nbRep * @return SearchRefClientReturn */ public function searchRefClient($search, $position=0, $nbRep=20) { $this->authenticate(); //Initialisation if (empty($position)) $position = 0; if (empty($nbRep)) $nbRep = 20; $iDb = new WDB(); $login = $this->User->login; $orderBy = " ORDER BY dateAjout ASC"; if ($this->User->rechRefType=='CLI'){ //On cherche les logins actifs pour le client $idClient = $this->User->idClient; $where = "u.idClient='$idClient' AND u.actif=1 AND s.dateSuppr=0 AND ( s.siren='$search' OR s.ref='$search' OR s.rs='$search' )"; // Il faut compter le nombre au total $tabTmp = $iDb->select('surveillances_site s, utilisateurs u', 'count(*) as nb', $where.$orderBy, false, MYSQL_ASSOC); $nbRepTot = $tabTmp[0]['nb']; // Execution de la requete $tabTmp = $iDb->select('surveillances_site s, utilisateurs u', "siren, nic, ref, source, login, email, DATE_FORMAT(dateAjout, '%Y-%m-%d') as dateAjout, DATE_FORMAT(dateDerEnvoi, '%Y-%m-%d') as dateEnvoi", $where.$orderBy." LIMIT $position,$nbRep", false, MYSQL_ASSOC); } else { $where = "login='$login' AND dateSuppr=0 AND ( siren='$search' OR ref='$search' OR rs='$search' )"; // Il faut compter le nombre au total $tabTmp = $iDb->select('surveillances_site', 'count(*) as nb', $where.$orderBy, false, MYSQL_ASSOC); $nbRepTot = $tabTmp[0]['nb']; // Execution de la requete $tabTmp = $iDb->select('surveillances_site', "siren, nic, ref, source, login, email, DATE_FORMAT(dateAjout, '%Y-%m-%d') as dateAjout, DATE_FORMAT(dateDerEnvoi, '%Y-%m-%d') as dateEnvoi", $where.$orderBy." LIMIT $position,$nbRep", false, MYSQL_ASSOC); } $tabRet = array(); if (count($tabTmp)>0) { foreach ($tabTmp as $i => $item) { $info = new SearchRefClientInfo(); $info->ref = $item['ref']; $info->source = $item['source']; $info->login = $item['login']; $info->email = $item['email']; $info->dateAjout = $item['dateAjout']; $info->dateEnvoi = $item['dateEnvoi']; $iInsee = new MInsee(); $tabIdentite = $iInsee->getIdentiteLight($item['siren'], $item['nic']); $reponse = new SearchRefClient(); $reponse->id = $tabIdentite['id']; $reponse->Siret = $tabIdentite['Siret']; $reponse->Siege = $tabIdentite['Siege']; $reponse->Nom = prepareString(strtr($tabIdentite['Nom'],'/*',' ')); $reponse->Nom2 = prepareString($tabIdentite['Nom2']); $reponse->Sigle = prepareString($tabIdentite['Sigle']); $reponse->Enseigne = prepareString($tabIdentite['Enseigne']); $reponse->Adresse = prepareString($tabIdentite['Adresse']); $reponse->Adresse2 = prepareString($tabIdentite['Adresse2']); $reponse->CP = $tabIdentite['CP']; $reponse->Ville = prepareString($tabIdentite['Ville']); $reponse->Tel = $tabIdentite['Tel']; $reponse->Fax = $tabIdentite['Fax']; $reponse->FJ = $tabIdentite['FJ']; $reponse->FJLib = prepareString($tabIdentite['FJ_lib']); $reponse->Siren = $tabIdentite['Siren']; $reponse->Nic = $tabIdentite['Nic']; $reponse->Actif = $tabIdentite['Actif']; $reponse->NafEtab = $tabIdentite['NafEtab']; $reponse->NafEtabLib = $tabIdentite['NafEtabLib']; $reponse->NafEnt = $tabIdentite['NafEnt']; $reponse->NafEntLib = $tabIdentite['NafEntLib']; $reponse->Infos = $info; $tabRet[] = $reponse; } } $output = new SearchRefClientReturn(); $output->nbReponses = count($tabRet); $output->nbReponsesTotal = $nbRepTot; $output->result = $tabRet; return $output; } /** * Retourne le bilan correspondant au siren, à l'exercice et au formalisme demandé * * @param string $siren Siren de l'entreprise * @param string $millesime Date du bilan au format AAAAMMJJ * @param string $typeBilan N:Réel Normal, S:Réel Simplifié, C:Consolidé * @param string $ref Référence S&D obligatoire * @return Bilan */ public function getBilan($siren, $millesime, $typeBilan='N', $ref='') { $this->authenticate(); $this->permission('liasse'); //Initialisation if (empty($typeBilan)) { $typeBilan = 'N'; } if (empty($ref)) { $ref = ''; } debugLog('I',"Bilan $millesime $typeBilan demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabRet = array(); if (strlen($siren)<>9){ debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $millesime = WDate::dateT('Ymd','d/m/Y',$millesime); $mBil = new MBilans($siren); $tabBilan = $mBil->getBilan($millesime, $typeBilan, $ref, true); $resultBilan = new Bilan(); $tabPoste = array(); foreach($tabBilan as $key => $value){ if(!in_array($key, array('SIREN', 'DATE_FRAICHE_BILAN', 'DATE_CLOTURE', 'DATE_CLOTURE_PRE', 'DUREE_MOIS', 'DUREE_MOIS_PRE', 'MONNAIE', 'CONSOLIDE', 'MONNAIE_ORI', 'MONNAIE_LIV_UNITE', 'SOURCE', 'devise'))){ $resultPoste = new BilanPoste(); $resultPoste->id = $key; $resultPoste->val = $value; $tabPoste[] = $resultPoste; } else { $resultBilan->$key = $value; } } $this->wsLog('bilan',$siren, $millesime.':'.$typeBilan.':'.$ref); $resultBilan->POSTES = $tabPoste; return $resultBilan; } /** * Retourne la liste des bilans disponible pour une entreprise * * @param string $siren Siren de l'entreprise * @return ListeBilansReturn */ public function getListeBilans($siren) { $this->authenticate(); $this->permission('liasse'); //Initialisation $tabRet = array(); debugLog('I',"Liste des Bilans demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)<>9) { debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans(true); foreach($tabBilans as $bilan) { $element = new ListeBilans(); $element->dateProvPartenaire = $bilan['dateProvPartenaire']; //@todo : date $element->dateInsert = $bilan['dateInsert']; //@todo : date $element->typeBilan = $bilan['typeBilan']; $element->dureeExercice = $bilan['dureeExercice']; $element->dateExercice = $bilan['dateExercice']; //@todo : date $element->millesime = $bilan['millesime']; $element->dateExercicePre = $bilan['dateExercicePre']; //@todo : date $element->dureeExercicePre = $bilan['dureeExercicePre']; $element->monnaie = $bilan['monnaie']; $element->source = $bilan['source']; $tabRet[] = $element; } debugLog('I', 'Nb Bilans retournés = '. count($tabBilans), __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->wsLog('listebilans', $siren); $output = new ListeBilansReturn(); $output->nbReponses = count($tabRet); $output->result = $tabRet; return $output; } /** * Informations date de cloture du dernier bilan et état de saisie * * @param string $siren * @return LiasseInfos|null */ public function getLiasseInfos($siren) { $this->authenticate(); //$this->permission('liasse'); //Check SIREN //Lecture de la base de données try { $bilansM = new Application_Model_JoGreffesBilans(); $sql = $bilansM->select() ->where('siren=?', $siren) ->where('actif=1') ->order('date_cloture DESC') ->order('num_depot DESC') ->order('dateInsert DESC') ->limit(1); $row = $bilansM->fetchRow($sql); } catch (Zend_Db_Exception $e) { if ($this->User->idClient==1) { throw new SoapFault('ERR', $e->getMessage()); } else { throw new SoapFault('ERR', "Application error"); } } if ( $row === null ) { return null; } $liasseInfos = new LiasseInfos(); $liasseInfos->Id = $row->id; $liasseInfos->BilanDateCloture = $row->date_cloture; switch ( $row->type_comptes ) { case '': case 'sociaux': $liasseInfos->BilanType = 'N'; break; case 'consolides': $liasseInfos->BilanType = 'C'; break; } $liasseInfos->SaisieDate = $row->saisie_date; $liasseInfos->SaisieCode = $row->saisie_code; switch ( $row->saisie_code ) { case '00': $liasseInfos->SaisieLabel = "Bilan saisi sans anomalie"; break; case '01': $liasseInfos->SaisieLabel = "Bilan saisi avec des incohérences comptables à la source du document (issues du remettant)"; break; case '02': $liasseInfos->SaisieLabel = "Bilan avec Actif, Passif ou Compte de Résultat nul"; break; case '03': $liasseInfos->SaisieLabel = "Bilan incomplet (des pages manquent)"; break; case '04': $liasseInfos->SaisieLabel = "Bilan complet non détaillé (seuls les totaux et sous totaux sont renseignés)"; break; case '05': $liasseInfos->SaisieLabel = "Bilan reçu en double exemplaire"; break; case '06': $liasseInfos->SaisieLabel = "Bilan intermédiaire - Situation provisoire"; break; case '07': $liasseInfos->SaisieLabel = "Bilan illisible"; break; case 'A7': $liasseInfos->SaisieLabel = "Bilan illisible, présentant un cadre gris très foncés (dans lesquels sont inscrits en général les totaux)"; break; case 'B7': $liasseInfos->SaisieLabel = "Bilan manuscrits"; break; case 'C7': $liasseInfos->SaisieLabel = "Bilan illisible, présentant des caractères trop gras"; break; case 'D7': $liasseInfos->SaisieLabel = "Bilan scanné en biais ou qui présentent des pages rognées"; break; case 'E7': $liasseInfos->SaisieLabel = "Bilan numérisés trop clairement (comme une imprimante dont la cartouche est presque vide)"; break; case 'F7': $liasseInfos->SaisieLabel = "Bilan illisible"; break; case '08': $liasseInfos->SaisieLabel = "Bilan consolidé"; break; case '09': $liasseInfos->SaisieLabel = "Déclaration d'impôts"; break; case '10': $liasseInfos->SaisieLabel = "Document autre que bilan"; break; case '11': $liasseInfos->SaisieLabel = "Bilan de clôture de liquidation"; break; case '12': $liasseInfos->SaisieLabel = "Bilan de Société financière"; break; case '13': $liasseInfos->SaisieLabel = "Bilan de Société d'assurance"; break; case '14': $liasseInfos->SaisieLabel = "Bilan de Société immobilière"; break; case '15': $liasseInfos->SaisieLabel = "Bilan de Société étrangère"; break; default: $liasseInfos->SaisieLabel = ""; break; } if ( $row->saisie_code != '00' ) { //Surcharge des codes de saisie $date = new Zend_Date($row->date_cloture, 'yyyy-MM-dd'); try { $liasseM = new Application_Model_JoBilans(); $sql = $liasseM->select() ->where('siren=?', $siren) ->where('typeBilan=?', $liasseInfos->BilanType) ->where('dateExercice=?', $date->toString('yyyyMMdd')); $row = $liasseM->fetchRow($sql); } catch (Zend_Db_Exception $e) { //file_put_contents('debug.log', $e->getMessage()."\n", FILE_APPEND); } if ( $row !== null ) { $liasseInfos->SaisieDate = substr($row->dateProvPartenaire,0,4) . '-' . substr($row->dateProvPartenaire,4,2) . '-' . substr($row->dateProvPartenaire,6,2); $liasseInfos->SaisieCode = '00'; } } return $liasseInfos; } /** * Vérifie si un siren existe en base Scores & Décisions * @param string $siren Siren de l'entité * @return boolean */ public function isSirenExistant($siren) { $this->authenticate(); //Initialisation $tabRet = array(); $siren = trim(substr($siren,0,9)); $result = false; debugLog('I',"Siren existant demandée pour siren $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } $iInsee = new MInsee(); $entrep = $iInsee->sirenExiste($siren); if (empty($entrep)) { debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $result = false; } else { debugLog('I', "Siren $siren présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $result = true; } $this->wsLog('sirenExiste',$siren); return $result; } /** * Retourne une annonce en fonction de sa référence * * @param string $siren Siren de l'entreprise * @param string $dateAnnee * @param integer $numParution * @param integer $numAnnonce * @return RechercheAnnonceReturn */ public function rechercheAnnonce($source, $dateAnnee, $numParution, $numAnnonce) { $this->authenticate(); $this->permission('histobodacc'); //Initialisation $tabRet = array(); debugLog('I',"Annonce précise demandée pour $source, $dateAnnee, $numParution, $numAnnonce",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($dateAnnee)==4) $annee = $dateAnnee; else $annee = substr($dateAnnee,0,4); $iDb = new WDB('jo'); switch (strtoupper($source)) { case 'BODA': case 'BODB': case 'BODC': $lettre = substr(strtoupper($source),3,1); if ($annee<2005) { if ($lettre=='A'){ $numJAL=1; } elseif ($lettre=='B'){ $numJAL=200; } else{ break; } $anneeDeb = $annee.'0101'; $anneeFin = $annee.'1231'; $res = $iDb->select('historiques.entrep e, texte t', "$annee AS Annee_Parution, e.NOBOD AS Num_Parution, e.NOANN AS Num_Annonce, e.NOPAGE AS Num_Page, e.`DATE` AS Date_Parution, e.DEPT AS Departement, e.CODTRI AS Tribunal_Code, 'I' AS typeAnnonce, CONCAT(e.NOANN,' - ',t.annonceTxt) AS annonce", "e.JAL=$numJAL AND e.NOBOD=$numParution AND e.`DATE` BETWEEN $anneeDeb AND $anneeFin AND e.NOANN=$numAnnonce AND e.ANBASE=t.annonceNum", false, MYSQL_ASSOC); } else { $res = $iDb->select('bodacc', 'Bodacc_Annee_Parution AS Annee_Parution, Bodacc_Num AS Num_Parution, Num_Annonce, Bodacc_Page AS Num_Page, Bodacc_Date_Parution AS Date_Parution, Tribunal_Dept AS Departement, Tribunal_Code, typeAnnonce, annonce', "Bodacc_Code='$lettre' AND Bodacc_Annee_Parution=$annee AND Bodacc_Num=$numParution AND Num_Annonce=$numAnnonce", false, MYSQL_ASSOC); } break; case 'ASSO': $res = $iDb->select('asso', 'YEAR(Date_Parution) AS Annee_Parution, Num_Parution, Num_Annonce, pageDeb AS Num_Page, Date_Parution, Departement, codTribunal AS Tribunal_Code, typeAnnonce, Annonce_Html AS annonce', "Date_Parution BETWEEN '$annee-01-01' AND '$annee-12-31' AND Num_Parution=$annee".sprintf('%04d', $numParution)." AND Num_Annonce=$numAnnonce", false, MYSQL_ASSOC); break; case 'BALO': $res = $iDb->select('balo', "YEAR(Date_Parution) AS Annee_Parution, Num_Parution, Num_Affaire AS Num_Annonce, '' AS Num_Page, Date_Parution, '' AS Departement, '' AS Tribunal_Code, 'Insertion' AS typeAnnonce, Annonce_Html AS annonce", "Date_Parution BETWEEN '$annee-01-01' AND '$annee-12-31' AND Num_Parution=$numParution AND Num_Affaire=$numAnnonce", false, MYSQL_ASSOC); break; } if (count($res)>0) { $iBodacc = new MBodacc(); foreach ($res as $i => $etab) { $annonces = new AnnonceItem(); $annonces->Annee_Parution = $etab['Annee_Parution']; $annonces->Num_Parution = $etab['Num_Parution']; $annonces->Num_Annonce = $etab['Num_Annonce']; $annonces->Num_Page = $etab['Num_Page']; $annonces->Date_Parution = $etab['Date_Parution']; //@todo : date $annonces->Departement = $etab['Departement']; $annonces->Tribunal_Code = $etab['Tribunal_Code']; $annonces->Tribunal = $iBodacc->getTribunalNom($etab['Tribunal_Code']); $annonces->Type_Annonce = $etab['typeAnnonce']; $annonces->Annonce = strip_tags(strtr( html_entity_decode($etab['annonce']), array('>'=>'>','&'=>'&','<'=>'<','’'=>"'") )); $tabRet[] = $annonces; } } $nbTot = count($tabRet); $output = new RechercheAnnonceReturn(); $output->criteres = $criteres; $output->nbReponses = $nbTot; $output->nbReponsesTotal = $nbTot; $output->result = $tabRet; return $output; } /** * getRatios * @param string $siren * @param string $page * @return RatiosReturn */ public function getRatios($siren, $page='ratios') { $this->authenticate(); $this->permission('ratios'); //Initialisation if (empty($page)) $page = 'ratios'; debugLog('I',"Liste des Ratios demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (strlen($siren)<>9){ debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } elseif ($siren*1==0) { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $this->sendError('1010'); } debugLog('I',"Liste des Ratios demandée pour $siren avant getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $iInsee = new MInsee(); $tabIdentite = $iInsee->getIdentiteEntreprise($siren,0,0,false,false); debugLog('I',"Liste des Ratios demandée pour $siren après getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $naf = $tabIdentite['NafEnt']; $nafLib = $tabIdentite['NafEntLib']; $efftr = $tabIdentite['Effectif']*1; $fj = $tabIdentite['FJ']; $accesPartenaire = true; if (APPLICATION_ENV == 'development') { $accesPartenaire = false; } $tabRatiosInfos = $tabRatiosSecteurs = $tabBilansR = array(); $tabRatios = $tabRatiosEvol = array(); $tabRet = array(); /** * Tableau d'infos sur les formules */ $tabFormules = include APPLICATION_PATH . '/../library/Metier/scores/Data/Formules.php'; $tabBorneMin = $tabBorneMax = array(); foreach ($tabFormules as $formule) { $id = $formule['id']*1; $libelle = $formule['libelle']; $unite = $formule['unite']; $commentaires = $formule['commentaires']; $tabFormulesInfos[$id] = $formule; //Pour la gestion des unités des ratios secteur $ratiosInfos = new RatiosInfos(); $ratiosInfos->id = 'r'.$id; $ratiosInfos->libelle = $formule['libelle']; $ratiosInfos->unite = $formule['unite']; $ratiosInfos->commentaires = $formule['commentaires']; $tabRatiosInfos[] = $ratiosInfos; $tabBorneMin[$id] = $formule['borneMin']; $tabBorneMax[$id] = $formule['borneMax']; } //Ratios global $tva, $mBil, $efftr, $tabInfla; require_once 'Metier/scores/classMRatios.php'; $mBil = new MBilans($siren); $tabBilans = $mBil->listeBilans($accesPartenaire); $nbBilans = count($tabBilans); $tabBilan = $tabBil = array(); if ($nbBilans > 0) { foreach ($tabBilans as $millesime => $item) { $tabBilan[] = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), ''); } $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesPartenaire); } $nbRatios = count($tabRatios); debugLog('I',"Liste des Ratios demandée pour $siren après calculRatios ($nbRatios)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabAnnees = array(); if ( $nbRatios > 0 ) { foreach ( $tabRatios as $i=>$R ) { //Informations sur le bilan $bilansInfos = new RatiosBilansInfos(); $bilansInfos->dateCloture = $tabBilan[$i]['DATE_CLOTURE']; //@todo : date $bilansInfos->duree = $tabBilan[$i]['DUREE_MOIS']; $bilansInfos->devise = $tabBilan[$i]['MONNAIE']; $bilansInfos->typeBilan = $tabBilan[$i]['CONSOLIDE']; $bilansInfos->unite = 'U'; if ( substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900 ){ $tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); } $tabRatiosEntrep = array(); $tabRatiosEntrepEvol = array(); foreach ( $R as $Ridx=>$Rmont ) { if ($Rmont<>'NS') { if ( $tabBorneMin[$Ridx]<>'' && $Rmont<$tabBorneMin[$Ridx] ){ $Rmont='<'.$tabBorneMin[$Ridx]; } elseif ( $tabBorneMax[$Ridx]<>'' && $Rmont>$tabBorneMax[$Ridx] ){ $Rmont='>'.$tabBorneMax[$Ridx]; } } // RatiosEntrep $ratiosEntrep = new Ratios(); if (substr($Rmont,0,1)=='N' || substr($Rmont,0,1)=='<' || substr($Rmont,0,1)=='>'){ $ratiosEntrep->id = 'r'.$Ridx; $ratiosEntrep->val = $Rmont; } else { $ratiosEntrep->id = 'r'.$Ridx; $ratiosEntrep->val = round($Rmont,2); } $tabRatiosEntrep[] = $ratiosEntrep; if ( ( $tabBilan[$i]['CONSOLIDE']=='S' && isset($tabRatios[$i+1]) && ($tabBilan[$i+1]['CONSOLIDE']=='S' || ($tabBilan[$i+1]['CONSOLIDE']=='N' && $tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']) ) ) || ( $tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='N' || ($tabBilan[$i+1]['CONSOLIDE']=='S'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) ) { $Rmont=(($R[$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]); } elseif ( ( $tabBilan[$i]['CONSOLIDE']=='S' && isset($tabRatios[$i+1]) && ($tabBilan[$i+2]['CONSOLIDE']=='S' || ($tabBilan[$i+2]['CONSOLIDE']=='N' && $tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) || ( $tabBilan[$i]['CONSOLIDE']=='N' && isset($tabRatios[$i+1]) && ($tabBilan[$i+2]['CONSOLIDE']=='N' || ($tabBilan[$i+2]['CONSOLIDE']=='S'&& $tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])) ) ) { $Rmont = (($R[$Ridx]-$tabRatios[$i+2][$Ridx])*100)/abs($tabRatios[$i+2][$Ridx]); } else { $Rmont = 'NS'; } // RatiosEntrepEvol $ratiosEntrepEvol = new Ratios(); if ($Rmont=='NS' || $Rmont<-800 || $Rmont>800){ $ratiosEntrepEvol->id = 'r'.$Ridx; $ratiosEntrepEvol->val = 'NS'; } else { $ratiosEntrepEvol->id = 'r'.$Ridx; $ratiosEntrepEvol->val = number_format($Rmont,2,',',' '); } $tabRatiosEntrepEvol[] = $ratiosEntrepEvol; } $bilansInfos->RatiosEntrep = $tabRatiosEntrep; $bilansInfos->RatiosEntrepEvol = $tabRatiosEntrepEvol; $tabBilansR[] = $bilansInfos; } } debugLog('I',"Liste des Ratios demandée pour $siren après EVOLUTION",__LINE__,__FILE__, __FUNCTION__, __CLASS__); // Tableau des ratios secteurs if (strlen($naf)>4) $strNaf = " AND naf5='$naf' "; else $strNaf = " AND naf4='$naf' "; $strAnnees = implode(',', $tabAnnees); $tabRatiosSecteurs = array(); $tabAnnees = array_unique($tabAnnees); if ( count($tabAnnees)>0 ) { $iDb = new WDB('jo'); $tabTmp = $iDb->select('ratios_secteurs', 'annee, naf5, naf4, id, (montant/nombre) AS ratio, nombre', "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC", false, MYSQL_ASSOC); $nbRatiosSec = 0; foreach($tabAnnees as $annee) { $ratiosSecteur = new RatiosSecteur(); $ratiosSecteur->annee = $annee; foreach ($tabTmp as $tmp) { if ($tmp['annee']== $annee) { $Ridx = $tmp['id']; if ($tmp['nombre']>$nbRatiosSec){ $nbRatiosSec = $tmp['nombre']; } $unite = $tabFormulesInfos[$Ridx]['unite']; if ($unite=='EUR'){ $montant = round($tmp['ratio']*1000); } else { $montant = round($tmp['ratio']); } if ($tabBorneMin[$Ridx]<>'' && $montant<$tabBorneMin[$Ridx]){ $montant='<'.$tabBorneMin[$Ridx]; } elseif ($tabBorneMax[$Ridx]<>'' && $montant>$tabBorneMax[$Ridx]){ $montant='>'.$tabBorneMax[$Ridx]; } $ratiosSecteurListe = new Ratios(); if (substr($montant,0,1)=='N' || substr($montant,0,1)=='<' || substr($montant,0,1)=='>'){ $ratiosSecteurListe->id = 'r'.$Ridx; $ratiosSecteurListe->val = $montant; } else { $ratiosSecteurListe->id = 'r'.$Ridx; $ratiosSecteurListe->val = round($montant,2); } $ratiosSecteur->liste[] = $ratiosSecteurListe; } } $tabRatiosSecteurs[] = $ratiosSecteur; } } //$tabRatiosSecteurs=array(count($tabTmp), "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC"); $output = new RatiosReturn(); $output->Nom = $tabIdentite['Nom']; $output->NafEnt = $tabIdentite['NafEnt']; $output->NafEntLib = $tabIdentite['NafEntLib']; $output->FJ = $fj; $output->FJ_lib = $tabIdentite['FJ_lib']; $output->Siren = $siren; $output->NbEntNaf = $nbRatiosSec; $output->BilansInfos = $tabBilansR; $output->RatiosInfos = $tabRatiosInfos; $output->RatiosSecteur = $tabRatiosSecteurs; debugLog('I',"Liste des Ratios demandée pour $siren RETURN",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $this->wsLog($page, $siren); return $output; } /** * getRapport * @param string $siren Siren de l'entreprise * @param integer $niveau Niveau du rapport 1, 2 ou 3 * @param integer $id Identifiant interne S&D de l'entreprise * @param boolean $plus Si true, mise en surveillance privilèges * @param string $ref Si $plus=true, référence facultative de la mise en Surveillance * @param integer $encours Si $plus=true, encours facultatif Demandé par le client lors de la mise en Surveillance * @param string $email Si $plus=true, email facultatif pour le suivi * @return Rapport */ public function getRapport($siren, $niveau=3, $id=0, $plus=false, $ref='', $encours=0, $email='') { $this->authenticate(); if (empty($niveau)) $niveau = 3; if (empty($id)) $id = 0; $result = new Rapport(); $filtre = 0; $idAnn = 0; //@todo : Gestion des droits $perm = false; switch($niveau){ case 1: $perms = array('indiscore', 'indiscorep'); break; case 2: $perms = array('indiscore2', 'indiscore2p'); break; case 3: $perms = array('indiscore3', 'indiscore3p'); break; } foreach($perms as $item){ if ( $this->checkPerm($item) ){ $perm = true; break; } } if ($perm === false) { $this->sendError('0902'); } $accesDist=true; $nivComment=2; if ($niveau==1){ $result->Indiscore = $this->getIndiScore($siren, 0, $nivComment, $plus, $ref, $encours, $email); } elseif ($niveau==2) { $result->Identite = $this->getIdentite($siren, $id=0); $result->Indiscore = $this->getIndiScore($siren, 0, $nivComment, $plus, $ref, $encours, $email); $result->Dirigeants = $this->getDirigeants($siren, false); $result->Liens = $this->getLiens($siren, true); $result->Ratios = $this->getRatios($siren, $page="rapport$niveau"); } elseif ($niveau==3) { $result->Identite = $this->getIdentite($siren, $id=0); $result->Indiscore = $this->getIndiScore($siren, 0, $nivComment, $plus, $ref, $encours, $email); $result->Dirigeants = $this->getDirigeants($siren, false); $result->Liens = $this->getLiens($siren, true); $result->Ratios = $this->getRatios($siren, $page="rapport$niveau"); $result->Annonces = $this->getAnnonces($siren, $filtre, $idAnn); } return $result; } /** * Retourne la liste des banques connues pour une entreprise * @param string $siren Siren de l'entreprise * @return BanquesReturn **/ public function getBanques($siren) { $this->authenticate(); $this->permission('banque'); //Initialisation $iDb = new WDB('sdv1'); $tabRet = array(); debugLog('I',"Liste des banques demandée pour siren $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); if (intval($siren)<=1000) { $this->sendError('1010'); } $res=$iDb->select('banques', 'codeBanque, codeGuichet, libBanqueGuichet, precis, dateSource*1 AS dateSource', "siren=$siren", true, MYSQL_ASSOC); $tmp=$iDb->select('fedRib', "codeBanque, codeGuichet, CONCAT(libBanque,' ',libGuichet) AS libBanqueGuichet, 0 AS precis, IF (dateInfo='0000-00-00', dateDispo*1, dateInfo*1) AS dateSource", "siren=$siren", true, MYSQL_ASSOC); $res=array_merge($res, $tmp); foreach ($res as $tabBanque) { $dateSource = $tabBanque['dateSource']; $codBanque = $tabBanque['codeBanque']; $codGuichet = $tabBanque['codeGuichet']; $libBanque = trim($tabBanque['libBanqueGuichet']); $found = false; $adrBanque1=$adrBanque2=$adrBanqueCP=$adrBanqueVille=''; if ( $codBanque>0 && $codGuichet>0 ) { $tmp = $iDb->select('insee.BDF_Etabs b, insee.BDF_Guichets g', 'g.bdfFibCodeEtab AS banque, g.bdfFibCodeGuichet AS guichet, b.bdfFibDenom40 AS nomBanque, b.bdfFibDenom10 AS sigleBanque, g.bdfFibDenom20 AS nomGuichet, g.bdfFibAdresse1 AS adresse1, g.bdfFibAdresse2 AS adresse2, g.bdfFibAdresse3 AS adresse3, g.CP, g.Ville', "g.bdfFibCodeEtab=$codBanque AND g.bdfFibCodeGuichet=$codGuichet AND b.bdfFibCodeEtab=g.bdfFibCodeEtab", true, MYSQL_ASSOC); if (count($tmp)>0) { $found = true; $banque = new Banque(); $banque->codeBanque = $codBanque; $banque->codeGuichet = $codGuichet; $banque->libBanque = trim($tmp[0]['nomBanque'].' '.$tmp[0]['nomGuichet']); $banque->adresse1 = $tmp[0]['adresse1']; $banque->adresse2 = trim($tmp[0]['adresse2'].' '.$tmp[0]['adresse3']); $banque->cp = $tmp[0]['CP']; $banque->ville = $tmp[0]['Ville']; $tabRet[] = $banque; } } if ($found===false && $codBanque>0 ) { $tmp = $iDb->select('insee.BDF_Etabs', "bdfFibCodeEtab AS banque, '' AS guichet, bdfFibDenom40 AS nomBanque, '' AS nomGuichet, '' AS adresse1, '' AS adresse2, '' AS adresse3, '' AS CP, '' AS Ville", "bdfFibCodeEtab=$codBanque", true, MYSQL_ASSOC); if (count($tmp)>0) { $banque = new Banque(); $banque->codeBanque = $codBanque; $banque->codeGuichet = $codGuichet; $banque->libBanque = trim($tmp[0]['nomBanque'].' '.$tmp[0]['nomGuichet']); $banque->adresse1 = $tmp[0]['adresse1']; $banque->adresse2 = trim($tmp[0]['adresse2'].' '.$tmp[0]['adresse3']); $banque->cp = $tmp[0]['CP']; $banque->ville = $tmp[0]['Ville']; $tabRet[] = $banque; } } } debugLog('I',"Liste des banques pour siren $siren : ".count($tabRet).' banques',__LINE__,__FILE__, __FUNCTION__, __CLASS__); $this->wsLog('banque', $siren); $output = new BanquesReturn(); $output->result = $tabRet; return $output; } /** * Retourne la liste des compétences territoriales pour un établissement à une adresse donnée. * @param string $siret Siret de l'établissement * @param string $type Type de compétence (pre:prefectures et s/prefectures, jal;journaux d'annonces légales, tri:tribunaux, adm:administrateurs et mandataires judiciaires, hui:huissiers, cfe:centres de formalités des entreprises) * @param string $codeInsee Code Insee de la commune de l'établissement * @return ListeCompetencesReturn */ public function getListeCompetences($siret, $type, $codeInsee) { $this->authenticate(); $this->permission('competences'); //Initialisation $error = new ErrorType(); $type = strtolower($type); debugLog('I',"Liste des compétences $type demandée pour la commune $codeInsee",__LINE__,__FILE__, __FUNCTION__, __CLASS__); $tabRet = array(); $iBodacc = new MBodacc(); $cp=$codeInsee*1; $dep=false; if (substr($codeInsee,0,2)=='2A' || substr($codeInsee,0,2)=='2B') { $dep=20; $cp=20000+(substr($codeInsee,2,3))*1; } elseif ($cp>0 && $cp<100) $dep=$cp; elseif ($cp>970 && $cp<977) $dep=$cp; elseif ($cp>999 && $cp<10000) $dep='0'.substr($cp,0,1); elseif ($cp>=10000 && $cp<96000) $dep=substr($cp,0,2); elseif ($cp>=99000) $dep=substr($cp,0,2); elseif ($cp>=98000) $dep=substr($cp,0,3); elseif ($cp>=97100 && $cp<97700) $dep=substr($cp,0,3); require_once 'i18n/cleanchar.php'; if ($type=='pre') { $iDb = new WDB('jo'); $tabTmp2 = $iDb->select('villes', 'DEP, COM, AR, CT', 'codeInsee='.$codeInsee, false, MYSQL_ASSOC); $arrond = $tabTmp2[0]['AR']; $tabTmp2 = $iDb->select('insee.insee_tabArrond', 'CHEFLIEU, ARTMAJ, NCC', "DEP='$dep' AND AR='$arrond'", false, MYSQL_ASSOC); $nomSousPref = trim(strtr($tabTmp2[0]['ARTMAJ'],array('('=>'',')'=>'',' '=>'', "'"=>'')).' '.$tabTmp2[0]['NCC']); $tabTmp = $iBodacc->getTribunauxParDep($dep); foreach ($tabTmp as $i=>$tribunal) { if ($tribunal['triType']=='A' || $tribunal['triType']=='B') { $pref = levenshtein($tribunal['triNom'], 'PREFECTURE DE '.$nomSousPref); $spref = levenshtein($tribunal['triNom'], 'SOUS PREFECTURE DE '.$nomSousPref); if ($tribunal['triType']=='B' && ($pref>7 || $spref>5)) continue; $competence = new Competence(); $competence->Id = $tribunal['triId']; $competence->IdSup = $tribunal['triIdSup']; $competence->Code = $tribunal['triCode']; $competence->Type = $tribunal['triType'].$typeP; $competence->Nom = strtoupper($tribunal['triNom']); $competence->Siret = $tribunal['triSiret']; $competence->Adr = strtoupper( preg_replace('/ +/',' ',$tribunal['triAdrNum'].' '. $tribunal['triAdrIndRep'].' '. $tribunal['triAdrTypeVoie'].' '. $tribunal['triAdrVoie'])); $competence->AdrComp = strtoupper($tribunal['triAdrComp']); $competence->CP = $tribunal['triCP']; $competence->Ville = strtoupper($tribunal['triVille']); $competence->CodeInsee = $tribunal['CodeInsee']; $competence->Tel = $tribunal['triTel']; $competence->Fax = $tribunal['triFax']; $competence->Web = $tribunal['triWeb']; $competence->Mail = $tribunal['triMail']; $competence->Statut = $tribunal['triStatut']; $competence->DateCessation = $tribunal['triDateCessation']; //@todo : date $competence->Remarque = $tribunal['triCommentaire']; $tabRet[] = $competence; } } } elseif ($type=='jal') { $tabTmp = $iBodacc->getJALparDep($dep); foreach ($tabTmp as $i=>$comp) { $infos=''; if (trim($comp['parution'])<>'') $infos.='Parution '.$comp['parution'].'. '; if (trim($comp['aboAnnuel'])>0) $infos.='Abonnement Annuel : '.$comp['aboAnnuel'].' euros. '; if (trim($comp['infos'])<>'') $infos.=$comp['infos']; $competence = new Competence(); $competence->Id = 9000+$comp['id']*1; $competence->IdSup = 0; $competence->Code = ''; $competence->Type = ''; $competence->Nom = strtoupper($comp['nomJal']); $competence->Siret = ''; $competence->Adr = strtoupper($comp['adresse']); $competence->AdrComp = ''; $competence->CP = $comp['cp']; $competence->Ville = strtoupper($comp['ville']); $competence->CodeInsee = ''; $competence->Tel = $comp['tel']; $competence->Fax = $comp['fax']; $competence->Web = $comp['siteWeb']; $competence->Mail = $comp['email']; $competence->Statut = 'Actif'; $competence->DateCessation = ''; $competence->Remarque = trim($infos); $tabRet[] = $competence; } } elseif ($type=='tri' || $type=='adm' || $type=='hui') { $tabTmp = $iBodacc->getTribunauxParCommune($codeInsee); foreach ($tabTmp as $i=>$tribunal) { if (//$tribunal['triType']=='C' || $tribunal['triType']=='G'// || /*$tribunal['triType']=='I'*/) { $idCA = $tribunal['triIdSup']; $codeTGI = $tribunal['triCode']; $code = strtoupper(substr($tribunal['triCode'],0,3)); } debugLog('D',"Liste des compétences $type demandée pour la commune $codeInsee ($dep) : ". "Type=".$tribunal['triType'].', '. "Code=".$tribunal[$codeTGI],__LINE__,__FILE__, __FUNCTION__, __CLASS__); if ($tribunal['triType']<>'E' && $tribunal['triType']<>'O' && $tribunal['triType']<>'T' && $tribunal['triType']<>'R' && $tribunal['triType']<>'N' && $tribunal['triType']<>'U' && $tribunal['triType']<>'Z') { $competence = new Competence(); $competence->Id = $tribunal['triId']; $competence->IdSup = $tribunal['triIdSup']; $competence->Code = $tribunal['triCode']; $competence->Type = $tribunal['triType']; $competence->Nom = strtoupper(cleanstring($tribunal['triNom'])); $competence->Siret = $tribunal['triSiret']; $competence->Adr = strtoupper(cleanstring(preg_replace('/ +/',' ', $tribunal['triAdrNum'].' '. $tribunal['triAdrIndRep'].' '. $tribunal['triAdrTypeVoie'].' '. $tribunal['triAdrVoie']))); $competence->AdrComp = strtoupper($tribunal['triAdrComp']); $competence->CP = $tribunal['triCP']; $competence->Ville = strtoupper($tribunal['triVille']); $competence->CodeInsee = $tribunal['CodeInsee']; $competence->Tel = $tribunal['triTel']; $competence->Fax = $tribunal['triFax']; $competence->Web = $tribunal['triWeb']; $competence->Mail = $tribunal['triMail']; $competence->Statut = $tribunal['triStatut']; $competence->DateCessation = $tribunal['triDateCessation']; //@todo : date $competence->Remarque = $tribunal['triCommentaire']; if ($tribunal['triNumGreffe']*1>0) { $competence->IdentifiantGreffe = $tribunal['triNumGreffe']; } $tabRet[] = $competence; } } } if ($type=='adm') { $iInsee = new MInsee(); $tabTmp = $iInsee->getMandataires(array($idCA), false); $tabRet = array(); $nbAff=0; foreach ($tabTmp as $i=>$tribunal) { /** @todo A revoir Debut **/ if (stripos($tribunal['tribunal'], $code)!==false || stripos($tribunal['tribunal'], 'SAINT')!==false) { $competence = new Competence(); $competence->Id = $tribunal['id']; $competence->IdSup = $tribunal['sirenGrp']; $competence->Code = $tribunal['tribunal'].'/'.$code; $competence->Type = $tribunal['type']; $competence->Nom = $tribunal['Nom'].' '.$tribunal['Prenom']; $competence->Siret = $tribunal['sirenMand']; $competence->Adr = strtoupper($tribunal['adresse']); $competence->AdrComp = strtoupper($tribunal['adresseComp']); $competence->CP = $tribunal['cp']; $competence->Ville = strtoupper($tribunal['ville']); //'CodeInsee'=>$tribunal['CodeInsee'], $competence->Tel = $tribunal['tel']; $competence->Fax = $tribunal['fax']; $competence->Web = $tribunal['web']; $competence->Mail = $tribunal['email']; $competence->Statut = $tribunal['Statut']; //'DateCessation'=>$tribunal['triDateCessation'], $competence->Remarque = $tribunal['contact']; //,,,,Prenom,,,Statut,,,cp,ville,tel,fax,email,web,contact $tabRet[] = $competence; $nbAff++; } } if ($nbAff==0) { foreach ($tabTmp as $i=>$tribunal) { $competence = new Competence(); $competence->Id = $tribunal['id']; $competence->IdSup = $tribunal['sirenGrp']; $competence->Code = $tribunal['tribunal'].'/'.$code; $competence->Type = $tribunal['type']; $competence->Nom = $tribunal['Nom'].' '.$tribunal['Prenom']; $competence->Siret = $tribunal['sirenMand']; $competence->Adr = strtoupper($tribunal['adresse']); $competence->AdrComp = strtoupper($tribunal['adresseComp']); $competence->CP = $tribunal['cp']; $competence->Ville = strtoupper($tribunal['ville']); //'CodeInsee'=>$tribunal['CodeInsee'], $competence->Tel = $tribunal['tel']; $competence->Fax = $tribunal['fax']; $competence->Web = $tribunal['web']; $competence->Mail = $tribunal['email']; $competence->Statut = $tribunal['Statut']; //'DateCessation'=>$tribunal['triDateCessation'], $competence->Remarque = $tribunal['contact']; //,,,,Prenom,,,Statut,,,cp,ville,tel,fax,email,web,contact $tabRet[] = $competence; } }/** @todo A revoir Fin : Lier correctement les mandataires à un TI principal **/ } elseif ($type=='hui') { $iInsee = new MInsee(); $tabTmp = $iInsee->getHuissiers(array($codeTGI), false); $tabRet = array(); $nbAff = 0; foreach ($tabTmp as $i=>$tribunal) { $adr = $iInsee->structureVoie($tribunal['adresse']); $competence = new Competence(); $competence->Id = $tribunal['id']; $competence->IdSup = $tribunal['sirenGrp']; $competence->Code = $tribunal['tribunal'].'/'.$code; $competence->Type = $tribunal['type']; $competence->Nom = $tribunal['Nom'].' '.$tribunal['Prenom']; $competence->Siret = $tribunal['sirenMand']; $competence->Adr = strtoupper($adr['num'].' '.$adr['adr_btq'].' '. $adr['typeVoie'].' '.$adr['libVoie']); $competence->AdrComp = strtoupper($tribunal['adresseComp']); $competence->CP = $adr['cp']; $competence->Ville = strtoupper($tribunal['ville']); //'CodeInsee'=>$tribunal['CodeInsee'], $competence->Tel = $tribunal['tel']; $competence->Fax = $tribunal['fax']; $competence->Web = $tribunal['web']; $competence->Mail = $tribunal['email']; $competence->Statut = $tribunal['Statut']; //'DateCessation'=>$tribunal['triDateCessation']; $competence->Remarque = strtr($tribunal['contact'], array( '
'=>', ', '
'=>', ', '
'=>', ', )); $tabRet[] = $competence; } $nbComp = count($tabTmp); debugLog('I',"$nbComp compétences $type trouvées pour le tribunal $codeTGI",__LINE__,__FILE__, __FUNCTION__, __CLASS__); } elseif ($type=='cfe') { $tabTmp = $iBodacc->getTribunauxParCommune($codeInsee); foreach ($tabTmp as $i=>$tribunal) { if ($tribunal['triType']=='C' || $tribunal['triType']=='O' || $tribunal['triType']=='T' || $tribunal['triType']=='R' || $tribunal['triType']=='N' || $tribunal['triType']=='U' || $tribunal['triType']=='Z') { if (strlen($tribunal['triCommentaire'])==32 && strpos($tribunal['triCommentaire'], ' ')===false) $remarque=''; else $remarque=$tribunal['triCommentaire']; $competence = new Competence(); $competence->Id = $tribunal['triId']; $competence->IdSup = $tribunal['triIdSup']; $competence->Code = $tribunal['triCode']; $competence->Type = $tribunal['triType']; $competence->Nom = strtoupper($tribunal['triNom']); $competence->Siret = $tribunal['triSiret']; $competence->Adr = strtoupper(preg_replace('/ +/',' ',$tribunal['triAdrNum'].' '.$tribunal['triAdrIndRep'].' '. $tribunal['triAdrTypeVoie'].' '.$tribunal['triAdrVoie'])); $competence->AdrComp = strtoupper($tribunal['triAdrComp']); $competence->CP = $tribunal['triCP']; $competence->Ville = strtoupper($tribunal['triVille']); $competence->CodeInsee = $tribunal['CodeInsee']; $competence->Tel = $tribunal['triTel']; $competence->Fax = $tribunal['triFax']; $competence->Web = $tribunal['triWeb']; $competence->Mail = $tribunal['triMail']; $competence->Statut = $tribunal['triStatut']; $competence->DateCessation = $tribunal['triDateCessation']; //@todo : date $competence->Remarque = $remarque; $tabRet[] = $competence; } } } $this->wsLog('competences',$siret,$type.'/'.$codeInsee); $output = new ListeCompetencesReturn(); $output->result = $tabRet; $output->nbReponses = count($tabRet); return $output; } /** * Liste des subventions * @param string $companyId * SIREN * @param string $type * Type de subvention reçues (IN) ou versées (OUT) * @param int $offset * @param int $nbItems * @throws SoapFault * @return SubventionList[] */ public function getSubventionList($companyId, $type = null, $offset = 0, $nbItems = 100) { $this->authenticate(); //Init if ( intval($companyId) == 0 ) { $this->sendError('1010'); } elseif ( strlen($companyId)!=9 ) { $this->sendError('1020'); } if ( empty($offset) ) { $offset = 0; } if ( empty($nbItems) || $nbItems > 100 ) { $nbItems = 100; } if ( !empty($type) ) { $type = strtoupper($type); } //SQL $listM = new Application_Model_JoAssoSubventions(); $countsql = $listM->select()->from($listM, array('COUNT(*) AS num')); $sql = $listM->select()->from($listM, array( 'id', 'millesime', //Annee 'sirenAsso', //sirenIn 'nomAsso', 'sirenOrigine', //sirenOut 'libOrigine', //Origine 'libImputation', //Programme 'mtSubvention', //Montant )); //Subvention reçues => sirenAsso = companyId if ($type == 'IN') { $sql->where('sirenAsso=?', $companyId); $countsql->where('sirenAsso=?', $companyId); } //Subvention reçues => sirenOrigine = companyId elseif ($type == 'OUT') { $sql->where('sirenOrigine=?', $companyId); $countsql->where('sirenOrigine=?', $companyId); } //All else { $sql->where('sirenAsso=?', $companyId) ->orWhere('sirenOrigine=?', $companyId); $countsql->where('sirenAsso=?', $companyId) ->orWhere('sirenOrigine=?', $companyId); } $sql->order('millesime DESC')->limit($nbItems, $offset); $count = $listM->fetchRow($countsql); $nbReponsesTotal = 0; if ( $count!==null ) { $nbReponsesTotal = $count->num; } if ( $nbReponsesTotal != 0 ) { $rows = $listM->fetchAll($sql); $output = new SubventionList(); $output->nbReponsesTotal = $nbReponsesTotal; $result = array(); if ( $rows !== null ) { foreach ( $rows as $row ) { $item = new Subvention(); $item->Id = $row->id; if ( $row->sirenAsso == $companyId ) { $item->Type = 'IN'; } elseif ( $row->sirenOrigine == $companyId ) { $item->Type = 'OUT'; } $item->Millesime = $row->millesime; $item->AssoSiren = $row->sirenAsso; $item->AssoNom = $row->nomAsso; $item->OrigineSiren = $row->sirenOrigine; $item->OrigineLib = $row->libOrigine; $item->Programme = $row->libImputation; $item->Montant = $row->mtSubvention; $result[] = $item; } $output->result = $result; $this->wsLog('subventionlist', $companyId); } } return $output; } /** * Détail d'une subvention * @param int $id * @throws SoapFault * @return SubventionDetail */ public function getSubventionDetail($id) { $this->authenticate(); $subventionM = new Application_Model_JoAssoSubventions(); $row = $subventionM->find($id); if (null === row) { throw new SoapFault('MSG', "Aucun résultat"); } $data = $row->current(); $item = new SubventionDetail(); $item->Millesime = $data->millesime; $item->Budget = $data->typeBudget; $item->AssoSiren = $data->sirenAsso; $item->AssoNom = $data->nomAsso; $item->OrigineSiren = $data->sirenOrigine; $item->OrigineLib = $data->libOrigine; $item->Programme = $data->libImputation; $item->Montant = $data->mtSubvention; $item->SubventionObjet = $data->objetSubvention; $item->SubventionEval = $data->evalSubvention; $item->Mission = $data->mission; $this->wsLog('subventiondetail', $item->AssoSiren, 'id:'.$id); return $item; } /** * Retourne le statut du webservice * @return StatusReturn */ public function status() { /* @todo tester les différents éléments qui peuvent conduire * à un problème dans les services tel que la connexion à la * base de données, l'accès FTP, l'accès HTTP, l'accès système de fichier */ //Enregistrement des accès à la requête getIdentite /*Zend_Registry::get('WsLogger')->info("status - ip:". $_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']. ", hash:".$_SERVER['PHP_AUTH_PW']);*/ $error = new StatusReturn(); //Test connexion à la base de données $db = new WDB('jo'); if (!$db) { $error->statusCode = 9000; $error->statusMsg = $this->listError['9000']; } else { $error->statusCode = 3000; $error->statusMsg = $this->listError['3000']; } return $error; } } ?>