"TRIM(REPLACE(droits, '$droit', ''))");
}
$iDbCrm->update('utilisateurs', $update, "idClient='$idClient'");
}
}
//Modification
if ($iDbCrm->update('clients', $tabInfos, "id='$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->tabInfoUser['profil']=='Administrateur' &&
($idClient=='false' || $idClient==$this->tabInfoUser['idClient'])){
$idClient = $this->tabInfoUser['idClient'];
$isAuthorized = true;
}
if ($this->tabInfoUser['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->tabInfoUser['login'];
$strSelect = 's.email, s.siren, s.nic, s.ref, s.dateAjout, s.rs, s.cp, s.ville, s.dateDerEnvoi, s.encoursClient, c.actif, c.procol, c.indiScore, c.indiScore20, c.encours, c.indiScoreDate, c.dateBilan, c.indiScorePre, c.indiScore20Pre, c.encoursPre, c.indiScoreDatePre, c.sourceModif, c.scoreSolv, c.scoreSolvPre, c.scoreDir, c.scoreDirPre, c.scoreConf, c.scoreConfPre, c.scoreZ, c.scoreZPre, c.scoreCH, c.scoreCHPre, c.scoreAfdcc2, c.scoreAfdcc2Pre, c.situFi, c.situFiPre, c.infoNote, c.infoNotePre, c.noteStruct, c.noteStructPre, c.noteFin, c.noteFinPre, c.tendance, c.tendancePre, c.dateUpdate';
$strFiltre = '';
if (intval($siren)>0) $strFiltre.= " AND s.siren=$siren ";
if (!empty($filtre->ref)) $strFiltre.= " AND s.ref LIKE %$filtre->ref%";
if (!empty($filtre->rs)) $strFiltre.= " AND s.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->tabInfoUser['profil']=='SuperAdministrateur') {
$all = 'Oui';
} else {
$all = 'Non';
}
// Pas d'idClient mentionné ou tentative sur autre client et non SAD
if ($idClient==0 || ($idClient!=$this->tabInfoUser['idClient'] && $this->tabInfoUser['profil']!='SuperAdministrateur') ){
$idClient = $this->tabInfoUser['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->tabInfoUser['idClient'] && $this->tabInfoUser['profil']!='SuperAdministrateur') ){
$idClient = $this->tabInfoUser['idClient'];
}
$strClient = "AND u.idClient=$idClient ";
if ($this->tabInfoUser['profil']=='SuperAdministrateur' || $this->tabInfoUser['profil']=='Administrateur') {
// Surveillances de tous les utilisateurs du client
if (empty($login)) {
$login = '';
//Surveillances de l'utilisateur
} else {
$strLogin = "AND s.login='$login' ";
}
} else {
//Par défaut préselection de l'utilisateur
$login = $this->tabInfoUser['login'];
$strLogin = "AND s.login='$login' ";
}
$fichierCsv = DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.csv";
if (file_exists($fichierCsv) &&
date('Ymd', filemtime($fichierCsv))==date('Ymd') &&
filesize($fichierCsv)>60 ) {
$size = filesize($fichierCsv);
$erreur = false;
$tabNom = array();
$cache = 1;
} else {
unlink($fichierCsv);
if ($source=='score'){
if ($tabInfoUser['typeScore']==20) {
$strScore='v.indiScore20 AS indiScore20';
$strScorePre='v.indiScore20Pre AS indiScore20Pre';
} else {
$strScore='v.indiScore AS indiScore100';
$strScorePre='v.indiScorePre AS indiScore100Pre';
}
/*v.scoreZ, v.scoreZPre, v.scoreCH, v.scoreCHPre,
v.scoreAfdcc2, v.scoreAfdcc2Pre, v.situFi, v.situFiPre, v.infoNote, v.infoNotePre,
v.noteStruct, v.noteStructPre, v.noteFin, v.noteFinPre, v.tendance, v.tendancePre, */
$sql="SELECT LOWER(s.login) as loginUti, s.source, s.email, s.siren, s.nic, s.ref, s.dateAjout,
s.rs, s.cp, s.ville, s.dateDerEnvoi,
s.encoursClient, v.actif, v.procol, $strScore, v.encours, v.indiScoreDate, v.dateBilan,
$strScorePre, v.encoursPre, v.indiScoreDatePre, v.sourceModif, v.scoreSolv, v.scoreSolvPre, v.scoreDir,
v.scoreDirPre, v.scoreConf, v.scoreConfPre,
e.cj, e.capital, e.capitalDev, e.ape_entrep, e.tca, e.teff_entrep,
v.dateUpdate
FROM surveillances_site s, sdv1.utilisateurs u, sdv1.clients c, scores_surveillance v, etablissements e
WHERE s.source='score' $strClient $strLogin AND dateSuppr=0 AND s.login=u.login AND u.idClient=c.id AND s.siren=v.siren AND s.siren=e.siren
GROUP BY loginUti, s.siren, s.nic, s.source, s.ref
ORDER BY loginUti ASC, s.siren ASC, s.nic ASC, s.source ASC, s.ref ASC";
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getListeSurveillancesCsv($source, $login, $idClient)", $sql);
} else {
$sql="SELECT LOWER(s.login) as loginUti, s.source, s.email, s.siren, s.nic, s.ref, s.dateAjout,
s.rs, s.cp, s.ville, s.dateDerEnvoi
FROM surveillances_site s, sdv1.utilisateurs u, sdv1.clients c
WHERE 1 $strSource $strClient $strLogin AND dateSuppr=0 AND s.login=u.login AND u.idClient=c.id
ORDER BY loginUti ASC, s.siren ASC, s.nic ASC, s.source ASC, s.ref ASC";
}
debugLog('I',"getListeSurveillancesCsv SQL $sql",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$fp = fopen(DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.sql", 'w');
fwrite($fp, $sql.EOL);
fclose($fp);
exec("php ".APPLICATION_PATH."/../batch/sql2csv.php jo ".DOC_WEB_LOCAL."csv/listesurv-$source-$login-$idClient.sql $fichierCsv > /dev/null &");
$size=$cache=0;
}
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$result = new ListeSurveillancesCsv();
$result->Url = $hostname.DOC_WEB_URL."csv/listesurv-$source-$login-$idClient.csv";
$result->Taille = $size;
$result->Cache = $cache;
debugLog('I','getListeSurveillancesCsv Url='.$hostname.DOC_WEB_URL."csv/listesurv-$source-$login-$idClient.csv, Taille=$size, Cache=$cache",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$output = new ListeSurveillancesCsvReturn();
$output->error = $error;
$output->result = $result;
return $output;
}
/**
* getListeJalCollecte
* @return ListeJalCollecteReturn
*/
public function getListeJalCollecte()
{
$this->authenticate();
//Initialisation
$error = new ErrorType();
$iBodacc = new MBodacc();
$tabJal = $iBodacc->getListeJalCollecte();
foreach ($tabJal as $i=>$jal)
{
$jalCollecte = new JalCollecte();
$jalCollecte->id = $i;
$jalCollecte->nom = $jal;
$tabRet[] = $jalCollecte;
}
$output = new ListeJalCollecteReturn();
$output->error = $error;
$output->result = $tabRet;
return $output;
}
/**
* getListeFichierSurv
* @param string $login
* @param string $ref
* @param string $nomFic
* @return ListeFichierSurvReturn
*/
public function getListeFichierSurv($login, $ref='*', $nomFic='')
{
$this->authenticate();
if (empty($ref)) $ref = '*';
if (empty($nomFic)) $nomFic = '';
$error = new ErrorType();
//debugLog('I',"getListeFichierSurv pour $login, $ref, $nomFic",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$tabFichier=$tabDates=array();
$numAbo=substr($ref, 0,5);
if (strtolower($login)=='vwbank') {
$repClient='volkswagen bank';
$ficClient='surveillanceBodacc_SURBODPRDCFTVWBANK';
$numAbo=$ref='19300';
} elseif (substr($login,0,6)=='apicil') {
$repClient='apicil';
$ficClient='surveillanceBodacc_SURBODPRDCFTAPICIL';
$numAbo=$ref='';
} elseif (strtolower($login)=='omni04') {
$repClient='aggm mederic ';
$ficClient='surveillanceBodacc_SURBODPRDFTSOMNIREP';
$numAbo=$ref='';
} 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->tabInfoUser['idClient']<>1)
{
$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->tabInfoUser['id']), "id=$idAnn $strSql", false))
{
debugLog('I',"Suppression de l'annonce en source $source n°$idAnn ($siret)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$error->errnum = 0;
$error->errmsg = '';
$result = true;
} else {
debugLog('I',"Suppression impossible de l'annonce en source $source n°$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->tabInfoUser['idClient']<>1)
{
$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($sirenIn)>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->tabInfoUser['id'];
} else {
$annonce['idSirenage']=$this->tabInfoUser['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
* InfoEnq[Entrep][Tel]
* InfoEnq[Entrep][Fax]
* InfoEnq[Entrep][AutreTel]
* InfoEnq[Entrep][Mail]
* InfoEnq[Entrep][AutreMail]
* InfoEnq[Entrep][Web]
* InfoEnq[Entrep][Rib][Banque]
* InfoEnq[Entrep][Rib][Guichet]
* InfoEnq[Entrep][Rib][Compte]
* InfoEnq[Entrep][Rib][Cle]
* InfoEnq[Encours]
* InfoEnq[NbEcheances]
* InfoEnq[AvisAssureur]
* InfoEnq[Type]
* InfoEnq[Delai]
* InfoEnq[PrecisionsChoix]
* InfoEnq[Precisions][MontantCA]
* InfoEnq[Precisions][Motif]
* InfoEnq[Precisions][Autre]
* InfoEnq[Anciennete]
* InfoEnq[AncienneteDuree]
* InfoEnq[ImpayeesChoix]
* InfoEnq[Impayees][Montant]
* InfoEnq[Impayees][Nombre]
* InfoEnq[Impayees][Date]
* InfoEnq[RetardPaiementChoix]
* InfoEnq[RetardPaiement][Montant]
* InfoEnq[RetardPaiement][Nombre]
* InfoEnq[RetardPaiement][Date]
* InfoEnq[LitigeChoix]
* InfoEnq[Litige][Precisions]
* InfoEnq[Observation]
* @param string $infoDemande Informations sur l'utilisateur
* InfoUser[Profil]
* InfoUser[ProfilAutre]
* InfoUser[Identite]
* InfoUser[Tel]
* InfoUser[Fax]
* InfoUser[Email]
* InfoUser[Ref]
* @return CommandeEnqueteReturn
*/
public function commandeEnquete($siren, $infoEnq, $infoDemande)
{
$this->authenticate();
//Initialisation
$infoEnq = json_decode($infoEnq);
$infoDemande = json_decode($infoDemande);
$mail = trim($infoDemande['Email']);
if ($mail=='') {
$mail=$this->tabInfoUser['email'];
}
$tabInsert = array(
'idUser' => $this->tabInfoUser['id'],
'source' => 'intersud', // 'greffes', 'asso', 'graydon'
'login' => $tabInfoUser['login'],
'emailCommande' => $mail,
'siren' => $siren,
'refDocument' => serialize($infoDemande),
'refCommande' => serialize($infoEnq),
'dateCommande' => DATETIME,
// 'idClient'=> $tabInfoUser['idClient'],
);
debugLog('I',"Intersud, début commande sur $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$messageInfo = print_r($infoEnq, 1).EOL.print_r($infoDemande,1).EOL;
$idClient = $this->tabInfoUser['idClient'];
$iDbCrm = new WDB('sdv1');
$rep = $iDbCrm->select('clients', ' nom, racineLogin, InterSudLogin, InterSudPass', "id='$idClient'", false, MYSQL_ASSOC);
$login = trim($rep[0]['InterSudLogin']);
$pass = trim($rep[0]['InterSudPass']);
$nomClient = trim(strtoupper($rep[0]['nom']));
$strInfoCommande = "NOM et Prénom du client demandeur : ".$infoDemande['Identite'].EOL;
$strInfoCommande.= "Email du client demandeur : $mail".EOL;
$strInfoCommande.= "Tel/Fax du demandeur : ".$infoDemande['Tel'].' / '.$infoDemande['Fax'].EOL;
$strInfoCommande.= "Profil du demandeur : ".trim($infoDemande['Profil'].' '.$infoDemande['ProfilAutre']).EOL;
$typeEnqLog='enqueteDemNF';
if ($login=='' || $pass=='') {
/** Il ne s'agit pas d'un client final, on anonymise la commande **/
$login='YLENA'; // Demandes en test
$pass='WYLFE';
$nomClient=$strInfoCommande='';
$typeEnqLog='enqueteDem';
/* ENQUETES EN PROD
$login='FACTURE';
$pass='AWKROM';
*/
}
/** Connexion à l'Extranet Intersud **/
$url = 'http://www.intersud.fr/espace_client/espace_client.php';
$cookie = $referer = '';
$tabPost = array(
'login' => $login,
'pwd' => $pass,
);
$tdeb = microtime(true);
$page = getUrl($url, $cookie, $tabPost, $referer, false, '', '', 7);
if ($page['code']<>200) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ATTENTION : Commande d'enquete sur $siren", "Connexion impossible à la plateforme Intersud".EOL.$strInfoCommande);
//wsLog($typeEnqLog, $siren, 'i'.$ret.'-'.DATETIME);
throw new SoapFault('1',"Connexion impossible à la plateforme d'enquêtes");
}
$tfin = microtime(true);
$duree = $tfin-$tdeb;
$referer = $url;
$body = $page['body'];
$cookie = $page['header']['Set-Cookie'];
$intersudNomPrenom=$intersudRaisonSociale='';
if (preg_match('/(.*)<\/td>/Uis',$body,$matches))
$intersudNomPrenom=trim($matches[1]);
if (preg_match('/ | (.*)<\/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('/$field) {
$tmp=explode('"', $matches[2][$i]);
$tabInterSud[$field]=$tmp[0];
}
}
if (preg_match_all('/$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;
}
}
?> |