5370 lines
207 KiB
PHP
Raw Normal View History

2013-11-05 11:18:30 +00:00
<?php
require_once 'framework/fwk.php';
require_once 'framework/mail/sendMail.php';
require_once 'Metier/insee/classMInsee.php';
require_once 'Metier/insee/classMSirene.php';
require_once 'Metier/partenaires/classMBilans.php';
require_once 'Metier/partenaires/classMBourse.php';
require_once 'Metier/partenaires/classMTva.php';
require_once 'Metier/partenaires/classMMap.php';
require_once 'Metier/partenaires/classMGreffes.php';
require_once 'Metier/partenaires/classMPrivileges.php';
require_once 'Metier/scores/classMFinancier.php';
require_once 'Metier/scores/classMSolvabilite.php';
require_once __DIR__ . '/Types.php';
2013-11-05 11:18:30 +00:00
class Entreprise extends Scores_Ws_Server
2013-11-05 11:18:30 +00:00
{
/**
* 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 int $id Identifiant interne
* @return Identite
*/
public function getIdentite($siret, $id = 0)
{
$this->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'],'/*',' '));
}
2013-11-05 11:18:30 +00:00
$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
2014-04-02 08:36:13 +00:00
$classWdate = new WDate();
$identite->DateCreaEt = $classWdate->dateT('Ymd','Y-m-d',$entrep['DateCreaEt']);
$identite->DateCreaEn = $classWdate->dateT('Ymd','Y-m-d',$entrep['DateCreaEn']);
2013-11-05 11:18:30 +00:00
$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))
2013-11-05 11:18:30 +00:00
{
$entrep2 = $iInsee->getNaf4($siren, $nic, $id);
2014-04-03 13:45:10 +00:00
if ( $entrep2 !== false ) {
$identite->Naf4Ent = $entrep2['apen4'];
$identite->Naf4Etab = $entrep2['apet4'];
$identite->Naf4EntLib = prepareString($entrep2['apen4_lib']);
$identite->Naf4EtabLib = prepareString($entrep2['apet4_lib']);
}
2013-11-05 11:18:30 +00:00
}
$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 = intval($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
//@todo : Aller cherche dans les annonces bodacc création + acquisition
$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();
$infogreffe = new SdMetier_Infogreffe_DocAC($siren);
$depots = $infogreffe->getList();
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
//@todo : STATUTS CONSTITUTIFS
$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;
}
2013-11-05 11:18:30 +00:00
/**
* 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))
2013-11-05 11:18:30 +00:00
{
2014-04-03 13:45:10 +00:00
$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']);
}
2013-11-05 11:18:30 +00:00
}
$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);
2013-11-05 11:18:30 +00:00
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');
2014-10-15 15:31:39 +00:00
//Load country table
2013-11-05 11:18:30 +00:00
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) {
2013-11-05 11:18:30 +00:00
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) {
2013-11-05 11:18:30 +00:00
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);
2013-11-05 11:18:30 +00:00
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) {
2013-11-05 11:18:30 +00:00
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) {
2013-11-05 11:18:30 +00:00
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);
2013-11-05 11:18:30 +00:00
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) {
2013-11-05 11:18:30 +00:00
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'];
2014-02-25 16:33:07 +00:00
$output->isin = $result['isin'];
2013-11-05 11:18:30 +00:00
$output->adresseNum = $result['adresse_num'];
$output->adresseBtq = $result['adresse_btq'];
$output->adresseCodeVoie = $result['adresse_codvoie'];
2013-11-05 11:18:30 +00:00
$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);
2013-11-05 11:18:30 +00:00
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);
2015-03-09 19:58:33 +00:00
} 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);
}
2013-11-05 11:18:30 +00:00
//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'];
2015-03-09 19:58:33 +00:00
$annonce->texteAnnonce = $ann['texteAnnonce'];
2013-11-05 11:18:30 +00:00
$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
2014-09-04 12:56:25 +00:00
* @param integer $niveau Niveau des commentaires (Suivant droits d'accès 1=INDISCORE, 2=INDISCORE2, 3=INDISCORE3)
2013-11-05 11:18:30 +00:00
* @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) {
$tab[] = Scores_Locale_String::fixEncoding($comment);
2013-11-05 11:18:30 +00:00
}
}
$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;
2013-11-05 11:18:30 +00:00
$this->setSurveillance($siren, $email, $ref, 'privileges');
$this->setSurveillance($siren, $email, $ref, 'score', false, $encours);
if ($this->User->idClient==89)
2013-11-05 11:18:30 +00:00
$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) {
$tab[] = Scores_Locale_String::fixEncoding($comment);
2013-11-05 11:18:30 +00:00
}
$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;
2014-10-16 14:33:11 +00:00
//Tableau d'infos sur les formules
$tabFormules = include APPLICATION_PATH . '/../library/Metier/scores/Data/Formules.php';
2014-10-16 14:33:11 +00:00
$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'];
}
2013-11-05 11:18:30 +00:00
//Ratios
2014-10-16 10:12:18 +00:00
global $tva, $mBil, $efftr, $tabInfla;
2014-10-16 14:33:11 +00:00
require_once 'Metier/scores/classMRatios.php';
2013-11-05 11:18:30 +00:00
$mBil = new MBilans($siren);
$tabBilans = $mBil->listeBilans($accesPartenaire);
$nbBilans = count($tabBilans);
$tabBilan = $tabBil = array();
2014-10-16 10:12:18 +00:00
if ($nbBilans>0)
{
2013-11-05 11:18:30 +00:00
$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'];
2014-10-16 10:12:18 +00:00
foreach ($tabBilans as $millesime => $item)
{
$tabBilan[] = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), '');
}
2013-11-05 11:18:30 +00:00
$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 ) {
2015-04-27 16:08:29 +00:00
$iDb = new WDB();
$tabTmp = $iDb->select('jo.ratios_secteurs',
2013-11-05 11:18:30 +00:00
'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
2014-02-25 16:33:07 +00:00
* @param string $nic Nic de l'entreprise (Si définit filtre les événéments à l'établissements)
2013-11-05 11:18:30 +00:00
* @param integer $position
* @param integer $nbRep
* @return InseeReturn
**/
2014-02-25 16:33:07 +00:00
public function getListeEvenements($siren, $nic=0, $position=0, $nbRep=50)
2013-11-05 11:18:30 +00:00
{
$this->authenticate();
$this->permission('eveninsee');
//Initialisation
2014-02-25 16:33:07 +00:00
if (empty($nic)) { $nic = 0; }
if (empty($position)) { $position = 0; }
if (empty($nbRep) || $nbRep>50) { $nbRep = 50; }
2013-11-05 11:18:30 +00:00
$tabRet = array();
if (strlen($siren)<>9) {
$this->sendError('1010');
} elseif ($siren*1==0) {
$this->sendError('1010');
}
$iInsee = new MInsee();
2014-02-25 16:33:07 +00:00
$nbReponses = $iInsee->getEvenementsCount($siren, $nic);
2013-11-05 11:18:30 +00:00
$output = new InseeReturn();
2014-02-25 16:33:07 +00:00
$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);
2013-11-05 11:18:30 +00:00
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; }
$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 {
2013-11-05 11:18:30 +00:00
$O = $this->searchNomAdr(
Scores_Locale_String::cleanstring($entCriteres->raisonSociale),
Scores_Locale_String::cleanstring($entCriteres->adresse),
2013-11-05 11:18:30 +00:00
$entCriteres->codePostal,
Scores_Locale_String::cleanstring($entCriteres->ville),
2013-11-05 11:18:30 +00:00
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']);
2013-11-13 14:04:35 +00:00
$item->Pays = $etab['Pays'];
2013-11-05 11:18:30 +00:00
$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'];
2013-12-26 14:25:59 +00:00
$item->Source = $etab['Source'];
$item->SourceId = $etab['SourceId'];
2013-11-05 11:18:30 +00:00
$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']);
2013-11-13 14:04:35 +00:00
$item->Pays = $etab['Pays'];
2013-11-05 11:18:30 +00:00
$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)
{
2013-11-13 14:04:35 +00:00
$pays = 'France';
if ( $etab['adr_dep']==99 ) {
2015-04-27 16:08:29 +00:00
$resultPays = $this->iDb->select("jo.tabPays", "libPays", "codePaysInsee = ".$etab['adr_com'], false, MYSQL_ASSOC);
2013-11-13 14:04:35 +00:00
$pays = $resultPays[0]['libPays'];
}
2013-11-05 11:18:30 +00:00
$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']);
2013-11-13 14:04:35 +00:00
$item->Pays = $etab['Pays'];
2013-11-05 11:18:30 +00:00
$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'];
2013-12-26 14:25:59 +00:00
$reponse->Source = $etab['Source'];
$reponse->SourceId = $etab['SourceId'];
2013-11-05 11:18:30 +00:00
$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'];
2013-12-26 14:25:59 +00:00
$reponse->Source = $etab['Source'];
$reponse->SourceId = $etab['sourceId'];
2013-11-05 11:18:30 +00:00
$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();
2015-04-27 16:08:29 +00:00
$iDb->insert('jo.siren_inexistants',
2013-11-05 11:18:30 +00:00
array( 'siren'=>$siren,
'nic'=>$nic,
'dep'=>$dep,
'login'=>$this->User->login,
'client'=>$this->User->idClient,
2013-11-05 11:18:30 +00:00
'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;
2013-11-05 11:18:30 +00:00
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'));
2015-04-27 16:08:29 +00:00
$result = $iDb->update('jo.surveillances_site',
2013-11-05 11:18:30 +00:00
$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'";
2015-04-27 16:08:29 +00:00
$detect = $iDb->select('jo.surveillances_site', 'siren', $where, false, MYSQL_ASSOC);
2013-11-05 11:18:30 +00:00
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,
);
2015-04-27 16:08:29 +00:00
$result = $iDb->update('jo.surveillances_site', $data, $where, false, 0, true);
2013-11-05 11:18:30 +00:00
} elseif ( $detect[0]['dateSuppr']!='0000-00-00 00:00:00') {
$data = array (
'dateAjout' => date('Y-m-d'),
'dateSuppr' => '0000-00-00 00:00:00',
);
2015-04-27 16:08:29 +00:00
$result = $iDb->update('jo.surveillances_site', $data, $where, false, 0, true);
2013-11-05 11:18:30 +00:00
}
} 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,
);
2015-04-27 16:08:29 +00:00
$result = $iDb->insert('jo.surveillances_site', $data, false, true);
2013-11-05 11:18:30 +00:00
}
}
$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();
2013-12-26 14:25:59 +00:00
//$this->permission('survliste');
2013-11-05 11:18:30 +00:00
//Initialisation
if (empty($position)) $position = 0;
if (empty($nbRep)) $nbRep = 100;
$error = new ErrorType();
$tabRet = array();
$siren = 0;
$login = $this->User->login;
2013-11-05 11:18:30 +00:00
$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' )";
}
2013-11-05 11:18:30 +00:00
}
//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(
2015-04-27 16:08:29 +00:00
'jo.surveillances_site',
2013-11-05 11:18:30 +00:00
'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(
2015-04-27 16:08:29 +00:00
'jo.surveillances_site', $strSelect,
2013-11-05 11:18:30 +00:00
"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(
2015-04-27 16:08:29 +00:00
'jo.surveillances_site',
2013-11-05 11:18:30 +00:00
'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(
2015-04-27 16:08:29 +00:00
'jo.surveillances_site',
2013-11-05 11:18:30 +00:00
'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(
2015-04-27 16:08:29 +00:00
'jo.surveillances_site', $strSelect,
2013-11-05 11:18:30 +00:00
"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 = '';
2014-03-12 14:40:02 +00:00
$encoursClient = 0;
2013-11-05 11:18:30 +00:00
if ($filtre->detail) {
2014-03-12 14:40:02 +00:00
$encoursClient = $tabSurv['encoursClient'];
2013-11-05 11:18:30 +00:00
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'];
2015-04-27 16:08:29 +00:00
$iDb->update('jo.surveillances_site', array(
2013-11-05 11:18:30 +00:00
'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'],
2014-03-12 14:40:02 +00:00
'encoursClient' => $encoursClient,
2013-11-05 11:18:30 +00:00
'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;
2013-11-05 11:18:30 +00:00
$orderBy = " ORDER BY dateAjout ASC";
if ($this->User->rechRefType=='CLI'){
2013-11-05 11:18:30 +00:00
//On cherche les logins actifs pour le client
$idClient = $this->User->idClient;
2013-11-05 11:18:30 +00:00
$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
2015-04-27 16:08:29 +00:00
$tabTmp = $iDb->select('jo.surveillances_site s, sdv1.utilisateurs u', 'count(*) as nb', $where.$orderBy, false, MYSQL_ASSOC);
2013-11-05 11:18:30 +00:00
$nbRepTot = $tabTmp[0]['nb'];
// Execution de la requete
2015-04-27 16:08:29 +00:00
$tabTmp = $iDb->select('jo.surveillances_site s, sdv1.utilisateurs u',
2013-11-05 11:18:30 +00:00
"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
2015-04-27 16:08:29 +00:00
$tabTmp = $iDb->select('jo.surveillances_site', 'count(*) as nb', $where.$orderBy, false, MYSQL_ASSOC);
2013-11-05 11:18:30 +00:00
$nbRepTot = $tabTmp[0]['nb'];
// Execution de la requete
2015-04-27 16:08:29 +00:00
$tabTmp = $iDb->select('jo.surveillances_site',
2013-11-05 11:18:30 +00:00
"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;
}
2013-11-05 11:18:30 +00:00
/**
* 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);
2015-04-27 16:08:29 +00:00
$iDb = new WDB();
2013-11-05 11:18:30 +00:00
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 {
2015-04-27 16:08:29 +00:00
$res = $iDb->select('jo.bodacc',
2013-11-05 11:18:30 +00:00
'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':
2015-04-27 16:08:29 +00:00
$res = $iDb->select('jo.asso',
2013-11-05 11:18:30 +00:00
'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':
2015-04-27 16:08:29 +00:00
$res = $iDb->select('jo.balo',
2013-11-05 11:18:30 +00:00
"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('&gt;'=>'>','&amp;'=>'&','&lt;'=>'<','&#146;'=>"'")
));
$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();
2014-10-16 14:33:11 +00:00
/**
* Tableau d'infos sur les formules
*/
$tabFormules = include APPLICATION_PATH . '/../library/Metier/scores/Data/Formules.php';
2014-10-16 14:33:11 +00:00
$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'];
}
2013-11-05 11:18:30 +00:00
2014-10-16 14:33:11 +00:00
//Ratios
global $tva, $mBil, $efftr, $tabInfla;
require_once 'Metier/scores/classMRatios.php';
2013-11-05 11:18:30 +00:00
$mBil = new MBilans($siren);
$tabBilans = $mBil->listeBilans($accesPartenaire);
$nbBilans = count($tabBilans);
$tabBilan = $tabBil = array();
2014-10-16 10:12:18 +00:00
if ($nbBilans > 0)
{
foreach ($tabBilans as $millesime => $item)
{
$tabBilan[] = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), '');
}
2013-11-05 11:18:30 +00:00
$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 ) {
2015-04-27 16:08:29 +00:00
$iDb = new WDB();
$tabTmp = $iDb->select('jo.ratios_secteurs',
2013-11-05 11:18:30 +00:00
'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
2015-04-27 16:08:29 +00:00
$iDb = new WDB();
2013-11-05 11:18:30 +00:00
$tabRet = array();
debugLog('I',"Liste des banques demandée pour siren $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
if (intval($siren)<=1000) {
$this->sendError('1010');
}
2015-04-27 16:08:29 +00:00
$res=$iDb->select('sdv1.banques', 'codeBanque, codeGuichet, libBanqueGuichet, precis, dateSource*1 AS dateSource', "siren=$siren", true, MYSQL_ASSOC);
$tmp=$iDb->select('sdv1.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);
2013-11-05 11:18:30 +00:00
$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);
if ($type=='pre') {
2013-11-05 11:18:30 +00:00
2015-04-27 16:08:29 +00:00
$iDb = new WDB();
$tabTmp2 = $iDb->select('jo.villes', 'DEP, COM, AR, CT', 'codeInsee='.$codeInsee, false, MYSQL_ASSOC);
2013-11-05 11:18:30 +00:00
$arrond = $tabTmp2[0]['AR'];
$tabTmp2 = $iDb->select('insee.insee_tabArrond', 'CHEFLIEU, ARTMAJ, NCC', "DEP='$dep' AND AR='$arrond'", false, MYSQL_ASSOC);
2013-11-05 11:18:30 +00:00
$nomSousPref = trim(strtr($tabTmp2[0]['ARTMAJ'],array('('=>'',')'=>'',' '=>'', "'"=>'')).' '.$tabTmp2[0]['NCC']);
2014-04-02 08:36:13 +00:00
2013-11-05 11:18:30 +00:00
$tabTmp = $iBodacc->getTribunauxParDep($dep);
2013-11-05 11:18:30 +00:00
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(Scores_Locale_String::cleanstring($tribunal['triNom']));
2013-11-05 11:18:30 +00:00
$competence->Siret = $tribunal['triSiret'];
$competence->Adr = strtoupper(Scores_Locale_String::cleanstring(preg_replace('/ +/',' ',
2013-11-05 11:18:30 +00:00
$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( '<br/>'=>', ', '<br>'=>', ',
'<br />'=>', ',
));
$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;
}
2013-11-13 14:04:35 +00:00
/**
* 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;
}
2013-11-05 11:18:30 +00:00
/**
* 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
2013-11-13 14:04:35 +00:00
/*Zend_Registry::get('WsLogger')->info("status - ip:".
2013-11-05 11:18:30 +00:00
$_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER'].
2013-11-13 14:04:35 +00:00
", hash:".$_SERVER['PHP_AUTH_PW']);*/
2013-11-05 11:18:30 +00:00
$error = new StatusReturn();
//Test connexion à la base de données
2015-04-27 16:08:29 +00:00
$db = new WDB();
2013-11-05 11:18:30 +00:00
if (!$db) {
$error->statusCode = 9000;
$error->statusMsg = $this->listError['9000'];
} else {
$error->statusCode = 3000;
$error->statusMsg = $this->listError['3000'];
}
return $error;
}
}
?>