4217 lines
143 KiB
PHP

<?php
require_once 'framework/fwk.php';
require_once 'framework/mail/sendMail.php';
require_once 'Metier/insee/classMInsee.php';
require_once 'Metier/insee/classMSirene.php';
require_once 'Metier/partenaires/classMBilans.php';
require_once 'Metier/partenaires/classMBourse.php';
require_once 'Metier/partenaires/classMTva.php';
require_once 'Metier/partenaires/classMMap.php';
require_once 'Metier/partenaires/classMGreffes.php';
require_once 'Metier/partenaires/classMPrivileges.php';
require_once 'Metier/scores/classMFinancier.php';
require_once 'Metier/scores/classMSolvabilite.php';
require_once 'WsScore/functions.php';
require_once __DIR__ . '/Types.php';
class Interne extends Scores_Ws_Server
{
/**
*
* Enter description here ...
* @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;
}
/**
*
* Enter description here ...
* @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();
Zend_Registry::get('WsLogger')->info(__FUNCTION__.' : '.
print_r($tabInfos, 1));
//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);
$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, '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
// 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;
}
} else {
$tabEven[] = $tabJugement->even->item->code;
}
$nic = $tabJugement->nic*1;
$entrep = $iInsee->getIdentiteLight($siren, $nic);
if ( $nic>0 && $tebEven[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->User->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)
);
$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;
}
}
}
// 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'))
);
$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->User->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->User->login,
'user_email' => $this->User->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->User->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;
}
}
/**
* Récupère les informations du profil connecté
* @param string $login
* @param string $ipUtilisateur
* @return InfosLoginReturn
*/
public function getInfosLogin($login, $ipUtilisateur = '')
{
$this->authenticate();
//Initialisation
if (empty($ipUtilisateur)) $ipUtilisateur = $_SERVER['REMOTE_ADDR'];
$error = new ErrorType();
debugLog('I',"getInfosLogin pour $login (IP=$ipUtilisateur)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
//L'utilisateur qui demande les informations est différent
if ($this->User->login<>$login &&
( $this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur') )
{
//debugLog('I',"getInfosLogin - Un administrateur veut il des infos sur un login",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
/** Un administrateur veut il des infos sur un login ? **/
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select(
'utilisateurs u, clients c',
'u.login, u.id, u.email, u.password, u.idClient, u.typeCompte, u.actif, u.filtre_ip, u.civilite, u.nom, u.prenom, u.tel, u.fax, u.mobile, u.profil, u.raisonSociale, u.siret, u.adrNum, u.adrIndRep, u.adrTypeVoie, u.adrLibVoie, u.adrCp, u.adrVille, u.adrComp, u.tel, u.fax, u.mobile, u.pref, u.profil, u.dateInscription, u.dateValidation, u.nombreConnexions, u.dateDerniereConnexion, u.droits, u.referenceParDefaut, u.nbReponses, u.formatMail, u.dateDebutCompte, u.dateFinCompte, u.maxFicheId, c.droits AS droitsClients, c.timeout',
"u.login='$login' AND u.idClient=c.id AND u.deleted=0",
false, MYSQL_ASSOC
);
$tabRep = $rep[0];
if (count($rep)>0)
{
$timeOutSec=$tabRep['timeout']*60;
if ($timeOutSec==0) $timeOutSec=1800;
$rep = array(
'login'=> $login,
'id'=> $tabRep['id'],
'email'=> $tabRep['email'],
'typeCompte'=> $tabRep['typeCompte'],
'idClient'=> $tabRep['idClient'],
'filtre_ip'=> $tabRep['filtre_ip'],
'civilite'=> $tabRep['civilite'],
'nom'=> $tabRep['nom'],
'prenom'=> $tabRep['prenom'],
'raisonSociale'=> $tabRep['raisonSociale'],
'siret'=> $tabRep['siret'],
'adrNum'=> $tabRep['adrNum'],
'adrIndRep'=> $tabRep['adrIndRep'],
'adrTypeVoie'=> $tabRep['adrTypeVoie'],
'adrLibVoie'=> $tabRep['adrLibVoie'],
'adrCp'=> $tabRep['adrCp'],
'adrVille'=> $tabRep['adrVille'],
'adrComp'=> $tabRep['adrComp'],
'tel'=> $tabRep['tel'],
'fax'=> $tabRep['fax'],
'mobile'=> $tabRep['mobile'],
'pref'=> $tabRep['pref'],
'profil'=> $tabRep['profil'],
'dateInscription'=> $tabRep['dateInscription'],
'dateValidation'=> $tabRep['dateValidation'],
'nombreConnexions'=> $tabRep['nombreConnexions'],
'dateDerniereConnexion'=> $tabRep['dateDerniereConnexion'],
'droits'=> $tabRep['droits'],
'droitsClients'=> $tabRep['droitsClients'],
'timeout'=> $timeOutSec,
'nbReponses'=> $tabRep['nbReponses'],
'formatMail'=> $tabRep['formatMail'],
'reference'=> $tabRep['referenceParDefaut'],
'dateDebutCompte'=> $tabRep['dateDebutCompte'],
'dateFinCompte'=> $tabRep['dateFinCompte'],
'maxFicheId'=> $tabRep['maxFicheId'],
);
$tabTmp = $iDbCrm->select('clients', 'typeScore', 'id='.$tabRep['idClient'], false, MYSQL_ASSOC);
$tabRep = $tabTmp[0];
$rep['typeScore'] = $tabRep['typeScore'];
}
}
else
{
//Identification utilisateur
$connected = true;
if (trim($this->User->filtre_ip)<>'')
{
//debugLog('I',"getInfosLogin test filtre IP",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$connected = checkPlagesIp($this->User->filtre_ip, $ipUtilisateur);
if (!$connected)
{
debugLog('I',"getInfosLogin Adresse IP $ipUtilisateur non declaree pour le compte $login",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 10818;
$error->errmsg = "Adresse IP $ipUtilisateur non declaree pour ce compte. Contactez votre administrateur !";
}
}
$rep = array(
'connected'=> $connected,
'login'=> $this->User->login,
'id'=> $this->User->id,
'idClient'=> $this->User->idClient,
'email'=> $this->User->email,
'typeCompte'=> $this->User->typeCompte,
'filtre_ip'=> $this->User->filtre_ip,
'ipPasserelle'=> $this->User->ipConnexion,
'ipConnexion'=> $ipUtilisateur,
'civilite'=> $this->User->civilite,
'nom'=> $this->User->nom,
'prenom'=> $this->User->prenom,
'raisonSociale'=> $this->User->raisonSociale,
'siret'=> $this->User->siret,
'adrNum'=> $this->User->adrNum,
'adrIndRep'=> $this->User->adrIndRep,
'adrTypeVoie'=> $this->User->adrTypeVoie,
'adrLibVoie'=> $this->User->adrLibVoie,
'adrCp'=> $this->User->adrCp,
'adrVille'=> $this->User->adrVille,
'adrComp'=> $this->User->adrComp,
'tel'=> $this->User->tel,
'fax'=> $this->User->fax,
'mobile'=> $this->User->mobile,
'pref'=> $this->User->pref,
'profil'=> $this->User->profil,
'dateInscription'=> $this->User->dateInscription,
'dateValidation'=> $this->User->dateValidation,
'nombreConnexions'=> $this->User->nombreConnexions,
'dateDerniereConnexion'=> $this->User->dateDerniereConnexion,
'droits'=> $this->User->droits,
'droitsClients'=> $this->User->droitsClients,
'timeout'=> $this->User->timeout,
'nbReponses'=> $this->User->nbReponses,
'formatMail'=> $this->User->formatMail,
'reference'=> $this->User->referenceParDefaut,
'dateDebutCompte'=> $this->User->dateDebutCompte,
'dateFinCompte'=> $this->User->dateFinCompte,
'maxFicheId'=> $this->User->maxFicheId,
'typeScore'=> $this->User->typeScore,
);
//debugLog('I',"getInfosLogin fin ".print_r($rep,true),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
}
$result = new InfosLogin();
$result = arrayToClass($rep, 'InfosLogin');
$output = new InfosLoginReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Mise à jour des informations du profil connecté
* @param string $login
* @param string $action (delete|actif|desactif|changepwd|new|update)
* @param InfosLoginData $infos
* @return SetInfosLoginReturn
*/
public function setInfosLogin($login, $action, $infos = null)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$result = false;
switch($action)
{
case 'delete':
if ($this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur') {
$tabUpdate = array( 'deleted' => 1 );
$iDbCrm = new WDB('sdv1');
if ($iDbCrm->update('utilisateurs', $tabUpdate, "login='$login'")){
$result = true;
} else {
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
}
}
break;
case 'actif':
case 'desactif':
if ($this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur'){
if ($action=='actif') $actif = 1;
if ($action=='desactif') $actif = 0;
$tabUpdate = array( 'actif' => $actif );
$iDbCrm = new WDB('sdv1');
if ($iDbCrm->update('utilisateurs', $tabUpdate, "login='$login'")){
$result = true;
} else {
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
}
}
break;
case 'changepwd':
$tabUpdate = array(
'password' => stripslashes($infos->password),
);
$iDbCrm = new WDB('sdv1');
if ($iDbCrm->update('utilisateurs', $tabUpdate, "login='$login'", true)){
$result = true;
} else {
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
}
break;
case 'new':
if ($this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur') {
$tabUpdate = array(
'idClient' => $infos->idClient,
'login' => $login,
'password' => stripslashes($infos->password),
'nom' => stripslashes($infos->nom),
'prenom' => stripslashes($infos->prenom),
'referenceParDefaut' => stripslashes($infos->reference),
'email' => stripslashes($infos->email),
'tel' => stripslashes($infos->tel_fix),
'fax' => stripslashes($infos->tel_fax),
'mobile' => stripslashes($infos->tel_mob),
'nbReponses' => $infos->rech_nbrep,
'formatMail' => $infos->formatMail,
'profil' => (isset($infos->profil) || !in_array($infos->profil, array('SuperAdministrateur','Administrateur', 'Utilisateur')) ) ? $infos->profil : 'Utilisateur',
'pref' => implode(' ',$infos->pref->item),
'droits' => implode(' ', $infos->droits->item),
);
$iDbCrm = new WDB('sdv1');
if ($iDbCrm->insert('utilisateurs', $tabUpdate)){
$result = true;
} else {
$error->errnum = 1;
$error->errmsg = 'Création impossible';
}
}
break;
case 'update':
if (!empty($infos->password)){
$tabUpdate['password'] = stripslashes($infos->password);
}
$tabUpdate['email'] = stripslashes($infos->email);
$tabUpdate['tel'] = stripslashes($infos->tel_fix);
$tabUpdate['fax'] = stripslashes($infos->tel_fax);
$tabUpdate['mobile'] = stripslashes($infos->tel_mb);
$tabUpdate['nbReponses'] = $infos->rech_nbrep;
$tabUpdate['formatMail'] = $infos->formatMail;
$tabUpdate['pref'] = implode(' ',$infos->pref->item);
if ($this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur') {
$tabUpdate['droits'] = implode(' ', $infos->droits->item);
$tabUpdate['nom'] = stripslashes($infos->nom);
$tabUpdate['prenom'] = stripslashes($infos->prenom);
$tabUpdate['referenceParDefaut'] = stripslashes($infos->reference);
$tabUpdate['profil'] = isset($infos->profil) ? $infos->profil : 'Utilisateur';
}
$iDbCrm = new WDB('sdv1');
if ($iDbCrm->update('utilisateurs', $tabUpdate, "login='$login'", true)){
$result = true;
} else {
$error->errnum = 1;
$error->errmsg = 'Mise a jour impossible';
}
break;
default;
$result = false;
break;
}
$output = new SetInfosLoginReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Obtention automatique d'un nouveau login pour un client
* @param string $login
* @return NextLoginReturn
*/
public function getNextLogin( $login )
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if ($this->User->profil=='Administrateur' ||
$this->User->profil=='SuperAdministrateur') {
/** Un administrateur veut créer un nouveau login **/
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('utilisateurs u, clients c', 'u.idClient, c.racineLogin, c.droits', "u.login='$login' AND u.idClient=c.id");
$racine = $rep[0]['racineLogin'];
$idClient = $rep[0]['idClient'];
$droitsClients = $rep[0]['droits'];
$rep = $iDbCrm->select('utilisateurs', 'login, length(login) as taille', "login like '$racine%' group by login order by taille desc, login desc LIMIT 0,1");
if (count($rep)==0) {
$racine.='1';
} else {
$last_i = preg_replace("/\D/", '',$rep[0]['login'])*1;
$racine.= $last_i+1;
}
$result = new NextLoginResult();
$result->racine = $racine;
$result->idClient = $idClient;
$result->droitsClients = $droitsClients;
} else {
$error->errnum = 0;
$error->errmsg = 'Acces non authorisé!';
}
$output = new NextLoginReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* 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->User->login."'");
$idUser = $rep[0][0];
$infos = serialize($tabInfos);
debugLog('I',"Ajout/MAJ de mandaitaire $infos 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;
}
/**
* Supprime une annonce issue de la collecte
* @param string $idAnn
* @param string $siret
* @return SupprAnnonceCollecteReturn
*/
public function supprAnnonceCollecte($idAnn, $siret=null)
{
$this->authenticate();
//Initialisation
if (empty($siret)) $siret = 0;
$error = new ErrorType();
$result = false;
if (!$this->checkEdition())
{
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
}
else
{
$siren = substr($siret,0,9)*1;
$iDb = new WDB();
$idAnn = preg_replace('/^0\./','', ''.$idAnn)*1;
if ($idAnn>0)
{
if ($iDb->update('annonces',array(
'dateSuppr'=>date('YmdHis'),
'idSuppr'=>$this->User->id),
"id=$idAnn", false))
{
debugLog('I',"Suppression de l'annonce collectée n°$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$result = true;
}
else
{
$error->errnum = 1;
$error->errmsg = 'Suppression de l\'annonce impossible';
debugLog('I',"Suppression impossible de l'annonce collectée n°$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
}
}
else
{
$error->errnum = 1;
$error->errmsg = 'idAnn incorrect';
}
}
$output = new SupprAnnonceCollecteReturn();
$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);
}
/**
* Duplique une annonce issue de la collecte
* @param string $idAnn
* @param string $siret
* @return DupliqueAnnonceReturn
*/
public function dupliqueAnnonceCollecte($idAnn, $siret = null)
{
$this->authenticate();
//Initialisation
if (empty($siret)) $siret = '';
$error = new ErrorType();
$result = 0;
if (!$this->checkEdition()) {
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
} else {
$siren = intval(substr($siret,0,9));
$nic = intval(substr($siret,9,5));
$iDb = new WDB();
$idAnn = intval(preg_replace('/^0\./','', ''.$idAnn));
if ($idAnn>0 && $siren>1000){
$res = $iDb->select('annonces', '*', "id=$idAnn", false, MYSQL_ASSOC);
if (count($res)==0) {
$error->errnum = 1;
$error->errmsg = 'Annonce inexistante';
} else {
$annonce = $res[0];
// Suppression des zones inexistantes dans la table ou devant être vides
unset($annonce['id']);
unset($annonce['nic']);//=$nic;
$annonce['siren'] = $siren;
$annonce['nic'] = $nic;
if ($iDb->insert('annonces', $annonce, false)) {
debugLog('I',"Duplication de l'annonce collectée n°$idAnn sur $siret",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$result = 1;
} else {
debugLog('I',"Suppression impossible de l'annonce collectée n°$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 1;
$error->errmsg = 'Suppression de l\'annonce impossible';
}
}
}
}
$output = new DupliqueAnnonceCollecte();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* 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 = 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);
Zend_Registry::get('WsLogger')->info(__FUNCTION__.' : '.
print_r($ret,1));
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->User->email;
$tabInsert=array(
'idUser' => $this->User->id,
'source' => 'asso',
'login' => $this->User->login,
'emailCommande' => $mail,
'siren' => $siren,
'refUtilisateur' => $infosDemandeur->reference,
'refDocument' => serialize($infosDemandeur),
'refCommande' => serialize($infosCommande),
'dateCommande' => DATETIME,
);
$url='http://d2g.refasso.com/Dev2Go.web';
$referer=''; // http://d2g.refasso.com/dev2go.web?anchor=dem_statuts_02
$cookie='';
$post = array(
'mode'=>20,
'lBlockID'=>445031,
'sInputNames'=>'',
'lFormSubAction'=>100,
'sLinkTo'=>'dem_statuts_03',
'iDune_DateDemande_input'=>str_replace('/', '%2F', date('d/m/Y')),
'iDune_TitreAsso_input'=>urlencode($assoNom),
'iDune_SigleAsso_input'=>urlencode($assoSigle),
'iDune_AdresseAsso_input'=>urlencode($assoAdresse),
'iDune_CpAsso_input'=>urlencode($assoCP),
'iDune_VilleAsso_input'=>urlencode($assoVille),
'iDune_TelAsso_input'=>'',
'iDune_FaxAsso_input'=>'',
'iDune_EmailAsso_input'=>'',
'iDune_DateCreaAsso_input'=>'',
'iDune_DateDerDeclaAsso_input'=>'',
'iDune_NomDem_input'=>'SCORES+ET+DECISIONS',
'iDune_PrenomDem_input'=>'Yoann+LE+NAOUR',
'iDune_AdresseDem_input'=>'19+rue+de+Clairefontaine',
'iDune_CpDem_input'=>78120,
'iDune_VilleDem_input'=>'RAMBOUILLET',
'iDune_TelDem_input'=>'0134573953',
'iDune_EmailDem_input'=>'asso%40scores-decisions.com',
'iDune_CGAccepte_input'=>'o',
'iDune_Statut_input'=>'n',
'iDune_Archive_input'=>'n',
'x'=>48,
'y'=>8,
);
$tdeb=microtime(true);
$page=getUrl($url, $cookie, $post, $referer, false, '', '', 7);
$tfin=microtime(true);
$duree=$tfin-$tdeb;
$body=$page['body'];
$fp=@fopen("/tmp/asso-$siren.html", "a");
@fwrite($fp, $body);
@fclose($fp);
if (preg_match('/Votre commande est enregistr/i',$body))
{
@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.
"Réponse RefAsso en $duree secondes :".EOL.print_r($page, true)
);
$iDbCrm = new WDB('sdv1');
$ret = $iDbCrm->insert('commandes', $tabInsert, true);
$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 {
@sendMail('production@scores-decisions.com', 'asso@scores-decisions.com',
"ERREUR lors de lommande de statuts association pour $assoNom ($siren)", "Association :".EOL.print_r($infosCommande, true).EOL.EOL.
"Demandeur:".EOL.print_r($infosDemandeur, true).EOL.EOL.
"Réponse RefAsso en $duree secondes :".EOL.print_r($page, true));
$error->errmsg = 'ERREUR';
$error->errnum = 1;
debugLog('E',"commandeAsso pour $assoNom ($siren) fin",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
}
$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->User->email;
$tabInsert = array(
'idUser' => $this->User->id,
'source'=> 'intersud', // 'greffes', 'asso', 'graydon'
'login'=> $this->User->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->User->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);
}
/**
* Récupère les informations du profil connecté
* @param string $login
* @param int $idClient
* @return ListeUtilisateursReturn
*/
public function getListeUtilisateurs($login, $idClient=-1)
{
$this->authenticate();
//Initialisation
if (empty($idClient)) $idClient = -1;
$error = new ErrorType();
$tabRet = array();
if ($this->User->profil<>'Administrateur' &&
$this->User->profil<>'SuperAdministrateur')
{
$error->errnum = 1;
$error->errmsg = 'Profil non administrateur';
} else {
$iDbCrm = new WDB('sdv1');
if ($idClient==-1){
$rep = $iDbCrm->select('utilisateurs', 'idClient', "login='$login'");
$idClient = $rep[0][0];
}
if ($idClient==-1){
$error->errnum = 1;
$error->errmsg = 'idClient=0';
} else {
$rep = $iDbCrm->select('utilisateurs', 'id, idClient, login, email, actif, nom, prenom, referenceParDefaut', "idClient='$idClient' AND deleted=0 ORDER BY login ASC", false, MYSQL_ASSOC);
foreach ($rep as $uti){
$utilisateur = new Utilisateur();
$utilisateur->idUti = $uti['id'];
$utilisateur->idClient= $uti['idClient'];
$utilisateur->login = $uti['login'];
$utilisateur->email = $uti['email'];
$utilisateur->actif= $uti['actif'];
$utilisateur->nom = $uti['nom'];
$utilisateur->prenom = $uti['prenom'];
$utilisateur->reference = $uti['referenceParDefaut'];
$tabRet[]= $utilisateur;
}
}
}
$output = new ListeUtilisateursReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* Créations/Modification d'utilisateurs
* @param integer $idClient
* @param SetUtilisateurs[] $users
* @return UtilisateursReturn
*/
protected function setUtilisateurs($idClient, $users)
{
$this->authenticate();
$error = new ErrorType();
$result = false;
//idClient existe
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('clients', 'id, nom, actif, test, racineLogin, siren, nic, droits, filtres_ip, typeAcces, typeScore, accesPieces, accesKbis, accesInvestigations, accesInternationnal, accesEnquetes, miseSousSurveillance', "1 AND id='$idClient'", false, MYSQL_ASSOC);
if (count($rep)>0){
$client = $rep[0];
$idClient = $client['id'];
if (count($users)>0){
foreach($users as $user){
$tabInfos = array();
$tabInfos['idClient'] = $idClient;
$tabInfos['login'] = $user->login;
$tabInfos['email'] = '';
$tabInfos['password'] = $user->password;
$tabInfos['actif'] = '';
//$tabInfos['deleted'] = '';
if (in_array($user->typeCompte, array('TEST', 'PROD'))){
$tabInfos['typeCompte'] = $user->typeCompte;
} else {
$tabInfos['typeCompte'] = 'PROD';
}
//$tabInfos['filtre_ip'] = '';
//SetInfosLogin
$tabInfos['civilite'] = '';
$tabInfos['nom'] = '';
$tabInfos['prenom'] = '';
//Identique au client
$tabInfos['raisonSociale'] = '';
$tabInfos['siret'] = '';
$tabInfos['adrNum'] = '';
$tabInfos['adrInRep'] = '';
$tabInfos['adrTypeVoie'] = '';
$tabInfos['adrLibVoie'] = '';
$tabInfos['adrCp'] = '';
$tabInfos['adrVille'] = '';
$tabInfos['adrComp'] = '';
$tabInfos['tel'] = '';
$tabInfos['fax'] = '';
$tabInfos['mobile'] = '';
$tabInfos['pref'] = '';
if (in_array($user->typeCompte, array('Administrateur', 'Utilisateur'))){
$tabInfos['profil'] = $user->profil;
} else {
$tabInfos['profil'] = 'Utilisateur';
}
/*
$tabInfos['dateInscription'] = '';
$tabInfos['dateValidation'] = '';
*/
if (empty($user->droits)){
$tabInfos['droits'] = $client->droits;
} else {
$tabInfos['droits'] = $user->droits;
}
$tabInfos['referenceParDefaut'] = '';
$tabInfos['nbReponses'] = '';
$tabInfos['listeEven'] = '';
$tabInfos['maxFicheId'] = $user->maxFicheId;
//$tabInfos['dateInsert'] = '';
if (empty($user->id)){
$iDbCrm->insert('utilisateurs', $tabInfos);
} else {
$iDbCrm->update('utilisateurs', $tabInfos, "id='$user->id'");
}
}
} else {
$error->errnum = 1;
$error->errmsg = 'Aucun utiliateur';
}
} else {
$error->errnum = 1;
$error->errmsg = 'Identifiant client inconnu!';
}
$output = new UtilisateursReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Création d'un modele pour le préremplisage des données utilisateurs
* @param integer $idClient
* @param string $nom
* @param ModeleUtilisateur $infos
* @return ModeleUtilisateurReturn
*/
protected function setModeleUtilisateur($idClient, $nom, $infos)
{
$this->authenticate();
}
/**
* Création/Modification d'un client
* @param Client $infos
* @param integer $idModele
* @return ClientReturn
*/
public function setClient($infos, $idModele = null)
{
$this->authenticate();
$error = new ErrorType();
$result = false;
//Pas SuperAdministrateur
if ($this->User->profil!='SuperAdministrateur'){
$error->errnum = 1;
$error->errmsg = 'Profil insuffisant pour cette méthode';
} else {
$tabInfos = array();
$tabInfos['nom'] = $infos->nom;
$tabInfos['actif'] = ($infos->actif=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['test'] = ($infos->test=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['racineLogin'] = $infos->racineLogin;
$tabInfos['siren'] = (int) $infos->siren;
$tabInfos['nic'] = (int) $infos->nic;
$tabInfos['tva'] = $infos->tva;
$tabInfos['idClientFacture'] = $infos->idClientFacture;
if ($infos->editerFacture=='Non') {
$tabInfos['editerFacture'] = 'Non' ;
}
$tabInfos['fact_detail'] = ($infos->fact_detail=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['fac_dest'] = $infos->fac_dest;
$tabInfos['fac_adr1'] = $infos->fac_adr1;
$tabInfos['fac_adr2'] = $infos->fac_adr2;
$tabInfos['fac_adr3'] = $infos->fac_adr3;
$tabInfos['fac_email'] = $infos->fac_email;
$tabInfos['fac_tel'] = $infos->fac_tel;
if (in_array($infos->fac_rib, array('BPOSTALE','CCOOP', 'CDNORD'))){
$tabInfos['fact_rib'] = $infos->fact_rib;
}
$tabInfos['liv_dest'] = $infos->liv_dest;
$tabInfos['liv_adr1'] = $infos->liv_adr1;
$tabInfos['liv_adr2'] = $infos->liv_adr2;
$tabInfos['liv_adr3'] = $infos->liv_adr3;
$tabInfos['liv_email'] = $infos->liv_email;
$tabInfos['liv_tel'] = $infos->liv_tel;
$tabInfos['droits'] = strtolower($infos->droits);
$tabInfos['filtres_ip'] = $infos->filtres_ip;
//$tabInfos['respComSD'] = $infos->respComSD;
if (in_array($infos->typeContrat, array('Contrat','Marché'))){
$tabInfos['typeContrat'] = $infos->typeContrat;
}
if (in_array($infos->typeAcces, array('userPassword','userPasswordIP', 'IP'))){
$tabInfos['typeAcces'] = $infos->typeAcces;
}
if (in_array($infos->typeScore, array('20','100'))){
$tabInfos['typeScore'] = $infos->typeScore;
}
if (!empty($timeout)){
$tabInfos['timeout'] = $infos->timeout;
}
$tabInfos['accesPieces'] = ($infos->accesPieces=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['accesKbis'] = ($infos->accesKbis=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['accesInvestigations'] = ($infos->accesInvestigations=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['accesInternationnal'] = ($infos->accesInternationnal=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['accesEnquetes'] = ($infos->accesEnquetes=='Oui') ? 'Oui' : 'Non' ;
$tabInfos['miseSousSurveillance'] = ($infos->miseSousSurveillance=='Oui') ? 'Oui' : 'Non' ;
if (in_array($infos->forfaitExtranetPeriode, array('Mensuel','Trimestriel','Semestriel', 'Annuel'))){
$tabInfos['forfaitExtranetPeriode'] = $infos->forfaitExtranetPeriode;
}
$tabInfos['forfaitExtranetMontant'] = $infos->forfaitExtranetMontant;
if ($infos->reconductionAuto=='Non') {
$tabInfos['reconductionAuto'] = 'Non';
}
$tabInfos['remarque'] = $infos->remarque;
$tabInfos['forfaitPiecesNb'] = $infos->forfaitPiecesNb;
$tabInfos['forfaitPiecesMt'] = $infos->forfaitPiecesMt;
$tabInfos['forfaitPiecesDep'] = $infos->forfaitPiecesDep;
$tabInfos['forfaitInvestigNb'] = $infos->forfaitInvestigNb;
$tabInfos['forfaitInvestigMt'] = $infos->forfaitInvestigMt;
$tabInfos['forfaitInvestigDep'] = $infos->forfaitInvestigDep;
$tabInfos['tarifIndiscore'] = $infos->tarifIndiscore;
$tabInfos['InterSudLogin'] = $infos->InterSudLogin;
$tabInfos['InterSudPass'] = $infos->InterSudPass;
$iDbCrm = new WDB('sdv1');
if (empty($infos->idClient)){
//Ajout
//$tabInfos['dateInsert'] = now();
$result = $iDbCrm->insert('clients', $tabInfos, true);
} else {
//Modification
if ($iDbCrm->update('clients', $tabInfos, "id='$infos->idClient'", true)){
$result = true;
}
}
}
$output = new ClientReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Récupère la liste des clients ou les informations d'un client
* @param integer|boolean $idClient
* @param ClientFiltre $filtre
* @return ListeClientsReturn
*/
public function getListeClients($idClient=false, $filtre=null)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if (empty($idClient)) $idClient = false;
$isAuthorized = false;
if ($this->User->profil=='Administrateur' &&
($idClient=='false' || $idClient==$this->User->idClient)){
$idClient = $this->User->idClient;
$isAuthorized = true;
}
if ($this->User->profil<>'SuperAdministrateur'){
$error->errnum = 1;
$error->errmsg = 'Profil non administrateur';
} else {
$isAuthorized = true;
}
if ($isAuthorized)
{
$strClient = '';
if (is_numeric($idClient)) $strClient.=" AND id='$idClient' ";
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('clients',
'id, nom, actif, test, racineLogin, siren, nic, tva, editerFacture, fact_detail, fac_dest, fac_adr1, fac_adr2, fac_adr3, fac_email, fac_tel, fact_rib, liv_dest, liv_adr1, liv_adr2, liv_adr3, liv_email, liv_tel, droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces, typeScore, timeout, accesPieces, accesKbis, accesInvestigations, accesInternationnal, accesEnquetes, miseSousSurveillance, forfaitExtranetPeriode, forfaitExtranetMontant, reconductionAuto, remarque, forfaitPiecesNb, forfaitPiecesMt, forfaitPiecesDep, forfaitInvestigNb, forfaitInvestigMt, forfaitInvestigDep, tarifIndiscore',
"1 $strClient",
false,
MYSQL_ASSOC);
$tabRet = array();
foreach ($rep as $uti)
{
$client = new Client();
$client->idClient = $uti['id'];
$client->nom = $uti['nom'];
$client->actif = $uti['actif'];
$client->test = $uti['test'];
$client->racineLogin = $uti['racineLogin'];
$client->siren = $uti['siren'];
$client->nic = $uti['nic'];
$client->tva = $uti['tva'];
$client->editerFacture = $uti['editerFacture'];
$client->fact_detail = $uti['fact_detail'];
$client->fac_dest = $uti['fac_dest'];
$client->fac_adr1 = $uti['fac_adr1'];
$client->fac_adr2 = $uti['fac_adr2'];
$client->fac_adr3 = $uti['fac_adr3'];
$client->fac_email = $uti['fac_email'];
$client->fac_tel = $uti['fac_tel'];
$client->fact_rib = $uti['fact_rib'];
$client->liv_dest = $uti['liv_dest'];
$client->liv_adr1 = $uti['liv_adr1'];
$client->liv_adr2 = $uti['liv_adr2'];
$client->liv_adr3 = $uti['liv_adr3'];
$client->liv_email = $uti['liv_email'];
$client->liv_tel = $uti['liv_tel'];
$client->droits = strtolower($uti['droits']);
$client->timeout = $uti['timeout'];
$client->filtres_ip = $uti['filtres_ip'];
$client->dateInsert = $uti['dateInsert'];
$client->dateUpdate = $uti['dateUpdate'];
$client->respComSD = $uti['respComSD'];
$client->typeContrat = $uti['typeContrat'];
$client->dateSignature = $uti['dateSignature'];
$client->typeAcces = $uti['typeAcces'];
$client->typeScore = $uti['typeScore'];
$client->accesPieces = $uti['accesPieces'];
$client->accesKbis = $uti['accesKbis'];
$client->accesInvestigations = $uti['accesInvestigations'];
$client->accesInternationnal = $uti['accesInternationnal'];
$client->accesEnquetes = $uti['accesEnquetes'];
$client->miseSousSurveillance = $uti['miseSousSurveillance'];
$client->forfaitExtranetPeriode = $uti['forfaitExtranetPeriode'];
$client->forfaitExtranetMontant = $uti['forfaitExtranetMontant'];
$client->reconductionAuto = $uti['reconductionAuto'];
$client->remarque = $uti['remarque'];
$client->forfaitPiecesNb = $uti['forfaitPiecesNb'];
$client->forfaitPiecesMt = $uti['forfaitPiecesMt'];
$client->forfaitPiecesDep = $uti['forfaitPiecesDep'];
$client->forfaitInvestigNb = $uti['forfaitInvestigNb'];
$client->forfaitInvestigMt = $uti['forfaitInvestigMt'];
$client->forfaitInvestigDep = $uti['forfaitInvestigDep'];
$client->tarifIndiscore = $uti['tarifIndiscore'];
$tabRet[] = $client;
}
}
$output = new ListeClientsReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
*
* Retourne la liste des droits
* @return ListeDroitsReturn[]
*/
public function getListeDroits()
{
$tabRet = array();
foreach($this->listeDroits as $code => $desc){
$droit = new ListeDroitsReturn();
$droit->code = $code;
$droit->desc = $desc;
$tabRet[] = $droit;
}
return $tabRet;
}
/**
*
* Retourne la liste des préférences
* @return ListePrefsReturn[]
*/
public function getListePrefs()
{
$tabRet = array();
foreach($this->listePrefs as $code => $desc){
$pref = new ListePrefsReturn();
$pref->code = $code;
$pref->desc = $desc;
$tabRet[] = $pref;
}
return $tabRet;
}
/**
* 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->User->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.ref LIKE %$filtre->rs%";
// Il faut compter le nombre de siren au total
$tabTmp = $iDb->select('surveillances_site', 'count(*) as nb', "login='$login' AND source='score' AND 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;
debugLog('I',"rechercheHisto de $recherche ($annee) (Max Rep=$nbRep)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabFiltresAnnee = array();
if ($annee<>'' && $annee*1>=1953 && $annee*1<=date('Y')*1)
$tabFiltresAnnee = array('annee1'=>$annee);
require_once 'Metier/sphinx/recherche2.php';
$ret=search2('histo', "$recherche", $tabFiltresAnnee, $deb, $nbRep, $maxRep, $pertinence);
/*require_once 'Metier/sphinx/sphinxsearch.php';
$sphinxsearch = new SphinxSearch();
$ret = $sphinxsearch->searchByHisto($recherche, $tabFiltresAnnee, $deb, $nbRep, $maxRep, $pertinence);
*/
$liste = $ret['results'];
$nbTot = $ret['nbTot'];
$duree = $ret['duration'];
$tabMots = $ret['words'];
$tabRet = array();
$k=0;
if(count($liste)>0) {
foreach ($liste as $n=>$etab)
{
$texte = $etab['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'];
$reponse->Fichier = strtr($etab['Fichier'],
array( '.txt'=>'.pdf', '/mnt/bodacc/' => 'http://tville.scores-decisions.com/bodacc/')
);
$reponse->Annee = $etab['Annee'];
$reponse->Code = $etab['Code'];
$reponse->Texte = utf8_encode(utf8_decode($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;
}
/**
* getLogsClients
* @param string $mois (Format : AAAA-MM ou AAAA/MM)
* @param int $detail
* @param int $idClient
* @param string $login
* @param int $all
* @return LogsClientsReturn
*/
public function getLogsClients($mois, $detail=0, $idClient=0, $login='', $all=0)
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
if (empty($detail)) $detail = 0;
if (empty($idClient)) $idClient = 0;
if (empty($login)) $login = '';
if (empty($all)) $all = 0;
$strDetail = $strClient = $strLogin='';
// Vue détaillée ou uniquement les infos payantes
if ($detail==0) {
$detail='Non';
$strDetail=" AND (page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page LIKE 'indiscore%' OR page='privileges' OR page='commandeAsso') AND (params<>'' OR page LIKE 'indiscore%' AND tarifIndiscore<>0) AND (params NOT LIKE '%erreur%' OR params LIKE '%erreur 17%') ";
} elseif($detail==1) {
$detail='Oui';
}
// On veut uniquement le client précis
if ($all && $this->User->profil=='SuperAdministrateur') {
$all = 'Oui';
} else {
$all = 'Non';
}
// Pas d'idClient mentionné ou tentative sur autre client et non SAD
if ($idClient==0 || ($idClient!=$this->User->idClient && $this->User->profil!='SuperAdministrateur') ){
$idClient = $this->User->idClient;
}
$strClient = " AND u.idClient=$idClient ";
// On veut uniquement le login précis
if ($login!='') {
$strLogin=" AND l.login='$login' ";
} else {
$login='Non';
}
// Dates de début et de fin
$mois = strtr($mois, array('-'=>'','/'=>''));
$annee = substr($mois,0,4);
$mois = substr($mois,4,2);
$dateDeb=date('Y-m-d', mktime(0,0,0,$mois,1,$annee));
$dateFin=date('Y-m-t', mktime(0,0,0,$mois,15,$annee));
$fichierCsv=DOC_WEB_LOCAL."csv/logs-$annee-$mois-$detail-$idClient-$login-$all.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);
$sql="SELECT LOWER(l.login) as loginUti, page, l.siren, l.nic, l.params, l.dateHeure, u.idClient, c.nom, u.referenceParDefaut AS refUti
FROM `logs` l, utilisateurs u, clients c
WHERE 1 $strDetail $strClient $strLogin AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' AND l.login=u.login AND u.idClient=c.id
GROUP BY l.login, l.siren, page, date(dateHeure), params
ORDER BY l.login ASC, dateHeure ASC";
$fp = fopen(DOC_WEB_LOCAL."/csv/logs-$annee-$mois-$detail-$idClient-$login-$all.sql", 'w');
fwrite($fp, $sql.EOL);
fclose($fp);
exec("php ".APPLICATION_PATH."/../batch/sql2csv.php sdv1 ".DOC_WEB_LOCAL."csv/logs-$annee-$mois-$detail-$idClient-$login-$all.sql $fichierCsv > /dev/null &");
$size = $cache = 0;
}
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$result = new LogsClients();
$result->Url = $hostname.DOC_WEB_URL."csv/logs-$annee-$mois-$detail-$idClient-$login-$all.csv";
$result->Taille = $size;
$result->Cache = $cache;
$output = new LogsClientsReturn();
$output->error = $error;
$output->result = $result;
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->User->idClient && $this->User->profil!='SuperAdministrateur') ){
$idClient = $this->User->idClient;
}
$strClient = "AND u.idClient=$idClient ";
if ($this->User->profil=='SuperAdministrateur' || $this->User->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->User->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 ($this->User->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."csv/listesurv-$source-$login-$idClient.csv";
$result->Taille = $size;
$result->Cache = $cache;
debugLog('I','getListeSurveillancesCsv Url='.$hostname."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='';
} 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;
}
/**
* Suppression logique d'une annonce relative à une entité
* @param integer $source 0=Collecte, 1=BODACC, 2=B.A.L.O, 3=JO Association, 4=Boamp
* @param string $idAnn Identifiant de l'annonce
* @param string $siret Siren de l'entreprise ou Siret de l'établissement
* @return supprAnnonceReturn
*/
public function supprAnnonce($source=0, $idAnn, $siret=0)
{
$this->authenticate();
//Initialisation
if (empty($siret)) $siret = 0;
if (empty($source)) $source = 0;
$error = new ErrorType();
$result = false;
if (!$this->checkEdition())
{
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
}
else
{
$siren = substr($siret,0,9);
$iDb = new WDB();
switch ($source)
{
case 0:
$idAnn=preg_replace('/^0\./','', ''.$idAnn)*1;
$table='annonces';
break;
case 1:
if ($idAnn<0){
$error->errnum = 1;
$error->errmsg = 'Code annonce Incorrect';
} elseif (intval($siren)>0){
$strSql="AND siren=$siren";
$table='bodacc_detail';
}
break;
case 3:
$table='asso';
break;
case 2:
case 4:
default:
$error->errnum = 1;
$error->errmsg = 'Cas non géré';
break;
}
if ($idAnn>0 && $iDb->update( $table, array('dateSuppr'=>date('YmdHis'),'idSuppr'=>$this->User->id), "id=$idAnn $strSql", false))
{
debugLog('I',"Suppression de l'annonce en source $source$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 0;
$error->errmsg = '';
$result = true;
} else {
debugLog('I',"Suppression impossible de l'annonce en source $source$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 1;
$error->errmsg = 'Suppression de l\'annonce impossible';
}
}
$output = new SupprAnnonceReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* Duplication d'une annonce relative à une entité
*
* @param integer $source 0=Collecte, 1=BODACC, 2=B.A.L.O, 3=JO Association, 4=Boamp
* @param string $idAnn Identifiant de l'annonce
* @param string $siretIn Siren de l'entreprise ou Siret de l'établissement de l'annonce à duppliquer
* @param string $siretOut Siren/Siret de l'entreprise ou étab sur lequel il faut dupliquer l'annonce
* @return DupliqueAnnonceReturn
*/
public function dupliqueAnnonce($source=0, $idAnn, $siretIn=0, $siretOut=0)
{
debugLog('I',"Demande de duplication d'annonce en source $source sur n°$idAnn (siretIn=$siretIn, siretOut=$siretOut)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$this->authenticate();
//Initialisation
if (empty($siret)) $siret = 0;
if (empty($source)) $source = 0;
$error = new ErrorType();
$result = false;
if (!$this->checkEdition())
{
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
}
else
{
$sirenIn = substr($siretIn,0,9)*1;
$nicIn = substr($siretIn,9,5)*1;
$sirenOut = substr($siretOut,0,9)*1;
$nicOut = substr($siretOut,9,5)*1;
$iDb = new WDB();
$strSql='';
switch ($source)
{
case 0:
$idAnn=preg_replace('/^0\./','', ''.$idAnn)*1;
$table='annonces';
break;
case 1:
if ($idAnn<0){
$error->errnum = 1;
$error->errmsg = 'Code annonce Incorrect';
} elseif (intval($siren)>0){
$strSql.="AND siren=$sirenIn";
$table='bodacc_detail';
}
break;
case 3:
$table='asso';
break;
case 2:
case 4:
default:
$error->errnum = 1;
$error->errmsg = 'Cas non géré';
break;
}
if ($idAnn>0) {
$res = $iDb->select($table, '*', "id=$idAnn $strSql", false, MYSQL_ASSOC);
if (count($res)==0) {
$error->errnum = 1;
$error->errmsg = 'Annonce inexistante';
} else {
$annonce = $res[0];
$annonce['siren'] = $sirenOut;
$annonce['sirenValide']=2;
$annonce['dateInsert']=date('YmdHis');
if ($source==0) {
// Suppression des zones inexistantes dans la table ou devant être vides
unset($annonce['id']);
unset($annonce['nic']);
$annonce['idSaisie']=$this->User->id;
} else {
$annonce['idSirenage']=$this->User->id;
$annonce['nic']=$nicOut;
if ($nicOut>0) $annonce['nicValide']=2;
}
if ($iDb->insert($table, $annonce, true, true)) {
debugLog('I',"Duplication de l'annonce en source $source sur n°$idAnn (siretIn=$siretIn, siretOut=$siretOut)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$result = true;
} else {
debugLog('I',"Duplication imposible de l'annonce en source $source sur n°$idAnn (siretIn=$siretIn, siretOut=$siretOut) : ".mysql_error(),__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 1;
$error->errmsg = 'Duplication de l\'annonce impossible';
}
}
} else {
debugLog('I',"Duplication impossible de l'annonce en source $source sur n°$idAnn (siretIn=$siretIn, siretOut=$siretOut)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 1;
$error->errmsg = 'Duplication de l\'annonce impossible';
}
}
$output = new DupliqueAnnonceReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* 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->User->email;
}
$tabInsert = array(
'idUser' => $this->User->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->User->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;
}
}
?>