3537 lines
122 KiB
PHP

<?php
require_once 'WsScore/WsScore.php';
require_once realpath(dirname(__FILE__)).'/Types.php';
class Interne extends WsScore
{
/**
* Retourne le détails des privilèges
* @param string $siren
* @param array $tabTypes
* @return PrivilegesDetailReturn
*/
public function getPrivilegesDetail($siren, $tabTypes=array('03','04'))
{
$this->authenticate();
//Initialisation
if (empty($tabTypes)) $tabTypes = array('03','04');
debugLog('I',"Liste des privilèges detail sur $siren ".print_r($tabTypes, true),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iPriv = new MPrivileges();
$ret = $iPriv->getPrivilegesDetail($siren, $tabTypes); //@todo : date
$tabRet = array();
if (count($ret)>0) {
foreach ($ret as $item ) {
$privileges = new PrivilegesDetail();
$privileges->numDebiteur = $item['numDebiteur'];
$privileges->greffe = $item['greffe'];
$privileges->greffeLib = $item['greffeLib'];
$privileges->dateEven = $item['dateEven'];
$privileges->dateFraiche = $item['dateFraiche'];
$privileges->dateSD = $item['dateSD'];
$privileges->insType = $item['insType'];
$privileges->insTypeLib = $item['insTypeLib'];
$privileges->insNum = $item['insNum'];
$privileges->insDate = $item['insDate'];
$privileges->insDateEch = $item['insDateEch'];
$privileges->insObjet = $item['insObjet'];
$privileges->insMontant = $item['insMontant'];
$privileges->insDev = $item['insDev'];
$privileges->insDateFin = $item['insDateFin'];
$privileges->radDate = $item['radDate'];
$privileges->radMention = $item['radMention'];
$privileges->radPartiel = $item['radPartiel'];
$privileges->radPartMt = $item['radPartMt'];
$privileges->radDev = $item['radDev'];
$privileges->creNom = $item['creNom'];
$privileges->creAdresse1 = $item['creAdresse1'];
$privileges->creAdresse2 = $item['creAdresse2'];
$privileges->creAdresse3 = $item['creAdresse3'];
$privileges->creCP = $item['creCP'];
$privileges->creVille = $item['creVille'];
$privileges->crePays = $item['crePays'];
$privileges->creAutres = $item['creAutres'];
$tabRet[] = $privileges;
}
}
$this->wsLog('privdetail', $siren, join(',',$tabTypes));
$output = new PrivilegesDetailReturn();
$output->result = $tabRet;
return $output;
}
/**
* Retourne les privilèges cumulés
* @param string $siren
* @param array $tabTypes
* @return PrivilegesCumulReturn
*/
public function getPrivilegesCumul($siren, $tabTypes=array('03','04'))
{
$this->authenticate();
//Initialisation
if (empty($tabTypes)) $tabTypes = array('03','04');
debugLog('I',"Liste des privilèges cumul sur $siren ".print_r($tabTypes, true),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iPriv = new MPrivileges();
$ret = $iPriv->getPrivilegesCumul($siren, $tabTypes);
$tabRet = array();
if (isset($ret['03']) && count($ret['03']>0)){
$value = $ret['03'];
$priv = new PrivilegesCumul();
$priv->insType = '03';
$priv->nb = $value['nb'];
$priv->insTypeLib = $value['insTypeLib'];
$priv->dateFraiche = $value['dateFraiche']; //@todo : date
$priv->dateDerInsc = $value['dateDerInsc']; //@todo : date
$priv->nomDerCre = $value['nomDerCre'];
$priv->numDebiteur = $value['numDebiteur'];
$priv->greffeLib = $value['greffeLib'];
$priv->dateMajSD = $value['dateMajSD']; //@todo : date
$priv->insCumul = $value['insCumul'];
$tabRet[] = $priv;
}
if (isset($ret['04']) && count($ret['04']>0)){
$value = $ret['04'];
$priv = new PrivilegesCumul();
$priv->insType = '04';
$priv->nb = $value['nb'];
$priv->insTypeLib = $value['insTypeLib'];
$priv->dateFraiche = $value['dateFraiche']; //@todo : date
$priv->dateDerInsc = $value['dateDerInsc']; //@todo : date
$priv->nomDerCre = $value['nomDerCre'];
$priv->numDebiteur = $value['numDebiteur'];
$priv->greffeLib = $value['greffeLib'];
$priv->dateMajSD = $value['dateMajSD']; //@todo : date
$priv->insCumul = $value['insCumul'];
$tabRet[] = $priv;
}
$this->wsLog('privcumul', $siren, print_r($tabTypes,1));
$output = new PrivilegesCumulReturn();
$output->result = $tabRet;
return $output;
}
/**
* Liste les mandataires correspondant à un nom donné
* @param mixed $codeTribunal Identifiants BODACC du tribunal ou tableau d'Identifiants numériques des cours d'appel
* @param array $type Type de mandataire (A)dministrateur, (M)andataire, (O)ppositions, (N)otaires, a(V)ocat
* @param int $cpDep Code postal ou département du mandataire
* @return SearchMandatairesReturn
*/
public function searchMandataires($nom, $type=array('A','M'), $cpDep=0)
{
$this->authenticate();
//Initialisation
if (empty($type)) $type = array('A','M');
if (empty($cpDep)) $cpDep = 0;
$tabRet = array();
debugLog('I',"Recherche de Mandataires '$nom' (Dep=$cpDep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iInsee = new MInsee();
$tabTmp = $iInsee->searchMandataires($nom, true, $type, $cpDep);
foreach ($tabTmp as $i=>$mand)
{
$mandataire = new SearchMandataire();
$mandataire->id = 'm'.$i;
$mandataire->mand = utf8_encode($mand);
$tabRet[] = $mandataire;
}
$output = new SearchMandatairesReturn();
$output->result = $tabRet;
return $output;
}
/**
* Retourne la liste des tribunaux ou Compétences demandées
* @param array|string $tabTypes Tableau des types de Compétences demandés 'C':Commerce, 'I':Instance, 'G':TGI, 'A':Préfectures, 'B':Sous-préf, 'D':Tribunal Administratif, 'H':Prud'hommes, 'L': Cour d'Appel, 'M': Tribunal Mixte, 'O':CCI, 'V': Cour Administrative d'Appel
* @return TribunauxReturn
**/
public function getTribunaux($tabTypes)
{
$this->authenticate();
//Initialisation
if (empty($tabTypes)) $tabTypes = array();
if (is_string($tabTypes)) $tabTypes = (array)$tabTypes;
$iBodacc = new MBodacc();
debugLog('I',"Liste des tribunaux demandées",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabTmp = $iBodacc->getListeTribunaux();
//@todo : Retourner liste en ordre alphabétique
$tabRet = array();
if (count($tabTypes)==0) {
foreach ($tabTmp as $i => $tribunal){
$tri = new Tribunal();
$tri->code = $i;
$tri->nom = $tribunal['nom'];
$tabRet[] = $tri;
}
} else {
foreach ($tabTmp as $i=>$tribunal){
$type = substr($i,-1);
if ( in_array($type, $tabTypes) ){
$tri = new Tribunal();
$tri->code = $i;
$tri->nom = $tribunal['nom'];
$tabRet[] = $tri;
}
}
}
$this->wsLog('tribunaux', '', print_r($tabTypes,1));
$output = new TribunauxReturn();
$output->result = $tabRet;
return $output;
}
/**
* Enregistrement des informations saisie manuellement
* @param string $siret
* @param int $idEntreprise
* @param SetInfosEntrepInfos $tabInfos
* @return SetInfosEntrepReturn
*/
public function setInfosEntrep( $siret, $idEntreprise, $tabInfos )
{
$this->authenticate();
//Initialisation
$tabRet = array();
$iBodacc = new MBodacc();
$iInsee = new MInsee();
$result = false;
if (!$this->checkEdition()) {
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
} else {
$siren = substr($siret,0,9);
$nic = substr($siret,9,5);
$iDb = new WDB();
$tabIdentite = $tabInfos->identite;
$tabJugement = $tabInfos->jugement;
$tabActio = $tabInfos->actionnaire;
$tabParti = $tabInfos->participation;
$tabScores = $tabInfos->score;
// Mise à jour de l'identité
if (trim(strtolower($tabIdentite->web))=='http://'){
$web = '';
} else {
$web = trim($tabIdentite->web);
}
$tabUpdate = array(
'isin' => trim($tabIdentite->isin),
'tel' => trim($tabIdentite->tel),
'fax' => trim($tabIdentite->fax),
'web' => $web,
'mail' => trim($tabIdentite->mail),
'activite' => stripslashes(trim($tabIdentite->activite)),
'sirenDoublon' => substr(str_replace(' ','',strtr($tabIdentite->sirenDoublon, '"\'./- ,\*#()',' ')),0,9),
'waldec' => trim(str_replace(' ','',strtr($tabIdentite->waldec, '"\'./- ,\*#()',' '))),
);
/** @todo non traitées : [capital_mt] => 335400, [capital_dev] => EUR **/
if ( !$iDb->update('infos_entrep', $tabUpdate, "siren='$siren'") ){
if (!$iDb->insert('infos_entrep', array_merge(array('siren'=>$siren),$tabUpdate))){
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
$output = new SetInfosEntrepReturn();
$output->error = $error;
$output->result = $result;
return $output;
exit;
}
}
// Fin mise à jour identité
// Opposition INSEE
if ( $tabIdentite->moisOppositionInsee>0 &&
$tabIdentite->moisOppositionInsee<=(date('Ym')*1) ){
$iDb2 = new WDB('insee');
if ( !$iDb2->insert('insee_nondiff', array('siren'=>$siren, 'insEVE'=>795, 'mois'=>$tabIdentite->moisOppositionInsee)) ){
if ( $iDb2->getLastErrorNum()<>1062 )
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des oppositions de la sphère commerciale INSEE pour $siren au mois de ".$tabIdentite['moisOppositionInsee']." : ".EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
}
}
// Fin opposition INSEE
// Refus d'inscription au RCS
if (isset($tabIdentite->moisRefusRCS) && $tabIdentite->moisRefusRCS>0
&& $tabIdentite->moisRefusRCS<=(date('Ym')*1)) {
$iInsee = new MInsee();
$entrep = $iInsee->getIdentiteLight($siren);
if ($nic<10) $nic=$entrep['Nic'];
$cj1=substr($entrep['FJ'],0,1);
$iDb2 = new WDB('insee');
/** Insertion dans la tables des exclusions **/
$tabInsert = array(
'siren' => $siren,
'nic' => $nic,
'idSaisie' => $this->tabInfoUser['id'],
'cj1' => $cj1,
'insEVE' => 'RCS',
'mois' => $tabIdentite->moisRefusRCS,
);
if (!$iDb2->insert('insee_nondiff', $tabInsert))
if ($iDb2->getLastErrorNum()<>1062)
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des refus d'enregistrement A au RCS pour $siren au mois de ".$tabIdentite->moisRefusRCS." : ".EOL.print_r($tabInsert, true).EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
/** Insertion dans la tables des évènements **/
$tabInsert = array(
'insSIREN' => $siren,
'siretValide' => $iInsee->valideSiren($siren,$nic),
'insNIC' => $nic,
'insEVE' => 'RCS',
'insDATEVE' => $tabIdentite->moisRefusRCS.'28',
'insDATEMAJ' => date('YmdHis'),
'idFlux' => date('Ymd'));
if (!$iDb2->insert('insee_even', $tabInsert))
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des refus d'enregistrement B au RCS pour $siren au mois de ".$tabIdentite['moisOppositionInsee']." : ".EOL.print_r($tabInsert, true).EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
}
// Fin refus d'inscription au RCS
// Domiciliataire
if (!empty($tabIdentite->domiciliataire) && $siren>1000) {
if ($tabIdentite->domiciliataire=='oui' || $tabIdentite->domiciliataire=='non') {
// L'entreprise et ces établissements seront mis à jour automatiquement ce soir
$iDb->query("INSERT IGNORE INTO jo.tabAdrDom (siren,nic,siege, etActif, nom, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, depComEt, adrComp, cj, apen,apet, dateInsert)
SELECT siren, nic, siege, actif AS etActif, raisonSociale AS nom, sigle, enseigne, adr_num as adrNum, adr_btq AS adrBtq, adr_typeVoie AS adrTypVoie, adr_libVoie AS adrLibVoie, adr_ville AS ville, adr_cp AS cp, CONCAT(adr_dep,adr_com) AS depComEt, adr_comp AS adrComp, cj, ape_entrep AS apen, ape_etab AS apet, DATE(NOW()) as dateInsert
FROM jo.etablissements WHERE siren=$siren;", false);
}
// Si demande de suppression, on force l'indicateur ""
if ($tabIdentite->domiciliataire=='non') {
$tabUpdate=array('pasEntrepDom'=>1);
if (!$iDb->update('tabAdrDom', $tabUpdate, "siren=$siren"))
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de la suppression du marqueur de domiciliation pour $siren :".EOL.print_r($tabUpdate, true).EOL.$iDb->getLastError());
}
}
// Fin domiciliataire
// Insertion des scores
$tabUpdate = array();
$setScore = false;
if ( $tabScores->encours!='' || $tabScores->encours!=null ){
$tabUpdate['encours'] = $tabScores->encours;
$setScore = true;
}
if ( $tabScores->scoreSolv!='' ){
$tabUpdate['scoreSolv'] = $tabScores->scoreSolv;
$setScore = true;
}
if ( $tabScores->scoreDir!='' ){
$tabUpdate['scoreDir'] = $tabScores->scoreDir;
$setScore = true;
}
if ( $tabScores->scoreConf!='' ){
$tabUpdate['scoreConf'] = $tabScores->scoreConf;
$setScore = true;
}
if ( $setScore ){
// Mise à jour des Cute Offs
if ( !$iDb->update('scores_cutoff', $tabUpdate, "siren=$siren") ){
if ( !$iDb->insert('scores_cutoff', array_merge(array(
'siren' => $siren,
'dateInsert' => date('Ymd')
), $tabUpdate)) ){
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", print_r($tabScores, true).EOL.$iDb->getLastError());
}
}
}
// Fin insertion des scores
// Insertion du jugement
$tabEven = array();
if (is_array($tabJugement->even->item) && count($tabJugement->even->item)>0){
foreach($tabJugement->even->item as $even){
$tabEven[] = $even->code;
}
} elseif (!empty($tabJugement->even->item->code)) {
$tabEven[] = $tabJugement->even->item->code;
}
$nic = $tabJugement->nic*1;
$entrep = $iInsee->getIdentiteLight($siren, $nic);
if ( $nic>0 && $tabEven[0]->code==6700 && $entrep['Siege']==0 ){
// Radiation d'un établissement
$tabEven[0]->code = 6600;
}
if ( count($tabEven)>0 )
{
$idAdmin = str_replace('m','',trim($tabJugement->admin));
$idMand = str_replace('m','',trim($tabJugement->mand));
$idOppo = str_replace('m','',trim($tabJugement->oppo));
/** Nom et Identifiant de l'opérateur de saisie **/
$iDbCrm = new WDB('sdv1');
$rep=$iDbCrm->select('utilisateurs', 'id', "login='".$this->tabInfoUser['login']."'");
$idUser=$rep[0][0];
$tabSource=explode('_',$tabJugement->source);
$source=@$tabSource[0];
$numJal=@$tabSource[1];
$dateSource=WDate::dateT('d/m/Y', 'Ymd', trim($tabJugement->dateParution))*1;
if ($dateSource<20000101)
$dateSource=date('YmdHis');
$montant=trim(preg_replace('/[^0-9]/', '', $tabJugement->montant))*1;
$actionsMt=trim(preg_replace('/[^0-9]/', '', $tabJugement->actionsMt))*1;
$actionsNb=trim(preg_replace('/[^0-9]/', '', $tabJugement->actionsNb))*1;
if ($montant>0 && ($actionsNb>0 || $actionsMt>0)) {
if ($actionsNb>0) $actionsMt=$montant/$actionsNb;
elseif ($actionsMt>0) $actionsNb=$montant/$actionsMt;
}
//@todo : ça ne va pas marcher ici
$strDir='';
$tabNouvDir = array();
if ( is_array($tabJugement->nouvDir->item) && count($tabJugement->nouvDir->item)>0 ){
$tabNouvDir = $tabJugement->nouvDir->item;
} else {
$tabNouvDir[] = $tabJugement->nouvDir;
}
if (count($tabNouvDir)>0) {
foreach( $tabNouvDir as $dir ){
if ( intval($dir->Fonc)>0 ){
$strDir.= $iBodacc->getFctDir($dir->Fonc).' : '.
$dir->Genre.' '.
ucwords(strtolower($dir->Pre)).' '.
strtoupper($dir->Nom);
if (!empty($dir->Dom)) {
$strDir.= ', domicilié à '.$dir->Dom.'. ';
}
}
}
}
if ( trim($tabJugement->nouvAdrCp)<>'' ){
$strAdr = stripslashes(trim($tabJugement->nouvAdr).', '.
trim($tabJugement->nouvAdrCp).' '.
trim($tabJugement->nouvAdrVille));
} else {
$strAdr='';
}
if (count($tabEven)>1){
$strEven = implode(';',array_slice($tabEven, 1));
} else {
$strEven = '';
}
$tabUpdate = array(
'strEven' => $strEven,
'sirenValide' => $iInsee->valideSiren($siren),
'dateCessationPaiement' => empty($tabJugement->datePaie) ? '' :
WDate::dateT('d/m/Y', 'Y-m-d', trim($tabJugement->datePaie)),
'dateEffetFinP' => empty($tabJugement->dateFinPeriode) ? '' :
WDate::dateT('d/m/Y', 'Y-m-d', trim($tabJugement->dateFinPeriode)),
'tribunal' => trim($tabJugement->tribunal),
'montant' => $montant,
'actionsNb' => $actionsNb,
'inter1type' => 'A',
'inter1id' => $idAdmin,
'inter1nom' => $iInsee->getMandatairesParId($idAdmin),
'inter2type' => 'M',
'inter2id' => $idMand,
'inter2nom' => $iInsee->getMandatairesParId($idMand),
'inter3type' => 'O',
'inter3id' => $idOppo,
'inter3nom' => $iInsee->getMandatairesParId($idOppo),
'complement' => stripslashes(trim($tabJugement->comp)),
'nouvActivite' => stripslashes(trim($tabJugement->nouvActivite)),
'nouvDir' => stripslashes(trim($strDir)),
'nouvAdr' => $strAdr,
'nouvFJ' => trim($tabJugement->nouvFJ),
'raisonSociale' => $entrep['Nom'],
'adresse' => $entrep['Adresse'],
'codePostal' => $entrep['CP'],
'ville' => $entrep['Ville'],
'source' => $source,
'idSaisie' => $idUser,
'parutionIdJal' => $numJal,
'parutionNum' => $tabJugement->numParution,
);
$dateJuge = WDate::dateT('d/m/Y','Y-m-d',trim($tabJugement->dateJuge));
$tabInsert = array_merge( $tabUpdate, array(
'siren' => $siren,
'dateJugement' => $dateJuge,
'typeEven' => $tabEven[0],
'dateSource' => $dateSource,
));
if ( !$iDb->insert('annonces', array_merge($tabInsert,array('dateInsert'=>date('YmdHis'))), true) ){
if ( !$iDb->update('annonces', $tabUpdate, "siren=$siren AND dateJugement='$dateJuge' AND typeEven=".$tabEven[0], true)){
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
$output = new SetInfosEntrepReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
}
}
//Fin insertion jugement
// Insertion actionnaire
if ( trim($tabActio->siren)!='' )
{
$nom = $pays = $dateMAJ = '';
$ppPm = 'P';
$pct = trim(str_replace(',','.',$tabActio->pct))*1;
$siren2 = preg_replace('/[^0-9]/','', $tabActio->siren);
$entrep2 = $iInsee->getIdentiteEntreprise($siren);
$nom2 = $entrep2['Nom'];
$pays2 = $entrep2['Pays'];
if ($pays2=='') $pays2='FRA';
if (substr($entrep2['FJ'],0,1)*1<>1) $ppPm='M';
$entrep = $iInsee->getIdentiteEntreprise($siren2);
$nom = $entrep['Nom'];
$pays = trim($entrep['Pays']);
if ($pays=='') $pays='FRA';
if (trim($tabActio->nom)!='') $nom = $tabActio->nom;
if ($tabActio->pays!='XXX') $pays = $tabActio->pays;
if (trim($tabActio->dateMAJ)!='JJ/MM/AAAA' && trim($tabActio->dateMAJ)!=''){
$dateMAJ = WDate::dateT('d/m/Y', 'Y-m-d', trim($tabActio->dateMAJ));
}
if ($tabActio->majMin=='maj') $majMin='+';
elseif ($tabActio->majMin=='min') $majMin='-';
else $majMin='';
$tabUpdate = array(
//'Siren1'=> $siren,
'Pmin'=> $pct,
'Pmax'=> $pct,
'MajMin'=> $majMin,
'PpPm'=> $ppPm,
//'Siren2'=> $siren2,
//'RaisonSociale'=> $nom,
//'Pays'=> $pays,
'dateLien'=> $dateMAJ,
);
$tabInsert1 = array_merge($tabUpdate, array('ActionPart' => 1),
array(
'Siren1'=> $siren,
'Siren2'=> $siren2,
'RaisonSociale'=> $nom,
'Pays'=> $pays,
'actif'=> 1,
'source'=> 1900,
'dateInsert'=> date('YmdHis'))
); Zend_Registry::get('WsLogger')->info('INSERTION ACTIONNAIRE : '.print_r($tabInsert1, 1));
$res = $iDb->select('liens', 'count(*)',
"Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='$nom' AND Pays='$pays'))");
if ($res[0][0]>0) {
if (!$iDb->update('liens', array_merge(
$tabUpdate, array('ActionPart'=>1)),
"siren=$siren AND (Siren2=$siren2 OR (RaisonSociale='$nom' AND Pays='$pays'))", true))
$errMaj=1016166;
} else {
if (!$iDb->insert('liens', $tabInsert1, true))
$errMaj=1016167;
}
$tabInsert2 = array_merge($tabUpdate, array('ActionPart' => 2),
array( 'Siren1' => $siren2,
'Siren2'=> $siren,
'RaisonSociale'=> $nom2,
'Pays'=> $pays2,
'actif'=> 1,
'source'=> 1900,
'dateInsert'=> date('YmdHis'))
);
$res=$iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))");
if ($res[0][0]>0) {
if (!$iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>2)), "siren=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))", true))
$errMaj=1016168;
} else {
if (!$iDb->insert('liens', $tabInsert2, true))
$errMaj=1016169;
}
}
// Fin insertion actionnaire
//Insertion participation
if ( trim($tabParti->siren)<>'' ) {
$nom = $pays = $dateMAJ = '';
$ppPm = 'P';
$pct = trim(str_replace(',','.',$tabParti->pct))*1;
$siren2 = preg_replace('/[^0-9]/','', $tabParti->siren);
$entrep2 = $iInsee->getIdentiteEntreprise($siren);
$nom2 = $entrep2['Nom'];
$pays2 = $entrep2['Pays'];
if ($pays2=='') $pays2='FRA';
if (substr($entrep2['FJ'],0,1)*1<>1) $ppPm='M';
$entrep = $iInsee->getIdentiteEntreprise($siren2);
$nom = $entrep['Nom'];
$pays = trim($entrep['Pays']);
if ( $pays=='' ) $pays='FRA';
if ( trim($tabParti->nom)<>'' ) $nom=$tabParti->nom;
if ( $tabParti->pays<>'XXX' ) $pays=$tabParti->pays;
if (trim($tabParti->dateMAJ)<>'JJ/MM/AAAA' && trim($tabParti->dateMAJ)<>'')
$dateMAJ=WDate::dateT('d/m/Y', 'Y-m-d', trim($tabParti->dateMAJ));
if ($tabParti->majMin=='maj') $majMin='+';
elseif ($tabParti->majMin=='min') $majMin='-';
else $majMin='';
$tabUpdate = array(
'Pmin'=> $pct,
'Pmax'=> $pct,
'MajMin'=> $majMin,
'PpPm'=> $ppPm,
'dateLien'=> $dateMAJ,
);
$tabInsert1 = array_merge($tabUpdate, array( 'ActionPart' => 2 ),
array( 'Siren1'=> $siren,
'Siren2'=> $siren2,
'RaisonSociale'=> $nom,
'Pays'=> $pays,
'actif'=> 1,
'source'=> 1900,
'dateInsert'=> date('YmdHis'))
);
$res=$iDb->select('liens', 'count(*)', "Siren1=$siren AND (Siren2=$siren2 OR (RaisonSociale='$nom' AND Pays='$pays'))");
if ($res[0][0]>0) {
if (!$iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>2)), "siren=$siren AND (Siren2=$siren2 OR (RaisonSociale='$nom' AND Pays='$pays'))", true))
$errMaj=10168;
} else {
if (!$iDb->insert('liens', $tabInsert1, true))
$errMaj=10169;
}
$tabInsert2 = array_merge($tabUpdate, array( 'ActionPart' => 1 ),
array( 'Siren1'=> $siren2,
'Siren2'=> $siren,
'RaisonSociale'=> $nom2,
'Pays'=> $pays2,
'actif'=> 1,
'source'=> 1900,
'dateInsert'=> date('YmdHis'))
);
$res=$iDb->select('liens', 'count(*)', "Siren1=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))");
if ($res[0][0]>0) {
if (!$iDb->update('liens', array_merge($tabUpdate,array('ActionPart'=>1)), "siren=$siren2 AND (Siren2=$siren OR (RaisonSociale='$nom2' AND Pays='$pays2'))", true))
$errMaj=10170;
} else {
if (!$iDb->insert('liens', $tabInsert2, true))
$errMaj=10171;
}
}
// Fin insertion participation
if ($errMaj>0){
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
} else {
$result = true;
}
}
$output = new SetInfosEntrepReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Commande de bilan
* @param InfoCommandeBilan $infoCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdBilanReturn
*/
public function setCmdBilan( InfoCommandeBilan $infoCommande, InfosDemandeur $infosDemandeur )
{
}
/**
* Renvoi des informations sur une commande de bilan
* @param string $reference
* @return CmdBilanReturn
*/
public function getCmdBilan( $reference )
{
}
/**
* Commande d'acte
* @param InfoCommandeActe $infoCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdActeReturn
*/
public function setCmdActe( $infoCommande, $infosDemandeur )
{
}
/**
* Renvoi des informations sur une commande d'acte
* @param string $reference
* @return CmdActeReturn
*/
public function getCmdActe( $reference ){}
/**
* Commande de kbis
* @param InfoCommandeKbis $infoCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdKbisReturn
*/
public function setCmdKbis( InfoCommandeKbis $infoCommande, InfosDemandeur $infosDemandeur )
{
$this->authenticate();
$error = new ErrorType();
$ref = new RefCommande();
//Vérifier les informations
switch($infoCommande->mode)
{
case 'courrier': break;
case 'mail': break;
default:
exit; break;
}
if (empty($infoCommande->siren))
{
$error->errnum = 0;
$error->errmsg = 'Erreur SIREN invalide';
}
else
{
$login = $_SERVER['PHP_AUTH_USER'];
// Insertion des données commande
$dataCommandes = array(
'user_login' => $login,
'user_email' => $this->tabInfoUser['email'],
'type' => 'kbis',
'demandeurReference' => $infosDemandeur->reference,
'demandeurEmail' => $infosDemandeur->email,
'demandeurTel' => $infosDemandeur->tel,
'demandeurNom' => $infosDemandeur->nom,
'demandeurService' => $infosDemandeur->service,
'demandeurSociete' => $infosDemandeur->societe,
'demandeurAdresse' => $infosDemandeur->adresse,
'demandeurCp' => $infosDemandeur->cp,
'demandeurVille' => $infosDemandeur->ville,
'infoCommande' => serialize($infoCommande)
);
try {
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$commande = new Application_Model_Commandes();
$commande_id = $commande->insert($dataCommandes);
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
if ($commande_id)
{
//Enregistrement des détails de commande
$dataCommandesKbis = array(
'commande_id' => $commande_id,
'siren' => $infoCommande->siren,
'raisonSociale' => '',
'fichier' => '',
'partenaireRequete' => '',
'partenaireReponse' => '',
);
try {
$commandeKbisTable = new Application_Model_CommandesPieces();
$commandeKbisTable->insert($dataCommandesKbis);
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
try {
$row = $commande->find($commande_id);
$data = $row->current();
$ref->reference = $data->id;
$ref->dateCommande = $data->date_added;
$ref->dateMaj = $data->date_updated;
$ref->dateReception = $data->date_closed;
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
$error->errnum = 0;
$error->errmsg = "Commande Introuvable";
}
}
else
{
$error->errnum = 0;
$error->errmsg = "Erreur enregistrement commande";
}
}
$output = new CmdKbisReturn();
$cmd = new CmdKbisDetail();
$cmd->infoCommande = $infoCommande;
$cmd->infosDemandeur = $infosDemandeur;
$cmd->refCommande = $ref;
$output->commande = $cmd;
$output->error = $error;
return $output;
}
/**
* Renvoi des informations sur une commande de Kbis
* @param string $reference
* @return CmdKbisReturn
*/
public function getCmdKbis( $reference ){}
/**
* Commande de privilèges et nantissements par email
* @param InfoCommandePieces $infoCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdPiecesReturn
*/
public function setCmdPieces( $infoCommande, $infosDemandeur )
{
$this->authenticate();
$error = new ErrorType();
$ref = new RefCommande();
if (!empty($infoCommande->siren)){
//Vérification SIREN
// Insertion des données commande
$dataCommandes = array(
'user_login' => $this->tabInfoUser['login'],
'user_email' => $this->tabInfoUser['email'],
'type' => 'pieces',
'demandeurReference' => $infosDemandeur->reference,
'demandeurEmail' => $infosDemandeur->email,
'demandeurTel' => $infosDemandeur->tel,
'demandeurNom' => $infosDemandeur->nom,
'demandeurService' => $infosDemandeur->service,
'demandeurSociete' => $infosDemandeur->societe,
'demandeurAdresse' => $infosDemandeur->adresse,
'demandeurCp' => $infosDemandeur->cp,
'demandeurVille' => $infosDemandeur->ville,
'infoCommande' => serialize($infoCommande)
);
try {
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$commande = new Application_Model_Commandes();
$commande_id = $commande->insert($dataCommandes);
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
if ($commande_id){
//Enregistrement des détails de commande
$dataCommandesPieces = array(
'commande_id' => $commande_id,
'siren' => $infoCommande->siren,
'raisonSociale' => '',
'fichier' => '',
);
try {
$commandePieces = new Application_Model_CommandesPieces();
$commandePieces->insert($dataCommandesPieces);
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
try {
$row = $commande->find($commande_id);
$data = $row->current();
$ref->reference = $data->id;
$ref->dateCommande = $data->date_added;
$ref->dateMaj = $data->date_updated;
$ref->dateReception = $data->date_closed;
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
$error->errnum = 0;
$error->errmsg = "Commande Introuvable";
}
} else {
$error->errnum = 0;
$error->errmsg = "Erreur enregistrement commande";
}
} else {
$error->errnum = 0;
$error->errmsg = 'Erreur SIREN invalide';
}
$output = new CmdPiecesReturn();
$cmd = new CmdPiecesDetail();
$cmd->infoCommande = $infoCommande;
$cmd->infosDemandeur = $infosDemandeur;
$cmd->refCommande = $ref;
$output->error = $error;
return $output;
}
/**
* Renvoi des informations sur une commande pièces
* @param string $reference
* @return CmdPiecesReturn
*/
public function getCmdPieces( $reference )
{
list($typeCommande, $idCommande) = explode('-', $reference);
try {
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$commandeTable = new Application_Model_Commandes();
$select = $commandeTable->select()
->where('type = ?', 'pieces')
->where('id = ?', $idCommande);
$commandeRowset = $commandeTable->fetchAll($select);
}
catch (Zend_Db_Adapter_Exception $e)
{
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
$error = new ErrorType();
$ref = new RefCommande();
$infoCommande = new InfoCommandePieces();
$infosDemandeur = new InfosDemandeur();
if ( $commandeRowset->count()>0 )
{
$commande = $commandeRowset->current();
$selectEven = $commandeTable->select()
->order('date_added DESC')->limit(1);
$evenRowset = $commande->findDependentRowset(
'Application_Model_CommandesEven', null, $selectEven);
$info = '';
if($evenRowset->count()>0){
$even = $evenRowset->current();
$info = $even->commentaire;
}
$ref->reference = strtoupper($commande->type).'-'.$commande->id;
$ref->dateCommande = $commande->date_added;
$ref->dateMaj = $commande->date_updated;
$ref->dateReception = $commande->date_closed;
$ref->info = $info;
$ref->fichier = ''; // @todo : Détecter le fichier
$ref->login = $commande->user_login;
$infoCommande = unserialize($commande->infoCommande);
$infosDemandeur->reference = $commande->demandeurReference;
$infosDemandeur->email = $commande->demandeurEmail;
$infosDemandeur->tel = $commande->demandeurTel;
$infosDemandeur->nom = $commande->demandeurNom;
$infosDemandeur->service = $commande->demandeurService;
$infosDemandeur->societe = $commande->demandeurSociete;
$infosDemandeur->adresse = $commande->demandeurAdresse;
$infosDemandeur->cp = $commande->demandeurCp;
$infosDemandeur->ville = $commande->demandeurVille;
}
else
{
$error->errnum = 0;
$error->errmsg = 'Référence inconnue';
}
$output = new CmdPiecesReturn();
$cmd = new CmdPiecesDetail();
$cmd->refCommande = $ref;
$cmd->infoCommande = $infoCommande;
$cmd->infosDemandeur = $infosDemandeur;
$output->commande = $cmd;
$output->error = $error;
return $output;
}
/**
* Retourne la liste des commandes de pièces ainsi que leur détails
* @param CmdFiltrePieces $filtre
* @param int $position
* @param int $nbRep
* @return ListeCmdPiecesReturn
*/
public function getListeCmdPieces( $filtre, $position = 0, $nbRep = 20 )
{
$error = new ErrorType();
//Traitements des filtres pour générer la requête SQL
//Selection
$nbCommandes = 0;
try
{
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$commandeTable = new Application_Model_Commandes();
$select = $commandeTable->select()->where('type = ?', 'pieces');
$countRowset = $commandeTable->fetchAll($select);
$nbCommandes = $countRowset->count();
$select->order('date_added DESC')->limit($nbRep, $position);
$commandeRowset = $commandeTable->fetchAll($select);
}
catch (Zend_Db_Adapter_Exception $e)
{
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
$error->errnum = 1;
$error->errmsg = 'Erreur';
}
if ( $commandeRowset->count()>0 )
{
$liste = array();
foreach ($commandeRowset as $commande)
{
$selectEven = $commandeTable->select()
->order('date_added DESC')->limit(1);
$evenRowset = $commande->findDependentRowset(
'Application_Model_CommandesEven', null, $selectEven);
$info = '';
if($evenRowset->count()>0){
$even = $evenRowset->current();
$info = $even->commentaire;
}
$ref = new RefCommande();
$ref->reference = strtoupper($commande->type).'-'.$commande->id;
$ref->dateCommande = $commande->date_added;
$ref->dateMaj = $commande->date_updated;
$ref->dateReception = $commande->date_closed;
$ref->info = $info;
$ref->fichier = ''; // @todo : Détecter le fichier
$ref->login = $commande->user_login;
$infoCommande = new InfoCommandePieces();
$infoCommande = unserialize($commande->infoCommande);
$infosDemandeur = new InfosDemandeur();
$infosDemandeur->reference = $commande->demandeurReference;
$infosDemandeur->email = $commande->demandeurEmail;
$infosDemandeur->tel = $commande->demandeurTel;
$infosDemandeur->nom = $commande->demandeurNom;
$infosDemandeur->service = $commande->demandeurService;
$infosDemandeur->societe = $commande->demandeurSociete;
$infosDemandeur->adresse = $commande->demandeurAdresse;
$infosDemandeur->cp = $commande->demandeurCp;
$infosDemandeur->ville = $commande->demandeurVille;
$cmd = new CmdPiecesDetail();
$cmd->refCommande = $ref;
$cmd->infoCommande = $infoCommande;
$cmd->infosDemandeur = $infosDemandeur;
$liste[] = $cmd;
}
}
$output = new ListeCmdPiecesReturn();
$output->error = $error;
$output->nbCommandes = $nbCommandes;
$output->liste = $liste;
return $output;
}
/**
* Retourne la liste des statuts de commande
* @param string $type
* @return CmdStatut[]
*/
public function getListeCmdStatut( $type )
{
Zend_Registry::get('WsLogger')->info("getListeStatut - ".$type);
try {
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$dbStatut = new Application_Model_CommandesStatut();
$result = $dbStatut->fetchAll(array("commande_type = '$type'"));
}
catch (Zend_Db_Adapter_Exception $e)
{
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
$listeStatut = array();
if (count($result)>0)
{
foreach($result as $r)
{
$statut = new CmdStatut();
$statut->code = $r['code'];
$statut->lib = $r['libelle'];
$listeStatut[] = $statut;
}
}
return $listeStatut;
}
/**
* Spécifier un état défini pour une commande
* (avec déclenchement d'une action)
* @param int $reference
* @param int $statutCode
* @return bool
*/
public function setCmdStatut( $reference, $statutCode)
{
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$dbStatut = new Application_Model_CommandesStatut();
$row = $dbStatut->fetchRow(array("code = '$statutCode'"));
if ( count($row)>0 && $this->setCommandeEven($reference, $row['lib']) )
{
if (!empty($row['action'])){
switch($row['action']){
case 'CLOSE':
//date_closed
break;
}
}
return true;
} else {
return false;
}
}
/**
* Spécifier un état pour une commande
* @param int $reference
* @param string $comment
* @return bool
*/
public function setCmdEven ( $reference, $comment )
{
$this->authenticate();
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
try {
//Vérifier que la commande existe avec la référence fournie
$commandeTable = new Application_Model_Commandes();
$commandeRowset = $commandeTable->find($reference);
if ($commandeRowset->count()>0)
{
$commande = $commandeRowset->current();
//Enregistrer l'événement
$commandeEvenTable = new Application_Model_CommandesEven();
$insert = $commandeEvenTable->createRow();
$insert->commande_id = $commande->id;
$insert->commentaire = $comment;
$insert->user_login = $this->tabInfoUser['login'];
$insert->save();
//Mettre à jour la commande
$commande->date_updated = date('Y-m-d H:i:s');
$commande->save();
return true;
} else {
return false;
}
}
catch (Zend_Db_Adapter_Exception $e)
{
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
return false;
}
}
/**
* Ajout du nom de fichier liée à la commande
* @param int $reference
* @param string $filename
* @return bool
*/
public function setCmdDocument( $reference, $filename )
{
$this->authenticate();
$db = Zend_Db::factory($this->dbConfig->Commandes);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
try {
//Vérifier que la commande existe avec la référence fournie
$commandeTable = new Application_Model_Commandes();
$commandeRowset = $commandeTable->find($reference);
if ($commandeRowset->count()>0)
{
$commande = $commandeRowset->current();
switch($commande->type)
{
case 'pieces':
$infoCommandePieces = $commande->findDependentRowset('Application_Model_CommandesPieces');
if ($infoCommandePieces->count()>0)
{
//Update informations pieces
$commandePieces = $infoCommandePieces->current();
$commandePieces->fichier = $filename;
$commandePieces->save();
//Mettre à jour la commande
$commande->date_updated = date('Y-m-d H:i:s');
$commande->save();
//Mettre à jour les évenements de commande
//@todo
return true;
}
break;
case 'default':
return false;
break;
}
} else {
return false;
}
}
catch (Zend_Db_Adapter_Exception $e)
{
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
return false;
}
}
/**
* Enregistre une action utilisateur pour la facturation
* @param string $page
* @param string $siret
* @param int $id
* @param string $ref
* @return void
*/
public function setLog($page, $siret, $id=0, $ref='')
{
$this->authenticate();
//Initialisation
if (empty($id)) $id = 0;
if (empty($ref)) $ref = '';
if ( $id!=0 ) {
$ref2=''.$id.'/'.$ref;
} else {
$ref2=$ref;
}
$this->wsLog($page, $siret, $ref2);
debugLog('I',"Insertion d'un log pour la page $page $siret $ref2",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
}
/**
* Met a jour les informations sur un mandataire
* @param SetInfosMandataire $infos Informations sur le mandataire à créer ou à ajouter (ajout si id absent)
* @return SetMandataireReturn
**/
public function setMandataire(SetInfosMandataire $infos)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$result = true;
$iDb = new WDB();
/** Nom et Identifiant de l'opérateur de saisie **/
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('utilisateurs', 'id', "login='".$this->tabInfoUser['login']."'");
$idUser = $rep[0][0];
//$infos = serialize($tabInfos);
debugLog('I',"Ajout/MAJ de mandaitaire ".print_r($infos,1)." demandée",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$type = substr(strtoupper($infos->type),0,1);
$stag = substr(strtoupper($infos->type),1,1);
if ($stag=='S') { $stag=1; } else { $stag=0; }
if ($type=='A' || $type=='H' || $type=='M' || $type=='V' ||
$type=='N' || $type=='T')
{
$tabUpdate=array(
'sirenGrp' => substr($infos->sirenGrp,0,9)*1,
'nicGrp' => substr($infos->sirenGrp,9,5)*1,
'sirenMand' => substr($infos->sirenMand,0,9)*1,
'nicMand' => substr($infos->sirenMand,9,5)*1,
'Nom' => ucwords(strtolower($infos->Nom)),
'Prenom' => ucwords(strtolower($infos->Prenom)),
'type' => $type,
'stagiaire' => $stag,
'coursAppel' => intval($infos->coursAppel),
'coursAppel2' => intval($infos->coursAppel2),
'tribunal' => $infos->tribunal,
'Statut' => strtoupper($infos->Statut),
'adresse' => ucwords($infos->adresse),
'adresseComp' => strtoupper($infos->adresseComp),
'cp' => intval($infos->cp),
'ville' => strtoupper($infos->ville),
'tel' => $infos->tel,
'fax' => $infos->fax,
'email' => $infos->email,
'web' => $infos->web,
'contact' => $infos->contact,
'idUser' => $idUser,
);
}
$id = str_replace('m','', ''.$infos->id)*1;
if (intval($id)!=0) {
// MAJ
if (!$iDb->update('tabMandataires', $tabUpdate, "id=$id", true)) {
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
$result = false;
}
} else {
// Insertion
if (!$iDb->insert('tabMandataires', array_merge($tabUpdate,array('dateInsert'=>date('YmdHis'))), true)) {
$error->errnum = 1;
$error->errmsg = 'Insertion impossible';
$result = false;
}
}
$output = new SetMandataireReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Récupère le mandataire par son id
* @param int $idMand Identifiant du mandataire
* @return MandataireReturn
*/
public function getMandataire($idMand)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
debugLog('I',"Donne le Mandataires correspondant à $idMand",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iInsee = new classMInsee();
$tabRet = $iInsee->getMandataire($idMand);
$mandataire = new MandataireDetail();
$mandataire->Nom = $tabRet['Nom'];
$mandataire->Prenom = $tabRet['Prenom'];
$mandataire->tribunal = $tabRet['tribunal'];
$mandataire->adresse = $tabRet['adresse'];
$mandataire->adresseComp = $tabRet['adresseComp'];
$mandataire->ville = $tabRet['ville'];
$mandataire->email = $tabRet['email'];
$mandataire->web = $tabRet['web'];
$mandataire->contact = $tabRet['contact'];
$output = new MandataireReturn();
$output->error = $error;
$output->result = $mandataire;
return $output;
}
/**
* Liste les mandataires compétentes pour une cours d'appel donnée
* @param mixed $codeTribunal Identifiants BODACC du tribunal ou tableau d'Identifiants numériques des cours d'appel
* @param array $type Type de mandataire (A)dministrateur, (M)andataire, (O)ppositions, (N)otaires, a(V)ocat
* @return MandatairesReturn
*/
public function getMandataires($codeTribunal=0, $type=array('A','M'))
{
$this->authenticate();
//Initialisation
$iInsee = new MInsee();
$error = new ErrorType();
$trib = serialize($codeTribunal);
debugLog('I',"Liste des Mandaitaires ou Administrateur du Tribunal/Cours d'Appel $trib demandé",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
if (!is_array($codeTribunal) && strlen($codeTribunal)>3 && $codeTribunal*1==0)
{
// $codeTribunal est un identifiant de tribunal
$iBodacc = new MBodacc();
$tabTmp = $iInsee->getMandataires(array($iBodacc->getTribunalIdCA($codeTribunal)), true, $type);
}
elseif ($codeTribunal*1==0)
{
// On veut tous les mandataires
$tabTmp = $iInsee->getMandataires(array(), true, $type);
}
elseif (is_array($codeTribunal))
{
// On veut les mandataires d'une CA
$tabTmp = $iInsee->getMandataires($codeTribunal, true, $type);
}
$tabRet = array();
foreach ($tabTmp as $i=>$mand){
$mandataire = new Mandataire();
$mandataire->id = 'm'.$i;
$mandataire->mand = $mand;
$tabRet[]= $mandataire;
}
$output = new MandatairesReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* Retourne la liste des conventions
* @param string $siren
* @return ListeConventionsReturn
*/
public function getListeConventions($siren)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$tabRet = array();
debugLog('I',"Liste des conventions demandée pour le siren $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
if (strlen($siren)<>9){
debugLog('W', "Siren/Siret $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 102;
$error->errmsg = 'Siren Siret inexistant';
} elseif ($siren*1==0){
debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 102;
$error->errmsg = 'Siren inexistant';
} else {
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteEntreprise($siren);
if (empty($tabIdentite) && isset($tabIdentite['erreur']) &&
$tabIdentite['erreur']<>''){
debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 102;
$error->errmsg = 'Siren inexistant';
} else {
$naf = $tabIdentite['NafEnt'];
$trancheEffectif = $tabIdentite['EffEnTr'];
$effectif = $tabIdentite['Effectif'];
$fj = $tabIdentite['entreprise']['FJCodeEntrep'];
$isolv = new MSolvabilite($siren, $naf, $trancheEffectif,
$effectif, $tabIdentite['CP'], $fj, $tabIdentite['Capital'],
$tabIdentite['CapitalDev'], $tabIdentite['DateCreaEn'],
$tabIdentite['DateCreaEt']
);
$noteStructure = $isolv->getSolvabilite();
$naf4 = $isolv->getNaf4($naf);
$tabTmp = $iInsee->listeConventions($naf4, $tabIdentite['Dept']);
foreach ($tabTmp as $conv)
{
$convention = new Convention();
$convention->idCC = $conv['id CC'];
$convention->nomCC = $conv['nom CC'];
$convention->infoCC = $conv['infoCC'];
$convention->editorCC = $conv['editeur CC'];
$convention->nbPageCC = $conv['nb page CC'];
$convention->isbnCC = $conv['isbn CC'];
$convention->dateCC = $conv['date edition CC'];
$convention->joCCmaj = $conv['joCCmaj'];
$tabRet[] = $convention;
}
$this->wsLog('conventions',$siren);
}
}
$output = new ListeConventionsReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* Donne la cours d'appel d'un tribunal par son code
* @param string $codeTribunal Code BODACC sur 6 caractères du tribunal
* @return int
**/
public function getIdCoursAppel($codeTribunal)
{
$this->authenticate();
$iBodacc = new MBodacc();
return $iBodacc->getTribunalIdCA($codeTribunal);
}
/**
* Récupère le contenu d'une annonce issue de la collecte
* @param string $idAnn
* @param string $siret
* @return AnnonceCollecteReturn
*/
public function getAnnonceCollecte($idAnn, $siret)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$annonceCollecte = new AnnonceCollecte();
$siren = substr($siret,0,9)*1;
if (!$this->checkEdition()) {
$error->errnum = 0;
$error->errmsg = 'Code Client Incorrect';
} else {
$iDb = new WDB();
debugLog('I',"Lecture de l'annonce collectée n°$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$idAnn = preg_replace('/^0\./','', ''.$idAnn) * 1;
if ($idAnn>0)
{
$res = $iDb->select('annonces',
'id, siren, sirenValide, typeEven, strEven, raisonSociale, adresse, codePostal, ville, dateJugement, dateCessationPaiement, dateEffetFinP, numero, inter1type, inter1id, inter1nom, inter2type, inter2id, inter2nom, inter3type, inter3id, inter3nom, inter4type, inter4id, inter4nom, tribunal, montant, actionsNb, complement, infosBrutes, nouvActivite, nouvDir, nouvAdr, nouvFJ, annonce, source, parutionIdJal, parutionNum, dateSource, idSaisie, idAnnonce, dateInsert',
"id=$idAnn", false, MYSQL_ASSOC
);
if (count($res)>0)
{
$ann = $res[0];
$annonceCollecte->id = $ann['id'];
$annonceCollecte->siren = $ann['siren'];
$annonceCollecte->raisonSociale = $ann['raisonSociale'];
$annonceCollecte->adresse = $ann['adresse'];
$annonceCollecte->codePostal = $ann['codePostal'];
$annonceCollecte->ville = $ann['ville'];
$annonceCollecte->dateJugement = $ann['dateJugement'];
//@todo : Les libellées ne sont pas présent LibEven
$tabEven = array();
$annonceEvenement = new AnnonceEvenement();
$annonceEvenement->CodeEven = $ann['typeEven'];
$annonceEvenement->LibEven = '';
$tabEven[] = $annonceEvenement;
if (!empty($ann['strEven'])){
foreach ( explode(';',$ann['strEven']) as $code )
{
$annonceEvenement = new AnnonceEvenement();
$annonceEvenement->CodeEven = $code;
$annonceEvenement->LibEven = '';
$tabEven[] = $annonceEvenement;
}
}
$annonceCollecte->even = $tabEven;
$annonceCollecte->dateSource = $ann['dateSource'];
$annonceCollecte->dateCessationPaiement = $ann['dateCessationPaiement'];
$annonceCollecte->dateEffetFinP = $ann['dateEffetFinP'];
$annonceCollecte->tribunal = $ann['tribunal'];
$annonceCollecte->numero = $ann['numero'];
$annonceCollecte->montant = $ann['montant'];
$annonceCollecte->actionsNb = $ann['actionsNb'];
$annonceCollecte->inter1type = $ann['inter1type'];
$annonceCollecte->inter1id = $ann['inter1id'];
$annonceCollecte->inter1nom = $ann['inter1nom'];
$annonceCollecte->inter2type = $ann['inter2type'];
$annonceCollecte->inter2id = $ann['inter2id'];
$annonceCollecte->inter2nom = $ann['inter2nom'];
$annonceCollecte->inter3type = $ann['inter3type'];
$annonceCollecte->inter3id = $ann['inter3id'];
$annonceCollecte->inter3nom = $ann['inter3nom'];
$annonceCollecte->complement = $ann['complement'];
$annonceCollecte->nouvActivite = $ann['nouvActivite'];
$annonceCollecte->nouvDir = $ann['nouvDir'];
$annonceCollecte->nouvAdr = $ann['nouvAdr'];
$annonceCollecte->nouvFJ = $ann['nouvFJ'];
$annonceCollecte->source = $ann['source'];
debugLog('I',"Lecture de l'annonce collectée n°$idAnn ($siret) : ".$ann['raisonSociale'],__LINE__,__FILE__, __FUNCTION__, __CLASS__);
} else {
$error->errnum = 1;
$error->errmsg = 'Edition impossible';
}
}
else
{
$error->errnum = 745741;
$error->errmsg = 'Selection impossible';
}
}
$output = new AnnonceCollecteReturn();
$output->error = $error;
$output->result = $annonceCollecte;
return $output;
}
/**
* getDevises
* @param string $codeIsoDevise
* @return DevisesReturn
*/
public function getDevises($codeIsoDevise='')
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if (empty($codeIsoDevise)) $codeIsoDevise = '';
debugLog('I',"Liste des devises ou devise $codeIsoDevise demandée",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iInsee = new MInsee();
$tabTmp = $iInsee->getDevises($codeIsoDevise);
$tabRet = array();
foreach ($tabTmp as $i=>$dev)
{
if ( $i!='' ){
$devise = new Devise();
$devise->devIso = $i;
$devise->devNom = $dev;
$tabRet[] = $devise;
}
}
$output = new DevisesReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* Retourne la liste des codes devises, libellés, date et valeur
* (toutes les devises ou une seule)
* @param string $devise Devise sur 3 lettres (facultatif)
* @return DevisesCoursReturn
*/
public function getDeviseCours($devise=false)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$iDb = new WDB('sdv1');
if ($devise) $strDevise=" AND c.devise='$devise' ";
else $strDevise='';
$tabRet = array();
$res = $iDb->select('devise_cours c, devise_liste l', 'c.devise, l.devNom, max(c.date) as dateChange, c.valeur', "c.devise=l.devIso $strDevise GROUP BY c.devise ORDER BY c.devise ASC", false, MYSQL_ASSOC);
foreach ($res as $tabDev)
{
$devise = new DevisesCours();
$devise->codeDevise = $tabDev['devise'];
$devise->nomDevise = $tabDev['devNom'];
$devise->dateChange = $tabDev['dateChange'];
$devise->valeurDevise = $tabDev['valeur'];
$tabRet[] = $devise;
}
$output = new DevisesCoursReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* getMarques
* @param string $siren
* @param int $idDepot
* @return MarquesReturn
*/
public function getMarques($siren, $idDepot=0)
{
$this->authenticate();
$this->permission('marques');
debugLog('I',"Liste des marques déposées pour le siren $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
if (empty($idDepot)) $idDepot = 0;
$error = new ErrorType();
$marques = array();
require_once 'Metier/partenaires/classMMarques.php';
$iMarque = new MMarques();
$ret = $iMarque->getMarques($siren, $idDepot);
foreach ($ret as $item) {
if (trim($item['imgLink'])<>'') $idLien = $item['numeroMarque'];
else $idLien = '';
if ($idDepot==$item['numeroMarque']) {
$marque = new Marque();
$marque->Marques = $item['nomMarque'];
$marque->Date = $item['dateDepot'];
$marque->Depot = $item['numeroMarque'];
$marque->IdLien = $idLien;
$marque->UrlLien = $item['UrlLien'];
$marque->PdfDispo = $item['pdfLink'];
$marque->Classes = $item['classesMarque'];
$marque->Perimetre = $item['periMarque'];
$marque->DateExpir = $item['dateExpir'];
$marques = array();
$marques[] = $marque;
break;
} else {
$marque = new Marque();
$marque->Marques = $item['nomMarque'];
$marque->Date = $item['dateDepot'];
$marque->Depot = $item['numeroMarque'];
$marque->IdLien = $idLien;
$marque->UrlLien = $item['UrlLien'];
$marque->PdfDispo = $item['pdfLink'];
$marques[] = $marque;
}
}
Zend_Registry::get('WsLogger')->info(__FUNCTION__.' : '.
print_r($marques,1));
$this->wsLog('marques',$siren);
$output = new MarquesReturn();
$output->error = $error;
$output->result = $marques;
return $output;
}
/**
* Enter description here ...
* @param string $siren
* @param string $piece
* @param string $type
* @param integer $visu
* @param integer $courrier
* @param string $ref
* @return PieceReturn
*/
public function getPiece($siren, $piece='kbis', $type='', $visu=1, $courrier=0, $ref='')
{
$this->authenticate();
$this->permission('kbis');
set_time_limit(400);
if (empty($piece)) $piece = 'kbis';
if (empty($type)) $type = '';
if (empty($visu)) $visu = 1;
if (empty($courrier)) $courrier = 1;
if (empty($ref)) $ref = '';
$error = new ErrorType();
$erreur = false;
$kbisLocalPDF = DOC_WEB_LOCAL."kbis/$piece-$siren.pdf";
if (file_exists($kbisLocalPDF)
&& date('Ymd', filemtime($kbisLocalPDF))==date('Ymd')
&& filesize($kbisLocalPDF)>0 ) {
$size = filesize($kbisLocalPDF);
$erreur = false;
$tabNom = array();
$ficDist = '';
$cache = 1;
} else {
exec("php ".APPLICATION_PATH."/../batch/getPieces.php $siren $piece > /dev/null &");
$ficDist='';
$size=$cache=0;
}
// On supprimer l'ancien kbis si trop vieux ou vide
if (date('Ymd', filemtime($kbisLocalPDF))<>date('Ymd')
|| filesize($kbisLocalPDF)==0) {
unlink($kbisLocalPDF);
}
$result = new PieceResult();
$result->Siren = $siren;
//@todo : Envoyer vers controlleur
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$result->Url = $hostname.'/data/kbis/'.$piece.'-'.$siren.'.pdf';
$result->Taille = $size;
$result->Cache = $cache;
$result->fichier = $ficDist;
$this->wsLog('kbis', $siren, "$cache/$visu/$courrier/$type/$ref");
$output = new PieceReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Enregistrement de document actes ou status d'association
* @param string $siren Numéro Siren
* @param string $waldec Numéro waldec
* @param string $type Type d'acte
* @param string $libelle Libellé de l'acte
* @param string $date Date des l'acte au format
* @param int $nbPages Nombre de pages dans le fichier
* return boolean
*/
public function setActeAsso( $siren, $waldec, $type, $libelle, $date, $nbPages )
{
$this->authenticate();
if (!$this->checkEdition()) {
$this->sendError('0902');
}
($type == 'ST') ? $type_acte = 'ST' : $type_acte = '';
$data = array(
'siren' => $siren,
'waldec' => waldec,
'pdfLink' => '',
'pdfSize' => '',
'pdfVer' => '',
'pdfPage' => '',
'date_acte' => WDate::dateT('d/m/Y', 'Y-m-d', $date),
'type_acte' => $type_acte,
'type_acte_libelle' => $libelle,
'nbpages_acte' => $nbPages,
);
try {
$db = Zend_Db::factory($this->dbConfig->Webservice);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$doc = new Application_Model_AssoActes();
$doc_id = $doc->insert($data);
} catch (Zend_Exception $e) {
Zend_Registry::get('WsLogger')
->err(__FUNCTION__.' - '.$e->getMessage());
}
if ($commande_id)
{
return true;
}
return false;
}
/**
* Commande de statut association
* @param InfoCmdAsso $infosCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdAssoReturn
*/
public function setCmdAsso( $infosCommande, $infosDemandeur )
{
$this->authenticate();
$this->permission('actes');
//Initialisation
$error = new ErrorType();
$iDb = new WDB();
$siren = $infosCommande->siren;
$idEntreprise = intval($infosCommande->idEntreprise);
$assoNom = $infosCommande->raisonSociale;
debugLog('I',"commandeAsso pour $assoNom ($siren) début",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteLight($siren, 0, $idEntreprise);
$assoSigle = $tabIdentite['Sigle'];
$assoAdresse = $tabIdentite['Adresse'].EOL.$tabIdentite['Adresse2'];
$assoCP = $tabIdentite['CP'];
$assoVille = $tabIdentite['Ville'];
$mail = trim($infosDemandeur->email);
if ($mail=='') $mail = $this->tabInfoUser['email'];
$tabInsert=array(
'idUser' => $this->tabInfoUser['id'],
'source' => 'asso',
'login' => $this->tabInfoUser['login'],
'emailCommande' => $mail,
'siren' => $siren,
'refUtilisateur' => $infosDemandeur->reference,
'refDocument' => serialize($infosDemandeur),
'refCommande' => serialize($infosCommande),
'dateCommande' => DATETIME,
);
$iDbCrm = new WDB('sdv1');
$ret = $iDbCrm->insert('commandes', $tabInsert, true);
if ( $ret!=0 ) {
sendMail('production@scores-decisions.com', 'asso@scores-decisions.com',
"Commande de statuts association pour $assoNom ($siren)",
"Association :".EOL.print_r($infosCommande, true).EOL.EOL.
"Demandeur:".EOL.print_r($infosDemandeur, true).EOL.EOL.
"Ref : i".$ret
);
$result = new CmdAssoDetail();
$result->siren = $siren;
$result->emailCommande = $mail;
$result->dateCommande = DATETIME;
$result->refCmd = 'i'.$ret;
sendMail('production@scores-decisions.com', $mail,
"Votre commande de statuts association sur $assoNom ($siren)",
"Votre demande de statuts sur l'association $assoNom a été prise en compte sous la référence i$ret - ".DATETIME);
$this->wsLog('commandeAsso', $siren, 'i'.$ret.'-'.DATETIME);
debugLog('I',"commandeAsso pour $assoNom ($siren) fin",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
} else {
$error->errnum = 1;
$error->errmsg = 'Erreur';
}
$output = new CmdAssoReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Renvoi des informations sur une commande association
* @param string $reference
* @return CmdAssoReturn
*/
public function getCmdAsso( $reference ){}
/**
* Commande d'une enquête sur une entreprise en France ou à l'Internationale
* @param InfosCmdEnquete $infosCommande
* @param InfosDemandeur $infosDemandeur
* @return CmdEnqueteReturn
**/
public function setCmdEnquete($infosCommande, $infosDemandeur)
{
$this->authenticate();
$this->permission('enquetec');
//Initialisation
$error = new ErrorType();
$siren = $infosCommande->siren;
$mail = trim($infosDemandeur->email);
if ($mail=='') $mail = $this->tabInfoUser['email'];
$tabInsert = array(
'idUser' => $this->tabInfoUser['id'],
'source'=> 'intersud', // 'greffes', 'asso', 'graydon'
'login'=> $this->tabInfoUser['login'],
'emailCommande'=> $mail,
'siren'=> $siren,
'refDocument'=> serialize($infosDemandeur),
'refCommande'=> serialize($infosCommande),
'dateCommande'=> DATETIME,
);
debugLog('I',"Intersud, début sur $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$messageInfo=print_r($infosCommande, 1).EOL.print_r($infosDemandeur,1).EOL;
$idClient = $this->tabInfoUser['idClient'];
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('clients', ' nom, racineLogin, InterSudLogin, InterSudPass', "id='$idClient'", false, MYSQL_ASSOC);
$login = trim($rep[0]['InterSudLogin']);
$pass = trim($rep[0]['InterSudPass']);
$nomClient = trim(strtoupper($rep[0]['nom']));
$strInfoCommande ="NOM et Prénom du client demandeur : ".$infoDemandeur->nom.EOL;
$strInfoCommande.="Email du client demandeur : $mail".EOL;
$strInfoCommande.="Tel/Fax du demandeur : ".$infosDemandeur->tel.' / '.$infosDemandeur->fax.EOL;
$strInfoCommande.="Profil du demandeur : ".trim($infosDemandeur->service).EOL;
$typeEnqLog='enqueteDemNF';
if ($login=='' || $pass=='') {
/** Il ne s'agit pas d'un client final, on anonymise la commande **/
$login = 'YLENA'; // Demandes en test
$pass = 'WYLFE';
$nomClient = $strInfoCommande = '';
$typeEnqLog = 'enqueteDem';
/* ENQUETES EN PROD
$login='FACTURE';
$pass='AWKROM';
*/
}
$url='http://www.intersud.fr/espace_client/espace_client.php';
$cookie = $referer = '';
$tabPost = array('login' => $login, 'pwd' => $pass);
$tdeb = microtime(true);
$page = getUrl($url, $cookie, $tabPost, $referer, false, '', '', 7);
if ($page['code']<>200) {
$tabRet=array();
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Connexion impossible à la plateforme Intersud".EOL.$strInfoCommande);
// wsLog($typeEnqLog, $siren, 'i'.$ret.'-'.DATETIME);
//@todo
return array('error'=>array('errnum'=>4563456, 'errmsg'=>'Connexion impossible à la plateforme d\'enquetes'), 'results'=>$tabRet);
}
$tfin = microtime(true);
$duree = $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$cookie = $page['header']['Set-Cookie'];
/** Connexion à l'Extranet Intersud
**/
$url = 'http://intersud.fr/espace_client/demande_enquete.php';
$tdeb = microtime(true);
$page = getUrl($url, $cookie, '', $referer, false, '', '', 7);
$tfin = microtime(true);
$duree+= $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$fp=@fopen(LOG_PATH."/intersud.log", "a");
@fwrite($fp, print_r($page,true));
@fclose($fp);
$tabInterSud=array();
if (preg_match_all('/<input(?:.*)name="(.*)"(?:.*)value="(.*)"/Uim',$body,$matches)) {
foreach ($matches[1] as $i=>$field) {
$tmp=explode('"', $matches[2][$i]);
$tabInterSud[$field]=$tmp[0];
}
}
if (preg_match_all('/<input(?:.*)value="(.*)"(?:.*)name="(.*)"/Uim',$body,$matches)) {
foreach ($matches[2] as $i=>$field) {
$tmp=explode('"', $matches[1][$i]);
$tabInterSud[$field]=$tmp[0];
}
}
$ref_exp=$tabInterSud['ref_exp'];
$email_exp=$tabInterSud['email_exp'];
$tel_exp=$tabInterSud['tel_exp'];
debugLog('I',"Intersud, formulaire enquête ref $ref_exp, $email_exp, $tel_exp",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$fp=@fopen(LOG_PATH."/intersud.log", "a");
@fwrite($fp, print_r($matches,true));
@fwrite($fp, print_r($tabInterSud,true));
@fclose($fp);
/** Insertion de la commande en base
**/
$ret = $iDbCrm->insert('commandes', $tabInsert, true);
$comment = "Référence de la commande chez Scores et Décisions : i$ret - ".
DATETIME."\n".
"Date et heure de la commande : ".date('d/m/Y - H:i')."\n".
"Origine de la commande : $nomClient".
"$strInfoCommande"."\n\n".
"CA : ".$infosCommande->PrecisionsMontantCA."\n".
"Motif de la demande : ".trim($infosCommande->PrecisionsMotif.' '.$infosCommande->PrecisionsAutre)."\n".
"Type de la demande : ".$infosCommande->PrecisionsType."\n".
"Anciennete de la relation : ".$infosCommande->Anciennete.' '.$infosCommande->AncienneteDuree."\n".
"Observations : ".$infosCommande->Observation.EOL;
if ($infosCommande->ImpayeesChoix<>'non')
$comment.="Impayé(s) : ".$infosCommande->ImpayeesNombre." impayé(s) pour un montant de ".$infosCommande->ImpayeesMontant." en date du ".$infosCommande->ImpayeesDate.EOL;
if ($infosCommande->RetardPaiementChoix<>'non')
$comment.="Retard(s) de paiement : ".$infosCommande->RetardPaiementNombre." retard(s) pour un montant de ".$infosCommande->RetardPaiementMontant." en date du ".$infosCommande->RetardPaiementDate.EOL;
if ($infosCommande->LitigeChoix<>'non')
$comment.="Présence de litige(s) : ".$infosCommande->LitigePrecisions.EOL;
$enqType=0;
$enqDelai=7;
switch (strtolower($infosCommande->Type)) {
case 'premier': $enqType=0; $enqDelai=6; break;
case 'gold': $enqType=1; break;
case 'distrimat': $enqType=2; break;
case 'star': $enqType=3; break;
case 'avis_bancaire': $enqType=4; break;
case 'autre': $enqType=5; break;
}
/** Ajout du RIB si communiqué **/
if (@trim(implode(' ', $infosCommande->RIB))<>'')
$iDbCrm->insert('banques', array(
'siren'=>$siren,
'libBanqueGuichet'=>'',
'precis'=>1,
'codeBanque'=>$infosCommande->RIB->banque,
'codeGuichet'=>$infosCommande->RIB->guichet,
'numCompte'=>$infosCommande->RIB->compte.$infosCommande->RIB->cle,
'dateSource'=>DATETIME,
), true);
/** Remplissage du formulaire d'enquête pour soumission à Intersud **/
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteLight($siren);
$tabPost = array(
'soc'=>$tabIdentite['Nom'],
'cible_enk'=>9, // 9
'siret'=>$siren,
'acti'=>'',
'soc_exp'=>$tabInterSud['soc_exp'],
'type_enk'=>$enqType, // 0=Premier, 1=Gold, 2=Distrimat, 3=Star, 4=Avis bancaire, 5=Autre
'nom_diri'=>'',
'adr'=>$tabIdentite['Adresse'],
'ref_exp'=>$tabInterSud['ref_exp'],
'autre_type_enk'=>'', // Texte libre
'adr2'=>$tabIdentite['Adresse2'],
'delai_enk'=>$enqDelai, // 6=24h, 7=72h, 8=+de5jours
'ville'=>$tabIdentite['Ville'],
'cp'=>$tabIdentite['CP'],
'pays'=>'', // International ?
'nom_exp'=>$tabInterSud['nom_exp'],
'tel'=>$tabIdentite['Tel'],
'port'=>$infosCommande->AutreTel,
'tel_exp'=>$tabInterSud['tel_exp'],
'bank'=>trim(implode(' ', $infosCommande->RIB)),
'int_enk'=>$tabInterSud['int_enk'], // International ?
'encours'=>$infosCommande->Encours,
'nb_ech'=>$infosCommande->NbEcheances,
'delai2_enk'=>$tabInterSud['delai2_enk'], // International ?
'email_exp'=>$tabInterSud['email_exp'],
'cred'=>'',
'comment'=>urlencode($comment),
'val_ret'=>$tabInterSud['val_ret'],
);
$url='http://intersud.fr/espace_client/demande_enquete.php';
$tdeb=microtime(true);
$page=getUrl($url, $cookie, $tabPost, $referer, false, '', '', 7);
if ($page['code']<>200) {
$tabRet=array();
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Validation impossible du formulaire d'enquête Intersud".EOL.$strInfoCommande);
//@todo
return array('error'=>array('errnum'=>456345, 'errmsg'=>'Connexion impossible à la plateforme d\'enquetes 3'), 'results'=>$tabRet);
}
$tfin=microtime(true);
$duree+=$tfin-$tdeb;
$referer=$url;
$body=$page['body'];
$result = new CmdEnquete();
$result->siren = $siren;
$result->emailCommande = $mail;
$result->dateCommande = DATETIME;
$result->refCmd = 'i'.$ret;
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Commande d'enquete sur $siren", $comment.EOL.EOL.'---------------------------------'.EOL.$messageInfo.EOL.EOL.'---------------------------------'.EOL.$body);
@sendMail('production@scores-decisions.com', $mail, "Votre demande d'enquete sur ".$tabIdentite['Nom']." ($siren)", "Votre demande d'enquête sur la société ".$tabIdentite['Nom']." a été prise en compte sous la référence i$ret - ".DATETIME);
$this->wsLog($typeEnqLog, $siren, 'i'.$ret.'-'.DATETIME);
/** Gestion de la déconnexion **/
$url='http://intersud.fr/espace_client/index.php?code_ret=9';
$tdeb=microtime(true);
$page=getUrl($url, $cookie, '', $referer, false, '', '', 7);
$tfin=microtime(true);
$duree+=$tfin-$tdeb;
$ret = $iDbCrm->update('commandes', array('dureeCommande'=>round($duree,3)), "idCommande=$ret");
$output = new CmdEnqueteReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Récupération d'un kbis
* @param string $siren
* @param int $visu
* @param int $courrier
* @param string $mail
* @param string $ref
* @return PieceReturn
*/
public function getKbis($siren, $visu=1, $courrier=0, $mail='', $ref='')
{
return $this->getPiece($siren, 'kbis', '', $visu, $courrier, $ref);
}
/**
* getStatsUtilisateurs
* @param string $login
* @param string $mois
* @param string $type
* @param boolean $payants
* @return array
*/
public function getStatsUtilisateurs($login, $mois, $type='jour', $payants=false)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if ($payants)
{
$strPayant="AND (page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis') AND params<>'' AND (params NOT LIKE '%erreur%' OR params LIKE '%erreur 17%') ";
}
else {
$strPayant='';
}
$iDbCrm = new WDB('sdv1');
if ($type=='jour') {
$rep = $iDbCrm->select('logs',
'date(dateHeure) as jours, count(*) as nb',
"1 $strPayant AND login='$login' AND dateHeure BETWEEN '$mois-01' AND '$mois-31' GROUP BY jours",
false, MYSQL_ASSOC);
} elseif ($type=='heure') {
$rep = $iDbCrm->select('logs',
'HOUR(dateHeure) as heures, count(*) as nb',
"1 $strPayant AND login='$login' AND dateHeure BETWEEN '$mois-01' AND '$mois-31' GROUP BY heures",
false, MYSQL_ASSOC);
}
$tabRet = $rep;
return array('error'=>array('errnum'=>0, 'errmsg'=>''), 'results'=>$tabRet);
}
/**
* getPortefeuilleCsv
* @param string $login
* @param int $idClient
* @return ListeSurveillancesCsvReturn
*/
public function getPortefeuilleCsv($login='', $idClient=0)
{
return $this->getListeSurveillancesCsv('portefeuille', $login, $idClient);
}
/**
* getPortefeuille
* @param PortefeuilleFiltre $filtre
* @param int $deb
* @param int $nbRet
* @return PortefeuilleReturn
*/
public function getPortefeuille($filtre, $deb=0, $nbRet=100)
{
$this->authenticate();
// Initialisation
$error = new ErrorType();
if (empty($deb)) { $deb = 0; }
if (empty($nbRet)) { $nbRet = 100; }
$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;
case 'indiScore': $orderBy='ORDER BY indiScore'; break;
case 'encours': $orderBy='ORDER BY encours'; break;
default: $orderBy='ORDER BY siren'; break; // siren ou vide ou autre
}
$tabRet = array();
$siren = substr($filtre->siret,0,9);
$nic = substr($filtre->siret,9,5);
$iDb = new WDB();
$login = $this->tabInfoUser['login'];
$strSelect = 's.email, s.siren, s.nic, s.ref, s.dateAjout, s.rs, s.cp, s.ville, s.dateDerEnvoi, s.encoursClient, c.actif, c.procol, c.indiScore, c.indiScore20, c.encours, c.indiScoreDate, c.dateBilan, c.indiScorePre, c.indiScore20Pre, c.encoursPre, c.indiScoreDatePre, c.sourceModif, c.scoreSolv, c.scoreSolvPre, c.scoreDir, c.scoreDirPre, c.scoreConf, c.scoreConfPre, c.scoreZ, c.scoreZPre, c.scoreCH, c.scoreCHPre, c.scoreAfdcc2, c.scoreAfdcc2Pre, c.situFi, c.situFiPre, c.infoNote, c.infoNotePre, c.noteStruct, c.noteStructPre, c.noteFin, c.noteFinPre, c.tendance, c.tendancePre, c.dateUpdate';
$strFiltre = '';
if (intval($siren)>0) $strFiltre.= " AND s.siren=$siren ";
if (!empty($filtre->ref)) $strFiltre.= " AND s.ref LIKE '%$filtre->ref%'";
if (!empty($filtre->rs)) $strFiltre.= " AND s.rs LIKE '%$filtre->rs%'";
// Il faut compter le nombre de siren au total
$tabTmp = $iDb->select('surveillances_site s', 'count(*) as nb', "s.login='$login' AND s.source='score' AND s.dateSuppr=0 $strFiltre", false, MYSQL_ASSOC);
$nbRepTot = $tabTmp[0]['nb'];
$tabTmp = $iDb->select('surveillances_site s, scores_surveillance c', $strSelect, "s.login='$login' AND s.source='score' AND s.dateSuppr=0 AND s.siren=c.siren $strFiltre $orderBy LIMIT $deb,$nbRet", false, MYSQL_ASSOC);
foreach ($tabTmp as $i=>$tabSurv) {
if (trim($tabSurv['rs'])<>'') {
$rs=$tabSurv['rs'];
$cp=$tabSurv['cp'];
$ville=$tabSurv['ville'];
} else {
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteLight($tabSurv['siren'], $tabSurv['nic']);
$rs=$tabIdentite['Nom'];
$cp=$tabIdentite['CP'];
$ville=$tabIdentite['Ville'];
$iDb->update('surveillances_site',array(
'rs' => $rs,
'cp' => $cp,
'ville' => $ville),
"login='$login' AND source='score' AND dateSuppr=0 AND siren=".$tabSurv['siren']." AND nic=".$tabSurv['nic'],
false
);
}
$portefeuille = new Portefeuille();
$portefeuille->email = $tabSurv['email'];
$portefeuille->siren = $tabSurv['siren'];
$portefeuille->nic = $tabSurv['nic'];
$portefeuille->ref = $tabSurv['ref'];
$portefeuille->dateAjout = $tabSurv['dateAjout'];
$portefeuille->rs = $rs;
$portefeuille->cp = $cp;
$portefeuille->ville = $ville;
// Entreprise
$portefeuille->actif = $tabSurv['actif'];
$portefeuille->procol = $tabSurv['procol'];
$portefeuille->indiScore = $tabSurv['indiScore'];
$portefeuille->indiScore20 = $tabSurv['indiScore20'];
$portefeuille->indiScorePre = $tabSurv['indiScorePre'];
$portefeuille->indiScore20Pre = $tabSurv['indiScore20Pre'];
$portefeuille->encours = $tabSurv['encours'];
$portefeuille->encoursPre = $tabSurv['encoursPre'];
$portefeuille->indiScoreDate = $tabSurv['indiScoreDate'];
$portefeuille->indiScoreDatePre = $tabSurv['indiScoreDatePre'];
$portefeuille->encoursClient = $tabSurv['encoursClient'];
$portefeuille->dateBilan = $tabSurv['dateBilan'];
$portefeuille->sourceModif = $tabSurv['sourceModif'];
//, c.scoreSolv, c.scoreSolvPre, c.scoreDir, c.scoreDirPre, c.scoreConf, c.scoreConfPre, c.scoreZ, c.scoreZPre, c.scoreCH, c.scoreCHPre, c.scoreAfdcc2, c.scoreAfdcc2Pre, c.situFi, c.situFiPre, c.infoNote, c.infoNotePre, c.noteStruct, c.noteStructPre, c.noteFin, c.noteFinPre, c.tendance, c.tendancePre, c.dateUpdate';
$portefeuille->dateDerEnvoi = $tabSurv['dateDerEnvoi'];
$tabRet[] = $portefeuille;
}
$output = new PortefeuilleReturn();
$output->error = $error;
$output->result = $tabRet;
$output->nbReponses = count($tabRet);
$output->nbReponsesTotal = $nbRepTot;
return $output;
}
/**
* rechercheHisto
* @param string $recherche
* @param string $annee
* @param string $typeBod
* @param int $deb
* @param int $nbRep
* @param int $maxRep
* @param bool $pertinence
* @return RechercheHistoReturn
*/
public function rechercheHisto($recherche, $annee='', $typeBod='', $deb=0, $nbRep=20, $maxRep=200, $pertinence=false)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if (empty($annee)) $annee = '';
if (empty($typeBod)) $typeBod = '';
if (empty($deb)) $deb = 0;
if (empty($nbRep)) $nbRep = 20;
if (empty($maxRep)) $maxRep = 200;
if (empty($annee)) $pertinence = false;
$liste = array();
$index = 'histo';
debugLog('I',"rechercheHisto de $recherche ($annee) (Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabFiltres = array();
if ($annee<>'' && $annee*1>=1953 && $annee*1<=date('Y')*1)
$tabFiltres = array('annee1'=>$annee);
/*
require_once 'Metier/sphinx/recherche2.php';
$ret=search2('histo', "$recherche", $tabFiltresAnnee, $deb, $nbRep, $maxRep, $pertinence);
*/
if (SPHINX_HISTO_VERSION == 1){
require_once 'sphinxapi/sphinxapi-0.9.9.php';
} elseif (SPHINX_HISTO_VERSION == 2){
require_once 'sphinxapi/sphinxapi-2.0.2.php';
}
$cl = new SphinxClient();
$cl->SetServer (SPHINX_HISTO_HOST, SPHINX_HISTO_PORT);
$cl->SetConnectTimeout ( 1 );
$cl->SetLimits ($deb, $nbRep, $maxRep);
$cl->SetMatchMode (SPH_MATCH_EXTENDED);
foreach ($tabFiltres as $nomFiltre => $valFiltre)
$cl->SetFilter($nomFiltre, array(0=>$valFiltre));
$cl->SetRankingMode ( SPH_RANK_PROXIMITY_BM25 );
$res = $cl->Query ( $recherche, $index );
if ($res===false) {
debugLog('I',"Search Sphinx : Pas de réponse pour $recherche avec ".implode(',',$tabFiltres).' ('.$cl->GetLastError() .')',__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$criteres = new RechercheHistoCriteres();
$criteres->recherche = $recherche;
$criteres->annee = $annee;
$output = new RechercheHistoReturn();
$output->criteres = $criteres;
$output->nbReponses = 0;
$output->nbReponsesTotal = 0;
$output->duree = $res[time];
$output->mots = array();
$output->reponses = array();
return $output;
}
// Le moteur est opérationel
if ( $cl->GetLastWarning() ) {
debugLog('I',"Search Sphinx : Warning pour $recherche - ".$cl->GetLastWarning(),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
//print "WARNING: " . $cl->GetLastWarning() . "\n\n";
}
debugLog('I',"'Search Sphinx dans $index de $recherche (Filtre=".implode(',',$tabFiltres)."), Deb=$deb, nbRep=$nbRep, max=$max, any=$any",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabRet=array();
if ( is_array($res['matches'])) {
$iDb = new WDB();
foreach ( $res['matches'] as $doc => $docinfo )
{
$listeEtab=$iDb->select('histobodacc.bodacc_ocr',
"'Histo' as Loc, id, nomFichier, annee1, bod, texte",
"id=$doc");
$etab = $listeEtab[0];
$tabRet[]=array(
'Localisation' => $etab['Loc'],
'id' => $doc,
'Pertinence' => $docinfo['weight'],
'Fichier' => $etab['nomFichier'],
'Annee' => $etab['annee1'],
'Code' => $etab['bod'],
'Texte' => $etab['texte'],
);
}
}
debugLog('I','Search Sphinx : Retourne '. $res[total].'/'. $res[total_found] .' en '.$res[time] .'secondes',__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$liste = $tabRet;
$nbTot = $res[total_found];
$duree = $res[time];
$tabMots = $res['words'];
$tabRet = array();
$k=0;
if(count($liste)>0) {
require_once 'i18n/cleanchar.php';
foreach ($liste as $n=>$etab) {
$texte = cleanutf8($etab['Texte']);
$pattern = '/[^a-zA-Z0-9\/]+/ ';
$texte = preg_replace($pattern, ' ', $texte);
$posMin=100000;
$hitMin=1000000;
foreach ($tabMots as $mot=>$tabMot) {
if ($tabMot['hits']<$hitMin) {
$hitMin=$tabMot['hits'];
$motSignificatif=$mot;
}
}
$posMin = stripos($texte, ''.$motSignificatif);
if ($posMin<150) $posMin=150;
$texte2 = substr($texte, $posMin-150, 250);
$reponse = new RechercheHistoReponses();
$reponse->id = $etab['id'];
$reponse->Pertinence = $etab['Pertinence'];
//@todo : gestion du lien pour le téléchargement des fichiers bodacc
$file = strtr($etab['Fichier'], array(
'.txt'=>'.pdf',
'/mnt/bodacc/' => ''));
$vieuxWS = false;
if ($vieuxWS) {
$reponse->Fichier = 'http://tville.scores-decisions.com/bodacc/'.$file;
} else {
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$url = '/fichier/bodacc/q/'.base64_encode($file);
$reponse->Fichier = $hostname.$url;
}
$reponse->Annee = $etab['Annee'];
$reponse->Code = $etab['Code'];
$reponse->Texte = $texte2;
$tabRet[] = $reponse;
$k++;
}
}
$criteres = new RechercheHistoCriteres();
$criteres->recherche = $recherche;
$criteres->annee = $annee;
$output = new RechercheHistoReturn();
$output->criteres = $criteres;
$output->nbReponses = count($tabRet);
$output->nbReponsesTotal = $nbTot;
$output->duree = $duree;
$output->mots = array_keys($tabMots);
$output->reponses = $tabRet;
return $output;
}
/**
* getListeSurveillanceCsv
* @param string $source
* @param string $login
* @param int $idClient
* @return ListeSurveillancesCsvReturn
*/
public function getListeSurveillancesCsv($source='', $login='', $idClient=0)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if (empty($source)) $source = '';
if (empty($idClient)) $idClient = 0;
debugLog('I',"getListeSurveillancesCsv Début $source $login $idClient",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabRet = array();
$iDb = new WDB();
$strClient = $strLogin = '';
$exportPtf = false;
switch ($source)
{
case 'insee':
case 'annonces':
case 'bilans':
case 'score':
case 'actes':
case 'privileges':
case 'dirigeants':
break;
case 'portefeuille':
$source='score';
$exportPtf=true;
break;
default:
$source='';
break;
}
if ($source<>'') $strSource = "AND source='$source' ";
else $strSource = '';
// Control idClient
if ($idClient==0 || ($idClient!=$this->tabInfoUser['idClient'] && $this->tabInfoUser['profil']!='SuperAdministrateur') ){
$idClient = $this->tabInfoUser['idClient'];
}
$strClient = "AND u.idClient=$idClient ";
if ($this->tabInfoUser['profil']=='SuperAdministrateur' || $this->tabInfoUser['profil']=='Administrateur') {
// Surveillances de tous les utilisateurs du client
if (empty($login)) {
$login = '';
//Surveillances de l'utilisateur
} else {
$strLogin = "AND s.login='$login' ";
}
} else {
//Par défaut préselection de l'utilisateur
$login = $this->tabInfoUser['login'];
$strLogin = "AND s.login='$login' ";
}
$fichierCsv = DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.csv";
if (file_exists($fichierCsv) &&
date('Ymd', filemtime($fichierCsv))==date('Ymd') &&
filesize($fichierCsv)>60 ) {
$size = filesize($fichierCsv);
$erreur = false;
$tabNom = array();
$cache = 1;
} else {
unlink($fichierCsv);
if ($source=='score'){
if ($tabInfoUser['typeScore']==20) {
$strScore='v.indiScore20 AS indiScore20';
$strScorePre='v.indiScore20Pre AS indiScore20Pre';
} else {
$strScore='v.indiScore AS indiScore100';
$strScorePre='v.indiScorePre AS indiScore100Pre';
}
/*v.scoreZ, v.scoreZPre, v.scoreCH, v.scoreCHPre,
v.scoreAfdcc2, v.scoreAfdcc2Pre, v.situFi, v.situFiPre, v.infoNote, v.infoNotePre,
v.noteStruct, v.noteStructPre, v.noteFin, v.noteFinPre, v.tendance, v.tendancePre, */
$sql="SELECT LOWER(s.login) as loginUti, s.source, s.email, s.siren, s.nic, s.ref, s.dateAjout,
s.rs, s.cp, s.ville, s.dateDerEnvoi,
s.encoursClient, v.actif, v.procol, $strScore, v.encours, v.indiScoreDate, v.dateBilan,
$strScorePre, v.encoursPre, v.indiScoreDatePre, v.sourceModif, v.scoreSolv, v.scoreSolvPre, v.scoreDir,
v.scoreDirPre, v.scoreConf, v.scoreConfPre,
e.cj, e.capital, e.capitalDev, e.ape_entrep, e.tca, e.teff_entrep,
v.dateUpdate
FROM surveillances_site s, sdv1.utilisateurs u, sdv1.clients c, scores_surveillance v, etablissements e
WHERE s.source='score' $strClient $strLogin AND dateSuppr=0 AND s.login=u.login AND u.idClient=c.id AND s.siren=v.siren AND s.siren=e.siren
GROUP BY loginUti, s.siren, s.nic, s.source, s.ref
ORDER BY loginUti ASC, s.siren ASC, s.nic ASC, s.source ASC, s.ref ASC";
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeSurveillancesCsv($source, $login, $idClient)", $sql);
} else {
$sql="SELECT LOWER(s.login) as loginUti, s.source, s.email, s.siren, s.nic, s.ref, s.dateAjout,
s.rs, s.cp, s.ville, s.dateDerEnvoi
FROM surveillances_site s, sdv1.utilisateurs u, sdv1.clients c
WHERE 1 $strSource $strClient $strLogin AND dateSuppr=0 AND s.login=u.login AND u.idClient=c.id
ORDER BY loginUti ASC, s.siren ASC, s.nic ASC, s.source ASC, s.ref ASC";
}
debugLog('I',"getListeSurveillancesCsv SQL $sql",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$fp = fopen(DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.sql", 'w');
fwrite($fp, $sql.EOL);
fclose($fp);
exec("php ".APPLICATION_PATH."/../batch/sql2csv.php jo ".DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.sql $fichierCsv > /dev/null &");
$size=$cache=0;
}
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$result = new ListeSurveillancesCsv();
$result->Url = $hostname.DOC_WEB_URL."csv/listesurv-$source-$login-$idClient.csv";
$result->Taille = $size;
$result->Cache = $cache;
debugLog('I','getListeSurveillancesCsv Url='.$hostname.DOC_WEB_URL."csv/listesurv-$source-$login-$idClient.csv, Taille=$size, Cache=$cache",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$output = new ListeSurveillancesCsvReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* getListeJalCollecte
* @return ListeJalCollecteReturn
*/
public function getListeJalCollecte()
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$iBodacc = new MBodacc();
$tabJal = $iBodacc->getListeJalCollecte();
foreach ($tabJal as $i=>$jal)
{
$jalCollecte = new JalCollecte();
$jalCollecte->id = $i;
$jalCollecte->nom = $jal;
$tabRet[] = $jalCollecte;
}
$output = new ListeJalCollecteReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* getListeFichierSurv
* @param string $login
* @param string $ref
* @param string $nomFic
* @return ListeFichierSurvReturn
*/
public function getListeFichierSurv($login, $ref='*', $nomFic='')
{
$this->authenticate();
if (empty($ref)) $ref = '*';
if (empty($nomFic)) $nomFic = '';
$error = new ErrorType();
//debugLog('I',"getListeFichierSurv pour $login, $ref, $nomFic",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabFichier=$tabDates=array();
$numAbo=substr($ref, 0,5);
if (strtolower($login)=='vwbank') {
$repClient='volkswagen bank';
$ficClient='surveillanceBodacc_SURBODPRDCFTVWBANK';
$numAbo=$ref='19300';
} elseif (substr($login,0,6)=='apicil') {
$repClient='apicil';
$ficClient='surveillanceBodacc_SURBODPRDCFTAPICIL';
$numAbo=$ref='';
} elseif (strtolower($login)=='omni04') {
$repClient='aggm mederic ';
$ficClient='surveillanceBodacc_SURBODPRDFTSOMNIREP';
$numAbo=$ref='';
} elseif (strtolower($login)=='bodacca3m') {
$repClient='aggm mederic ';
$ficClient='surveillanceBodacc_SURBODPRDFTSMEDERIC';
$numAbo=$ref='';
} elseif (strtolower($login)=='bodaccomni') {
$repClient='aggm mederic ';
$ficClient='surveillanceBodacc_SURBODPRDFTSOMNIREP';
$numAbo=$ref='';
} elseif (strtolower($login)=='bodacccrr') {
$repClient='aggm mederic ';
$ficClient='surveillanceBodacc_SURBODPRDFTSCRR';
$numAbo=$ref='';
} elseif (strtolower($login)=='cpcambr13' || strtolower($login)=='cpcambr14') {
$repClient='cpcam des bouches du rhône';
$ficClient='diffusionBodacc_DIFBODPRDMAICPCAM13';
$numAbo=$ref='';
} else {
$repClient='cnasea';
$ficClient='surveillanceBodacc_SURBODTSTFTSCNASEA';
}
$dh = opendir(DOC_WEB_LOCAL."clients/$repClient/");
if (!$dh) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, $nomFic", "Impossible d'ouvrir le dossier '/home/data/clients/$repClient/'");
$error->errnum = 1;
$error->errmsg = "Impossible d'ouvrir le dossier client";
} else {
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.csv' && substr($filename,0,42)==$ficClient.$numAbo) {
$tabFichier[] = $filename;
$tabDates[]=substr($filename,43,8);
$tabClients[]=substr($filename,0,42);
}
elseif ($ref=='*' && $filename<>'.' && $filename<>'..' && substr($filename, -4)=='.csv' && substr($filename,0,37)==$ficClient && substr($filename,37,1)<>'_') {
$tabFichier[] = $filename;
$tabDates[]=substr($filename,43,8);
$tabClients[]=substr($filename,0,42);
}
elseif ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.csv' && substr($filename,0,37)==$ficClient && substr($filename,37,1)=='_' && $repClient=='apicil') {
$tabFichier[] = $filename;
$tabDates[]=substr($filename,38,8);
$tabClients[]=substr($filename,0,37);
}
elseif ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.csv' && substr($filename,0,38)==$ficClient && substr($filename,38,1)=='_' && $repClient=='aggm mederic ') {
$tabFichier[] = $filename;
$tabDates[]=substr($filename,39,8);
$tabClients[]=substr($filename,0,38);
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, $nomFic : fichier lu '$filename'", "Fichier lu '$filename'");
}
/** Tableau des noms de fichier **/
sort($tabFichier);
/** Tableau des dates de livraisons **/
$tabDates=array_unique($tabDates);
sort($tabDates);
/** Tableau des Clients **/
$tabClients=array_unique($tabClients);
sort($tabClients);
//return array('error'=>array('errnum'=>0, 'errmsg'=>''), 'results'=>$tabDates);
/*@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, $nomFic",
"Fichiers :".EOL.
print_r($tabFichier, true).
"Dates:".EOL.
print_r($tabDates, true).
"Clients :".EOL.
print_r($tabClients, true)
);*/
if ($ref=='*') {
$tabFichier = array();
// Boucle sur les dates de livraison
foreach ($tabDates as $dateFic) {
if (strlen($dateFic)<>8) continue;
if (!file_exists(DOC_WEB_LOCAL."clients/$repClient/$ficClient".'_'."$dateFic.csv") ||
filesize(DOC_WEB_LOCAL."clients/$repClient/$ficClient".'_'."$dateFic.csv")==0) {
$fpW=fopen(DOC_WEB_LOCAL."clients/$repClient/$ficClient".'_'."$dateFic.csv",'w');
$entete=true;
// Boucle afin de vérifier si on est sur le bon client
foreach ($tabClients as $nomClient) {
$dh = opendir(DOC_WEB_LOCAL."clients/$repClient/");
while (false !== ($filename = readdir($dh))) {
if (substr($filename,0,51)==$nomClient.'_'.$dateFic && substr($filename,-4)=='.csv') {
$fichier=$filename;
//break;
}
}
$fpR=fopen(DOC_WEB_LOCAL."clients/$repClient/$fichier",'r');
//return array('error'=>array('errnum'=>0, 'errmsg'=>''), 'results'=>array(($fichier)));//die;
if ($fpR) {
while (!feof($fpR)) {
$ligne=trim(fgets($fpR));
if (substr($ligne,0,5)=='Siren' && $entete==true) {
fwrite($fpW, 'SITE;'.$ligne.EOL);
$entete=false;
}
elseif (substr($ligne,0,5)<>'Siren' && trim($ligne)<>'') {
fwrite($fpW, strtr($nomClient, array('surveillanceBodacc_SURBODTSTFTS'=>'',
'surveillanceBodacc_SURBODPRDCFT'=>'')).';'.$ligne.EOL);
}
}
fclose($fpR);
}
}
fclose($fpW);
}
if (strlen($dateFic)==8)
$tabFichier[]=$ficClient.'_'.$dateFic.'.csv';
}
}
rsort($tabFichier);
if ($nomFic<>'') {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, /home/data/clients/$repClient/$nomFic", 'Avant BZ2');
if (!file_exists(DOC_WEB_LOCAL."/csv/$nomFic.bz2") ||
filesize(DOC_WEB_LOCAL."/csv/$nomFic.bz2")<=14) {
$string=file_get_contents("/home/data/clients/$repClient/$nomFic");
if ($string===false) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, $nomFic", "Ouverture impossible du fichier '/home/data/clients/$repClient/$nomFic'");
}
$bz = bzopen(DOC_WEB_LOCAL."/csv/$nomFic.bz2",'w');
if ($bz) {
bzwrite($bz, $string, strlen($string));
bzclose($bz);
}
} /*else
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, /home/data/clients/$repClient/$nomFic", 'Sans BZ2');
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeFichierSurv pour $login, $ref, /home/data/clients/$repClient/$nomFic", 'Après BZ2');
*/
}
debugLog('I',"getListeFichierSurv pour $login, $ref, $nomFic : nb fichiers=".count($tabFichier),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$result = array();
foreach($tabFichier as $fichier){
$retFichier = new ListeFichierSurv();
$retFichier->UrlFichier = $hostname.'/data/csv/'.$fichier;
$result[] = $retFichier;
}
}
$output = new ListeFichierSurvReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Geocodage d'une adresse
* @param string $adresse
* @param string $cp
* @param string $ville
* @param string $pays
* @return GeoCodeReturn
*/
public function geoCode($adresse, $cp, $ville, $pays='France')
{
$this->authenticate();
$ligne = date('YmdHis').";$siren;MMap AVANT";
$fp = fopen(LOG_PATH.'/accesDistant.log', 'a');
fwrite($fp,$ligne.EOL);
fclose($fp);
$mMap = new MMap($adresse, $cp, $ville, $pays);
$ligne=date('YmdHis').";$siren;MMap APRES";
$fp=fopen(LOG_PATH.'/accesDistant.log', 'a');
fwrite($fp,$ligne.EOL);
fclose($fp);
$geocode = new GeoCode();
$geocode->latitude = $mMap->latitudeDec;
$geocode->longitude = $mMap->longitudeDec;
$geocode->precis = $mMap->precision;
$geocode->adresseValidee = $mMap->adresseValidee;
$geocode->latitudeDeg = $mMap->latitudeDeg;
$geocode->longitudeDeg = $mMap->longitudeDeg;
$output = new GeoCodeReturn();
$output->error = $error;
$output->result = $geocode;
}
/**
* Recherche d'entreprise par leur actionnaire
* @param string $nom Raison sociale / Nom de l'actionnaire (obligatoire)
* @param string $cpVille CP, Ville
* @param string $siren Siren de l'actionnaire
* @param string $pays Pays de l'actionnaire
* @param string $pctMin Niveau de détention Minimam de l'actionnaire
* @param string $pctMax Niveau de détention Maximum de l'actionnaire
* @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 les noms et prénoms (si true)
* @return SearchActReturn
*/
public function searchAct($nom, $cpVille='', $siren=0, $pays='', $pctMin=0, $pctMax=100, $deb=0, $nbRep=20, $maxRep=200, $pertinence=false)
{
debugLog('I',"Recherche Actionnaire de $nom, $cpVille (Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
if (!empty($pays)){
$wdb = new WDB('jo');
$result = $wdb->select('tabPays', 'codPays3', "libPays LIKE '".$pays);
if (count($result>0)){
$pays = $result[0]['codPays3'];
} else {
$pays = '';
}
}
if (empty($cpVille)) $cpVille = '';
if (empty($siren)) $siren = '';
if (empty($pctMin)) $pctMin = 0;
if (empty($pctMax)) $pctMax = 100;
if (empty($deb)) $deb = 0;
if (empty($nbRep)) $nbRep = 20;
if (empty($maxRep)) $maxRep = 200;
if (empty($pertinence)) $pertinence = false;
$mLiens = new MLiens('');
// rechercheActionnaire($nom, $cpVille, $siren, $pays, $pctMin, $pctMax, $deb, $nbRep, $maxRep, $pertinence)
$etabs = $mLiens->rechercheActionnaire($nom, $cpVille, $siren, $pays, $pctMin, $pctMax, $deb, $nbRep, $maxRep, $pertinence);
$iInsee = new MInsee();
$tabRet = array();
foreach ($etabs['reponses'] as $etab) {
$act = new EntrepriseActItem();
$act->id = $etab['id'];
$act->Pertinence = $etab['Pertinence'];
$act->Siret = $etab['Siret'];
$act->Siege = $etab['Siege'];
$act->Nom = prepareString(strtr($etab['Nom'],'/*',' '));
$act->Nom2 = prepareString($etab['Nom2']);
$act->Sigle = prepareString($etab['Sigle']);
$act->Enseigne = prepareString($etab['Enseigne']);
$act->Adresse = prepareString($etab['Adresse']);
$act->Adresse2 = prepareString($etab['Adresse2']);
$act->CP = $etab['CP'];
$act->Ville = prepareString($etab['Ville']);
$act->Tel = $etab['Tel'];
$act->Fax = $etab['Fax'];
$act->FJ = $etab['FJ'];
$act->FJLib = prepareString($iInsee->getLibelleFJ($etab['FJ']));
$act->Siren = $etab['Siren'];
$act->Nic = $etab['Nic'];
$act->Actif = $etab['Actif'];
$act->NafEtab = $etab['NafEtab']; // Etablissement
$act->NafEtabLib = prepareString($iInsee->getLibelleNaf($etab['NafEtab'])); // Etablissement
$act->NafEnt = $etab['NafEnt']; // Entreprise
$act->NafEntLib = prepareString($iInsee->getLibelleNaf($etab['NafEnt']));
$act->ActNomRs = $etab['ActNomRs'];
$act->ActPays = $etab['ActPays'];
$act->ActDateLien = $etab['ActDateLien'];
$act->ActActif = $etab['ActActif'];
$act->ActPmin = $etab['ActPmin'];
$tabRet[] = $act;
}
$output = new SearchActReturn();
$output->nbReponses = $etabs['nbReponses'];
$output->nbReponsesTotal = $etabs['nbReponsesTotal'];
$output->result = $tabRet;
if ($tabRet['nbReponses']==0) {
debugLog('W', "Aucun résultat pour cette recherche !", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
}
return $output;
}
/**
* Commande d'une enquête sur une entreprise en France ou à l'Internationale
* @param string $siren
* @param string $infoEnq Informations pour la demande d'enquête<br/>
* InfoEnq[Entrep][Tel]<br/>
* InfoEnq[Entrep][Fax]<br/>
* InfoEnq[Entrep][AutreTel]<br/>
* InfoEnq[Entrep][Mail]<br/>
* InfoEnq[Entrep][AutreMail]<br/>
* InfoEnq[Entrep][Web]<br/>
* InfoEnq[Entrep][Rib][Banque]<br/>
* InfoEnq[Entrep][Rib][Guichet]<br/>
* InfoEnq[Entrep][Rib][Compte]<br/>
* InfoEnq[Entrep][Rib][Cle]<br/>
* InfoEnq[Encours]<br/>
* InfoEnq[NbEcheances]<br/>
* InfoEnq[AvisAssureur]<br/>
* InfoEnq[Type]<br/>
* InfoEnq[Delai]<br/>
* InfoEnq[PrecisionsChoix]<br/>
* InfoEnq[Precisions][MontantCA]<br/>
* InfoEnq[Precisions][Motif]<br/>
* InfoEnq[Precisions][Autre]<br/>
* InfoEnq[Anciennete]<br/>
* InfoEnq[AncienneteDuree]<br/>
* InfoEnq[ImpayeesChoix]<br/>
* InfoEnq[Impayees][Montant]<br/>
* InfoEnq[Impayees][Nombre]<br/>
* InfoEnq[Impayees][Date]<br/>
* InfoEnq[RetardPaiementChoix]<br/>
* InfoEnq[RetardPaiement][Montant]<br/>
* InfoEnq[RetardPaiement][Nombre]<br/>
* InfoEnq[RetardPaiement][Date]<br/>
* InfoEnq[LitigeChoix]<br/>
* InfoEnq[Litige][Precisions]<br/>
* InfoEnq[Observation]<br/>
* @param string $infoDemande Informations sur l'utilisateur<br/>
* InfoUser[Profil]<br/>
* InfoUser[ProfilAutre]<br/>
* InfoUser[Identite]<br/>
* InfoUser[Tel]<br/>
* InfoUser[Fax]<br/>
* InfoUser[Email]<br/>
* InfoUser[Ref]<br/>
* @return CommandeEnqueteReturn
*/
public function commandeEnquete($siren, $infoEnq, $infoDemande)
{
$this->authenticate();
//Initialisation
$infoEnq = json_decode($infoEnq);
$infoDemande = json_decode($infoDemande);
$mail = trim($infoDemande['Email']);
if ($mail=='') {
$mail=$this->tabInfoUser['email'];
}
$tabInsert = array(
'idUser' => $this->tabInfoUser['id'],
'source' => 'intersud', // 'greffes', 'asso', 'graydon'
'login' => $tabInfoUser['login'],
'emailCommande' => $mail,
'siren' => $siren,
'refDocument' => serialize($infoDemande),
'refCommande' => serialize($infoEnq),
'dateCommande' => DATETIME,
// 'idClient'=> $tabInfoUser['idClient'],
);
debugLog('I',"Intersud, début commande sur $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$messageInfo = print_r($infoEnq, 1).EOL.print_r($infoDemande,1).EOL;
$idClient = $this->tabInfoUser['idClient'];
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('clients', ' nom, racineLogin, InterSudLogin, InterSudPass', "id='$idClient'", false, MYSQL_ASSOC);
$login = trim($rep[0]['InterSudLogin']);
$pass = trim($rep[0]['InterSudPass']);
$nomClient = trim(strtoupper($rep[0]['nom']));
$strInfoCommande = "NOM et Prénom du client demandeur : ".$infoDemande['Identite'].EOL;
$strInfoCommande.= "Email du client demandeur : $mail".EOL;
$strInfoCommande.= "Tel/Fax du demandeur : ".$infoDemande['Tel'].' / '.$infoDemande['Fax'].EOL;
$strInfoCommande.= "Profil du demandeur : ".trim($infoDemande['Profil'].' '.$infoDemande['ProfilAutre']).EOL;
$typeEnqLog='enqueteDemNF';
if ($login=='' || $pass=='') {
/** Il ne s'agit pas d'un client final, on anonymise la commande **/
$login='YLENA'; // Demandes en test
$pass='WYLFE';
$nomClient=$strInfoCommande='';
$typeEnqLog='enqueteDem';
/* ENQUETES EN PROD
$login='FACTURE';
$pass='AWKROM';
*/
}
/** Connexion à l'Extranet Intersud **/
$url = 'http://www.intersud.fr/espace_client/espace_client.php';
$cookie = $referer = '';
$tabPost = array(
'login' => $login,
'pwd' => $pass,
);
$tdeb = microtime(true);
$page = getUrl($url, $cookie, $tabPost, $referer, false, '', '', 7);
if ($page['code']<>200) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Connexion impossible à la plateforme Intersud".EOL.$strInfoCommande);
//wsLog($typeEnqLog, $siren, 'i'.$ret.'-'.DATETIME);
throw new SoapFault('1',"Connexion impossible à la plateforme d'enquêtes");
}
$tfin = microtime(true);
$duree = $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$cookie = $page['header']['Set-Cookie'];
$intersudNomPrenom=$intersudRaisonSociale='';
if (preg_match('/<td colspan="5" class="txt_blanc" background="images_ec\/1erpageespaceclient_14\.jpg" width="274" height="22">(.*)<\/td>/Uis',$body,$matches))
$intersudNomPrenom=trim($matches[1]);
if (preg_match('/<td class="txt_blanc" colspan="7" rowspan="2" valign="middle" background="images_ec\/1erpageespaceclient_17\.jpg">(.*)<\/td>/Uis',$body,$matches))
$intersudRaisonSociale=trim($matches[1]);
debugLog('I',"Intersud, connexion via $login pour $intersudRaisonSociale ($intersudNomPrenom, cookie=$cookie)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
/*
$fp=@fopen(LOG_PATH."/intersud.log", "a");
@fwrite($fp, EOL.DATETIME.EOL.print_r($page,true).'========================================================================================================='.EOL.EOL);
@fclose($fp);
die();
*/
/** Page formulaire de demande d'enquête **/
$url='http://intersud.fr/espace_client/demande_enquete.php';
$tdeb = microtime(true);
$page = getUrl($url, $cookie, '', $referer, false, '', '', 7);
if ($page['code']<>200) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Connexion impossible au formulaire d'enquête Intersud".EOL.$strInfoCommande);
throw new SoapFault('2',"Connexion impossible à la plateforme d'enquêtes");
}
$tfin = microtime(true);
$duree+= $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$fp=@fopen(LOG_PATH.'/intersud.log', "a");
@fwrite($fp, print_r($page,true));
@fclose($fp);
$tabInterSud=array();
if (preg_match_all('/<input(?:.*)name="(.*)"(?:.*)value="(.*)"/Uim',$body,$matches)) {
foreach ($matches[1] as $i=>$field) {
$tmp=explode('"', $matches[2][$i]);
$tabInterSud[$field]=$tmp[0];
}
}
if (preg_match_all('/<input(?:.*)value="(.*)"(?:.*)name="(.*)"/Uim',$body,$matches)) {
foreach ($matches[2] as $i=>$field) {
$tmp=explode('"', $matches[1][$i]);
$tabInterSud[$field]=$tmp[0];
}
}
$ref_exp=$tabInterSud['ref_exp'];
$email_exp=$tabInterSud['email_exp'];
$tel_exp=$tabInterSud['tel_exp'];
debugLog('I',"Intersud, formulaire enquête ref $ref_exp, $email_exp, $tel_exp",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$fp=@fopen(LOG_PATH.'/intersud.log', "a");
@fwrite($fp, print_r($matches,true));
@fwrite($fp, print_r($tabInterSud,true));
@fclose($fp);
/** Insertion de la commande en base **/
$ret = $iDbCrm->insert('commandes', $tabInsert, true);
$comment = "Référence de la commande chez Scores et Décisions : i$ret - ".DATETIME."
Date et heure de la commande : ".date('d/m/Y - H:i')."
Origine de la commande : $nomClient
$strInfoCommande
CA : ".$infoEnq['Precisions']['MontantCA']."
Motif de la demande : ".trim($infoEnq['Precisions']['Motif'].' '.$infoEnq['Precisions']['Autre'])."
Type de la demande : ".$infoEnq['Precisions']['Type']."
Anciennete de la relation : ".$infoEnq['Anciennete'].' '.$infoEnq['AncienneteDuree']."
Observations : ".$infoEnq['Observation'].EOL;
if ($infoEnq['ImpayeesChoix']<>'non')
$comment.="Impayé(s) : ".$infoEnq['Impayees']['Nombre']." impayé(s) pour un montant de ".$infoEnq['Impayees']['Montant']." en date du ".$infoEnq['Impayees']['Date'].EOL;
if ($infoEnq['RetardPaiementChoix']<>'non')
$comment.="Retard(s) de paiement : ".$infoEnq['RetardPaiement']['Nombre']." retard(s) pour un montant de ".$infoEnq['RetardPaiement']['Montant']." en date du ".$infoEnq['RetardPaiement']['Date'].EOL;
if ($infoEnq['LitigeChoix']<>'non')
$comment.="Présence de litige(s) : ".$infoEnq['Litige']['Precisions'].EOL;
$enqType=0;
$enqDelai=7;
switch (strtolower($infoEnq['Type'])) {
case 'premier': $enqType=0; $enqDelai=6; break;
case 'gold': $enqType=1; break;
case 'distrimat': $enqType=2; break;
case 'star': $enqType=3; break;
case 'avis_bancaire': $enqType=4; break;
case 'autre': $enqType=5; break;
}
/** Ajout du RIB si communiqué **/
if (@trim(implode(' ', $infoEnq['Entrep']['Rib']))<>''){
$iDbCrm->insert('banques', array(
'siren' => $siren,
'libBanqueGuichet' => '',
'precis' => 1,
'codeBanque' => $infoEnq['Entrep']['Rib']['Banque'],
'codeGuichet' => $infoEnq['Entrep']['Rib']['Guichet'],
'numCompte' => $infoEnq['Entrep']['Rib']['Compte'].$infoEnq['Entrep']['Rib']['Cle'],
'dateSource' => DATETIME,
), true);
}
/** Remplissage du formulaire d'enquête pour soumission à Intersud **/
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteLight($siren);
$tabPost = array(
'soc' => $tabIdentite['Nom'],
'cible_enk' => 9, // 9
'siret' => $siren,
'acti' => '',
'soc_exp' => $tabInterSud['soc_exp'],
'type_enk' => $enqType, // 0=Premier, 1=Gold, 2=Distrimat, 3=Star, 4=Avis bancaire, 5=Autre
'nom_diri' => '',
'adr' => $tabIdentite['Adresse'],
'ref_exp' => $tabInterSud['ref_exp'],
'autre_type_enk' => '', // Texte libre
'adr2' => $tabIdentite['Adresse2'],
'delai_enk' => $enqDelai, // 6=24h, 7=72h, 8=+de5jours
'ville' => $tabIdentite['Ville'],
'cp' => $tabIdentite['CP'],
'pays' => '', // International ?
'nom_exp' => $tabInterSud['nom_exp'],
'tel' => $tabIdentite['Tel'],
'port' => $infoEnq['Entrep']['AutreTel'],
'tel_exp' => $tabInterSud['tel_exp'],
'bank' => trim(implode(' ', $infoEnq['Entrep']['Rib'])),
'int_enk' => $tabInterSud['int_enk'], // International ?
'encours' => $infoEnq['Encours'],
'nb_ech' => $infoEnq['NbEcheances'],
'delai2_enk' => $tabInterSud['delai2_enk'], // International ?
'email_exp' => $tabInterSud['email_exp'],
'cred' => '',
'comment' => urlencode($comment),
'val_ret' => $tabInterSud['val_ret'],
);
$url = 'http://intersud.fr/espace_client/demande_enquete.php';
$tdeb = microtime(true);
$page = getUrl($url, $cookie, $tabPost, $referer, false, '', '', 7);
if ($page['code']<>200) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Validation impossible du formulaire d'enquête Intersud".EOL.$strInfoCommande);
throw new SoapFault('3',"Connexion impossible à la plateforme d'enquêtes");
}
$tfin = microtime(true);
$duree+= $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$output = new CommandeEnqueteReturn();
$output->siren = $siren;
$output->emailCommande = $mail;
$output->dateCommande = DATETIME;
$output->refCmde = 'i'.$ret;
//$strInfoCommande $mail
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Commande d'enquete sur $siren", $comment.EOL.EOL.'---------------------------------'.EOL.$messageInfo.EOL.EOL.'---------------------------------'.EOL.$body);
@sendMail('production@scores-decisions.com', $mail, "Votre demande d'enquete sur ".$tabIdentite['Nom']." ($siren)", "Votre demande d'enquête sur la société ".$tabIdentite['Nom']." a été prise en compte sous la référence i$ret - ".DATETIME);
wsLog($typeEnqLog, $siren, 'i'.$ret.'-'.DATETIME);
/** Gestion de la déconnexion **/
$url = 'http://intersud.fr/espace_client/index.php?code_ret=9';
$tdeb = microtime(true);
$page = getUrl($url, $cookie, '', $referer, false, '', '', 7);
$tfin = microtime(true);
$duree+= $tfin-$tdeb;
$ret = $iDbCrm->update('commandes', array('dureeCommande'=>round($duree,3)), "idCommande=$ret");
return $output;
}
/**
* Retourne l'ensemble des informations des dirigeants opérationnels (non statutaires) de l'entreprise
* @param string $siren Siren de l'entreprise
* @return DirigeantOp[]
*/
public function getDirigeantsOp($siren)
{
$this->authenticate();
debugLog('I',"Dirigeants opérationnels demandés pour $siren",__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');
}
$iInsee = new MInsee();
$dirs = $iInsee->getDirigeantsOp($siren);
$tabRet = array();
if (count($dirs)>0){
foreach ($dirs as $nb => $dir) {
$objet = new DirigeantOp();
$objet->Code = $dir['Fonction'];
$objet->Titre = prepareString($dir['Titre']);
$objet->Societe = prepareString($dir['Societe']);
$objet->Civilite = prepareString($dir['Civilite']);
$objet->Nom = prepareString($dir['Nom']);
$objet->Prenom = prepareString($dir['Prenom']);
$objet->NomUsage = prepareString($dir['NomUsage']);
$objet->NaissDate = $dir['NaissDate'];// 07/09/1961
$objet->NaissVille = prepareString($dir['NaissVille']); // LE RUSSEY
$objet->NaissDepPays = prepareString($dir['NaissDepPays']); // LE RUSSEY
$objet->Ancien = $dir['Ancien'];
$objet->DateFct = $dir['DateFct'];
$tabRet[] = $objet;
}
}
$this->wsLog('dirigeantsOp', $siren);
debugLog('I', 'Nb Dirigeants Op retournés = '. count($dirs), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
return $tabRet;
}
/**
* Liste de tous les dépôts enregistrés à l'INPI pour une entreprise
* @param string $siren Siren de l'entreprise
* @return Depot[]
*/
public function getListeDepots($siren)
{
$this->authenticate();
debugLog('I',"Liste des dépots INPI pour $siren",__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');
}
$iRncs=new MRncs();
$evens=$iRncs->getListeDepots($siren);
$tabRet = array();
if (count($evens)>0){
foreach ($evens as $nb=>$even){
$objet = new Depot();
$objet->CodeDepot = $even['codDepot'];
$objet->LibDepot = prepareString($even['libDepot']);
$objet->DateDepot = $even['datDepot'];
$objet->RefDepot = $even['refDepot'];
$objet->DateRncs = $even['datRncs'];
$objet->DateMAJ = $even['datSed'];
$tabRet[] = $objet;
}
}
debugLog('I', 'Nb dépôts retournés = '. count($tabRet), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
return $tabRet;
}
/**
* Enter description here ...
* @param string $siret
* @param integer $id
* @return IdentiteLight
*/
public function getIdentiteLight($siret, $id = 0)
{
$this->authenticate();
//Initialisation
if (empty($id)) {
$id = 0;
}
$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 ($siren*1==0 && $id==0) {
$this->sendError('1010');
}
if ($len!=14 && $len!=9) {
$this->sendError('1020');
}
$iInsee = new MInsee();
$tabIdentite = $iInsee->getIdentiteLight($siren, $nic, $id);
$output = new IdentiteLight();
$output->id = $tabIdentite['id'];
$output->Siret = $tabIdentite['Siret'];
$output->Siege = $tabIdentite['Siege'];
$output->Nom = $tabIdentite['Nom'];
$output->Tribunal = $tabIdentite['Tribunal'];
$output->Sigle = $tabIdentite['Sigle'];
$output->Enseigne = $tabIdentite['Enseigne'];
$output->Adresse = $tabIdentite['Adresse'];
$output->Adresse2 = $tabIdentite['Adresse2'];
$output->AdresseNum = $tabIdentite['AdresseNum'];
$output->AdresseBtq = $tabIdentite['AdresseBtq'];
$output->AdresseVoie = $tabIdentite['AdresseVoie'];
$output->AdresseRue = $tabIdentite['AdresseRue'];
$output->CP = $tabIdentite['CP'];
$output->Ville = $tabIdentite['Ville'];
$output->Tel = $tabIdentite['Tel'];
$output->Fax = $tabIdentite['Fax'];
$output->FJ = $tabIdentite['FJ'];
$output->FJ_Lib = $tabIdentite['FJ_lib'];
$output->Siren = $tabIdentite['Siren'];
$output->Nic = $tabIdentite['Nic'];
$output->Actif = $tabIdentite['Actif'];
$output->NafEtab = $tabIdentite['NafEtab'];
$output->NafEnt = $tabIdentite['NafEnt'];
$output->NafEntLib = $tabIdentite['NafEntLib'];
$output->NafEtabLib = $tabIdentite['NafEtabLib'];
$output->AutreId = $tabIdentite['AutreId'];
$output->Source = $tabIdentite['Source'];
$output->SourceId = $tabIdentite['SourceId'];
$output->Dept = $tabIdentite['Dept'];
$output->codeCommune = $tabIdentite['codeCommune'];
$output->Capital = $tabIdentite['Capital'];
$output->CapitalDev = $tabIdentite['CapitalDev'];
$output->TrancheCA = $tabIdentite['TrancheCA'];
$output->TrancheCALib = $tabIdentite['TrancheCALib'];
$output->EffEnTr = $tabIdentite['EffEnTr'];
$output->EffEnTrLib = $tabIdentite['EffEnTrLib'];
$output->EffEtTr = $tabIdentite['EffEtTr'];
$output->EffEtTrLib = $tabIdentite['EffEtTrLib'];
return $output;
}
/**
* Retourne les éléments du groupes
* @param string $siren
* @param int $pctMin (33, 40 ,50)
* @param int $nbNiveaux
* @return string
*/
public function getGroupesArbo($siren, $pctMin=33, $nbNiveaux=10)
{
$this->authenticate();
if ( empty($pctMin) || !in_array($pctMin, array(33, 40, 50)) ) { $pctMin = 33; }
if ( empty($nbNiveaux) ) { $nbNiveaux = 10; }
if ( strlen($siren)!=9 || intval($siren)<100 ){
debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$this->sendError('1010');
}
require_once 'Metier/partenaires/classMLiens.php';
$liens = new MLiens($siren);
$retour = $liens->getArborescence($siren, $pctMin, $nbNiveaux);
$this->wsLog('groupesarbo', $siren);
return json_encode($retour);
}
/**
* Retourne les information du groupe, tête de pont
* @param string $siren
* @return GroupeInfos
*/
public function getGroupeInfos($siren)
{
$this->authenticate();
if ( strlen($siren)!=9 || intval($siren)<100 ){
debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$this->sendError('1010');
}
$iDb = new WDB('jo');
$tmp = $iDb->select('etablissements_act',
'raisonSociale, enseigne, sigle, identite_pre, adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com, tel, fax, siren, sirenGrp',
"siren=(SELECT distinct sirenGrp FROM etablissements_act WHERE siren=$siren AND siege=1) LIMIT 0,1", false, MYSQL_ASSOC);
$tabEnt = $tmp[0];
$sirenGrp = $tabEnt['siren'];
if ($sirenGrp<1000) {
throw new SoapFault('Error', 'Aucun siren de groupe');
}
/** Table des Nafs5 => Secteurs **/
$tmp = $iDb->select('tabNaf5', 'codNaf2, codNaf1', '1 GROUP BY codNAf2', false, MYSQL_ASSOC);
$tabNAf2 = array();
foreach ($tmp as $tmp2) {
$tabNAf2[$tmp2['codNaf2']]=$tmp2['codNaf1'];
}
$tabNaf2Lib = array(
'A'=>'Agriculture, sylviculture et pêche',
'B'=>'Industries extractives',
'C'=>'Industrie manufacturière',
'D'=>'Production et distribution d\'électricité, de gaz, de vapeur et d\'air conditionné',
'E'=>'Production et distribution d\'eau ; assainissement, gestion des déchets et dépollution',
'F'=>'Construction',
'G'=>'Commerce ; réparation d\'automobiles et de motocycles',
'H'=>'Transports et entreposage',
'I'=>'Hébergement et restauration',
'J'=>'Information et communication',
'K'=>'Activités financières et d\'assurance',
'L'=>'Activités immobilières',
'M'=>'Activités spécialisées, scientifiques et techniques',
'N'=>'Activités de services administratifs et de soutien',
'O'=>'Administration publique',
'P'=>'Enseignement',
'Q'=>'Santé humaine et action sociale',
'R'=>'Arts, spectacles et activités récréatives',
'S'=>'Autres activités de services',
'T'=>'Activités des ménages en tant qu\'employeurs ; activités indifférenciées des ménages en tant que producteurs de biens et services pour usage propre',
'U'=>'Activités extra-territoriales',
);
$iInsee = new MInsee();
$tabId = $iInsee->getIdentiteEntreprise($sirenGrp);
//Chargement retour
$output = new GroupeInfos();
$output->grpNom = $tabEnt['raisonSociale'];
$output->grpEnseigne = $tabEnt['enseigne'];
$output->grpSigle = $tabEnt['sigle'];
$output->grpAdrNum = $tabEnt['adr_num'];
$output->grpAdrBtq = $tabEnt['adr_btq'];
$output->grpAdrTypeVoie = $tabEnt['adr_typeVoie'];
$output->grpadrLibVoie = $tabEnt['adr_libVoie'];
$output->grpAdrComp = $tabEnt['adr_comp'];
$output->grpAdrCP = $tabEnt['adr_cp'];
$output->grpAdrVille = $tabEnt['adr_ville'];
$output->grpAdrDep = $tabEnt['adr_dep'];
$output->grpAdrCom = $tabEnt['adr_com'];
$output->grpTel = $tabEnt['tel'];
$output->grpFax = $tabEnt['fax'];
$output->grpSiren = $tabEnt['siren'];
$output->grpTva = $tabId['TvaNumero'];
$output->grpIsin = $tabId['Isin'];
$output->grpNumRC = $tabId['numRC'];
$output->grpTribunal = $tabId['TribunalLib'];
$output->grpWeb = $tabId['Web'];
$grpNbEnt = $grpEffectif = $grpCAExp = $grpCA = $nbProcol = 0;
$grpDateCrea = $grpDateImmat = date('Ymd');
$tmp = $iDb->select('jo.etablissements_act e',
'e.siren, e.eff_entrep, e.dateCrea_ent AS dateCrea, e.dateImmat*1 AS dateImmat, e.bilFK, e.bilFL, e.bilYP, e.ape_entrep, e.avisCs, e.procolHisto',
"e.sirenGrp=$sirenGrp AND e.siege=1", false, MYSQL_ASSOC);
$tabSirenGrp = array();
$tabSecteur = array();
$tabAvis = array();
if ( count($tmp)>0 ) {
foreach ($tmp as $tabEnt)
{
$tabSirenGrp[] = $tabEnt['siren'];
$grpNbEnt++;
if ($tabEnt['bilYP']>$tabEnt['eff_entrep'])
$grpEffectif+=$tabEnt['bilYP'];
else
$grpEffectif+=$tabEnt['eff_entrep'];
if ($tabEnt['procolHisto']*1==1) $nbProcol++;
if ($grpDateCrea>$tabEnt['dateCrea'] && $tabEnt['dateCrea']>=19000101)
$grpDateCrea=$tabEnt['dateCrea'];
if ($grpDateImmat>$tabEnt['dateImmat'] && $tabEnt['dateImmat']>=19000101)
$grpDateImmat=$tabEnt['dateImmat'];
$grpCAExp+=$tabEnt['bilFK'];
$grpCA+=$tabEnt['bilFL'];
$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['nb']++;
$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['ca']+=$tabEnt['bilFL'];
$tabSecteur[$tabNAf2[''.substr($tabEnt['ape_entrep'],0,2)]]['eff']+=$tabEnt['eff_entrep'];
$tabAvis[$tabEnt['avisCs']]++;
}
}
$output->grpNbProcolHisto = $nbProcol;
$output->grpCAExport = $grpCAExp;
$output->grpCA = $grpCA;
if ($grpCA>=500000000)
$output->grpGrandGroupeFr=1;
else
$output->grpGrandGroupeFr=0;
$output->grpNbEntrep = $grpNbEnt;
$output->grpEffectif = $grpEffectif;
$output->grpAnneCreation = '';
if ($grpDateCrea<$grpDateImmat)
$output->grpAnneCreation = substr($grpDateCrea,0,4);
else
$output->grpAnneCreation = substr($grpDateImmat,0,4);
//@todo : transformer le tableau
$output->avisCs = json_encode($tabAvis); // Vérifier les procol
$tabSecteur2 = array();
if ( count($tabSecteur)>0 ) {
foreach ($tabSecteur as $secteur=>$tmp) {
$info = new GroupeInfosSecteur();
$info->code = $secteur;
$info->lib = $tabNaf2Lib[$secteur];
$info->entrepNb = $tmp['nb'];
$info->entrepTx = round($tmp['nb']*100/$grpNbEnt,2);
$info->caNb = $tmp['ca'];
$info->caTx = round($tmp['ca']*100/$grpCA,2);
$info->effNb = $tmp['eff'];
$info->effTx = round($tmp['eff']*100/$grpEffectif,2);
$tabSecteur2[] = $info;
}
}
$output->secteur = $tabSecteur2; //@todo : transformer le tableau
$this->wsLog('groupeinfos', $siren);
return $output;
}
}