2011-05-11 13:38:14 +00:00
< ? php
/**
* Gestion WebService Infogreffe
* Processus :
*
*
*
* @ author mricois
*
*/
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"ACTIF' ,
'aAT' => 'DELIVRANCE DE L"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"ACTIONS' ,
'aDA' => 'DECISION DE GERANCE' ,
'aDB' => 'DECISION DE L"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"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"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"ASSEMBLEE CONSTITUTIVE' ,
'aPD' => 'PROCES VERBAL D"ASSEMBLEE DU DIRECTOIRE' ,
'aPE' => 'PROCES VERBAL D"ASSEMBLEE GENERALE' ,
'aPF' => 'PROCES VERBAL D"ASSEMBLEE GENERALE EXTRAORDINAIRE' ,
'aPG' => 'PROCES VERBAL D"ASSEMBLEE GENERALE ORDINAIRE' ,
'aPH' => 'PROCES VERBAL D"ASSEMBLEE MIXTE' ,
'aPI' => 'PROCES VERBAL D"ASSEMBLEES ORDINAIRE ET EXTRAORDINAIRE' ,
'aPL' => 'PROCES VERBAL DIRIGEANT SOCIAL' ,
'aPM' => 'PROCES VERBAL DU CONSEIL D"ADMINISTRATION' ,
'aPN' => 'PROCES VERBAL DU CONSEIL DE SURVEILLANCE' ,
'aPO' => 'PROCES VERBAL DE LA GERANCE' ,
'aPT' => 'PROJET DE TRAITE D"APPORT' ,
'aPU' => 'PROJET DE FUSION' ,
'aPV' => 'PV D"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"ADMINISTRATION' ,
'aRU' => 'PROJET' ,
'aTA' => 'TRAITE' ,
'aTB' => 'TRAITE D"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 = '' ;
2011-05-18 10:05:53 +00:00
protected $login = '' ;
2011-05-11 13:38:14 +00:00
public function __construct ()
{
$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 );
}
$config = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/configuration.ini' , 'path' );
$this -> pathData = realpath ( $config -> data );
2011-05-19 06:35:04 +00:00
require_once 'common/curl.php' ;
2011-05-18 10:05:53 +00:00
require_once 'Scores/Utilisateur.php' ;
$user = new Utilisateur ();
$this -> login = $user -> getLogin ();
2011-05-11 13:38:14 +00:00
}
/**
* 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' ];
}
2011-05-17 11:57:28 +00:00
$fichier = $this -> pathData . '/pdf/' . $this -> acteFilename ( $siren , $ref );
2011-05-11 13:38:14 +00:00
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
2011-05-17 11:57:28 +00:00
$fichier = $this -> pathData . '/pdf/' . $this -> bilanFilename ( $siren , $ref );
2011-05-11 13:38:14 +00:00
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 );
2011-05-17 11:57:28 +00:00
$fichier = $this -> pathData . '/pdf/' . $this -> bilanFilename ( $siren , $refR );
2011-05-11 13:38:14 +00:00
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 );
2011-05-17 11:57:28 +00:00
$fichier = $this -> pathData . '/pdf/' . $this -> bilanFilename ( $siren , $refR );
2011-05-11 13:38:14 +00:00
if ( file_exists ( $fichier ) && filesize ( $fichier ) > 0 )
{
$mode = 'fichier' ;
$file_exist = true ;
$nomode = false ;
$ref = $refR ;
}
}
//Cas de fichier en acte (a faire disparaitre)
2011-05-17 11:57:28 +00:00
$fichier = $this -> pathData . '/pdf/acte-' . $siren . '-' . $ref . '.pdf' ;
2011-05-11 13:38:14 +00:00
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 ) ){
$firephp -> info ( 'Mode telechargement' );
$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
2011-05-17 11:57:28 +00:00
if ( file_exists ( $this -> pathData . '/pdf/' . $fichier ) ){
2011-05-11 13:38:14 +00:00
$acte [ 'url_access' ] = $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
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 {
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 );
}
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' )
{
2011-05-17 07:55:50 +00:00
$fichier = $this -> pathCacheXML . '/' . $type . '-' . $siren . '.xml' ;
2011-05-11 13:38:14 +00:00
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
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 )
{
$return = false ;
$path = $this -> pathData . '/pdf/' ;
if ( ! file_exists ( $path . $fichier ) || ! filesize ( $path . $fichier ) > 2000 )
{
$page = getUrl ( $url , '' , '' , '' , false , '' , '' , 0 , 1 );
if ( substr ( $page [ 'body' ], 0 , 4 ) != '%PDF' )
{
$page2 = parse_response ( $page [ 'body' ]);
$body = $page2 [ 'body' ];
} else {
$body = $page [ '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 ;
}
} else {
$return = $fichier ;
}
return $return ;
}
2011-05-18 10:05:53 +00:00
/**
* logfile
* @ param unknown_type $info
*/
function logfile ( $info )
{
2011-05-11 13:38:14 +00:00
$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 );
}
2011-05-18 10:05:53 +00:00
$preinfo = array ( date ( 'Y-m-d H:i:s' ), $this -> login );
2011-05-11 13:38:14 +00:00
$result = array_merge ( $preinfo , $info );
$fp = fopen ( $file , 'a' );
fputcsv ( $fp , $result , " \t " );
fclose ( $fp );
}
}