extranet/library/Infogreffe/Infogreffe.php

1234 lines
42 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Gestion WebService Infogreffe
* Processus :
*/
class Infogreffe
{
protected $tabErrInfoGref = array(
0=>"ERREUR LORS DE L'ACCES A LA BASE DES PIECES OFFICIELLES. MERCI DE REESSAYER !",
1=>"REQUETE INTERDITE",
2=>"CODE EMETTEUR INVALIDE",
3=>"CODE ABONNE OU MOT DE PASSE INVALIDE",
4=>"MOT DE PASSE INVALIDE",
5=>"ABONNE INTERDIT",
6=>"DOSSIER NON TROUVE DANS LA BASE DES PIECES OFFICIELLES",
7=>"Type d'inscription invalide",
8=>"Kbis indisponible pour le siren",
9=>"Etat d'endettement indisponible pour le siren",
10=>"Impossible de faire aboutir la demande",
11=>"IMPOSSIBLITE DE GENERER LE FLUX XML DU KBIS",
12=>"IMPOSSIBLITE DE GENERER LE FLUX XML DE L ETAT ENDETTEMENT",
13=>"L ETAT ENDETTEMENT NE POSSEDE AUCUN DEBITEUR",
14=>"IMPOSSIBILITE DE GENERER LA COMMANDE",
15=>"DEMANDE ETAT COMPLET IMPOSSIBLE",
16=>"LA PRISE EN CHARGE DU MAIL EST EFFECTIVE",
17=>"LA PRISE EN CHARGE DE VOTRE COMMANDE EST EFFECTIVE", // LA PRISE EN CHARGE DE VOTRE COURRIER EST EFFECTIVE
18=>"DERNIER STATUT A JOUR INDISPONIBLE",
19=>"BILAN COMPLET INDISPONIBLE",
20=>"PAS DE COMPTES ANNUELS POUR LES CRITERES DONNES : SOIT LE MILLESIME DEMANDE N'A PAS ETE DEPOSE, SOIT L'ENTREPRISE N'EST PAS TENUE DE DEPOSER SES COMPTES",
21=>"PAS DE DERNIER STATUT A JOUR",
22=>"LES MODES DE DIFFUSIONS DEMANDES SONT FERMES",
23=>"SOCIETE NON TENUE DE DEPOSER SES COMPTES",
24=>"SIREN INVALIDE",
25=>"SIREN NON TROUVE DANS LA BASE DES PIECES OFFICIELLES",
26=>"COMPTE NON DEPOSES",
27=>"COMPTES DEPOSES MAIS BILAN SAISI INDISPONIBLE : COMMANDE BILAN COMPLET POSSIBLE",
28=>"REQUETE SUR LES SURVEILLANCES REALISEES",
29=>"ACCUSES DE RECEPTIONS DISPONIBLES",
30=>"REVELATIONS DISPONIBLES",
31=>"PORTEFEUILLE DISPONIBLE",
32=>"AUCUN ACCUSE DE RECEPTION DISPONIBLE",
33=>"AUCUNE REVELATIONS DISPONIBLES",
34=>"AUCUN PORTEFEUILLE DISPONIBLE",
35=>"TRANCHE HORAIRE DEPASSEE",
36=>"BILAN INDISPONIBLE-PERIODE DE CONSERVATION DEPASSEE",
37=>"BILAN SAISI INDISPONIBLE",
38=>"STATUTS A JOUR INDISPONIBLES POUR ENVOI EMAIL",
39=>"BILAN COMPLET INDISPONIBLE POUR TELECHARGEMENT",
40=>"STATUTS A JOUR INDISPONIBLES POUR ENVOI EMAIL",
41=>"STATUTS A JOUR INDISPONIBLES POUR TELECHARGEMENT",
42=>"ACTE INDISPONIBLE",
43=>"ACTES INDISPONIBLES POUR ENVOI EMAIL",
44=>"ACTES INDISPONIBLES POUR TELECHARGEMENT",
45=>"AUCUN ACTE TROUVE POUR CE SIREN",
46=>"AUCUN ACTE TROUVE AVEC CES CRITERES",
47=>"SERVICE COURRIER INDISPONIBLE",
48=>"SERVICE MAIL INDISPONIBLE",
49=>"SERVICE TELECHARGEMENT INDISPONIBLE",
50=>"UNE PARTIE DE LA COMMANDE INDISPONIBLE EN TELECHARGEMENT ET MAIL",
51=>"ADRESSE EMAIL OBLIGATOIRE POUR COMMANDE MAIL",
52=>"ADRESSE POSTALE OBLIGATOIRE POUR COMMANDE COURRIER",
53=>"LA COMMANDE EN COURRIER SEUL DE L'ETAT EN MATIERE DE PROCEDURE COLLECTIVE N'EST PAS PERMISE",
54=>"IMPOSSIBILITE DE GENERER LE FLUX XML DU CERTIFICAT",
55=>"SOCIETE NE FAISANT PAS L'OBJET D'UNE PROCEDURE COLLECTIVE",
56=>"IDENTIFICATION DU DOCUMENT INVALIDE POUR LA PROCEDURE EN COURS SUR CETTE ENTREPRISE",
57=>"DOCUMENT INDISPONIBLE POUR LE NUMERO DE GESTION",
58=>"AUCUN DOCUMENT TROUVE POUR LE NUMERO DE GESTION",
59=>"DOCUMENT INDISPONIBLE POUR TELECHARGEMENT",
60=>"IDENTIFICATION INCOMPLETE DU DOCUMENT",
61=>"AUCUNE INSCRITPTION MODIFICATIVE TROUVEE",
62=>"HISTORIQUE DES MODIFICATIONS AU RCS INDISPONIBLE",
63=>"IMPOSSIBLITE DE GENERER LE FLUX XML D'HISTORIQUE DE MODIFICATIONS AU RCS",
64=>"HISTORIQUE DE MODIFICATIONS AU RCS INDISPONIBLE",
65=>"LES MODES DE DIFFUSION SPECIFIES SONT INVALIDES",
66=>"LE DEPARTMENT SAISI EST INVALIDE",
67=>"LA RECHERCHE EST LIMITE A UN VOLUME DE 100 ENTREPRISES",
68=>"LE NUMERO DE GESTION N'EST PAS SUFFISANT POUR CETTE REQUETE",
69=>"LE NUMERO DE GESTION EST INVALIDE",
70=>"LA SELECTION DES ETABLISSSMENTS RADIES OU SECONDAIRES DOIT UTILISER UNE VALEUR DE TYPE BOOLEAN true OU false",
81=>"DOCUMENT INDISPONIBLE POUR LES NON INSCRITS AU RCS",
999=>"SERVICE INDISPONIBLE",
);
protected $typActes = array(
'a00'=>'MODIFICATION',
'a01'=>'MODIFICATION',
'a02'=>'DISSOLUTION',
'a03'=>'CONSTITUTION',
'a04'=>'STATUTS CONSTITUTIFS',
'a06'=>'STATUTS A JOUR',
'a07'=>'STATUTS A JOUR',
'a08'=>'STATUTS A JOUR ET DECLARATION DE CONFORMITE',
'a09'=>'STATUTS APRES TRANSFERT DE SIEGE',
'a1D'=>'AUGMENTATION ET REDUCTION CAPITAL',
'a25'=>'AUGMENTATION DE CAPITAL',
'a26'=>'REDUCTION DE CAPITAL',
'a31'=>'TRANSFERT SIEGE SOCIAL HORS RESSORT O',
'a33'=>'CHANGEMENT DE GERANT',
'a39'=>'CHANGEMENT DE COMMISSAIRE AUX COMPTES',
'a77'=>'CONTINUATION MALGRE LA PERTE DE LA MOITIE DU CAPITAL',
'aA1'=>'STATUTS',
'aAA'=>'ACTE',
'aAB'=>'ACTE MODIFICATIF',
'aAC'=>'ACTE RECTIFICATIF',
'aAD'=>'ACTE SOUS SEING PRIVE',
'aAE'=>'AMPLIATION',
'aAG'=>'AVENANT',
'aAH'=>'AVENANT AUX STATUTS',
'aAI'=>'ATTESTATION',
'aAJ'=>'ANNEXES',
'aAK'=>'ATTESTATION BANCAIRE',
'aAP'=>'PROJET APPORT PARTIEL D&quot;ACTIF',
'aAT'=>'DELIVRANCE DE L&quot;INFORMATION FAITE AU CONJOINT SUR LES CONSEQUENCES DES DETTES',
'aCA'=>'CERTIFICAT',
'aCB'=>'COMPTES DE CLOTURE DE LIQUIDATION',
'aCD'=>'CONTRAT',
'aCE'=>'CONVENTION',
'aCF'=>'CERTIFICAT DE SOUSCRIPTION D&quot;ACTIONS',
'aDA'=>'DECISION DE GERANCE',
'aDB'=>'DECISION DE L&quot;ASSOCIE UNIQUE',
'aDC'=>'DECISION DES ASSOCIES',
'aDE'=>'DECLARATION DE CONFORMITE',
'aDF'=>'DECLARATION DE SOUSCRIPTION ET DE VERSEMENT',
'aDH'=>'DECLARATION DE CONFORMITE (ART.374 L24/07/1966)',
'aDI'=>'DECISION DE L&quot;ACTIONNAIRE UNIQUE',
'aDP'=>'DECISION DU PRESIDENT',
'aEA'=>'EXPEDITION',
'aEB'=>'EXPEDITION NOTARIEE',
'aEC'=>'EXTRAIT DU PROCES-VERBAL',
'aFU'=>'PROJET DE FUSION',
'aIF'=>'PROJET APPORT PARTIEL D&quot;ACTIF',
'aJA'=>'JUGEMENT',
'aLA'=>'LETTRE',
'aLB'=>'LISTE DES SIEGES SOCIAUX ANTERIEURS',
'aLC'=>'LETTRE DE DEMISSION',
'aLD'=>'LETTRE DE NOMINATION',
'aLF'=>'LISTE DES SOUSCRIPTEURS',
'aLS'=>'CERTIFICAT DE DEPOT DES FONDS AVEC LISTE DES SOUSCRIPTEURS',
'aNA'=>'NOMINATION DE REPRESENTANT',
'aO9'=>'NOMINATION DE GERANT(S)',
'aOA'=>'ORDONNANCE',
'aOB'=>'ORDONNANCE DE REFERE',
'aOC'=>'ORDONNANCE DU PRESIDENT',
'aOD'=>'ORDONNANCE SUR REQUETE',
'aOE'=>'ORDONNANCE',
'aPA'=>'PROCES VERBAL',
'aPC'=>'PROCES VERBAL D&quot;ASSEMBLEE CONSTITUTIVE',
'aPD'=>'PROCES VERBAL D&quot;ASSEMBLEE DU DIRECTOIRE',
'aPE'=>'PROCES VERBAL D&quot;ASSEMBLEE GENERALE',
'aPF'=>'PROCES VERBAL D&quot;ASSEMBLEE GENERALE EXTRAORDINAIRE',
'aPG'=>'PROCES VERBAL D&quot;ASSEMBLEE GENERALE ORDINAIRE',
'aPH'=>'PROCES VERBAL D&quot;ASSEMBLEE MIXTE',
'aPI'=>'PROCES VERBAL D&quot;ASSEMBLEES ORDINAIRE ET EXTRAORDINAIRE',
'aPL'=>'PROCES VERBAL DIRIGEANT SOCIAL',
'aPM'=>'PROCES VERBAL DU CONSEIL D&quot;ADMINISTRATION',
'aPN'=>'PROCES VERBAL DU CONSEIL DE SURVEILLANCE',
'aPO'=>'PROCES VERBAL DE LA GERANCE',
'aPT'=>'PROJET DE TRAITE D&quot;APPORT',
'aPU'=>'PROJET DE FUSION',
'aPV'=>'PV D&quot;ASSEMBLEE',
'aQ2'=>'CONSTITUTION DE LA SOCIETE',
'aR1'=>'CESSION DE PARTS (OU DONATION)',
'aR4'=>'TRAITE DE FUSION',
'aRA'=>'RAPPORT',
'aRB'=>'RAPPORT COMMISSAIRE AUX COMPTES',
'aRC'=>'RAPPORT COMMISSAIRE FUSION',
'aRE'=>'RAPPORT CR/CPTES TRANSFORM. STE',
'aRG'=>'RAPPORT DU COMMISSAIRE A LA FUSION',
'aRH'=>'RAPPORT DU COMMISSAIRE A LA SCISSION',
'aRI'=>'RAPPORT DU COMMISSAIRE A LA TRANSFORMATION',
'aRK'=>'RAPPORT DU COMMISSAIRE AUX APPORTS',
'aRL'=>'RAPPORT DU COMMISSAIRE AUX APPORTS ET A LA FUSION',
'aRQ'=>'RAPPORT GERANCE',
'aRS'=>'RAPPORT SPECIAL DU CONSEIL D&quot;ADMINISTRATION',
'aRU'=>'PROJET',
'aTA'=>'TRAITE',
'aTB'=>'TRAITE D&quot;APPORT-FUSION',
'aTC'=>'TRAITE DE FUSION',
'aUA'=>'ATTESTATION DU CONJOINT COMMUN EN BIENS',
);
protected $url;
protected $uri;
protected $user;
protected $pass;
protected $filetime = 8;
protected $pathCacheXML = '';
protected $pathData = '';
protected $login = '';
public function __construct()
{
//@todo rentre jamais dans cette condition ($mode) non defini.
$mode = false;
$config = parse_ini_file(realpath(dirname(__FILE__)).'/config.ini', true);
if ($mode == 'debug'){
$this->url = $config['DEBUG']['WS_URL'];
$this->uri = $config['DEBUG']['WS_URI'];
$this->user = $config['DEBUG']['WS_USER'];
$this->pass = $config['DEBUG']['WS_PASS'];
$this->pathCacheXML = $config['DEBUG']['PATH'];
$this->filetime = $config['DEBUG']['FILETIME'];
} else {
$this->url = $config['PROD']['WS_URL'];
$this->uri = $config['PROD']['WS_URI'];
$this->user = $config['PROD']['WS_USER'];
$this->pass = $config['PROD']['WS_PASS'];
$this->pathCacheXML = $config['PROD']['PATH'];
$this->filetime = $config['PROD']['FILETIME'];
}
if (!is_dir($this->pathCacheXML)){
mkdir($this->pathCacheXML);
}
$c = Zend_Registry::get('config');
$this->pathData = realpath($c->config->path->data);
require_once 'common/curl.php';
$user = new Scores_Utilisateur();
$this->login = $user->getLogin();
}
/**
* Retourne le libellé des erreurs infogreffe
*/
public function getErrInfoGref($code = '')
{
if (empty($code))
return $this->tabErrInfoGref;
return $this->tabErrInfoGref[$code];
}
/**
* Retourne le libellé d'un acte
*/
public function getTypActes($code = '')
{
if (empty($code))
return $this->typActes;
return $this->typActes[$code];
}
/**
* Génére une chaîne xml pour la requête soap défini suivant les paramètres d'infogreffe
* @param string $siren
* @param int $idCommande
* @param string $type
* @param string $vecteur
* @param string or array $option
* @return string
*/
public function requeteXML($siren, $idCommande, $type, $vecteur, $option)
{
$xmlStr = '';
$xml = new SimpleXMLElement('<demande></demande>');
$emetteur = $xml->addChild('emetteur');
$emetteur->addChild('code_abonne', $this->user);
$emetteur->addChild('mot_passe', $this->pass);
$emetteur->addChild('reference_client', 'G'.$idCommande); //Générer l'identifiant de commande
$code_requete = $emetteur->addChild('code_requete');
$code_requete->addChild('type_profil', 'A');
$code_requete->addChild('origine_emetteur', 'IC');
$code_requete->addChild('nature_requete', 'C'); // C = Commande de documents
$code_requete->addChild('type_document', $type); // KB = Kbis, PN = privilèges et nantissements, BI = Bilan complet, BS = bilan saisi, ST = Dernier Statut à jour, AC = Acte, SD = Surveillance Demande et Accusé, SR = Surveillance Révélation, SP = Surveillance Portefeuille, FA = Recherche PCL, FI = Inventaire, FJ = Jugement, FO = Ordonnance, FD = Dépôt divers, LE = Liste Etablissements
$code_requete->addChild('type_requete', 'S'); // S = Simple
$mode_diffusion = $code_requete->addChild('mode_diffusion');
// Mode de diffusion : C = Courrier, T = Téléchargement, M = Mail, XL = XML
if ($vecteur=='XL' && $option=='')
{
//On ajoute tout les types de diffusions pour $vecteur = XL
$mode_diffusion->addChild('mode')->addAttribute('type', 'C');
$mode_diffusion->addChild('mode')->addAttribute('type', 'T');
}
$mode_diffusion->addChild('mode')->addAttribute('type', $vecteur);
$code_requete->addChild('media', 'WS');
$commande = $xml->addChild('commande');
$commande->addChild('num_siren', $siren);
// Commande de documents : bilan saisie ou bilan complet
if ( ($type=='BS' || $type=='BI') && $option!='' )
{
//Format de la variable option pour la commande de type BI ou BS
/*
0 => millesime
1 => date_cloture
2 => greffe
3 => dossier_millesime
4 => dossier_statut
5 => dossier_chrono
6 => num_depot
*/
$ref = explode('-', $option);
$commande->addChild('greffe',$ref[2]);
$commande->addChild('dossier_millesime',$ref[3]);
$commande->addChild('dossier_statut',$ref[4]);
$commande->addChild('dossier_chrono',$ref[5]);
$commande->addChild('num_depot',$ref[6]);
$commande->addChild('date_cloture', WDate::dateT('Ymd','d/m/Y', $ref[1]));
$fichierOption = $option;
$this->logFile(array($siren, $idCommande, $type, $vecteur, $option));
}
// Commande de documents : actes
elseif ( $type=='AC' && !empty($option) )
{
//Format de la variable option pour commande type AC
/*
0 => type_acte
1 => date de référence
2 => greffe
3 => dossier_millesime
4 => dossier_statut
5 => dossier_chrono
6 => num_depot
7 => num_acte
*/
$ref = explode('-', $option);
$num_actes = explode('|', $ref[7]);
$commande->addChild('greffe',$ref[2]);
$commande->addChild('dossier_millesime', $ref[3]);
$commande->addChild('dossier_statut', $ref[4]);
$commande->addChild('dossier_chrono', $ref[5]);
$commande->addChild('num_depot', $ref[6]);
$liste_actes = $commande->addChild('liste_actes');
if(is_array($num_actes) && count($num_actes)>1)
{
foreach($num_actes as $num_acte)
{
$liste_actes->addChild('acte')->addAttribute('num', $num_acte);
}
$fichierOption = $ref[0].'-'.$ref[1].'-'.$ref[2].'-'.$ref[3].'-'.$ref[4].'-'.$ref[5].'-'.$ref[6];
}
else
{
$liste_actes->addChild('acte')->addAttribute('num', $ref[7]);
$fichierOption = $option;
}
$this->logFile(array($siren, $idCommande, $type, $vecteur, $option));
}
$xmlStr = str_replace('<?xml version="1.0"?>', '', $xml->asXML());
empty($option) ?
$fichier = $type.'-'.$siren.'.xml' :
$fichier = $type.'-'.$siren.'-'.$fichierOption.'.xml';
file_put_contents($this->pathCacheXML.'/'.$fichier.'.query', $xmlStr);
//Retourne le xml sous forme de chaîne de caractères
return $xmlStr;
}
/**
* Requête le webservice infogreffe
* @param unknown_type $xml
* @return unknown_type
*/
function getProduitsXML($xml)
{
$req = utf8_encode($xml);
$post = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://webservices.infogreffe.fr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:getProduitsWebServicesXML><param0 xsi:type="xsd:string">'.$req.'</param0></ns1:getProduitsWebServicesXML></SOAP-ENV:Body></SOAP-ENV:Envelope>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_COOKIEFILE,TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$reponseXML = curl_exec($ch);
$reponseXML = str_replace("<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><SOAP-ENV:Body><ns0:getProduitsWebServicesXMLResponse xmlns:ns0='urn:local' SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'><return xsi:type='xsd:string'>", '', $reponseXML);
$reponseXML = str_replace('</return></ns0:getProduitsWebServicesXMLResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>','', $reponseXML);
return $reponseXML;
}
/**
* Format la chaine xml de liste des actes
* @param string $xml
* @return array
*/
function parsexmlActes($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$liste_depot_acte = $doc->getElementsByTagName('liste_depot_acte')->item(0);
$depot_actes = $liste_depot_acte->getElementsByTagName('depot_acte');
$actes = array();
foreach($depot_actes as $depot_acte)
{
$acte = array();
$acte['num_gest'] = array();
$num_gest = $depot_acte->getElementsByTagName('num_gest')->item(0);
$acte['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$acte['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$acte['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$acte['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$acte['num_siren'] = $depot_acte->getElementsByTagName('num_siren')->item(0)->nodeValue;
$acte['num_depot'] = $depot_acte->getElementsByTagName('num_depot')->item(0)->nodeValue;
$acte['date_depot'] = $depot_acte->getElementsByTagName('date_depot')->item(0)->nodeValue;
$infoActes = $depot_acte->getElementsByTagName('acte');
$acte['depot'] = array();
foreach($infoActes as $infoActe)
{
$actenum = array();
$actenum['date_acte'] = $infoActe->getElementsByTagName('date_acte')->item(0)->nodeValue;
$actenum['num_acte'] = $infoActe->getElementsByTagName('num_acte')->item(0)->nodeValue;
$actenum['type_acte'] = $infoActe->getElementsByTagName('type_acte')->item(0)->nodeValue;
$actenum['type_acte_libelle'] = $infoActe->getElementsByTagName('type_acte_libelle')->item(0)->nodeValue;
$actenum['nbpages_acte'] = $infoActe->getElementsByTagName('nbpages_acte')->item(0)->nodeValue;
$decision = $infoActe->getElementsByTagName('decision')->item(0);
if($decision)
{
$actenum['decision'] = array();
$actenum['decision']['nature'] = $decision->getElementsByTagName('nature')->item(0)->nodeValue;
$actenum['decision']['libelle'] = $decision->getElementsByTagName('libelle')->item(0)->nodeValue;
}
$actenum['mode_diffusion'] = array();
$mode_diffusion = $infoActe->getElementsByTagName('mode_diffusion')->item(0)->getElementsByTagName('mode');
foreach($mode_diffusion as $mode)
{
$actenum['mode_diffusion'][] = $mode->getAttribute('type');
}
$acte['depot'][] = $actenum;
}//Fin listes des infos acte
//Génération de l'index pour le tri
if(!empty($acte['date_depot'])){ $date = $acte['date_depot']; }
else { $date = ''; }
if(!empty($date))
{
$datef = substr($date,0,4).substr($date,5,2).substr($date,8,2);
$key = $datef.'-'.$acte['num_depot'];
//Affectation liste générale avec un index permettant le tri
$actes[$key] = $acte;
}
//Prise en compte de l'acte -1
if($acte['num_depot']==-1)
{
$actes[0] = $acte;
}
}
//Tri suivant la date d'acte ou de depot
krsort($actes);
return $actes;
}
/**
* Formate la chaine xml de commande d'un acte en mode téléchargement
* @param string $xml
* @return array
*/
function parsexmlActesT($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$depot_acte = $doc->getElementsByTagName('depot_acte')->item(0);
$info = array();
$info['num_gest'] = array();
$num_gest = $depot_acte->getElementsByTagName('num_gest')->item(0);
$info['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$info['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$info['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$info['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$info['num_siren'] = $depot_acte->getElementsByTagName('num_siren')->item(0)->nodeValue;
$info['num_depot'] = $depot_acte->getElementsByTagName('num_depot')->item(0)->nodeValue;
$info['date_depot'] = $depot_acte->getElementsByTagName('date_depot')->item(0)->nodeValue;
$infoActes = $depot_acte->getElementsByTagName('acte');
$info['actes'] = array();
foreach($infoActes as $infoActe)
{
$actenum = array();
$actenum['date_acte'] = $infoActe->getElementsByTagName('date_acte')->item(0)->nodeValue;
$actenum['num_acte'] = $infoActe->getElementsByTagName('num_acte')->item(0)->nodeValue;
$actenum['type_acte'] = $infoActe->getElementsByTagName('type_acte')->item(0)->nodeValue;
$actenum['type_acte_libelle'] = $infoActe->getElementsByTagName('type_acte_libelle')->item(0)->nodeValue;
$actenum['nbpages_acte'] = $infoActe->getElementsByTagName('nbpages_acte')->item(0)->nodeValue;
$decision = $infoActe->getElementsByTagName('decision')->item(0);
if($decision)
{
$actenum['decision'] = array();
$actenum['decision']['nature'] = $decision->getElementsByTagName('nature')->item(0)->nodeValue;
$actenum['decision']['libelle'] = $decision->getElementsByTagName('libelle')->item(0)->nodeValue;
}
$actenum['url_acces'] = htmlspecialchars_decode($infoActe->getElementsByTagName('url_acces')->item(0)->nodeValue);
$info['actes'][] = $actenum;
}
return $info;
}
/**
* Formatte la chaine xml de liste des bilans
* @param unknown_type $xml
* @return unknown_type
*/
function parsexmlBilans($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$liste_bilan_complet = $doc->getElementsByTagName('liste_bilan_complet')->item(0);
$bilan_complet = $liste_bilan_complet->getElementsByTagName('bilan_complet');
$bilans = array();
foreach($bilan_complet as $element)
{
$bilan = array();
$bilan['num_gest'] = array();
$num_gest = $element->getElementsByTagName('num_gest')->item(0);
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$bilan['num_siren'] = $element->getElementsByTagName('num_siren')->item(0)->nodeValue;
$bilan['date_cloture'] = $element->getElementsByTagName('date_cloture')->item(0)->nodeValue;
$bilan['date_cloture_iso'] = $element->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
$bilan['millesime'] = $element->getElementsByTagName('millesime')->item(0)->nodeValue;
$bilan['num_depot'] = $element->getElementsByTagName('num_depot')->item(0)->nodeValue;
$bilan['type_comptes'] = $element->getElementsByTagName('type_comptes')->item(0)->nodeValue;
$mode_diffusion = $element->getElementsByTagName('mode_diffusion')->item(0)->getElementsByTagName('mode');
foreach($mode_diffusion as $mode)
{
$bilan['mode_diffusion'][] = $mode->getAttribute('type');
}
//Génération de l'index pour le tri
$date = $bilan['date_cloture_iso'];
if(!empty($date))
{
$datef = substr($date,0,4).substr($date,5,2).substr($date,8,2);
//Affectation liste générale avec un index permettant le tri
$bilans[$datef] = $bilan;
}
}
krsort($bilans);
return $bilans;
}
function parsexmlBilansT($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$bilan_complet = $doc->getElementsByTagName('bilan_complet')->item(0);
$bilan = array();
$bilan['num_gest'] = array();
$num_gest = $bilan_complet->getElementsByTagName('num_gest')->item(0);
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$bilan['num_siren'] = $bilan_complet->getElementsByTagName('num_siren')->item(0)->nodeValue;
$bilan['date_cloture'] = $bilan_complet->getElementsByTagName('date_cloture')->item(0)->nodeValue;
$bilan['date_cloture_iso'] = $bilan_complet->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
$bilan['millesime'] = $bilan_complet->getElementsByTagName('millesime')->item(0)->nodeValue;
$bilan['num_depot'] = $bilan_complet->getElementsByTagName('num_depot')->item(0)->nodeValue;
$bilan['type_comptes'] = $bilan_complet->getElementsByTagName('type_comptes')->item(0)->nodeValue;
$bilan['url_acces'] = $bilan_complet->getElementsByTagName('url_acces')->item(0)->nodeValue;
return array( 'bilan' => $bilan );
}
/**
* Formatte le tableau complet des actes pour envoyer seulement les informations nécessaires
* @param $actes
* @return unknown_type
*/
function formatActes($actes)
{
$tabActes = array();
//Pour chaque depot
foreach($actes as $key => $depot)
{
//Pour chaque acte dans le depot
foreach($depot['depot'] as $acte)
{
//Recherche du fichier suivant le siren, le type de document et la reference
$file_exist = false;
$ref = $this->acteRef($acte, $depot);
if (strlen($depot['num_siren'])==8){
$siren = '0'.$depot['num_siren'];
} else {
$siren = $depot['num_siren'];
}
$fichier = $this->pathData.'/pdf/'.$this->acteFilename($siren,$ref);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
}
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']); }
//Suppression du mode courrier si le mode telechargement existe
$modes = $acte['mode_diffusion'];
if(is_array($modes) && !$file_exist)
{
//Pas de modes
$nomode = true;
if(in_array('T',$modes))
{
$mode = 'T';
//Reference multiacte
$ref_multi = $this->acteRef($acte, $depot, true);
$tabActe['ref_multi'] = $ref_multi;
$nomode = false;
}
elseif(in_array('C',$modes))
{
$mode = 'C';
//Reference identique
$nomode = false;
}
if($nomode && ( substr($date,0,4)>date('Y')-5 ) )
{
$mode = 'courrier';
}
}
//Assignation
$tabActe['num_acte'] = $acte['num_acte'];
$tabActe['nbpages_acte'] = $acte['nbpages_acte'];
$tabActe['type'] = $acte['type_acte'];
$tabActe['type_lib'] = $acte['type_acte_libelle'];
$tabActe['decision'] = $acte['decision']['libelle'];
$tabActe['date_acte'] = ($date!='') ? WDate::dateT('Ymd', 'd/m/Y', $date) : '';
$tabActe['mode'] = $mode;
$tabActe['ref'] = $ref;
$tabActes[$key]['actes'][] = $tabActe;
}
$tabActes[$key]['num_depot'] = $depot['num_depot'];
$tabActes[$key]['date_depot'] = WDate::dateT('Y-m-d', 'd/m/Y', $depot['date_depot']);
}
return $tabActes;
}
function formatActesT($actes)
{
$tabActes = array();
$tabActe = array();
foreach($actes['actes'] as $acte)
{
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $actes['date_depot']); }
$tabActe = '';
$tabActe['type_acte'] = $acte['type_acte'];
$tabActe['type_acte_libelle'] = $acte['type_acte_libelle'];
$tabActe['decision'] = $acte['decision'];
$tabActe['date_acte'] = $date;
$tabActe['num_acte'] = $acte['num_acte'];
$tabActe['url_acces'] = $acte['url_acces'];
$tabActes['actes'][] = $tabActe;
}
$tabActes['num_gest'] = $actes['num_gest'];
$tabActes['num_siren'] = $actes['num_siren'];
$tabActes['num_depot'] = $actes['num_depot'];
$tabActes['date_depot'] = $actes['date_depot'];
return $tabActes;
}
/**
*
* @param unknown_type $bilans
* @return unknown_type
*/
function formatBilans($bilans)
{
//Organisation du tableau des bilans
$tabBilans = array();
foreach($bilans as $key => $bilan)
{
$mode = '';
$nomode = true;
//Recherche du fichier suivant le siren, le type de document et la reference
$file_exist = false;
$ref = $this->bilanRef($bilan);
if (strlen($bilan['num_siren'])==8){
$siren = '0'.$bilan['num_siren'];
} else {
$siren = $bilan['num_siren'];
}
//Cas de fichier correspondant à la référence
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$ref);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
}
//Cas de fichier ne correspondant pas à la référence (_sociaux ou pas)
//Si AAAA_sociaux- alors on cherche sans
if (preg_match('/^[0-9]{4}_sociaux-/', $ref)){
$refR = str_replace('_sociaux-', '_-', $ref);
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$refR);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
$ref = $refR;
}
//Si AAAA_- alors on cherche avec
} elseif (preg_match('/^[0-9]{4}_-/', $ref)){
$refR = str_replace('_-', '_sociaux-', $ref);
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$refR);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
$ref = $refR;
}
}
//Cas de fichier en acte (a faire disparaitre)
$fichier = $this->pathData.'/pdf/acte-'.$siren.'-'.$ref.'.pdf';
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
}
//Suppression du mode courrier si le mode telechargement existe
$modes = $bilan['mode_diffusion'];
if(is_array($modes) && !empty($modes) && !$file_exist )
{
if(in_array('T',$modes)) { $mode = 'T'; $nomode = false;}
elseif(in_array('C',$modes)){ $mode = 'C'; $nomode = false;}
}
if($nomode && ( substr($bilan['date_cloture'],6,4)>date('Y')-5 ) )
{
$mode = 'courrier';
}
//Valeurs de retour
$tabBilans[$key]['millesime'] = $bilan['millesime'];
$tabBilans[$key]['date_cloture'] = $bilan['date_cloture'];
$tabBilans[$key]['type'] = $bilan['type_comptes'];
$tabBilans[$key]['num_depot'] = $bilan['num_depot'];
$tabBilans[$key]['mode'] = $mode;
$tabBilans[$key]['ref'] = $ref;
}
return $tabBilans;
}
/**
* Liste tous les actes pour un siren et gere les commandes
* @param string $siren
* @param string $typeCommande
* @param string $ref
* @return array
*/
function getGreffeActes($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$inErreur = false;
$error = '';
$result = array();
if(empty($typeCommande)) $typeCommande = 'XL';
$type = 'AC'; // Type actes
if($typeCommande=='XL')
{
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if ($this->erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || $this->filetimeover($fichier) || $inErreur){
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!$this->erreur($xmlReponse))
{
//Tableau d'actes
$actes = $this->parsexmlActes($xmlReponse);
$result = $this->formatActes($actes);
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$option = explode('-', $ref);
$num_actes = explode('|', $ref[7]);
if(is_array($num_actes) && count($num_actes)>1){
$fichierOption = $ref[0].'-'.$ref[1].'-'.$ref[2].'-'.
$ref[3].'-'.$ref[4].'-'.$ref[5].'-'.$ref[6];
}else{
$fichierOption = $ref;
}
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'-'.$fichierOption.'.xml';
if( !file_exists($fichier) || $this->filetimeover($fichier) ){
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}else{
$xmlReponse = file_get_contents($fichier);
}
if(!$this->erreur($xmlReponse))
{
$items = $this->parsexmlActesT($xmlReponse);
$items = $this->formatActesT($items);
//Pour chaque acte téléchagement des documents
$result = array();
$actes = $items['actes'];
unset($items['actes']);
$result = $depot = $items;
$num_gest =
$result['num_gest']['greffe'].'-'.
$result['num_gest']['dossier_millesime'].'-'.
$result['num_gest']['dossier_statut'].'-'.
$result['num_gest']['dossier_chrono'].'-'.
$result['num_depot'];
foreach($actes as $acte)
{
if(!empty($acte['date_acte'])){ $date = $acte['date_acte']; }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $result['date_depot']); }
$ref = $acte['type_acte'].'-'.$date.'-'.$num_gest.'-'.$acte['num_acte'];
$fichier = $this->acteFilename($siren, $ref);
//Si le fichier existe, on modifie l'url
if( file_exists($this->pathData.'/pdf/'.$fichier) ){
$acte['url_acces'] = $fichier;
}else{
$fichierdl = $this->dl($fichier, $acte['url_acces']);
$acte['url_acces'] = $fichierdl;
}
$result['actes'][] = $acte;
}
}
}
//Commande d'un acte en mode courrier
elseif($typeCommande=='C')
{
//On génére un idCommande suivant la valeur en bdd
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
}
//Default mode erreur
else
{
//Paramètres incorrect
//@todo cette fonction n'existe pas !
sendMail(
"Erreur : getGreffeActes",
"getGreffeActes($siren, $typeCommande , $ref, $idCommande )",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);
}
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
return array('error' => $error , 'result' => $result );
}
/**
* Retourne si le fichier est périmé ou non
* @param string $fichier
* @return boolean
*/
function filetimeover($fichier)
{
$timeover = false;
$dateFile = filemtime($fichier);
$now = mktime(date('G'), date('i'), date('s'), date('m') , date('d'), date('Y'));
$maxTime = mktime(date('G',$dateFile)+$this->filetime, date('i',$dateFile), date('s',$dateFile), date("m",$dateFile), date("d",$dateFile), date("Y",$dateFile));
if($now>$maxTime) $timeover = true;
return $timeover;
}
/**
* Détermine si la chaine xml de retour est un message d'information ou d'erreur
* @param string $xml
* @return boolean
*/
function erreur($xml)
{
if (!empty($xml)){
$doc = new DOMDocument();
$load = $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING);
$output = false;
if (!$load){ $output = true;}
}else{
//@todo cette fonction n'existe pas !
/*sendMail(
"Erreur : infogreffe_erreur",
"Pas de reponse xml infogreffe",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);*/
$output = true;
}
return $output;
}
/**
* Renvoi le code erreur infogreffe ainsi que le message
* @param string $xml
* @return boolean
*/
function erreurMsg($xml)
{
$errNum = '';
$errMsg = '';
if (!empty($xml)){
$doc = new DOMDocument();
$load = $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING);
if (!$load) {
$tmp = explode('-', $xml);
$errNum = $tmp[0]*1;
$errMsg = $this->tabErrInfoGref[$errNum];
if ($errNum == '23'){
$fj = $_SESSION['tabInfo']['entrep']['fj'];
$nafEn = $_SESSION['tabInfo']['entrep']['nafEn'];
if ( (substr($fj,0,2)=='53' ||
substr($fj,0,2)=='54' ||
substr($fj,0,2)=='55' ||
substr($fj,0,2)=='56' ||
substr($fj,0,2)=='57' ) && $fj!=5306 && $fj!=5307 &&
( $nafEn!='6411Z' ||
$nafEn!='6419Z' ||
$nafEn!='6621Z' ||
$nafEn!='6622Z' ||
$nafEn!='6629Z' ||
$nafEn!='6512Z' ||
$nafEn!='6520Z' ||
$nafEn!='6530Z' ||
$nafEn!='6512Z' ||
$nafEn!='8430A' ||
$nafEn!='8430B' ||
$nafEn!='6420Z' ||
$nafEn!='6430Z' ||
$nafEn!='6611Z' ||
$nafEn!='8430B' ||
$nafEn!='6612Z' ||
$nafEn!='6630Z') ){
$errMsg = 'Aucun bilan disponible.';
}
} elseif( $errNum == '5' ){
$errMsg = 'Service partenaire indisponible.';
}
}
}
return array( 'errNum' => $errNum , 'errMsg' => $errMsg );
}
/**
* Demande le dernier statut à jour auprès d'infogreffe seulement si disponible pour le siren
* Acte possédant un num_depot = 9999999999
* @param $siren
* @param $typeCommande
* @return unknown_type
*/
function getGreffeStatut($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$type = 'ST'; //Type document statut
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
//@todo result non définie
return array('error' => $error , 'result' => $result );
}
/**
* Liste tous les bilans et gere les commandes
* @param unknown_type $siren
* @param unknown_type $typeCommande
* @param unknown_type $ref
* @return unknown_type
*/
function getGreffeBilans($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$inErreur = false;
$error = '';
$result = '';
if(empty($typeCommande)) $typeCommande = 'XL';
$type = 'BI';
if($typeCommande=='XL')
{
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if ($this->erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || $this->filetimeover($fichier) || $inErreur){
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!$this->erreur($xmlReponse)){
$bilans = $this->parsexmlBilans($xmlReponse);
$result = $this->formatBilans($bilans);
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
if(!$this->erreur($xmlReponse))
{
$items = $this->parsexmlBilansT($xmlReponse);
$result = array();
$bilan = $items['bilan'];
$fichier = $this->bilanFilename($siren, $ref);
$fichierdl = $this->dl($fichier, $bilan['url_acces']);
$bilan['url_acces'] = $fichierdl;
$result['bilan'][] = $bilan;
}
}
//Commande d'un acte en mode courrier
elseif($typeCommande=='C')
{
//On génére un idCommande suivant la valeur en bdd
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
}
//Default mode erreur
else
{
//Paramètres incorrect
//@todo cette fonction n'existe pas !
sendMail(
"Erreur : getGreffeBilans",
"getGreffeBilans($siren, $typeCommande, $ref, $idCommande )",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);
}
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
//Si résultat vide, renvoyé erreur Aucun bilans disponible
if (is_array($result) && empty($result)){
$error = array(
'errNum' => '45' ,
'errMsg' => 'AUCUN BILAN TROUVE POUR CE SIREN' );
}
return array( 'error' => $error , 'result' => $result );
}
function acteRef($acte, $depot, $multi = false)
{
if($depot['num_depot']>0)
{
//Numéro de gestion
$num_gest =
$depot['num_gest']['greffe'].'-'.
$depot['num_gest']['dossier_millesime'].'-'.
$depot['num_gest']['dossier_statut'].'-'.
$depot['num_gest']['dossier_chrono'].'-'.
$depot['num_depot'];
if($multi===true)
{
//Générer la ref multiactes pour le mode téléchargement
$tabActeNum = array();
foreach($depot['depot'] as $acte)
{
if(in_array('T', $acte['mode_diffusion']))
{
$tabActeNum[] = $acte['num_acte'];
}
}
$num_acte = implode('|', $tabActeNum);
}
else
{
$num_acte = $acte['num_acte'];
}
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']); }
return $acte['type_acte'].'-'.$date.'-'.$num_gest.'-'.$num_acte;
}
else
{
//Dernier STATUT A JOUR
$dateRef = date('Y').date('m').date('d');
return 'ST-'.$dateRef.'-'.
$depot['num_gest']['greffe'].'-'.
$depot['num_gest']['dossier_millesime'].'-'.
$depot['num_gest']['dossier_statut'].'-'.
$depot['num_gest']['dossier_chrono'];
}
}
function acteFilename($siren, $ref)
{
return 'acte-'.$siren.'-'.$ref.'.pdf';
}
function bilanRef($bilan)
{
$ref =
$bilan['millesime'].'_'.
$bilan['type_comptes'].'-'.
WDate::dateT('Y-m-d', 'Ymd', $bilan['date_cloture_iso']).'-'.
$bilan['num_gest']['greffe'].'-'.
$bilan['num_gest']['dossier_millesime'].'-'.
$bilan['num_gest']['dossier_statut'].'-'.
$bilan['num_gest']['dossier_chrono'].'-'.
$bilan['num_depot'];
return $ref;
}
function bilanFilename($siren, $ref)
{
return 'bilan-'.$siren.'-'.$ref.'.pdf';
}
/**
* Télécharge les fichiers d'infogreffe, et renvoi le nom du fichier ou false
* @param string $fichier
* @param string $url
* @return string or false
*/
function dl($fichier, $url, $trace = true)
{
$return = false;
$path = $this->pathData.'/pdf/';
if(!file_exists($path.$fichier) || !filesize($path.$fichier)>2000)
{
$erreurDL = '';
$page = getUrl($url, '', '', '', false, '', '',0,1);
$body = $page['body'];
$erreurDL = $body;
if (substr($body,0,4)!='%PDF')
{
$page2 = parse_response($body);
$body = $page2['body'];
}
if( ($page['code']!=408 || $page['code']!=400) && substr($body,0,4)=='%PDF') {
//Ecriture du fichier sur le serveur en local
file_put_contents($path.$fichier, $body);
$return = $fichier;
$erreurDL = '';
}
if ($trace) {
$erreur = new Application_Model_CommandesErreur();
preg_match('/^(acte|bilan)-([0-9]{9})-(.*)\.pdf$/', $fichier, $ref);
$data = array(
'siren' => $ref[2],
'type' => $ref[1],
'ref' => $ref[3],
'dateCommande' => date('Y-m-d H:i:s'),
'url' => $url,
'erreur' => $erreurDL,
);
$erreur->insert($data);
}
} else {
$return = $fichier;
}
return $return;
}
/**
* logfile
* @param unknown_type $info
*/
function logfile($info)
{
$file = $this->pathData.'/log/infogreffe-'.date('Ym').'.log';
if( !file_exists($file) ){
$entetes = array('date', 'login', 'siren', 'idCommande', 'type', 'vecteur', 'option');
$fp = fopen($file, 'w');
fputcsv($fp, $entetes, "\t");
fclose($fp);
}
$preinfo = array(date('Y-m-d H:i:s'), $this->login);
$result = array_merge($preinfo, $info);
$fp = fopen($file, 'a');
fputcsv($fp, $result, "\t");
fclose($fp);
}
}