backoffice/includes/a_trier/automate.class.php
2011-06-21 13:28:10 +00:00

1016 lines
46 KiB
PHP

<?
// include('http.class.php');
class Automate {
var $tab_produits=array('baicsv'=>'');
var $server_url=false;
var $session_id=false;
var $session_error=false;
var $connected=false;
var $code_abonne=false;
var $http;
var $retour='array';
var $debug=true;
var $debugPrint=false;
var $tabDebug=array();
function Automate($retour='array', $debug=false) {
//$this->Http();
// $this->http=&new Http();
$this->setRetour($retour);
$this->setDebug($debug);
}
function setRetour($retour){
$this->retour=$retour;
}
function setDebug($debug){
$this->debug=$debug;
}
function trace($str) {
$message=date('Y/m/d H:i:s') .' - '. $str;
if ($this->debug==true) {
array_push($this->tabDebug, $message);
if ($this->debugPrint==true){
echo $message . '<br/>';
flush();}
}
}
function printTrace() {
print_r($this->tabDebug);
}
function getLastError() {
return $this->tabDebug[count($this->tabDebug)-1];
}
function getPage($url) {
$this->trace('URL demandée : "'. $url .'"');
return file_get_contents ($url);
}
function getServerUrl() {
if (!$this->server_url) {
// On récupère le site automate 1 ou 2
$str= $this->getPage('http://automate.bil.fr/');
//$str=$this->get('http://automate.bil.fr/');
//echo $str;exit();
$tab=explode('Accès Hyperbil ',$str);
$tab=explode('</', $tab[1]);
$this->server_url=trim($tab[0]).'/';
//$this->server_url='http://automate1.bil.fr/';
}
$this->trace('URL du serveur BIL : '. $this->server_url);
//exit();
return $this->server_url;
}
function getSessionId() {
if (!$this->session_id) {
$str= $this->getPage($this->server_url .'cgi-bin/h2r?');
$tab=explode(';',$str);
$this->session_id=$tab[1];
}
$this->trace('ID de session provisoire : '. $this->session_id);
$this->trace($str);
//exit();
return $this->session_id;
}
function connect($user, $password) {
if (!$this->connected) {
if (!$this->session_id) $this->getSessionId($this->getServerUrl());
$this->code_abonne=$user;
$str=$this->getPage ( $this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilaboncsv&QPABO='. $user .'&QPPAS='. $password);
$tab=explode(';',$str);
if ( $tab[0]!=$user || $tab[1]!=1 ) {
$this->session_id=trim(strip_tags($tab[2]));
if (strpos($this->session_id, 'invalide')>0)
{
$this->session_error=$tab[3].' '.$tab[2];
$this->trace('Erreur de connexion : '. $this->session_error);
return false;
}else{
$this->connected=true;
$this->trace('Connexion OK. ID de session définitif : '. $this->session_id);
//exit();
return $this->session_id;
}
} else {
$this->session_error=$tab[3];
$this->trace('Erreur de connexion : '. $this->session_error);
return false;
}
}
$this->trace('Connexion déjà existante !');
return true;
}
function getListeProduits($siren) {
if ($this->connected) {
$str=$this->getPage ($this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilbaicsv&QIABO='. $this->code_abonne .'&QISIR='. $siren.'&CT=texte/separateur:point-virgule');
//$tab=explode(';',$str);
if ($this->retour=='array')
return $this->csv2array($str, $siren);
elseif ($this->retour=='csv')
return $str;
}
}
function getFicheIdentite($siren, $nic='', $type='', $numentrep='', $refClient='', $retour='') {
if ($retour=='') $retour=$this->retour;
if ($type=='') $typeFiche='';
else $typeFiche=$type;
/*
hbilsoid Requête IDENTITE FORMAT SO2000
hbilsoids
hbilsoidci Fiche identité Complete INSEE SO2000
hbilsoidc Fiche identité Complete SO2000
*/
if ($this->connected) {
$str=strip_tags($this->getPage ($this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilsoid'. $typeFiche .'&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&QINIC='. $nic .'&CT=text/plain'));
//$tab=explode(';',$str);
if ($retour=='array')
return $this->so2array('ID', $str);
elseif ($retour=='csv')
return array2csv($this->so2array('ID', $str));
else
return $str;
}
}
function getDatesClotures($siren, $numentrep='', $retour='') {
if ($retour=='') $retour=$this->retour;
if ($this->connected) {
$str=$this->getPage($this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilbillcsv&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&CT=texte/separateur:point-virgule' );
$this->trace('Dates clotures CSV Automate = "'.$str.'"');
$ret=$this->csv2array($str, $siren);
if ($retour=='array')
return $ret;
elseif ($retour=='csv')
return $ret[0]['RISIR'] .';'.
$ret[0]['RETOUR'] .';'.
$ret[0]['RINUME'] .';'.
$ret[0]['RBDTCN'] .';'.
$ret[0]['RDDURN'] .';'.
$ret[1]['RBDTCN'] .';'.
$ret[1]['RDDURN'] .';'.
$ret[2]['RBDTCN'] .';'.
$ret[2]['RDDURN'] .";\n";
// return strip_tags(sstr_replace("\n", '', $str))."\n";
}
}
function getBilan($siren, $dateCloture='', $numentrep='', $retour='') {
if ($retour=='') $retour=$this->retour;
if ($this->connected) {
if ($dateCloture=='') $dateCloture=date('d/m/Y');
$str=$this->getPage($this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilsobi&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&QIDLIM='. $dateCloture .'&CT=text/plain' );
$this->trace('Bilan Automate = "'.$str.'"');
if ($retour=='array')
return $this->so2array('BI', $str);
elseif ($retour=='csv')
return $str;
// return strip_tags(sstr_replace("\n", '', $str))."\n";
}
}
function getSolvaBil($siren, $niveauSolvaBil=3, $encours='', $refClient='', $solvaBilPlus='', $format='csv', $dateCalcul='') {
if ($this->connected) {
if ($refClient=='') $refClient='Automate';
$url=$this->server_url .'cgi-bin/solv_lst?magic='. $this->session_id .'&nb=1&QIABO='. $this->code_abonne .'&QISIR1='. $siren .'&QIREFC1='. $refClient .'&QIENCO1='. $encours .'&niv='. $niveauSolvaBil . '&format='. $format . '&QISSTY='. $solvaBilPlus;
$str=$this->getPage($url);// .'&QNDOBS='. $dateCalcul);
echo "Demande=$url\r\n";
echo "Reponse=$str\r\n";
$this->trace('SolvaBil CSV Automate = "'.$str.'"');
if ($this->retour=='array')
return $this->csv2array($str, $siren);
elseif ($this->retour=='csv')
//return strip_tags($str);
return strip_tags($str);
}
}
function getActionnaires($siren, $numentrep='') {
if ($this->connected) {
$str=$this->getPage($this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilactlcsv&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&QINUME='. $numentrep .'&CT=texte/separateur:point-virgule' );
$this->trace('Actionnaires CSV Automate = "'.$str.'"');
if ($this->retour=='array')
return $this->csv2array($str, $siren);
elseif ($this->retour=='csv')
return strip_tags($str);
}
}
function getRecherche($siren='', $nic='', $raisonSociale='', $prenom='', $numRue='', $nomRue='', $codePostal='', $ville='', $tel='', $ape='') {
if ($this->connected) {
$url=$this->server_url .'cgi-bin/h2r?magic='. $this->session_id .'&rq=hbilentlcsv&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&CT=texte/separateur:point-virgule' .
'&QINIC='. $nic .
'&QINOM='. $raisonSociale .
'&QIPRN='. $prenom .
'&QINRU='. $numRue .
'&QIRUE='. $nomRue .
'&QICP=' . $codePostal .
'&QIVIL='. $ville .
'&QITEL='. $tel .
'&QIAPE='. $ape ;
$str= $this->getPage($url);
$tab=$this->csv2array($str);
return $tab;
}
}
function getAnnoncesLegales($siren, $numentrep='', $sansLeTexte='a') {
if ($this->connected) {
//http://automate.bil.fr/cgi-bin/h2r?CT=text/plain&magic=XXXXX-XX-XXXXX &rq=hbilsoann& QIABO=999999999&QISIR=999999999&QINUME=999999999&QIREFC=XXXXXXXXXXXX
$str=$this->getPage($this->server_url .'cgi-bin/h2r?CT=text/plain&magic='. $this->session_id .'&rq=hbilsoan'.$sansLeTexte.'&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&QINUME='. $numentrep .'&QIREFC=XXXXXXXXXXXx');
$this->trace('Annonces Legales SO2000 Automate = "'.$str.'"');
//echo $numentrep .' - '. $str;
if ($this->retour=='array')
return $this->csv2array($str, $siren);
elseif ($this->retour=='csv')
return strip_tags($str);
}
}
function getDirigeants($siren, $numentrep='') {
if ($this->connected) {
//http://automate.bil.fr/cgi-bin/h2r?CT=text/plain&magic=XXXXX-XX-XXXXX &rq=hbilsoann& QIABO=999999999&QISIR=999999999&QINUME=999999999&QIREFC=XXXXXXXXXXXX
$str=$this->getPage($this->server_url .'cgi-bin/h2r?CT=text/plain&magic='. $this->session_id .'&rq=hbilsodir&QIABO='. $this->code_abonne .'&QISIR='. $siren .'&QINUME='. $numentrep .'&QIREFC=XXXXXXXXXXXx');
$this->trace('Dirigeants SO2000 Automate = "'.$str.'"');
//echo $numentrep .' - '. $str;
if ($this->retour=='array')
return $this->csv2array($str, $siren);
elseif ($this->retour=='csv')
return strip_tags($str);
}
}
function so2array($ficheSO2000, $str) {
switch ($ficheSO2000){
case 'ID':
$tab_ret=array(
'SONABO'=>trim(substr($str, 0, 9)), // N°ABONNE (I) ********************
'SONUME'=>trim(substr($str, 9, 9)), // N°ENTREPRISE (I) * FICHE COMPLETE *
'SONUS' =>trim(substr($str, 18, 9)), // N°UFS (I) * +EXTENSION INSEE * SONUS_V
'SOANN' =>trim(substr($str, 27, 9)), // N° ANNONCE (I) ********************
'SORCS' =>trim(substr($str, 36, 14)), // N°SIRET (I)
'SOPRD' =>trim(substr($str, 50, 2)), // CODE PRODUIT (I) SOPRD_N
'SOSEQ' =>trim(substr($str, 52, 5)), // SEQUENCE DANS GROUPE(I) SOSEQ_N
'SODTEN'=>trim(substr($str, 57, 8)), // DATE ENVOI (I) AAAAMMJJ SODTEN_D
'SOTENR'=>trim(substr($str, 65, 1)), // CODE ENREGISTREMENT (I)
'SOTYP' =>trim(substr($str, 66, 3)), // TYPE STRUCTURE (I) "ID " SOTYP_V
'SOCONF'=>trim(substr($str, 69, 1)), // Code confirmé (I)
'SOREFC'=>trim(substr($str, 70, 30)), // REFERENCE CLIENT (I) SOREFC_X
'SOORIG'=>trim(substr($str, 100, 1)), // Code Origine BIL (S)
'SOSDTX'=>trim(substr($str, 101, 1)), // INDIC. QUALITE (S)
'SOMAJ' =>trim(substr($str, 102, 9)), // TEMOIN DE MAJ (S) SOMAJ_N
'SONOM' =>trim(substr($str, 111, 60)), // RAISON SOCIALE p/1 (I) (INSEE=40) SONOM_X
'SONOM2'=>trim(substr($str, 171, 30)), // RAISON SOCIALE p/2 (I) (INSEE=BLANC) SONOM_N
'SOSIG' =>trim(substr($str, 201, 30)), // SIGLE (S) (INSEE=20) SOSIG_N
'SOENS' =>trim(substr($str, 231, 60)), // ENSEIGNE (S) (INSEE=40) SOENS_X
'SONRU' =>trim(substr($str, 291, 4)), // N°DS LA RUE (S)
'SOBTQ' =>trim(substr($str, 295, 1)), // B=BIS T=TER Q=QUAT. (S)
'SORUE' =>trim(substr($str, 296, 33)), // NOM DE LA RUE (S)
'SOCOM' =>trim(substr($str, 329, 32)), // LIBELLE COMMUNE (I)
'SOCP' =>trim(substr($str, 361, 5)), // CODE POSTAL (I) SOCP_N
'SOCPLA'=>trim(substr($str, 366, 30)), // COMPLEMENT ADRESSE (S) SOCPLA_N
'SODTCT'=>trim(substr($str, 396, 8)), // DATE CREATION ENTREP (S) AAAAMMJJ DTCREE_D
'SOSTAE'=>trim(substr($str, 404, 1)), // STATUT ETABLISSEMENT (S) Table INS
'SOCJEN'=>trim(substr($str, 405, 4)), // CATEG JURIDIQUE (S) Table INC SOCJEN_X
'SOTSEX'=>trim(substr($str, 409, 1)), // SEXE SI PP (S) Table IMF
'SONBET'=>trim(substr($str, 410, 4)), // NOMBRE ETAB. (S) NBRETE_C
'SOAPET'=>trim(substr($str, 414, 4)), // NAF ENTREPRISE (S) Table APE
'SOAPFT'=>trim(substr($str, 418, 4)), // CODE "FAMILLE" ENTR. (C) Table APY SOAPFT_N
'SOAPEE'=>trim(substr($str, 422, 4)), // NAF ETABLISSEMT (S) Table APE
'SOAPFE'=>trim(substr($str, 426, 4)), // CODE "FAMILLE" ETAB. (C) Table APY SOAPFE_N
'SORLJ' =>trim(substr($str, 430, 1)), // Proc.Collective (C) "O"=RLJ SORLJ_N
'SOCAPM'=>trim(substr($str, 431, 2)), // MONNAIE (C) Table BDV SOCAPM_N
'SOCAPI'=>trim(substr($str, 433, 13)), // MONTANT CAPITAL (C) CAPITE_X
'SOEFF' =>trim(substr($str, 446, 7)), // EFFECTIF (+Ext) blanc=non précisé SOEFF_N
'SORCE' =>trim(substr($str, 453, 9)), // N°RC (C) RCE_X
'SOETEL'=>trim(substr($str, 462, 10)), // TELEPHONE SOURCE BIL (S)
'SOEFAX'=>trim(substr($str, 472, 10)), // FAX SOURCE BIL (S)
'SOEWEB'=>trim(substr($str, 482, 40)), // SITE WEB SOURCE BIL (S) non encore renseigné SOEWEB_N
'SOEDRQ'=>trim(substr($str, 522, 3)), // QUALITE DIRIGEANT (C) source BIL
'SOEDRN'=>trim(substr($str, 525, 60)), // NOM-prénom DIRIGEANT (C) source BIL SOEDRN_X
'SDEDRD'=>trim(substr($str, 585, 8)), // DATE NAISSANCE DIRIG (C) AAAAMMJJ SOEDRD_D
'SOEDRL'=>trim(substr($str, 593, 35)), // LIEU NAISSANCE DIRIG (C) source BIL SOEDRL_N
'SORSNO'=>trim(substr($str, 628, 2)), // NOTE SUR 20 (+sc) BLANC=PAS DE NOTE
'SORSEC'=>trim(substr($str, 630, 7)), // ENCOURS EN KILO (+sc) BLANC=PAS D ENCOURS
'SORSCP'=>trim(substr($str, 637, 1)), // CODE PAIEMENT (+sc) Table S53
'SORSSF'=>trim(substr($str, 638, 1)), // CODE SITU FINANCERE (+sc) Table S53
'SORSCA'=>trim(substr($str, 639, 1)), // CODE AVIS (+sc) Table S53
'SORSMO'=>trim(substr($str, 640, 3)), // MONNAIE LIVRAISON ENCOURS (+sc) Table BDV
'SOSICO'=>trim(substr($str, 643, 6)), // CODE SICOVAM (C) STE COTEE EN BOURSE SOSICO_N
'SOTYPM'=>trim(substr($str, 649, 2)), // TYPE DE MARCHE (C) STE COTEE EN BOURSE SOTYPM_N
'SOISIN'=>trim(substr($str, 651, 12)), // CODE ISIN (C) STE COTEE EN BOURSE SOISIN_N
'SOIDR1'=>trim(substr($str, 663, 41)), // réserve, non encore renseigné
'SONICC'=>trim(substr($str, 704, 5)), // NIC SOURCE/CIBLE (C)(+Ext) TRANSFERT ADRESSE SONICC_N
'SODCAP'=>trim(substr($str, 709, 8)), // DATE MAJ CAPITAL (C) AAAAMMJJ SODCAP_D
'SOCAPO'=>trim(substr($str, 717, 3)), // CAPITAL MONNAIE ORI (C) Table BDV
'SOCAPL'=>trim(substr($str, 720, 3)), // CAPITAL MONNAIE LIV (C) Table BDV
'SODTCE'=>trim(substr($str, 723, 8)), // DATE CREAT ETAB (+Ext) AAAAMMJJ SODTCE_D
'SOORIC'=>trim(substr($str, 731, 1)), // ORI.CREATION ENTREP (+Ext) Table INJ SOORIC_N
'SOCLAT'=>trim(substr($str, 732, 2)), // TR.EFFECTIF ENTREP(C)(+Ext*)Table INL
'CLAE'=>trim(substr($str, 734,2)), //TR.EFFECTIF ETAB(+Ext)TableINL
'SOA40T'=>trim(substr($str, 736,2)), //NAP 40 ENTREP(+Ext)TableA40
'SOA40E'=>trim(substr($str, 738,2)), //NAP 40 ETAB(+Ext)TableA40
'SOEACA'=>trim(substr($str, 740,5)), //ACT.ARTISANALE ETAB(+Ext)TableARA
'SOEMDT'=>trim(substr($str, 745,1)), //MODALITE ACT. ENTREP(+Ext)TableIMO
'SOEMDE'=>trim(substr($str, 746,1)), //MODALITE ACT. ETAB(+Ext)TableIMO
'SOERGS'=>trim(substr($str, 747,2)), //CODE REGION ENTREP(C)(+Ext*)TableINGSOERGS_N
'SOERGE'=>trim(substr($str, 749,2)), //CODE REGION ETAB(C)(+Ext*)TableING
'SOEDPS'=>trim(substr($str, 751,2)), //DEPARTEMENT SIEGE(S) (+Ext*)DPSIE_C
'SOELCS'=>trim(substr($str, 753,3)), //CODE LOCALITE SIEGE(S) (+Ext*)
'SOEDPE'=>trim(substr($str, 756,2)), //DEPARTEMENT ETAB(S) (+Ext*)
'SOELCE'=>trim(substr($str, 758,3)), //CODE LOCALITE ETAB(S) (+Ext*)SOLIN_C
'SOARDO'=>trim(substr($str, 761,1)), //DEP.OUTRE MER(+Ext) NRTableIDOSOARDO_N
'SOARD'=>trim(substr($str, 762,1)), //ARRONDISSEMENT(+Ext)
'SOCANO'=>trim(substr($str, 763,1)), //DEP.OUTRE MER(+Ext) NRTableIDOSOCANO_N
'SOCAN'=>trim(substr($str, 764,2)), //CANTON(+Ext)
'SOILOT'=>trim(substr($str, 766,8)), //CODE ILOT(+Ext) NRSOILOT_N
'SOTZEM'=>trim(substr($str, 774,2)), //ZONE EMPLOI ETAB(+Ext)TableINZ
'SOTTCO'=>trim(substr($str, 776,2)), //TRANCHE COMMUNE ETAB(+Ext)TableICD
'SOTDPU'=>trim(substr($str, 778,2)), //DEP UNITE.URB ETAB(+Ext)SOTDPU_N
'SOTTLU'=>trim(substr($str, 780,1)), //TAILLE UN.URB ETAB(+Ext)TableICUSOTTLU_N
'SOTUNU'=>trim(substr($str, 781,2)), //UNITE URBAINE ETAB(+Ext)SOTUNU_X
'SOTRIV'=>trim(substr($str, 783,5)), //CODE RIVOLI ETAB(+Ext)SOTRIV_X
'SOTRGP'=>trim(substr($str, 788,2)), //PPALE REGION ENTREP(+Ext)TableING
'SOTMON'=>trim(substr($str, 790,1)), //MONOREGIONALITE(+Ext)TableIMR
'SOTMOA'=>trim(substr($str, 791,1)), //MONOACTIVITE(+Ext)TableIMPSOTMOA_N
'SOECA'=>trim(substr($str, 792,1)), //CODE TRANCHE CA(C)(+Ext*)TableINTSOECA_X
'SOECAX'=>trim(substr($str, 793,1)), //TRANCHE PART EXPORT(C)(+Ext*)TableINPSOECAX_X
'SOTRPE'=>trim(substr($str, 794,1)), //REPERTOIRE ENT ETAT(+Ext)TableIEE
'SOORDI'=>trim(substr($str, 795,1)), //ENTREPRISE ORDINAIRE(+Ext)TableIEOSOORDI_N
'SOENAT'=>trim(substr($str, 796,2)), //CODE NATURE ETAB(+Ext)TableINN
'SOSINE'=>trim(substr($str, 798,2)), //Type Exploitation(C)(+Ext*)TableINE
);
break;
case 'BI':
$fcontents=explode("\n",$str);
$i=1;
while (substr($fcontents[$i], 65, 1)=='7')
{
$tabBilan['SIRET'] =substr($fcontents[$i], 36, 14);
$tabBilan['DATE_FRAICHE_BILAN'] =substr($fcontents[$i], 57, 8); // SSAAMMJJ
$tabBilan['DATE_CLOTURE'] =substr($fcontents[$i], 101, 8); // SSAAMMJJ
$tabBilan['DATE_CLOTURE_PRE'] =substr($fcontents[$i], 109, 8); // SSAAMMJJ
$tabBilan['DUREE_MOIS'] =substr($fcontents[$i], 117, 2);
$tabBilan['DUREE_MOIS_PRE'] =substr($fcontents[$i], 119, 2);
$tabBilan['MONNAIE'] =substr($fcontents[$i], 121, 2);
$tabBilan['CONSOLIDE'] =substr($fcontents[$i], 123, 1); // C = Bilan consolidé
$tabBilan['MONNAIE_ORI'] =substr($fcontents[$i], 793, 3);
$tabBilan['MONNAIE_LIV_UNITE'] =substr($fcontents[$i], 796, 1);
$tabBilan['MONNAIE_LIV'] =substr($fcontents[$i], 797, 3);
for ($j=0; $j<30; $j++)
{
$code =rtrim(substr($fcontents[$i], 124+$j*20, 4));
if ($code!='')
{
$colonneLiasse=(int)substr($code,2,1);
//echo "$code => $colonneLiasse<br>";
$signe =substr($fcontents[$i], 128+$j*20, 1);
$valeur =(double)substr($fcontents[$i], 129+$j*20, 15);
if ($signe=='-')
$valeur*=-1;
/* if ( $colonneLiasse>0 )
{
if (!isset($tabBilan[substr($code,0,2)]))
$tabBilan[substr($code,0,2)]=$valeur;
}
else
*/
$tabBilan[$code]=$valeur;
}
}
$i++;
}
$tab_ret=$tabBilan;/*array(
'SONABO'=>trim(substr($str, 0, 9)), // N°ABONNE (I) ********************
'SONUME'=>trim(substr($str, 9, 9)), // N°ENTREPRISE (I) * FICHE COMPLETE *
'SONUS' =>trim(substr($str, 18, 9)), // N°UFS (I) * +EXTENSION INSEE * SONUS_V
'SOANN' =>trim(substr($str, 27, 9)), // N° ANNONCE (I) ********************
'SORCS' =>trim(substr($str, 36, 14)), // N°SIRET (I)
'SOPRD' =>trim(substr($str, 50, 2)), // CODE PRODUIT (I) SOPRD_N
'SOSEQ' =>trim(substr($str, 52, 5)), // SEQUENCE DANS GROUPE(I) SOSEQ_N
'SODTEN'=>trim(substr($str, 57, 8)), // DATE ENVOI (I) AAAAMMJJ SODTEN_D
'SOTENR'=>trim(substr($str, 65, 1)), // CODE ENREGISTREMENT (I)
'SOTYP' =>trim(substr($str, 66, 3)), // TYPE STRUCTURE (I) "ID " SOTYP_V
'SOCONF'=>trim(substr($str, 69, 1)), // Code confirmé (I)
'SOREFC'=>trim(substr($str, 70, 30)), // REFERENCE CLIENT (I) SOREFC_X
'SOORIG'=>trim(substr($str, 100, 1)), // Code Origine BIL (S)
'SOBICN'=>trim(substr($str, 101, 8)), // Date de cloture de l'exercice Exercice Année N au format SSAAMMJJ 20051231
'SOBIC1'=>trim(substr($str, 109, 8)), // Date de cloture de l'exercice précédent Exercice Année N-1 au format SSAAMMJJ 20041231
'SOBIDN'=>trim(substr($str, 117, 2)), // Durée en mois de l'exercice Durée de l'exercice au format MM 12
'SOBID1'=>trim(substr($str, 119, 2)), // Durée en mois de l'exercice précédent Durée de l'exercice N-1 au format MM 12
'SOBIMO'=>trim(substr($str, 121, 2)), // Monnaie du bilan Cf. Table BDV EUR
'SOBICO'=>trim(substr($str, 123, 1)), // Type du bilan S = Bilan réel Normal / C = Bilan Consolidé S
//725 69 793 SOBIFF O AN Zone réservé Réservé usage GROUPE BIL
'SOBIMU'=>trim(substr($str, 793, 3)), // Code devise ISO de déclaration du bilan Cf. Table BDV EUR
'SOBIUL'=>trim(substr($str, 796, 1)), // Unité de la devise du bilan livré K=KILO
'SOBIML'=>trim(substr($str, 123, 3)), // Code devise ISO du bilan livré Cf. Table BDV EUR
/*
125 4 128 SOBL01 N AN Code du poste bilan dans la liasse Cerfa Poste 01 * AX
129 1 129 SOBS01 N AN Signe du poste bilan, "-" si négatif Poste 01 *
130 15 144 SOBM01 N Num Montant du poste bilan en unité monétaire Poste 01 * 000000000012345
145 4 148 SOBL02 N AN Code du poste bilan dans la liasse Cerfa Poste 02 BX
149 1 149 SOBS02 N AN Signe du poste bilan, "-" si négatif Poste 02 -
150 15 164 SOBM02 N Num Montant du poste bilan en unité monétaire Poste 02 000000000000045
165 4 168 SOBL03 N AN Code du poste bilan dans la liasse Cerfa Poste 03 DE
169 1 169 SOBS03 N AN Signe du poste bilan, "-" si négatif Poste 03 000000000012345
170 15 184 SOBM03 N Num Montant du poste bilan en unité monétaire Poste 03
185 4 188 SOBL04 N AN Code du poste bilan dans la liasse Cerfa Poste 04
189 1 189 SOBS04 N AN Signe du poste bilan, "-" si négatif Poste 04
190 15 204 SOBM04 N Num Montant du poste bilan en unité monétaire Poste 04
205 4 208 SOBL05 N AN Code du poste bilan dans la liasse Cerfa Poste 05
209 1 209 SOBS05 N AN Signe du poste bilan, "-" si négatif Poste 05
210 15 224 SOBM05 N Num Montant du poste bilan en unité monétaire Poste 05
225 4 228 SOBL06 N AN Code du poste bilan dans la liasse Cerfa Poste 06
229 1 229 SOBS06 N AN Signe du poste bilan, "-" si négatif Poste 06
230 15 244 SOBM06 N Num Montant du poste bilan en unité monétaire Poste 06
245 4 248 SOBL07 N AN Code du poste bilan dans la liasse Cerfa Poste 07
249 1 249 SOBS07 N AN Signe du poste bilan, "-" si négatif Poste 07
250 15 264 SOBM07 N Num Montant du poste bilan en unité monétaire Poste 07
265 4 268 SOBL08 N AN Code du poste bilan dans la liasse Cerfa Poste 08
269 1 269 SOBS08 N AN Signe du poste bilan, "-" si négatif Poste 08
270 15 284 SOBM08 N Num Montant du poste bilan en unité monétaire Poste 08
285 4 288 SOBL09 N AN Code du poste bilan dans la liasse Cerfa Poste 09
289 1 289 SOBS09 N AN Signe du poste bilan, "-" si négatif Poste 09
290 15 304 SOBM09 N Num Montant du poste bilan en unité monétaire Poste 09
305 4 308 SOBL10 N AN Code du poste bilan dans la liasse Cerfa Poste 10
309 1 309 SOBS10 N AN Signe du poste bilan, "-" si négatif Poste 10
310 15 324 SOBM10 N Num Montant du poste bilan en unité monétaire Poste 10
325 4 328 SOBL11 N AN Code du poste bilan dans la liasse Cerfa Poste 11
329 1 329 SOBS11 N AN Signe du poste bilan, "-" si négatif Poste 11
330 15 344 SOBM11 N Num Montant du poste bilan en unité monétaire Poste 11
345 4 348 SOBL12 N AN Code du poste bilan dans la liasse Cerfa Poste 12
349 1 349 SOBS12 N AN Signe du poste bilan, "-" si négatif Poste 12
350 15 364 SOBM12 N Num Montant du poste bilan en unité monétaire Poste 12
365 4 368 SOBL13 N AN Code du poste bilan dans la liasse Cerfa Poste 13
369 1 369 SOBS13 N AN Signe du poste bilan, "-" si négatif Poste 13
370 15 384 SOBM13 N Num Montant du poste bilan en unité monétaire Poste 13
385 4 388 SOBL14 N AN Code du poste bilan dans la liasse Cerfa Poste 14
389 1 389 SOBS14 N AN Signe du poste bilan, "-" si négatif Poste 14
390 15 404 SOBM14 N Num Montant du poste bilan en unité monétaire Poste 14
405 4 408 SOBL15 N AN Code du poste bilan dans la liasse Cerfa Poste 15
409 1 409 SOBS15 N AN Signe du poste bilan, "-" si négatif Poste 15
410 15 424 SOBM15 N Num Montant du poste bilan en unité monétaire Poste 15
425 4 428 SOBL16 N AN Code du poste bilan dans la liasse Cerfa Poste 16
429 1 429 SOBS16 N AN Signe du poste bilan, "-" si négatif Poste 16
430 15 444 SOBM16 N Num Montant du poste bilan en unité monétaire Poste 16
445 4 448 SOBL17 N AN Code du poste bilan dans la liasse Cerfa Poste 17
449 1 449 SOBS17 N AN Signe du poste bilan, "-" si négatif Poste 17
450 15 464 SOBM17 N Num Montant du poste bilan en unité monétaire Poste 17
465 4 468 SOBL18 N AN Code du poste bilan dans la liasse Cerfa Poste 18
469 1 469 SOBS18 N AN Signe du poste bilan, "-" si négatif Poste 18
470 15 484 SOBM18 N Num Montant du poste bilan en unité monétaire Poste 18
485 4 488 SOBL19 N AN Code du poste bilan dans la liasse Cerfa Poste 19
489 1 489 SOBS19 N AN Signe du poste bilan, "-" si négatif Poste 19
490 15 504 SOBM19 N Num Montant du poste bilan en unité monétaire Poste 19
505 4 508 SOBL20 N AN Code du poste bilan dans la liasse Cerfa Poste 20
509 1 509 SOBS20 N AN Signe du poste bilan, "-" si négatif Poste 20
510 15 524 SOBM20 N Num Montant du poste bilan en unité monétaire Poste 20
525 4 528 SOBL21 N AN Code du poste bilan dans la liasse Cerfa Poste 21
529 1 529 SOBS21 N AN Signe du poste bilan, "-" si négatif Poste 21
530 15 544 SOBM21 N Num Montant du poste bilan en unité monétaire Poste 21
545 4 548 SOBL22 N AN Code du poste bilan dans la liasse Cerfa Poste 22
549 1 549 SOBS22 N AN Signe du poste bilan, "-" si négatif Poste 22
550 15 564 SOBM22 N Num Montant du poste bilan en unité monétaire Poste 22
565 4 568 SOBL23 N AN Code du poste bilan dans la liasse Cerfa Poste 23
569 1 569 SOBS23 N AN Signe du poste bilan, "-" si négatif Poste 23
570 15 584 SOBM23 N Num Montant du poste bilan en unité monétaire Poste 23
585 4 588 SOBL24 N AN Code du poste bilan dans la liasse Cerfa Poste 24
589 1 589 SOBS24 N AN Signe du poste bilan, "-" si négatif Poste 24
590 15 604 SOBM24 N Num Montant du poste bilan en unité monétaire Poste 24
605 4 608 SOBL25 N AN Code du poste bilan dans la liasse Cerfa Poste 25
609 1 609 SOBS25 N AN Signe du poste bilan, "-" si négatif Poste 25
610 15 624 SOBM25 N Num Montant du poste bilan en unité monétaire Poste 25
625 4 628 SOBL26 N AN Code du poste bilan dans la liasse Cerfa Poste 26
629 1 629 SOBS26 N AN Signe du poste bilan, "-" si négatif Poste 26
630 15 644 SOBM26 N Num Montant du poste bilan en unité monétaire Poste 26
645 4 648 SOBL27 N AN Code du poste bilan dans la liasse Cerfa Poste 27
649 1 649 SOBS27 N AN Signe du poste bilan, "-" si négatif Poste 27
650 15 664 SOBM27 N Num Montant du poste bilan en unité monétaire Poste 27
665 4 668 SOBL28 N AN Code du poste bilan dans la liasse Cerfa Poste 28
669 1 669 SOBS28 N AN Signe du poste bilan, "-" si négatif Poste 28
670 15 684 SOBM28 N Num Montant du poste bilan en unité monétaire Poste 28
685 4 688 SOBL29 N AN Code du poste bilan dans la liasse Cerfa Poste 29
689 1 689 SOBS29 N AN Signe du poste bilan, "-" si négatif Poste 29
690 15 704 SOBM29 N Num Montant du poste bilan en unité monétaire Poste 29
705 4 708 SOBL30 N AN Code du poste bilan dans la liasse Cerfa Poste 30
709 1 709 SOBS30 N AN Signe du poste bilan, "-" si négatif Poste 30
710 15 724 SOBM30 N Num Montant du poste bilan en unité monétaire Poste 30
*/
// );
break;
}
return $tab_ret;
}
function csv2array($strCSV, $siren='') {
$tab=explode("\n", $strCSV);
foreach ($tab as $ligne=>$data) {
$data2=explode(';', $data);
$ficheCSV=trim($data2[1]);
if (trim($data2[0])=='01') $ficheCSV='SOLV1';
if (trim($data2[0])=='02') $ficheCSV='SOLV2';
if (trim($data2[0])=='03') $ficheCSV='SOLV3';
if((trim($data2[2])=='OUI' || trim($data2[2])=='NON') &&
(trim($data2[3])=='OUI' || trim($data2[3])=='NON') &&
(trim($data2[4])=='OUI' || trim($data2[4])=='NON')) $ficheCSV='DISPO';
switch ($ficheCSV)
{
case 'BILL':
$tab_ret=array(
'RETOUR' =>'',
'PRODUIT' =>'BILANS',
'RISIR' =>$data2[3],// N° SIREN
'RINUME' =>$data2[4], // N° ENTREPRISE
'RBDTCN' =>$data2[5],// N° SIREN
'RDDURN' =>trim($data2[6]),// N° SIREN
);
$tab2[$ligne]=$tab_ret;
break;
case 'DISPO':
$tab_ret=array(
'RETOUR'=>'',
'PRODUIT'=>'PRODUITS',
'RINUME'=>$data2[0],// N° ENTREPRISE
'RISIR' =>$data2[1],// N° SIREN
'RIANNL'=>$data2[2],// PRESENCE D'INFORMATION(S) LEGALE(S)
'RIELML'=>$data2[3],// PRESENCE D'ELEMENTS FINANCIERS
'RIBILL'=>$data2[4],// PRESENCE DE BILAN(S), ANNEXES OU RATIOS
'RIINTL'=>$data2[5],// PRESENCE DE REPRESENTANTS LEGAUX
'RIACTL'=>$data2[6],// PRESENCE D'ACTIONNAIRES
'RIPARL'=>$data2[7],// PRESENCE DE FILIALES / PARTICIPATIONS
'RIINFL'=>$data2[8],// PRESENCE D'INFORMATIONS COMMUNIQUES PAR L'ENTREPRISE
'RICMP' =>$data2[9],// PRESENCE COMPETENCES TERRITORIALES
'RISURV'=>$data2[10],// MISE EN SURVEILLANCE POSSIBLE
'RILEV' =>$data2[11],// COMMANDE DE PIECES OFFICIELLES
'RIRSC' =>$data2[12],// COMMANDE DE RENSEIGNEMENTS COMMERCIAUX
'RISOLV'=>$data2[13],// SOLVABIL
);
$tab2[$ligne]=$tab_ret;
break;
case 'ACTL':
$tab_ret=array('actionnaire'=>array(
'RETOUR' =>'',
'PRODUIT' =>'ACTIONNAIRES',
'XLABO' =>str_replace('<HTML>','',$data2[0]),// N° SIREN
'RISIR' =>$data2[2],// N° SIREN
'RINUME' =>$data2[3], // N° ENTREPRISE
'RLPSIR' =>$data2[4],// N° SIREN
'RLPNOM' =>$data2[5],// N° SIREN
'RLPOUR' =>$data2[6],// N° SIREN
));
$tab2[$ligne]=$tab_ret;
break;
case 'SOLV3':
$tab_ret=array(
'RETOUR' =>'',
'PRODUIT' =>'SOLVABIL3',
'RNISIR' =>$data2[3],// N° SIREN
'RINUME' =>'', // N° ENTREPRISE
'RNNIV' =>$data2[0],
'RNDATN' =>$data2[1],
'RNREFC' =>$data2[2],
'RISIR' =>$data2[3],
'RINIC' =>$data2[4],
'RINRS' =>$data2[5],
'RNNOTE' =>$data2[6],
'XNENCO' =>$data2[7],
'XNMONN' =>$data2[8],
'RNENCO' =>$data2[9],
'RNRUNM' =>$data2[10],
'RNAVIL' =>$data2[11],
'RNPAIL' =>$data2[12],
'RNPAII' =>$data2[13],
'RNSITL' =>$data2[14],
'RISIGL' =>$data2[15],
'RIENS' =>$data2[16],
'RIRCE' =>$data2[17],
'RINRU' =>$data2[18],
'RIBIS' =>$data2[19],
'RIRUE' =>$data2[20],
'RICP' =>$data2[21],
'RIVIL' =>$data2[22],
'RITELT' =>$data2[23],
'RIFAXT' =>$data2[24],
'RICATL' =>$data2[25],
'RICAT' =>$data2[26],
'RICAPI' =>$data2[27],
'RILIDV' =>$data2[28],
'RIDTCR' =>$data2[29],
'RIAPE' =>$data2[30],
'RIAPEL' =>$data2[31],
'RISINL' =>$data2[32],
'RINBET' =>$data2[33],
'RIDRN1' =>$data2[34],
'RIDRR1' =>$data2[35],
'RIDRF1' =>$data2[36],
'RIDDN1' =>$data2[37],
'RIDRV1' =>$data2[38],
'RIDRN2' =>$data2[39],
'RIDRR2' =>$data2[40],
'RIDRF2' =>$data2[41],
'RIDDN2' =>$data2[42],
'RIDRV2' =>$data2[43],
'RICAL' =>$data2[44],
'RICAUM' =>$data2[45],
'RICSEL' =>$data2[46],
'RICOTL' =>$data2[47],
'RITMAR' =>$data2[48],
'RISICO' =>$data2[49],
'RIACNO' =>$data2[50],
'RIACSI' =>$data2[51],
'RIACPO' =>$data2[52],
'RIRLJ' =>$data2[53],
'RIDATE' =>$data2[54],
'RIEVTL' =>$data2[55],
'RIROLL' =>$data2[56],
'RISTYPL' =>$data2[57],
'RISNOM' =>$data2[58],
'RISNRU' =>$data2[59],
'RISBIS' =>$data2[60],
'RISRUE' =>$data2[61],
'RISCP' =>$data2[62],
'RISVIL' =>$data2[63],
'RISTEL' =>$data2[64],
'RFRUNM' =>$data2[65],
'RFCLO3' =>$data2[66],
'RFDUR3' =>$data2[67],
'RFCA3' =>$data2[68],
'RFCAX3' =>$data2[69],
'RFRP3' =>$data2[70],
'RFFF3' =>$data2[71],
'RFRS3' =>$data2[72],
'RFRX3' =>$data2[73],
'RFRN3' =>$data2[74],
'RFCF3' =>$data2[75],
'RFFP3' =>$data2[76],
'RFDC3' =>$data2[77],
'RFDM3' =>$data2[78],
'RFTB3' =>$data2[79],
'RFFR3' =>$data2[80],
'RFBF3' =>$data2[81],
'RFTI3' =>$data2[82],
'RFEF3' =>$data2[83],
'RFCLO2' =>$data2[84],
'RFDUR2' =>$data2[85],
'RFCA2' =>$data2[86],
'RFCAP2' =>$data2[87],
'RFCAX2' =>$data2[88],
'RFCAXP2' =>$data2[89],
'RFRP2' =>$data2[90],
'RFRPP2' =>$data2[91],
'RFFF2' =>$data2[92],
'RFFFP2' =>$data2[93],
'RFRS2' =>$data2[94],
'RFRSP2' =>$data2[95],
'RFRX2' =>$data2[96],
'RFRXP2' =>$data2[97],
'RFRN2' =>$data2[98],
'RFRNP2' =>$data2[99],
'RFCF2' =>$data2[100],
'RFCFP2' =>$data2[101],
'RFFP2' =>$data2[102],
'RFFPP2' =>$data2[103],
'RFDC2' =>$data2[104],
'RFDCP2' =>$data2[105],
'RFDM2' =>$data2[106],
'RFDMP2' =>$data2[107],
'RFTB2' =>$data2[108],
'RFTBP2' =>$data2[109],
'RFFR2' =>$data2[110],
'RFFRP2' =>$data2[111],
'RFBF2' =>$data2[112],
'RFBFP2' =>$data2[113],
'RFTI2' =>$data2[114],
'RFTIP2' =>$data2[115],
'RFEF2' =>$data2[116],
'RFEFP2' =>$data2[117],
'RFCLO1' =>$data2[118],
'RFDUR1' =>$data2[119],
'RFCA1' =>$data2[120],
'RFCAP1' =>$data2[121],
'RFCAX1' =>$data2[122],
'RFCAXP1' =>$data2[123],
'RFRP1' =>$data2[124],
'RFRPP1' =>$data2[125],
'RFFF1' =>$data2[126],
'RFFFP1' =>$data2[127],
'RFRS1' =>$data2[128],
'RFRSP1' =>$data2[129],
'RFRX1' =>$data2[130],
'RFRXP1' =>$data2[131],
'RFRN1' =>$data2[132],
'RFRNP1' =>$data2[133],
'RFCF1' =>$data2[134],
'RFCFP1' =>$data2[135],
'RFFP1' =>$data2[136],
'RFFPP1' =>$data2[137],
'RFDC1' =>$data2[138],
'RFDCP1' =>$data2[139],
'RFDM1' =>$data2[140],
'RFDMP1' =>$data2[141],
'RFTB1' =>$data2[142],
'RFTBP1' =>$data2[143],
'RFFR1' =>$data2[144],
'RFFRP1' =>$data2[145],
'RFBF1' =>$data2[146],
'RFBFP1' =>$data2[147],
'RFTI1' =>$data2[148],
'RFTIP1' =>$data2[149],
'RFEF1' =>$data2[150],
'RFEFP1' =>$data2[151],
'RBRUNM' =>$data2[152],
'XBDTCN' =>$data2[153],
'RBDURN' =>$data2[154],
'RBR11' =>$data2[155],
'RBR11P' =>$data2[156],
'RBR12' =>$data2[157],
'RBR12P' =>$data2[158],
'RBR13' =>$data2[159],
'RBR13P' =>$data2[160],
'RBR14' =>$data2[161],
'RBR14P' =>$data2[162],
'RBR15' =>$data2[163],
'RBR15P' =>$data2[164],
'RBR16' =>$data2[165],
'RBR16P' =>$data2[166],
'RBR17' =>$data2[167],
'RBR17P' =>$data2[168],
'RBR18' =>$data2[169],
'RBR18P' =>$data2[170],
'RBR1A' =>$data2[171],
'RBR1AP' =>$data2[172],
'RBR1T' =>$data2[173],
'RBR1TP' =>$data2[174],
'RBR21' =>$data2[175],
'RBR21P' =>$data2[176],
'RBR22' =>$data2[177],
'RBR22P' =>$data2[178],
'RBR23' =>$data2[179],
'RBR23P' =>$data2[180],
'RBR24' =>$data2[181],
'RBR24P' =>$data2[182],
'RBR25' =>$data2[183],
'RBR25P' =>$data2[184],
'RBR26' =>$data2[185],
'RBR26P' =>$data2[186],
'RBR27' =>$data2[187],
'RBR27P' =>$data2[188],
'RBR28' =>$data2[189],
'RBR28P' =>$data2[190],
'RBR29' =>$data2[191],
'RBR29P' =>$data2[192],
'RBR2A' =>$data2[193],
'RBR2AP' =>$data2[194],
'RBR2T' =>$data2[195],
'RBR2TP' =>$data2[196],
'RBRUNM' =>$data2[197],
'XBDTCN' =>$data2[198],
'RBDURN' =>$data2[199],
'RBS01' =>$data2[200],
'RBS01P' =>$data2[201],
'RBS02' =>$data2[202],
'RBS02P' =>$data2[203],
'RBS03' =>$data2[204],
'RBS03P' =>$data2[205],
'RBS04' =>$data2[206],
'RBS04P' =>$data2[207],
'RBS05' =>$data2[208],
'RBS05P' =>$data2[209],
'RBS06' =>$data2[210],
'RBS06P' =>$data2[211],
'RBS07' =>$data2[212],
'RBS07P' =>$data2[213],
'RBS08' =>$data2[214],
'RBS08P' =>$data2[215],
'RBS09' =>$data2[216],
'RBS09P' =>$data2[217],
'RBS10' =>$data2[218],
'RBS10P' =>$data2[219],
'RBS11' =>$data2[220],
'RBS11P' =>$data2[221],
'RBS12' =>$data2[222],
'RBS12P' =>$data2[223],
'RBS13' =>$data2[224],
'RBS13P' =>$data2[225],
'RBS14' =>$data2[226],
'RBS14P' =>$data2[227],
'RBS15' =>$data2[228],
'RBS15P' =>$data2[229],
'RBS16' =>$data2[230],
'RBS16P' =>$data2[231],
'RBS17' =>$data2[232],
'RBS17P' =>$data2[233],
'RBS18' =>$data2[234],
'RBS18P' =>$data2[235],
'RBS19' =>$data2[236],
'RBS19P' =>$data2[237],
'RBS20' =>$data2[238],
'RBS20P' =>$data2[239],
'RBS21' =>$data2[240],
'RBS21P' =>$data2[241],
'RBS22' =>$data2[242],
'RBS22P' =>$data2[243],
'RBS23' =>$data2[244],
'RBS23P' =>$data2[245],
'RBS24' =>$data2[246],
'RBS24P' =>$data2[247],
'RVDTCN' =>$data2[248],
'RVDUR' =>$data2[249],
'RVRAM' =>$data2[250],
'RVRAMS' =>$data2[251],
'RVUNI' =>$data2[252],
'RVPOS' =>$data2[253],
'RVRAM' =>$data2[254],
'RVRAMS' =>$data2[255],
'RVUNI' =>$data2[256],
'RVPOS' =>$data2[257],
'RVRAM' =>$data2[258],
'RVRAMS' =>$data2[259],
'RVUNI' =>$data2[260],
'RVPOS' =>$data2[261],
'RVRAM' =>$data2[262],
'RVRAMS' =>$data2[263],
'RVUNI' =>$data2[264],
'RVPOS' =>$data2[265],
'RVRAM' =>$data2[266],
'RVRAMS' =>$data2[267],
'RVUNI' =>$data2[268],
'RVPOS' =>$data2[269],
'RVRAM' =>$data2[270],
'RVRAMS' =>$data2[271],
'RVUNI' =>$data2[272],
'RVPOS' =>$data2[273],
'RVRAM' =>$data2[274],
'RVRAMS' =>$data2[275],
'RVUNI' =>$data2[276],
'RVPOS' =>$data2[277],
'RVRAM' =>$data2[278],
'RVRAMS' =>$data2[279],
'RVUNI' =>$data2[280],
'RVPOS' =>$data2[281],
'RVRAM' =>$data2[282],
'RVRAMS' =>$data2[283],
'RVUNI' =>$data2[284],
'RVPOS' =>$data2[285],
'RVRAM' =>$data2[286],
'RVRAMS' =>$data2[287],
'RVUNI' =>$data2[288],
'RVPOS' =>$data2[289],
'RVRAM' =>$data2[290],
'RVRAMS' =>$data2[291],
'RVUNI' =>$data2[292],
'RVPOS' =>$data2[293],
'RVRAM' =>$data2[294],
'RVRAMS' =>$data2[295],
'RVUNI' =>$data2[296],
'RVPOS' =>$data2[297],
'RVRAM' =>$data2[298],
'RVRAMS' =>$data2[299],
'RVUNI' =>$data2[300],
'RVPOS' =>$data2[301],
'RVRAM' =>$data2[302],
'RVRAMS' =>$data2[303],
'RVUNI' =>$data2[304],
'RVPOS' =>$data2[305],
'RVRAM' =>$data2[306],
'RVRAMS' =>$data2[307],
'RVUNI' =>$data2[308],
'RVPOS' =>$data2[309],
'RVRAM' =>$data2[310],
'RVRAMS' =>$data2[311],
'RVUNI' =>$data2[312],
'RVPOS' =>$data2[313],
'RVRAM' =>$data2[314],
'RVRAMS' =>$data2[315],
'RVUNI' =>$data2[316],
'RVPOS' =>$data2[317],
'RNNBS' =>$data2[318],
);
for ($i=0; $i<(int)($data2[318]); $i++){
$j=$i+319;
$tabRNTX[$i]=$data2[$j];
$this->trace ( "Ligne de commentaire n°$i ($j) = ". $data2[$j] );
}
$tab_RNTX=array('RNTX'=>$tabRNTX);
$tab_ret=array_merge($tab_ret, $tab_RNTX);
$posNbActionnaires=$j+1;
$nbActionnaires=$data2[$posNbActionnaires];
$this->trace ( "Nombre d'actionnaire(s) = $nbActionnaires (position $posNbActionnaires)");
for ($i=1, $k=0; $i<=(int)($nbActionnaires)*3; $i=$i+3, $k++){
$j=$i+$posNbActionnaires;
$tabACT[$k]=array('NOM'=>$data2[$j],
'SIREN'=>$data2[$j+1],
'POURCENTAGE'=>$data2[$j+2],
);
$this->trace ( "Ligne d'actionnaire n°$k ($j) = ". $data2[$j] .' '. $data2[$j+1] .' '. $data2[$j+2]);
}
$tab_ACT=array('ACTIONNAIRES'=>$tabACT);
$tab_ret=array_merge($tab_ret, $tab_ACT);
$posNbPart=$j+3;
$nbPart=$data2[$posNbPart];
$this->trace ( "Nombre de participation(s) = $nbPart (position $posNbPart)");
for ($i=1, $k=0; $i<=(int)($nbPart)*3; $i=$i+3, $k++){
$j=$i+$posNbPart;
$tabPART[$k]=array('NOM'=>$data2[$j],
'SIREN'=>$data2[$j+1],
'POURCENTAGE'=>$data2[$j+2],
);
$this->trace ( "Ligne de participation n°$k ($j) = ". $data2[$j] .' '. $data2[$j+1] .' '. $data2[$j+2]);
}
$tab_PART=array('PARTICIPATIONS'=>$tabPART);
$tab_ret=array_merge($tab_ret, $tab_PART);
$tab2[$ligne]=$tab_ret;
break;
case '':
break;
default:
$tab2[$ligne]=array(
'RETOUR' =>trim($ficheCSV.' '.$data2[2]),
'RISIR' =>trim($siren));
break;
}
}
// print_r($tab2);exit();
return $tab2;
}
}
function array2csv($array, $level=0, $str_csv='') {
if (!is_array($array))
return 0;
reset($array);
while ( list($key, $value) = each($array) ) {
if (is_array($value))
array2csv($value, $level+1, $str_csv);
else
$str_csv.=$value.';';
}
if ($level==0) return $str_csv."\r\n";
}
?>