');
$emetteur = $xml->addChild('emetteur');
$emetteur->addChild('code_abonne', INFOGREFFE_WS_USER);
$emetteur->addChild('mot_passe', INFOGREFFE_WS_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;
infogreffe_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]);
$firephp->log($ref, 'ref');
$firephp->log($num_actes, 'ref');
$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;
}
infogreffe_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(INFOGREFFE_PATH.$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 infogreffe_getproduitsxml($xml)
{
$req = utf8_encode($xml);
$post = ''.$req.'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, INFOGREFFE_WS_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 unknown_type $xml
* @return unknown_type
*/
function infogreffe_parsexml_actes($xml)
{
global $firephp;
$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);
$firephp->log($actes, 'actes');
return $actes;
}
/**
* Formate la chaine xml de commande d'un acte en mode téléchargement
* @param string $xml
* @return array
*/
function infogreffe_parsexml_actes_t($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 infogreffe_parsexml_bilans($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 infogreffe_parsexml_bilans_t($xml)
{
global $firephp;
$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 );
}
function infogreffe_parsexml_bilans_c(){}
/**
* Formatte le tableau complet des actes pour envoyer seulement les informations nécessaires
* @param $actes
* @return unknown_type
*/
function infogreffe_format_actes($actes)
{
global $firephp;
$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 = infogreffe_acte_ref($acte, $depot);
$fichier = PATH_DATA.'/pdf/'.infogreffe_acte_filename($depot['num_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']); }
$firephp->log($ref, 'ref');
//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 = infogreffe_acte_ref($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 || hasModeEdition() ) )
{
$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']);
}
$firephp->log($tabActes, 'actes');
return $tabActes;
}
function infogreffe_format_actes_t($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 infogreffe_format_bilans($bilans)
{
global $firephp;
//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 = infogreffe_bilan_ref($bilan);
$fichier = PATH_DATA.'/pdf/'.infogreffe_bilan_filename($bilan['num_siren'],$ref);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
}
//2eme cas de fichier en acte (a faire disparaitre)
$fichier = PATH_DATA.'/pdf/acte-'.$bilan['num_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 || hasModeEdition() ) )
{
$mode = 'courrier';
}
$firephp->log($mode,$bilan['millesime']);
//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)
{
global $firephp;
$inErreur = false;
$error = '';
$result = array();
if(empty($typeCommande)) $typeCommande = 'XL';
$firephp->log($typeCommande,'typeCommande');
$type = 'AC'; // Type actes
if($typeCommande=='XL')
{
$fichier = INFOGREFFE_PATH.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if (infogreffe_erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || infogreffe_filetimeover($fichier) || $inErreur){
$xmlRequete = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_getproduitsxml($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!infogreffe_erreur($xmlReponse))
{
//Tableau d'actes
$actes = infogreffe_parsexml_actes($xmlReponse);
$result = infogreffe_format_actes($actes);
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$option = explode('-', $ref);
FB::log($option, 'option');
$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 = INFOGREFFE_PATH.$type.'-'.$siren.'-'.$fichierOption.'.xml';
FB::log($fichier);
if( !file_exists($fichier) || infogreffe_filetimeover($fichier) ){
$firephp->info('Mode telechargement');
$xmlRequete = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_getproduitsxml($xmlRequete);
file_put_contents($fichier, $xmlReponse);
$firephp->log($xmlRequete, 'Telechargement requete xml');
$firephp->log($xmlReponse, 'Telechargement reponse xml');
}else{
$xmlReponse = file_get_contents($fichier);
}
if(!infogreffe_erreur($xmlReponse))
{
$items = infogreffe_parsexml_actes_t($xmlReponse);
$items = infogreffe_format_actes_t($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 = infogreffe_acte_filename($siren, $ref);
$firephp->log($fichier, 'fichier');
//Si le fichier existe, on modifie l'url
if( file_exists(PATH_DATA.'/pdf/'.$fichier) ){
$acte['url_access'] = $fichier;
}else{
$fichierdl = infogreffe_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 = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_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(infogreffe_erreur($xmlReponse))
{
$error = infogreffe_erreur_msg($xmlReponse);
}
return array('error' => $error , 'result' => $result );
}
/**
* Retourne si le fichier est périmé ou non
* @param string $fichier
* @return boolean
*/
function infogreffe_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)+INFOGREFFE_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 infogreffe_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 infogreffe_erreur_msg($xml)
{
$errNum = '';
$errMsg = '';
if (!empty($xml)){
global $tabErrInfoGref;
$doc = new DOMDocument();
$load = $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING);
FB::log($load, 'erreur_msg');
if (!$load) {
FB::info('Test erreur infogreffe');
$tmp = explode('-', $xml);
$errNum = $tmp[0]*1;
$errMsg = $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.';
}
}
}
}
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 = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_getproduitsxml($xmlRequete);
//Gestion du retour infogreffe
if(infogreffe_erreur($xmlReponse))
{
$error = infogreffe_erreur_msg($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)
{
global $firephp;
$inErreur = false;
$error = '';
$result = '';
if(empty($typeCommande)) $typeCommande = 'XL';
$type = 'BI';
if($typeCommande=='XL')
{
$fichier = INFOGREFFE_PATH.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if (infogreffe_erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || infogreffe_filetimeover($fichier) || $inErreur){
$xmlRequete = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_getproduitsxml($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!infogreffe_erreur($xmlReponse)){
$bilans = infogreffe_parsexml_bilans($xmlReponse);
$firephp->log($bilans, 'bilan avant traitement');
$result = infogreffe_format_bilans($bilans);
$firephp->log($result, 'bilan après traitement');
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$firephp->info('Mode telechargement');
$firephp->info($ref,'ref');
$xmlRequete = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_getproduitsxml($xmlRequete);
if(!infogreffe_erreur($xmlReponse))
{
$items = infogreffe_parsexml_bilans_t($xmlReponse);
$result = array();
$bilan = $items['bilan'];
$fichier = infogreffe_bilan_filename($siren, $ref);
$fichierdl = infogreffe_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 = infogreffe_requetexml($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = infogreffe_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(infogreffe_erreur($xmlReponse))
{
$error = infogreffe_erreur_msg($xmlReponse);
}
return array( 'error' => $error , 'result' => $result );
}
function infogreffe_acte_ref($acte, $depot, $multi = false)
{
global $firephp;
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']); }
$firephp->log($acte['type_acte'],'type_acte');
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 infogreffe_acte_filename($siren, $ref)
{
return 'acte-'.$siren.'-'.$ref.'.pdf';
}
function infogreffe_bilan_ref($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 infogreffe_bilan_filename($siren, $ref)
{
global $firephp;
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 infogreffe_dl($fichier, $url)
{
global $firephp;
$return = false;
$path = PATH_DATA.'/pdf/';
if(!file_exists($path.$fichier) || !filesize($path.$fichier)>2000)
{
$firephp->log($url, 'url');
$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_DATA.'/pdf/'.$fichier, $body);
$return = $fichier;
}
}else{
$return = $fichier;
}
return $return;
}
function infogreffe_logfile($info){
$file = PATH_DATA.'/log/infogreffe.log';
if( !file_exists($file) ){
$entetes = array('siren', 'idCommande', 'type', 'vecteur', 'option');
$fp = fopen($file, 'w');
fputcsv($fp, $entete);
fclose($fp);
}
$fp = fopen($file, 'a');
fputcsv($fp, $info);
fclose($fp);
}