batch/1.1/old/extraction.php

479 lines
18 KiB
PHP
Raw Normal View History

<?php
$argv=$_SERVER['argv'];
$argc=$_SERVER['argc'];
print_r($argv);
function echoHeader() {
echo ($argv[0]);?> v0.1 Extraction d'informations HyperBIL en ligne de commande.
Usage: <?=$argv[0]?> <type of data> <fileIn> <fileInFmt> <fileOut> <fileOutFmt>
Where <type of data> is :
2013-06-19 08:24:49 +00:00
id Fiche d'identit<EFBFBD> (source BIL, RNCS puis INSEE)
idi Fiche d'identit<EFBFBD> (source INSEE pure)
pf Partenaires Financiers
2013-06-19 08:24:49 +00:00
ann Annonces L<EFBFBD>gales
dir Liste des dirigeants
lbil Bilans disponibles
2013-06-19 08:24:49 +00:00
bil Bilan complet (<EFBFBD> la date de cloture demand<EFBFBD>e ou dernier dispo)
nof Notation financi<EFBFBD>re (<EFBFBD> la date de cloture demand<EFBFBD>e ou dernier dispo)
ch Score Conan & Holder (<EFBFBD> la date de cloture demand<EFBFBD>e ou dernier dispo)
sv1 SolvaBil 1
sv2 SolvaBil 2
sv3 SolvaBil 3
usertest Test un user password uniquement; syntaxe : <user> <password>
Where <fileInFmt> is :
csv Fichier IN au format CSV (; ou ,) SIREN;NIC;DATE_BILAN;REF
plat Fichier IN au format plat (blancs significatifs) SIREN_____NIC__JJ/MM/AAAA
UNISUR2 To Do
Where <fileOutFmt> is : csv / SO2000
2013-06-19 08:24:49 +00:00
Le fichier en entr<EFBFBD>e doit <EFBFBD>tre au format <fileInFmt> et contenir le SIREN en premi<EFBFBD>re colonne.
Si les informations demand<EFBFBD>es sont relatives <EFBFBD> un bilan, la date de cl<EFBFBD>ture pr<EFBFBD>cise du bilan peut <EFBFBD>tre pass<EFBFBD>e au format JJ/MM/AAAA.
<?php
}
include('automate.class.php');
include('includes/ICotation.inc');
$bil=&new Automate('array', false);
2013-06-19 08:24:49 +00:00
if ($argc < 7 && $argv[1]!='usertest') {echoHeader();die('Erreur : Vous n\'avez saisit que '. $argc .' param<61>tre(s) !');}
elseif ($argv[1]=='usertest' && $argc==4) {
$bil->setDebug(true);
if ($bil->connect($argv[2], $argv[3]))
{ echo 'User = "'. $argv[2].'" - Password = "'. $argv[3].'"'." - Connexion OK !\r\n";
$bil->setRetour('csv');
echo $bil->getFicheIdentite('552144503', '', 'c', '', 'Test', 'SO2000');
}
else
echo 'User = "'. $argv[2].'" - Password = "'. $argv[3].'" - Connexion Impossible : '. $bil->getLastError() ."\r\n";
$bil->printTrace();
die();
}
elseif (!in_array($argv[1], array('id', 'idi', 'pf', 'ann', 'dir', 'lbil', 'bil', 'nof', 'ch', 'sv1','sv2','sv3'))) {echoHeader();die('Erreur : Produit inexistant !');}
$fileIN=@file($argv[2]);
if ($fileIN==false) {echoHeader();die('Erreur : Impossible de lire le fichier "'. $argv[2] .'" !');}
$nbLignes=sizeof($fileIN);
if (!in_array($argv[3], array('csv', 'plat'))) {echoHeader();die('Erreur : Format IN inexistant !');}
$fpOUT=@fopen($argv[4], 'w');
if ($fpOUT==false) {echoHeader();die('Erreur : Impossible d\'ouvrir le fichier "'. $argv[3] .'" !');}
if (!in_array($argv[5], array('csv', 'so2000'))) {echoHeader();die('Erreur : Format OUT inexistant !');}
$fileOutFmt=$argv[5];
$ligneDebutLecture=$argv[6];
if ($ligneDebutLecture>$nbLignes) {echoHeader();die('Erreur : Le fichier IN contient seulement "'. $nbLignes .'" lignes !');}
set_time_limit(0);
$bil->setRetour('csv');
if ($argv[1]=='nof')
2013-06-19 08:24:49 +00:00
fwrite($fpOUT, "SIREN;RAISON SOCIALE;CODE POSTAL;VILLE;DATE DE CLOTURE;DUREE DE L'EXERCICE;NAF;SECTEUR;NOF;NOF Moyenne;R1 Num<75>rateur;R1 D<>nominateur;R1 Note;R1 Note born<72>e;R2 Num<75>rateur;R2 D<>nominateur;R2 Note;R2 Note born<72>e;R3 Num<75>rateur;R3 D<>nominateur;R3 Note;R3 Note born<72>e;R4 Num<75>rateur;R4 D<>nominateur;R4 Note;R4 Note born<72>e;R5 Num<75>rateur;R5 D<>nominateur;R5 Note;R5 Note born<72>e;R6 Num<75>rateur;R6 D<>nominateur;R6 Note;R6 Note born<72>e;Equiv. BDF;Equiv. Grades Moody's;Equiv. Grades S&P;Probabilit<69> de d<>faillance;Postes du bilan;\r\n");
elseif ($argv[1]=='ch')
fwrite($fpOUT, "SIREN;RAISON SOCIALE;CODE POSTAL;VILLE;DATE DE CLOTURE;DUREE DE L'EXERCICE;NAF;SCORE CONAN-HOLDER;SCORE/20;SITUATION;R1;R2;R3;R4;R5;\r\n");
foreach ($fileIN as $key => $ligne) {
2013-06-19 08:24:49 +00:00
//die("Position = $key, NbLignes=$nbLignes, Lire <20> la ligne $ligneDebutLecture");
if ($key<$ligneDebutLecture)
continue;
if ($argv[3]=='csv'){
$tabLigne=explode(';', $ligne);
$siren=substr(trim($tabLigne[0]), 0, 9);
$nic=substr(trim($tabLigne[1]), 0, 5);
$dateCloture=substr(trim($tabLigne[2]), 0, 10);
$ref=substr(trim($tabLigne[3]), 0, 30);
}else{
$siren=substr($ligne, 0, 9);
$nic=trim(substr($ligne, 9, 5));
$dateCloture=substr($ligne, 14, 10);
$ref=substr($ligne, 24, 30);
}
if ($dateCloture=='' && (in_array($argv[1], array('bil', 'nof', 'ch'))))
{
2013-06-19 08:24:49 +00:00
// Recherche de la derni<6E>re date de cl<63>ture de bilan disponible !
$derCloture=$bil->getDatesClotures($siren, '', 'array');
$dateCloture=$derCloture[0]['RBDTCN'];
$dureCloture=$derCloture[0]['RDDURN'];
}
if ($argv[1]=='idi'){
$bil->connect('900000174', 'CHANT');
//$bil->connect('900000179', 'SOUPE');
$typeFiche='ci';
/*
2013-06-19 08:24:49 +00:00
hbilsoid Requ<EFBFBD>te IDENTITE FORMAT SO2000
hbilsoids
2013-06-19 08:24:49 +00:00
hbilsoidci Fiche identit<EFBFBD> Complete INSEE SO2000
hbilsoidc Fiche identit<EFBFBD> Complete SO2000
*/
$retour=$bil->getFicheIdentite($siren, $nic, $typeFiche, '', $ref, $fileOutFmt);
}
else
{
2013-06-19 08:24:49 +00:00
// $bil->connect('900000183', 'CONGE'); // SVB1 Sp<53> Bouygues T<>l
//$bil->connect('900000182', 'XXXX'); // CA-LEASING S<>parateur Nom/Pr<50>nom + Filtre annonces
$bil->connect('900000114', 'CHANT');
if ($argv[1]=='id')
$retour=$bil->getFicheIdentite($siren, $nic, 'c', '', $ref, $fileOutFmt);
elseif (substr($argv[1],0,2)=='sv')
$retour=$bil->getSolvaBil($siren, substr($argv[1],2,1), 450, $ref, '');
elseif ($argv[1]=='pf')
$retour=$bil->getActionnaires($siren);
elseif ($argv[1]=='ann')
$retour=$bil->getAnnoncesLegales($siren);
elseif ($argv[1]=='dir')
$retour=$bil->getDirigeants($siren);
elseif ($argv[1]=='lbil')
//echo "Bilans disponibles :<br/>";
$retour=$bil->getDatesClotures($siren);
elseif ($argv[1]=='bil') {
//echo "Bilans disponibles :<br/>";
$retour=$bil->getBilan($siren, $dateCloture);
}
elseif ($argv[1]=='nof') {
$tabIdentite=$bil->getFicheIdentite($siren, '', '', '', $ref, 'array');
$tabBilan=array();
$tabBilan=$bil->getBilan($siren, $dateCloture, '', 'array');
$icotation = new ICotation($tabBilan, true);
$secteur=$icotation->getSecteurActivite($tabIdentite['SOAPET']);
$libSecteur=$icotation->tabLibActivite[$secteur];
$suite='';
if (count($tabBilan)>0)
{
unset($note); unset($noteB); unset($numerateur); unset($denominateur);
$note[0]=$noteB[0]=$numerateur[0]=$denominateur[0]=$noteTot=0;
$tabTmp = $icotation->noteCapitalisation();
$numerateur[1] = number_format($tabTmp['NUMERATEUR']/100, 0, ',', '');
$denominateur[1]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[1] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[1] = $icotation->getNoteBorne($tabTmp['NOTE'], 1, $secteur, $numerateur[1], $denominateur[1]);
$noteTot+=$noteB[1];
$tabTmp = $icotation->noteLevierEndettement();
$numerateur[2] = number_format($tabTmp['NUMERATEUR']/1, 0, ',', '');
$denominateur[2]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[2] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[2] = $icotation->getNoteBorne($tabTmp['NOTE'], 2, $secteur, $numerateur[2], $denominateur[2]);
$noteTot+=$noteB[2];
$tabTmp = $icotation->noteCapaciteRemboursement();
$numerateur[3] = number_format($tabTmp['NUMERATEUR']/1, 0, ',', '');
$denominateur[3]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[3] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[3] = $icotation->getNoteBorne($tabTmp['NOTE'], 3, $secteur, $numerateur[3], $denominateur[3]);
$noteTot+=$noteB[3];
$tabTmp = $icotation->noteCouvChargesFi();
$numerateur[4] = number_format($tabTmp['NUMERATEUR']/1, 0, ',', '');
$denominateur[4]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[4] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[4] = $icotation->getNoteBorne($tabTmp['NOTE'], 4, $secteur, $numerateur[4], $denominateur[4]);
$noteTot+=$noteB[4];
$tabTmp = $icotation->noteTresorerie();
$numerateur[5] = number_format($tabTmp['NUMERATEUR']/(360*1), 0, ',', '');
$denominateur[5]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[5] = number_format($tabTmp['NOTE'], 0, ',', '');
$noteB[5] = $icotation->getNoteBorne($tabTmp['NOTE'], 5, $secteur, $numerateur[5], $denominateur[5]);
$noteTot+=$noteB[5];
$tabTmp = $icotation->noteMargeExploitation();
$numerateur[6] = number_format($tabTmp['NUMERATEUR']/100, 0, ',', '');
$denominateur[6]= number_format($tabTmp['DENOMINATEUR']/1, 0, ',', '');
$note[6] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[6] = $icotation->getNoteBorne($tabTmp['NOTE'], 6, $secteur, $numerateur[6], $denominateur[6]);
$noteTot+=$noteB[6];
$noteMoy=number_format($noteTot/6, 2, ',', ' ');
$noteFinanciere = $icotation->getNotationFin($noteTot/6);
$libNoteFinanciere = $icotation->getInfosNotation($noteFinanciere);
2013-06-19 08:24:49 +00:00
$suite = $noteFinanciere .';'. // Notation Financi<63>re
$noteMoy .';'; // Note Moyenne
for ($i=1; $i<7; $i++)
$suite.=$numerateur[$i].';'.
$denominateur[$i].';'.
$note[$i].';'.
$noteB[$i].';';
$suite.=$icotation->getInfosNotation($noteFinanciere, true);
$suite.=implode_with_options($tabBilan, '', '=', '"', ', ').';';
}
$retour = $siren .';'.
$tabIdentite['SONOM'] .';'. // Raison sociale
$tabIdentite['SOCP'] .';'. // Code Postal
$tabIdentite['SOCOM'] .';'. // Ville
2013-06-19 08:24:49 +00:00
$dateCloture .';'. // Date de cl<63>ture du bilan
$dureCloture .';'. // Dur<75>e du bilan en mois
$tabIdentite['SOAPET'] .';'. // NAF
2013-06-19 08:24:49 +00:00
$secteur .'-'. $libSecteur .';'. // Libell<6C> du secteur d'activit<69>
$suite ."\n";
}
elseif ($argv[1]=='ch') {
$tabIdentite=$bil->getFicheIdentite($siren, '', '', '', '', 'array' );
$tabBilan=array();
$tabBilan=$bil->getBilan($siren, $dateCloture, '', 'array');
$suite='';
if (count($tabBilan)>0)
{
$n1=($tabBilan['FL'] + $tabBilan['FM'] + $tabBilan['FN'] + $tabBilan['FO'] - $tabBilan['FS'] - $tabBilan['FT'] - $tabBilan['FU'] - $tabBilan['FV'] - $tabBilan['FW'] - $tabBilan['FX'] - $tabBilan['FY'] - $tabBilan['FZ']);
$d1=($tabBilan['EC'] - $tabBilan['EB'] + $tabBilan['YS']);
$r1=$n1/$d1;
$n2=($tabBilan['DL'] + $tabBilan['DO'] + $tabBilan['DR'] + $tabBilan['DS'] + $tabBilan['DT'] + $tabBilan['DU'] + $tabBilan['DV'] - $tabBilan['EH']);
$d2=$tabBilan['EE'];
$r2=$n2/$d2;
$n3=($tabBilan['BV'] + $tabBilan['BX'] + $tabBilan['BZ'] + $tabBilan['CB'] + $tabBilan['CD'] + $tabBilan['CF'] - $tabBilan['BW'] - $tabBilan['BY'] - $tabBilan['CA'] - $tabBilan['CC'] - $tabBilan['CE'] - $tabBilan['CG']);
$d3=$tabBilan['EE'];
$r3=$n3/$d3;
$n4=$tabBilan['GR'];
$d4=$tabBilan['FL'];
$r4=$n4/$d4;
$n5=($tabBilan['FY'] + $tabBilan['FZ']);
$d5=($tabBilan['FL'] + $tabBilan['FM'] + $tabBilan['FN'] - $tabBilan['FU'] - $tabBilan['FV'] - $tabBilan['FW'] - $tabBilan['FS'] - $tabBilan['FT']);
$r5=$n5/$d5;
$n=24*$r1+22*$r2+16*$r3-87*$r4-10*$r5;
if ($n>16.5) { $s=20; $situation="Excellente"; }
elseif ($n>16) { $s=19; $situation="Excellente"; }
2013-06-19 08:24:49 +00:00
elseif ($n>15) { $s=18; $situation="Tr<EFBFBD>s bonne"; }
elseif ($n>14) { $s=17; $situation="Tr<EFBFBD>s bonne"; }
elseif ($n>13) { $s=16; $situation="Bonne"; }
elseif ($n>12) { $s=15; $situation="Bonne"; }
elseif ($n>11) { $s=14; $situation="Bonne"; }
elseif ($n>10) { $s=13; $situation="Correcte"; }
elseif ($n>09) { $s=12; $situation="Correcte"; }
elseif ($n>08) { $s=11; $situation="Prudence"; }
elseif ($n>07) { $s=10; $situation="Prudence"; }
elseif ($n>06) { $s=09; $situation="Prudence"; }
elseif ($n>05) { $s=08; $situation='Prudence'; }
elseif ($n>04) { $s=07; $situation='Difficile'; }
elseif ($n>02) { $s=06; $situation='Difficile'; }
elseif ($n>00) { $s=05; $situation='Difficile'; }
elseif ($n>-2) { $s=04; $situation='Danger'; }
elseif ($n>-4) { $s=03; $situation='Danger'; }
else { $s=02; $situation='Danger'; }
/*
elseif ($n>13) { $s=02; $situation=''; }
elseif ($n>13) { $s=01; $situation='Redressement judiciaire'; }
elseif ($n>13) { $s=00; $situation='Liquidation judiciaire'; }
*/
$suite= $n .';'.
$s .';'.
$situation .';'.
$r1 .';'.
$r2 .';'.
$r3 .';'.
$r4 .';'.
$r5 .';';
}
$retour = $siren .';'.
$tabIdentite['SONOM'] .';'. // Raison sociale
$tabIdentite['SOCP'] .';'. // Code Postal
$tabIdentite['SOCOM'] .';'. // Ville
2013-06-19 08:24:49 +00:00
$dateCloture .';'. // Date de cl<63>ture du bilan
$dureCloture .';'. // Dur<75>e du bilan en mois
$tabIdentite['SOAPET'] .';'. // NAF
$suite ."\n";
}
}
$num=$key+1;
echo "Ligne $num/$nbLignes : $siren $nic\r\n";
fwrite($fpOUT, $retour);
}
fclose($fpOUT);
die();
/*
//echo "Recherche :<br/>";
//$tab=$bil->getRecherche('552144503');
//echo "Produits disponibles :<br/>";
//print_r($bil->getListeProduits('552144503'));
2013-06-19 08:24:49 +00:00
// echo "Fiche d'identit<69> :<br/>";
$fp=fopen('identites.csv', 'w');
foreach ($tab as $key=>$siren) {
$ret=$bil->getFicheIdentite($siren);
fwrite($fp, $ret['SORCS'] .';'.
$ret['RETOUR'] .';'.
$ret['SONUME'] .';'.
$ret['SONOM'] .';'.
$ret['SONRU'] .' '. $ret['SOBTQ'] .' '. $ret['SORUE'] .';'.
$ret['SOCP'] .';'.
$ret['SOCOM'] .';'.
$ret['SOETEL'] .';'.
$ret['SOEFAX'] .';'.
$ret['SOEWEB'] .';'.
$ret['SODTCT'] .';'.
$ret['SOCJEN'] .';'.
$ret['SONBET'] .';'.
$ret['SOAPET'] .";\r\n");
}
fclose($fp);
//$tab=$bil->getFicheIdentite('552144503');
//echo array_to_xml($tab);
//echo "Bilans disponibles :<br/>";
$fp=fopen('bilans.csv', 'w');
$tab=file('sirenbi.csv');
foreach ($tab as $key=>$siren) {
$ret=$bil->getDatesClotures($siren);
fwrite($fp, $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'] .";\r\n");
}
fclose($fp);
*/
echo "Solvabil 3 :<br/>";
//print_r($bil->getSolvaBil('552144503',3,450,'test','','csv'));
echo array2xml($bil->getSolvaBil('552144503',3,450,'test','','csv'));
die();
echo "Actionnaires :<br/>";
//print_r();
echo "<pre>";
echo array2xml($bil->getActionnaires('552144503'));
echo "</pre>";
function array2xml($array,$level=0){
if (!is_array($array))
return 0;
if ($level==0)
{
$tab0=$array[0];
print_r($tab0);
echo "<xml>\n<". $tab0['PRODUIT'] .">\n";
}
reset($array);
while ( list($key, $value) = each($array) ) {
if (is_array($value)) {
if (!is_integer($key))
echo "<$key>\n";
array2xml($value,$level+1);
if (!is_integer($key))
echo "</$key>\n";
} else {
if (is_integer($key))
$key="DATA_$key";
if ($key!='RETOUR' && $key!='PRODUIT')
echo "<$key>$value</$key>\n";
}
}
if ($level==0)
{
$tab0=$array[0];
echo "</". $tab0['PRODUIT'] .">\n</xml>\n";
}
}
$tabCJ=array(
'10'=>'Personne physique',
2013-06-19 08:24:49 +00:00
'11'=>'Artisan Commer<65>ant',
'12'=>'Commer<65>ant',
'13'=>'Artisan (civil)',
2013-06-19 08:24:49 +00:00
'14'=>'Officier public ou minist<73>riel',
'15'=>'Profession lib<69>rale',
'16'=>'Exploitant agricole',
'17'=>'Agent commercial',
2013-06-19 08:24:49 +00:00
'18'=>'Associ<63>-G<>rant de soci<63>t<EFBFBD>',
'19'=>'Personne Physique',
'21'=>'Indivision',
2013-06-19 08:24:49 +00:00
'22'=>'St<53> cr<63><72>e de Fait',
'23'=>'St<53> en Participation',
'27'=>'Paroisse hors zone concordataire',
2013-06-19 08:24:49 +00:00
'29'=>'Groupement droit priv<69>,n/pers.morale',
'31'=>'P.M.droit <20>tranger immatricul<75> RCS',
'32'=>'P.M.droit <20>tranger n/immat.RCS',
'41'=>'Ets public-r<>gie indus/commerciale',
'51'=>'St<53> coop<6F>rative commerciale',
'52'=>'St<53> en nom collectif',
'53'=>'St<53> en commandite',
'54'=>'S.A.R.L',
2013-06-19 08:24:49 +00:00
'55'=>'S.A <20> conseil d\'administration',
'56'=>'S.A <20> directoire',
'57'=>'SA par action simplifi<66>e',
'61'=>'Caisse d\'Epargne & Pr<50>voyance',
'62'=>'G.I.E',
2013-06-19 08:24:49 +00:00
'63'=>'St<53> coop<6F>rative agricole',
'64'=>'St<53> n/commerciale d\'assurance',
'65'=>'Soci<63>t<EFBFBD> Civile',
'69'=>'Autres PM de droit priv<69> inscrites au R',
'71'=>'Administration d\'Etat',
2013-06-19 08:24:49 +00:00
'72'=>'Collectivit<69> Territoriale',
'73'=>'Ets Public Administratif',
'74'=>'P.M. de droit public,administration',
'81'=>'Organisme de protection sociale',
'82'=>'Organisme mutualiste',
2013-06-19 08:24:49 +00:00
'83'=>'Comit<69> d\'Entreprise',
'84'=>'Organisme Professionnel',
'85'=>'Org.de retraite adh. n/obligatoire',
2013-06-19 08:24:49 +00:00
'91'=>'Syndicat de Propri<72>taires',
'92'=>'Association 1901 ou Assimil<69>',
'93'=>'Fondation',
2013-06-19 08:24:49 +00:00
'99'=>'P.M. de droit priv<69>',
);
$tabCJbilans=array('54','55','56','57');
function implode_with_options($assoc_array, $prefix = '', $k_v_glue = '', $vwrap = '', $seperator = '')
{
foreach ($assoc_array as $k => $v)
{
$tmp[] = $k . $k_v_glue . $vwrap . $v . $vwrap;
}
return $prefix . implode($seperator, $tmp);
}
/**
$items = array('Apples', 'number' => 3, 'Vehicle' => '');
// For a query string:
echo implode_with_options($items, '?', '=', '', '&');
/**
* Produces
* ?0=Apples&number=3&Vehicle=
// For a SQL query
echo implode_with_options($items, '', '=', '"', ', ');
*/
?>