1184 lines
40 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 __DIR__ . '/Types.php';
class Saisie extends Scores_Ws_Server
{
/**
* 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;
}
/**
* Enregistrement des informations saisie manuellement
* @param string $siret
* @param int $idEntreprise
* @param string $infos
* @return SetInfosEntrepReturn
*/
public function setInfosEntrep( $siret, $idEntreprise, $infos )
{
$this->authenticate();
//Initialisation
$tabRet = array();
$iBodacc = new MBodacc();
$iInsee = new MInsee();
$result = false;
if (!$this->checkEdition()) {
$error->errnum = 1;
$error->errmsg = 'Code Client Incorrect';
} else {
$siren = substr($siret,0,9);
$nic = substr($siret,9,5);
$iDb = new WDB();
$tabInfos = json_decode($infos, true);
$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;
}
}
// Fin mise à jour identité
// Opposition INSEE
if ( $tabIdentite['moisOppositionInsee']>0 &&
$tabIdentite['moisOppositionInsee']<=(date('Ym')*1) ){
$iDb2 = new WDB('insee');
if ( !$iDb2->insert('insee_nondiff', array('siren'=>$siren, 'insEVE'=>795, 'mois'=>$tabIdentite['moisOppositionInsee'])) ){
if ( $iDb2->getLastErrorNum()<>1062 )
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des oppositions de la sphère commerciale INSEE pour $siren au mois de ".$tabIdentite['moisOppositionInsee']." : ".EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
}
}
// Fin opposition INSEE
// Refus d'inscription au RCS
if (isset($tabIdentite['moisRefusRCS']) && $tabIdentite['moisRefusRCS']>0
&& $tabIdentite['moisRefusRCS']<=(date('Ym')*1)) {
$iInsee = new MInsee();
$entrep = $iInsee->getIdentiteLight($siren);
if ($nic<10) $nic=$entrep['Nic'];
$cj1=substr($entrep['FJ'],0,1);
$iDb2 = new WDB('insee');
/** Insertion dans la tables des exclusions **/
$tabInsert = array(
'siren' => $siren,
'nic' => $nic,
'idSaisie' => $this->User->id,
'cj1' => $cj1,
'insEVE' => 'RCS',
'mois' => $tabIdentite['moisRefusRCS'],
);
if (!$iDb2->insert('insee_nondiff', $tabInsert))
if ($iDb2->getLastErrorNum()<>1062)
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des refus d'enregistrement A au RCS pour $siren au mois de ".$tabIdentite['moisRefusRCS']." : ".EOL.print_r($tabInsert, true).EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
/** Insertion dans la tables des évènements **/
$tabInsert = array(
'insSIREN' => $siren,
'siretValide' => $iInsee->valideSiren($siren,$nic),
'insNIC' => $nic,
'insEVE' => 'RCS',
'insDATEVE' => $tabIdentite['moisRefusRCS'].'28',
'insDATEMAJ' => date('YmdHis'),
'idFlux' => date('Ymd'));
if (!$iDb2->insert('insee_even', $tabInsert))
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de l'inscription à la liste des refus d'enregistrement B au RCS pour $siren au mois de ".$tabIdentite['moisOppositionInsee']." : ".EOL.print_r($tabInsert, true).EOL.print_r($tabIdentite, true).EOL.$iDb2->getLastError());
}
// Fin refus d'inscription au RCS
// Domiciliataire
if (!empty($tabIdentite['domiciliataire']) && $siren>1000) {
if ($tabIdentite['domiciliataire']=='oui' || $tabIdentite['domiciliataire']=='non') {
// L'entreprise et ces établissements seront mis à jour automatiquement ce soir
$iDb->query("INSERT IGNORE INTO jo.tabAdrDom (siren,nic,siege, etActif, nom, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, depComEt, adrComp, cj, apen,apet, dateInsert)
SELECT siren, nic, siege, actif AS etActif, raisonSociale AS nom, sigle, enseigne, adr_num as adrNum, adr_btq AS adrBtq, adr_typeVoie AS adrTypVoie, adr_libVoie AS adrLibVoie, adr_ville AS ville, adr_cp AS cp, CONCAT(adr_dep,adr_com) AS depComEt, adr_comp AS adrComp, cj, ape_entrep AS apen, ape_etab AS apet, DATE(NOW()) as dateInsert
FROM jo.etablissements WHERE siren=$siren;", false);
}
// Si demande de suppression, on force l'indicateur ""
if ($tabIdentite['domiciliataire']=='non') {
$tabUpdate=array('pasEntrepDom'=>1);
if (!$iDb->update('tabAdrDom', $tabUpdate, "siren=$siren"))
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", "Erreur lors de la suppression du marqueur de domiciliation pour $siren :".EOL.print_r($tabUpdate, true).EOL.$iDb->getLastError());
}
}
// Fin domiciliataire
// Insertion des scores
$tabUpdate = array();
$setScore = false;
if ( $tabScores['encours']!='' || $tabScores['encours']!=null ){
$tabUpdate['encours'] = $tabScores['encours'];
$setScore = true;
}
if ( $tabScores['scoreSolv']!='' ){
$tabUpdate['scoreSolv'] = $tabScores['scoreSolv'];
$setScore = true;
}
if ( $tabScores['scoreDir']!='' ){
$tabUpdate['scoreDir'] = $tabScores['scoreDir'];
$setScore = true;
}
if ( $tabScores['scoreConf']!='' ){
$tabUpdate['scoreConf'] = $tabScores['scoreConf'];
$setScore = true;
}
if ( $setScore ){
// Mise à jour des Cute Offs
if ( !$iDb->update('scores_cutoff', $tabUpdate, "siren=$siren") ){
if ( !$iDb->insert('scores_cutoff', array_merge(array(
'siren' => $siren,
'dateInsert' => date('Ymd') ), $tabUpdate)) ){
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR setInfosEntrep pour $siren", print_r($tabScores, true).EOL.$iDb->getLastError());
}
}
}
// Fin insertion des scores
// Insertion du jugement
$tabEven = $tabJugement['even'];
$nic = $tabJugement['nic']*1;
$entrep = $iInsee->getIdentiteLight($siren, $nic);
if ( $nic>0 && $tabEven[0]==6700 && $entrep['Siege']==0 ){
// Radiation d'un établissement
$tabEven[0] = 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']));
$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='';
if (count($tabJugement['nouvDir'])>0) {
foreach( $tabJugement['nouvDir'] as $dir ){
if ( intval($dir['Fonc'])>0 ){
$strDir.= $iBodacc->getFctDir($dir['Fonc']).' : '.$dir['Genre'].' '.
ucwords(strtolower($dir['Pre'])).' '.strtoupper($dir['Nom']);
if (!empty($dir['Dom'])) {
$strDir.= ', domicilié à '.$dir['Dom'].'. ';
}
}
}
}
if ( trim($tabJugement['nouvAdrCp'])<>'' ){
$strAdr = stripslashes(trim($tabJugement['nouvAdr']).', '.
trim($tabJugement['nouvAdrCp']).' '.
trim($tabJugement['nouvAdrVille']));
} else {
$strAdr='';
}
if (count($tabEven)>1){
$strEven = implode(';',array_slice($tabEven, 1));
} else {
$strEven = '';
}
$tabUpdate = array(
'strEven' => $strEven,
'sirenValide' => $iInsee->valideSiren($siren),
'dateCessationPaiement' => empty($tabJugement['datePaie']) ? '' :
WDate::dateT('d/m/Y', 'Y-m-d', trim($tabJugement['datePaie'])),
'dateEffetFinP' => empty($tabJugement['dateFinPeriode']) ? '' :
WDate::dateT('d/m/Y', 'Y-m-d', trim($tabJugement['dateFinPeriode'])),
'tribunal' => trim($tabJugement['tribunal']),
'montant' => $montant,
'actionsNb' => $actionsNb,
'inter1type' => 'A',
'inter1id' => $idAdmin,
'inter1nom' => utf8_encode($iInsee->getMandatairesParId($idAdmin)),
'inter2type' => 'M',
'inter2id' => $idMand,
'inter2nom' => utf8_encode($iInsee->getMandatairesParId($idMand)),
'inter3type' => 'O',
'inter3id' => $idOppo,
'inter3nom' => utf8_encode($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' => $this->User->id,
'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;
}
/**
* 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();
//$infos = serialize($tabInfos);
debugLog('I',"Ajout/MAJ de mandaitaire ".print_r($infos,1)." demandée",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
$type = substr(strtoupper($infos->type),0,1);
$stag = substr(strtoupper($infos->type),1,1);
if ($stag=='S') {
$stag=1;
} else {
$stag=0;
}
if ($type=='A' || $type=='H' || $type=='M' || $type=='V' ||
$type=='N' || $type=='T')
{
$tabUpdate=array(
'sirenGrp' => substr($infos->sirenGrp,0,9)*1,
'nicGrp' => substr($infos->sirenGrp,9,5)*1,
'sirenMand' => substr($infos->sirenMand,0,9)*1,
'nicMand' => substr($infos->sirenMand,9,5)*1,
'Nom' => ucwords(strtolower($infos->Nom)),
'Prenom' => ucwords(strtolower($infos->Prenom)),
'type' => $type,
'stagiaire' => $stag,
'coursAppel' => intval($infos->coursAppel),
'coursAppel2' => intval($infos->coursAppel2),
'tribunal' => $infos->tribunal,
'Statut' => strtoupper($infos->Statut),
'adresse' => ucwords($infos->adresse),
'adresseComp' => strtoupper($infos->adresseComp),
'cp' => intval($infos->cp),
'ville' => strtoupper($infos->ville),
'tel' => $infos->tel,
'fax' => $infos->fax,
'email' => $infos->email,
'web' => $infos->web,
'contact' => $infos->contact,
'idUser' => $this->User->id,
);
}
$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;
}
/**
* 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 = 1;
$error->errmsg = 'Edition impossible';
}
}
else
{
$error->errnum = 745741;
$error->errmsg = 'Selection impossible';
}
}
$output = new AnnonceCollecteReturn();
$output->error = $error;
$output->result = $annonceCollecte;
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;
}
/**
* 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;
}
/**
* 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 (intval($idAnn)<0){
$error->errnum = 1;
$error->errmsg = 'Code annonce Incorrect';
} else {
$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 (intval($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 (intval($idAnn)<0){
$error->errnum = 1;
$error->errmsg = 'Code annonce Incorrect';
} else {
if (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 (intval($idAnn)>0) {
$res = $iDb->select($table, '*', "id=$idAnn $strSql", false, MYSQL_ASSOC);
if (count($res)==0) {
$error->errnum = 1;
$error->errmsg = 'Annonce inexistante';
} else {
/* Si table = asso => UPDATE de la ligne */
if ($table == 'asso'){
$annonce = $res[0];
$annonce['siren'] = $sirenOut;
$annonce['sirenValide'] = 2;
$annonce['dateUpdate'] = date('YmdHis');
$annonce['idSirenage'] = $this->User->id;
$annonce['nic'] = $nicOut;
if ($nicOut>0) $annonce['nicValide'] = 2;
if ($iDb->update($table, $annonce, "id=".$idAnn, 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 impossible 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";
}
}
/* Si sirenIn = 0 et table = bodacc_detail => INSERT + UPDATE */
elseif (intval($sirenIn) == 0 && $table == 'bodacc_detail' ){
$annonce = $res[0];
$annonce['siren'] = $sirenOut;
$annonce['sirenValide'] = 2;
$annonce['dateInsert'] = date('YmdHis');
$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;
$data = array(
'idSuppr' => $this->User->id,
'dateSuppr' => date('YmdHis'),
);
$iDb->update($table, $data, "id=$idAnn $strSql", true, true);
} else {
debugLog('I',"Duplication impossible 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";
}
}
/* si sirenIn != 0 et table = bodacc_detail => insert */
elseif (intval($sirenIn) != 0 && $table == 'bodacc_detail'){
$annonce = $res[0];
$annonce['siren'] = $sirenOut;
$annonce['sirenValide'] = 2;
$annonce['dateInsert'] = date('YmdHis');
$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 impossible 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";
}
}
/* Si table = annonces => INSERT */
elseif ($table == 'annonces'){
$annonce = $res[0];
// Suppression des zones inexistantes dans la table ou devant être vides
unset($annonce['id']);
unset($annonce['nic']);
$annonce['idSaisie'] = $this->User->id;
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 impossible 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;
}
/**
* Modification du code evenement d'une annonce
* @param string $siren
* @param string $id
* @param string[] $codeEven
* @return boolean
*/
public function setAnnonceEven($siren, $id, $codeEven)
{
$this->authenticate();
$iDb = new WDB('jo');
$list = array();
if (is_object($codeEven)){
$list = $codeEven->item;
} else {
$list = $codeEven;
}
if (count($list)>0){
$tabUpdate = array(
'typeEven' => implode(';',$list),
'idSirenage' => $this->User->id,
//'dateUpdate' => date('Y-m-d H:i:s'),
);
if ($iDb->update('bodacc_detail', $tabUpdate, "siren='$siren' AND id='$id'")){
debugLog('I',"setAnnonceEven (siren=$siren, list=$list)",__LINE__,__FILE__, __FUNCTION__, __CLASS__);
return true;
}
}
return false;
}
}