"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 = ''; 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->profil->path->data); require_once 'common/curl.php'; } /** * 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(''); $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->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 = ''.$req.''; $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("", '', $reponseXML); $reponseXML = str_replace('','', $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) { $tabActes[$key]['num_depot'] = $depot['num_depot']; $tabActes[$key]['date_depot'] = WDate::dateT('Y-m-d', 'd/m/Y', $depot['date_depot']); //Pour chaque acte dans le depot foreach($depot['depot'] 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', $depot['date_depot']); } //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.$this->actePath($ref).$this->acteFilename($siren,$ref); Zend_Registry::get('firebug')->info($fichier); if( file_exists($fichier) && filesize($fichier)>0 ) { Zend_Registry::get('firebug')->info('Fichier exist'); $mode = 'fichier'; $file_exist = true; }*/ $actesM = new Application_Model_ActesFiles(); $sql = $actesM->select() ->where('siren=?', $siren) ->where('date=?', $date) ->where('num=?', $acte['num_acte']) ->where('file LIKE "acte-'.$siren.'-%-'.$date.'-%-'.$depot['num_depot'].'-'.$acte['num_acte'].'.pdf"'); Zend_Registry::get('firebug')->info('Detect fichier : '.$sql->__toString()); $result = $actesM->fetchRow($sql); if ( null !== $result ) { Zend_Registry::get('firebug')->info($result); $fichier = $this->pathData.$this->actePath($ref).$result->file; Zend_Registry::get('firebug')->info($fichier); if ( file_exists($fichier) ) { Zend_Registry::get('firebug')->info($acte); if ($result->type != $acte['type_acte'] && $result->type2 == '') { Zend_Registry::get('firebug')->info('Update Database'); //Add to the database try { $actesM->update(array( 'type2' => $acte['type_acte'], 'type_libelle' => $acte['type_acte_libelle'], 'num_depot' => $depot['num_depot'], 'date_depot' => WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']) ), 'id='.$result->id); } catch (Zend_Exception $e) { Zend_Registry::get('firebug')->info($e->getMessage()); } } else { try { $actesM->update(array( 'type_libelle' => $acte['type_acte_libelle'], 'num_depot' => $depot['num_depot'], 'date_depot' => WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']) ), 'id='.$result->id); } catch (Zend_Exception $e) { Zend_Registry::get('firebug')->info($e->getMessage()); } } $ref = str_replace('.pdf', '',substr($result->file,15)); $mode = 'fichier'; $file_exist = true; } /*else { //As type_acte change, try to detect file by a pattern //acte-388048308-ACSSPRH-20090630-9201-00-B-01374-30975-02.pdf $filePattern = $this->acteFilename($siren,$ref); $posBegin = 15; $posEnd = strpos($filePattern, '-', $posBegin); $filePattern = substr_replace($filePattern, '*', $posBegin, $posEnd-$posBegin); Zend_Registry::get('firebug')->info($filePattern); $detectedFiles = glob($this->pathData.$this->actePath($ref).$filePattern); if ($detectedFiles!==false && count($detectedFiles)>0) { $ref = str_replace('.pdf', '',substr(basename($detectedFiles[0]),15)); $mode = 'fichier'; $file_exist = true; } }*/ } //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; } } 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.$this->bilanPath($ref).$this->bilanFilename($siren,$ref); Zend_Registry::get('firebug')->info('Fichier : '.$fichier); 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.$this->bilanPath($refR).$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.$this->bilanPath($refR).$this->bilanFilename($siren,$refR); if( file_exists($fichier) && filesize($fichier)>0 ) { $mode = 'fichier'; $file_exist = true; $nomode = false; $ref = $refR; } } //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']; $path = $this->actePath($ref); $fichier = $this->acteFilename($siren, $ref); $fichierdl = $this->dl($path.$fichier, $acte['url_acces']); //Add to the database $actesM = new Application_Model_ActesFiles(); if ( false !== $fichierdl) { $actesM->insert(array( 'siren' => $siren, 'type' => $acte['type_acte'], 'date' => $date, 'num' => $acte['num_acte'], 'num_depot' => $result['num_depot'], 'date_depot' => WDate::dateT('Y-m-d', 'Ymd', $result['date_depot']), 'file' => $fichierdl, )); } $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']; $path = $this->bilanPath($ref); $fichier = $this->bilanFilename($siren, $ref); $fichierdl = $this->dl($path.$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 actePath($ref) { preg_match('/^(.*)-([0-9]{8})-/', $ref, $matches); $type = $matches[1]; $date = $matches[2]; $annee = substr($date,0,4); $mois = substr($date,4,2); return '/greffes/actes/'.$annee.'/'.$mois.'/'; } 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) { preg_match('/^([0-9]{4})_([a-z]{0,})-([0-9]{8})/', $ref, $matches); $type = $matches[2]; $dateCloture = $matches[3]; if ($type=='') { $type = 'sociaux'; } return 'bilan-'.$siren.'-'.$type.'-'.$dateCloture.'.pdf'; } function bilanPath($ref) { preg_match('/^([0-9]{4})_([a-z]{0,})-([0-9]{8})/', $ref, $matches); $type = $matches[2]; $dateCloture = $matches[3]; if ($type=='') { $type = 'sociaux'; } return '/greffes/bilans/'.$type.'/'.substr($dateCloture,0,4).'/'; } /** * 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.'/'; $wholePath = dirname($fichier); if ( !is_dir($path.$wholePath) ) { mkdir($path.$wholePath, 0777, true); } 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 if ( file_put_contents($path.$fichier, $body) ) { $return = basename($fichier); $erreurDL = ''; } else { $return = false; $erreurDL = "Erreur lors de l'ecriture du fichier"; } } 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 = basename($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); } $user = new Scores_Utilisateur(); $preinfo = array(date('Y-m-d H:i:s'), $user->getLogin()); $result = array_merge($preinfo, $info); $fp = fopen($file, 'a'); fputcsv($fp, $result, "\t"); fclose($fp); } }