387 lines
14 KiB
PHP
387 lines
14 KiB
PHP
<?php
|
|
require_once realpath(dirname(__FILE__)).'/constantes.php';
|
|
|
|
/**
|
|
* Retourne le résultat du webservice infogreffe.
|
|
* @param string $req
|
|
* La demande à infogreffe en xml
|
|
* @return string
|
|
* Retourne le xml renvoyé par le webservice.
|
|
*/
|
|
function getInfogreffeXML($req){
|
|
global $firephp, $fichier;
|
|
|
|
$fp=@fopen( PATH_SITE.'/cache/infogreffe/' . $fichier.'.query' , 'w');
|
|
@fwrite($fp, $req);
|
|
@fclose($fp);
|
|
$url = INFOGREFFE_WS_URL;
|
|
$req = utf8_encode($req);
|
|
$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, $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);
|
|
$output = curl_exec($ch);
|
|
$xml = 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'>", '', $output);
|
|
$xml = str_replace('</return></ns0:getProduitsWebServicesXMLResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>','', $xml);
|
|
$firephp->log($xml,'XML');
|
|
|
|
/* Erreur violation encoding
|
|
$client2 = new SoapClient(null, array( 'location' => INFOGREFFE_WS_URL,
|
|
'uri' => INFOGREFFE_WS_URI,
|
|
'soap_version' => SOAP_1_1,
|
|
'trace' => 1,
|
|
'style' => SOAP_RPC,
|
|
'use' => SOAP_ENCODED,
|
|
));
|
|
|
|
try {
|
|
if (!file_exists( PATH_DATA.'/pdf/acte-'.$siren.'-'.$option.'.pdf'))
|
|
{
|
|
$fp=@fopen( PATH_DATA.'/infogreffe/xml/' . $fichier.'.query' , 'w');
|
|
@fwrite($fp, $req);
|
|
@fclose($fp);
|
|
$req=utf8_encode($req);
|
|
$firephp->log($req, 'XML');
|
|
$O=$client2->getProduitsWebServicesXML($req);
|
|
$xml=implode('', (array)$O);
|
|
$firephp->log($xml,'XML');
|
|
}
|
|
}catch (SoapFault $soapFault) {
|
|
$success=false;
|
|
$firephp->log($soapFault,'Fault');
|
|
$firephp->log($client2->__getLastRequest(),'Infogreffe Request');
|
|
$firephp->log($client2->__getLastResponse(),'Infogreffe Response');
|
|
$response=$client2->__getLastResponse();
|
|
$response=str_replace("<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'>",'', $response);
|
|
$xml=str_replace('</return></ns0:getProduitsWebServicesXMLResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>','', $response);
|
|
}
|
|
*/
|
|
return $xml;
|
|
}
|
|
|
|
/**
|
|
* Générer le xml pour la requete infogreffe.
|
|
* @param string $siren
|
|
* Le SIREN à
|
|
* @param string $idCommande
|
|
* L'identifiant pour la commande
|
|
* @param string $type
|
|
* Le type de document demandé
|
|
* @param string $vecteur
|
|
* Le vecteur de diffusion
|
|
* @param string $option
|
|
*
|
|
* @return string
|
|
* Retourne la chaine xml de requete.
|
|
*/
|
|
function requeteInfogreffe($siren, $idCommande, $type, $vecteur, $option){
|
|
global $firephp;
|
|
$firephp->log($siren, 'siren' );
|
|
$firephp->log($idCommande, 'idCommande');
|
|
$firephp->log($type, 'type');
|
|
$firephp->log($vecteur, 'vecteur');
|
|
$firephp->log($option, 'option');
|
|
|
|
$req = '<demande>'.
|
|
'<emetteur>'.
|
|
'<code_abonne>'.INFOGREFFE_WS_USER.'</code_abonne>'.//85009006
|
|
'<mot_passe>'.INFOGREFFE_WS_PASS.'</mot_passe>'.//
|
|
'<reference_client>G'.$idCommande.'</reference_client>'.
|
|
'<code_requete>'.
|
|
'<type_profil>A</type_profil>'.
|
|
'<origine_emetteur>IC</origine_emetteur>'.
|
|
'<nature_requete>C</nature_requete>'.
|
|
'<type_document>'.$type.'</type_document>'.// KB=Kbis, HQ=Histo, ST=Statut, AC=Acte, LE=Liste étab
|
|
'<type_requete>S</type_requete>'.
|
|
'<media>WS</media>'.
|
|
'<mode_diffusion>';
|
|
|
|
if ($type=='AC' && $option=='' && $vecteur=='XL')
|
|
$req.= '<mode type="T"/>'.
|
|
'<mode type="C"/>';
|
|
|
|
$req.= '<mode type="'.$vecteur.'"/>'.
|
|
'</mode_diffusion>'.
|
|
'</code_requete>'.
|
|
'</emetteur>'.
|
|
'<commande>'.
|
|
'<num_siren>'.$siren.'</num_siren>';
|
|
|
|
if ( ($type=='BS' || $type=='BI') && $option<>'' ) {
|
|
$tabRefActe = explode('-', $option);
|
|
$tabMil = explode('_', $tabRefActe[0]);
|
|
$req.= '<greffe>'.$tabRefActe[2].'</greffe>'.
|
|
'<dossier_millesime>'.$tabRefActe[3].'</dossier_millesime>'.
|
|
'<dossier_statut>'.$tabRefActe[4].'</dossier_statut>'.
|
|
'<dossier_chrono>'.$tabRefActe[5].'</dossier_chrono>'.
|
|
'<num_depot>'.$tabRefActe[6].'</num_depot>'.
|
|
'<date_cloture>'.WDate::dateT('Ymd','d/m/Y', $tabRefActe[1]).'</date_cloture>';
|
|
}elseif ( $type=='AC' && $option<>'' ) {
|
|
$tabRefActe = explode('-', $option);
|
|
$req.= '<greffe>'.$tabRefActe[2].'</greffe>'.
|
|
'<dossier_millesime>'.$tabRefActe[3].'</dossier_millesime>'.
|
|
'<dossier_statut>'.$tabRefActe[4].'</dossier_statut>'.
|
|
'<dossier_chrono>'.$tabRefActe[5].'</dossier_chrono>'.
|
|
'<num_depot>'.$tabRefActe[6].'</num_depot>'.
|
|
'<liste_actes>'.
|
|
'<acte num="'.$tabRefActe[7].'"/>'.
|
|
'</liste_actes>';
|
|
/* $optionUrl=$bilan['millesime'].'_'.$bilan['type_comptes'].'-'.$dateRef.'-'.$bilan['num_gest_greffe'].'-'.$bilan['num_gest_millesime'].'-'.$bilan['num_gest_statut'].'-'.$bilan['num_gest_chrono'].'-'.$bilan['num_depot'];*/
|
|
}
|
|
$req.='</commande></demande>';
|
|
return $req;
|
|
}
|
|
|
|
/**
|
|
* Parcours le document xml renvoyé par infogreffe .
|
|
* @param string $file
|
|
* Le chemin complet vers le fichier à analyser.
|
|
* @return array
|
|
* Retourne un tableau structuré des actes, etc,...
|
|
*/
|
|
function xmlArrayActes($file)
|
|
{
|
|
global $firephp;
|
|
$vecteurTinit = false;
|
|
$dom_object = new DomDocument2();
|
|
//TODO : Vérfier que le fichier existe
|
|
$dom_object->load($file);
|
|
$tabActes=array();
|
|
|
|
// create DOMXPath object with our DOMObject
|
|
$xpath = new Domxpath($dom_object);
|
|
$result = $xpath->query("//liste_depot_acte/depot_acte/.");
|
|
|
|
foreach ($result as $annonce) {
|
|
// N° Gestion
|
|
$title = $xpath->query ("num_gest/greffe", $annonce);
|
|
$num_gest_greffe=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_millesime", $annonce);
|
|
$num_gest_millesime=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_statut", $annonce);
|
|
$num_gest_statut=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_chrono", $annonce);
|
|
$num_gest_chrono=$title->item(0)->nodeValue;
|
|
// Siren
|
|
$title = $xpath->query ("num_siren", $annonce);
|
|
$num_siren = $title->item(0)->nodeValue;
|
|
// N° Dépôt
|
|
$title = $xpath->query ("num_depot", $annonce);
|
|
$num_depot = $title->item(0)->nodeValue;
|
|
// Date Dépôt
|
|
$title = $xpath->query ("date_depot", $annonce);
|
|
$date_depot = $title->item(0)->nodeValue;
|
|
|
|
// Actes
|
|
$actes = $xpath->query("acte/.", $annonce);
|
|
$nbVecteurT = $nbActes = 0;
|
|
|
|
foreach ($actes as $acte) {
|
|
$nbActes++;
|
|
// Date
|
|
$title = $xpath->query ("date_acte", $acte);
|
|
$date_acte=$title->item(0)->nodeValue;
|
|
// N°
|
|
$title = $xpath->query ("num_acte", $acte);
|
|
$num_acte=$title->item(0)->nodeValue;
|
|
// Type
|
|
$title = $xpath->query ("type_acte", $acte);
|
|
$type_acte=$title->item(0)->nodeValue;
|
|
// Type lib
|
|
$title = $xpath->query ("type_acte_libelle", $acte);
|
|
$type_acte_libelle=$title->item(0)->nodeValue;
|
|
// Nb Pages
|
|
$title = $xpath->query ("nbpages_acte", $acte);
|
|
$nbpages_acte=$title->item(0)->nodeValue;
|
|
// decision/nature
|
|
$title = $xpath->query ("decision/nature", $acte);
|
|
$decision_nature=$title->item(0)->nodeValue;
|
|
// decision/libelle
|
|
$title = $xpath->query ("decision/libelle", $acte);
|
|
$decision_libelle=$title->item(0)->nodeValue;
|
|
// mode_diffusion
|
|
$vecteurT = $vecteurC = false;
|
|
$vecteurs = $xpath->query("mode_diffusion/.", $acte);
|
|
foreach ($vecteurs as $vecteur) {
|
|
$title = $xpath->query ("mode[@type='T']", $vecteur);
|
|
if ($title->length==1) {
|
|
$vecteurT = true;
|
|
$vecteurTinit = true;
|
|
$nbVecteurT++;
|
|
}
|
|
$title = $xpath->query ("mode[@type='C']", $vecteur);
|
|
if ($title->length==1) $vecteurC = true;
|
|
}
|
|
|
|
if ($date_acte=='') $date=$date_depot; else $date=$date_acte;
|
|
// $index=0;
|
|
// while (isset($tabActes[$date.'.'.$index])) $index++;
|
|
|
|
$tabActes[''.$date.'-'.$num_depot.'-'.$num_acte.'-'.$type_acte] = array(
|
|
'type'=>$type_acte_libelle,
|
|
'decisions'=>$decision_libelle,
|
|
'depot_num'=>$num_depot,
|
|
'depot_date'=>$date_depot,
|
|
'num_gest_greffe'=>$num_gest_greffe,
|
|
'num_gest_millesime'=>$num_gest_millesime,
|
|
'num_gest_statut'=>$num_gest_statut,
|
|
'num_gest_chrono'=>$num_gest_chrono,
|
|
'num_depot'=>$num_depot,
|
|
'num_acte'=>$num_acte,
|
|
'type_acte'=>$type_acte,
|
|
'vecteurT'=>$vecteurT,
|
|
'vecteurC'=>$vecteurC,
|
|
);
|
|
}
|
|
}
|
|
$firephp->log($tabActes, 'tabActes');
|
|
$return = array( 'Actes' => $tabActes, 'vecteurTinit' => $vecteurTinit, 'nbVecteurT' => $nbVecteurT, 'nbActes' => $nbActes );
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Parcours le document xml renvoyé par infogreffe .
|
|
* @param string $file
|
|
* Le chemin complet vers le fichier à analyser.
|
|
* @param string $query
|
|
* La requete xpath de départ pour analyser le document
|
|
* @return array
|
|
* Retourne un tableau structuré des bilans, etc,...
|
|
*/
|
|
function xmlArrayBilans($file, $query)
|
|
{
|
|
global $firephp;
|
|
$dom_object = new DomDocument2();
|
|
$dom_object->load($file);
|
|
$tabActes=array();
|
|
$xpath = new Domxpath($dom_object);
|
|
$result = $xpath->query($query);
|
|
|
|
foreach ($result as $annonce) {
|
|
// N° Gestion
|
|
$title = $xpath->query ("num_gest/greffe", $annonce);
|
|
$num_gest_greffe=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_millesime", $annonce);
|
|
$num_gest_millesime=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_statut", $annonce);
|
|
$num_gest_statut=$title->item(0)->nodeValue;
|
|
$title = $xpath->query ("num_gest/dossier_chrono", $annonce);
|
|
$num_gest_chrono=$title->item(0)->nodeValue;
|
|
// Siren
|
|
$title = $xpath->query ("num_siren", $annonce);
|
|
$num_siren=$title->item(0)->nodeValue;
|
|
// N° Dépôt
|
|
$title = $xpath->query ("num_depot", $annonce);
|
|
$num_depot=$title->item(0)->nodeValue;
|
|
// Date clôture
|
|
$title = $xpath->query ('date_cloture', $annonce); // 2005-12-31
|
|
$date_cloture=$title->item(0)->nodeValue;
|
|
// liasse
|
|
$title = $xpath->query ('liasse', $annonce); // 2033
|
|
$liasse=$title->item(0)->nodeValue;
|
|
// type de comptes
|
|
$title = $xpath->query ('type_comptes', $annonce); // sociaux
|
|
$type_comptes=$title->item(0)->nodeValue;
|
|
// millesime
|
|
$title = $xpath->query ('millesime', $annonce); // 2005
|
|
$millesime=$title->item(0)->nodeValue;
|
|
// url_acces
|
|
$title = $xpath->query ('url_acces', $annonce);
|
|
$url_acces=$title->item(0)->nodeValue;
|
|
if (substr($url_acces,0,5)=='null/') $url_acces='http://webservices.infogreffe.fr/'.substr($url_acces,5,strlen($url_acces)-5);
|
|
|
|
// mode_diffusion
|
|
$vecteurT = $vecteurC = false;
|
|
$vecteurs = $xpath->query("mode_diffusion/.", $annonce);
|
|
foreach ($vecteurs as $vecteur) {
|
|
$title = $xpath->query ("mode[@type='T']", $vecteur);
|
|
if ($title->length==1) $vecteurT=true;
|
|
$title = $xpath->query ("mode[@type='C']", $vecteur);
|
|
if ($title->length==1) $vecteurC=true;
|
|
}
|
|
|
|
$tabActes[$millesime.'-'.$date_cloture.'-'.$type_comptes]=array(
|
|
'num_gest_greffe'=>$num_gest_greffe,
|
|
'num_gest_millesime'=>$num_gest_millesime,
|
|
'num_gest_statut'=>$num_gest_statut,
|
|
'num_gest_chrono'=>$num_gest_chrono,
|
|
'num_depot'=>$num_depot,
|
|
'liasse'=>$liasse,
|
|
'millesime'=>$millesime,
|
|
'type_comptes'=>$type_comptes,
|
|
'date_cloture'=>$date_cloture,
|
|
'url_acces'=>$url_acces,
|
|
'vecteurT'=>$vecteurT,
|
|
'vecteurC'=>$vecteurC,
|
|
);
|
|
}
|
|
$firephp->log($tabActes, 'tabActes');
|
|
$return = array( 'Actes' => $tabActes );
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Envoi un mail informant de la commande de pièce.
|
|
* @param string $email
|
|
* L'adresse email qui doit recevoir la pièce.
|
|
* @param string $siren
|
|
* Le siren de l'entité
|
|
* @param string $type
|
|
* Le type de demande (asso, greffe)
|
|
* @return array
|
|
* Retourne un tableau structuré des bilans, etc,...
|
|
*/
|
|
function mailCommande($email, $siren, $type){
|
|
//On vérifie l'email
|
|
if (preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#',$email)) {
|
|
//Suivant le type de commande
|
|
switch($type){
|
|
case 'asso':
|
|
$subject = "Commande de statuts associations pour $siren à ".$email;
|
|
break;
|
|
case 'greffe':
|
|
$subject = "Commande de pièces pour $siren à ".$email;
|
|
break;
|
|
}
|
|
require_once 'mail/mail.php';
|
|
sendMail(
|
|
$subject,
|
|
'REQUEST='.EOL.print_r($_REQUEST,true).'EOL'.
|
|
'SERVER='.EOL.print_r($_SERVER,true).'EOL'.
|
|
'SESSION='.EOL.print_r($_SESSION,true).'EOL'.
|
|
'ENV='.EOL.print_r($_ENV,true).'EOL'.
|
|
'tabInfo='.print_r($tabInfo,true),
|
|
//From
|
|
array(
|
|
'email' => 'contact@scores-decisions.com',
|
|
'name' => 'Contact',
|
|
),
|
|
//TO
|
|
array(
|
|
0 => array(
|
|
'email'=> 'contact@scores-decisions.com',
|
|
'name' => 'Contact'
|
|
)
|
|
)
|
|
);
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
class DomDocument2 extends DOMDocument {
|
|
function getValueFromTag($tagName) {
|
|
$items=$this->getElementsByTagName($tagName);
|
|
foreach ($items as $item) {
|
|
|
|
return utf8_decode($item->nodeValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|