''); 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 . '
'; 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('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
"; $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('','',$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"; } ?>