Update batch from old server

This commit is contained in:
Michael RICOIS 2015-07-20 08:17:28 +00:00
parent 3e768c8a8b
commit 4623f1d3d0
639 changed files with 271400 additions and 65008 deletions

815
batch/base64decode.php Normal file
View File

@ -0,0 +1,815 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$b64=file_get_contents('/var/www/batch/part1_1.b64');
echo base64_decode($b64);
die();
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
error_reporting(E_ALL ^ E_NOTICE);
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Sirenage automatique des annonces Bodacc pas encore sirenées.
Options :
-s Sirenage semi-automatique (Ligne de prompt pour les entreprises non sirenées)
-p Sirenage de toutes les annonces sans propositions (en vu du traitement manuel)
-a Re-sirenage de toutes les annonces Bodacc non sirenées !
-i:XXX Reprise à partir du numéro d'annonce XXX
-m Ne pas envoyer l'email d'Information à l'équipe de production
-n Ne pas limiter le nombre d'entités à sirener.
";
$semiManuel=$sansPropo=$toutes=$index=$noLimit=false;
$envoyerMail=true;
$mInsee=new MInsee();
$iBodacc=new MBodacc();
$iDb2=new WDB('jo');
$tabCycles=array();
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $semiManuel=false; // Fonctionnement normal du script, càd : on sirene que en auto
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 's':
$semiManuel=true;
break;
case 'm':
$envoyerMail=false;
break;
case 'p':
$sansPropo=true;
break;
case 'a':
$toutes=true;
break;
case 'n':
$noLimit=true;
break;
case 'i':
$index=trim(substr($argv[$i],3));
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabCycles[]=$argv[$i];
}
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de SIRENAGE...".EOL;
$pertinence=false;
$nbRep=30;
$siege=0;
$tabTables=array(
/* array('db'=>'sugarcrm', 'table2'=>'accounts', 'champRS'=>'name',
'champAdresse'=>'billing_address_street',
'champCP'=>'billing_address_postalcode',
'champVille'=>'billing_address_city',
'champSiren'=>'ticker_symbol',
'champSirenValide'=>'(ticker_symbol<30000 OR ticker_symbol IS NULL)AND deleted')*/
array( // Base 0
'db'=>'jo',
// Table à sirener
'table1'=>'bodacc_detail',
// Jointure
'table2'=>"bodacc_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='bodacc_detail'",
// Champs
'champRS'=>'raisonSociale',
'champAdresse'=>"CONCAT_WS(' ', adrNum,adrLibVoie)",
'champCP'=>'codePostal',
'champVille'=>'ville',
'champSiren'=>'b.siren',
'champNic'=>'nic',
'champSirenValide'=>'sirenValide',
'champNicValide'=>'nicValide'),
array( // Base 1
'db'=>'jo',
// Table à sirener
'table1'=>'annonces',
// Jointure
'table2'=>"annonces b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='annonces'",
// Champs
'champRS'=>'raisonSociale',
'champAdresse'=>'adresse',
'champCP'=>'codePostal',
'champVille'=>'ville',
'champSiren'=>'b.siren',
//'champNic'=>'nic',
'champSirenValide'=>'sirenValide'),
array( // Base 2
'db'=>'jo',
// Table à sirener
'table1'=>'sirenage_clients',
// Jointure
'table2'=>"sirenage_clients b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='sirenage_clients'",
// Champs
'champRS'=>'nom',
'champAdresse'=>"TRIM(CONCAT_WS(' ', adresse1,adresse2,adresse3))",
'champCP'=>'cp',
'champVille'=>'ville',
'champSiren'=>'b.siren',
'champNic'=>'b.nic',
'champSirenValide'=>'sirenValide',
'champNicValide'=>'nicValide'),
array( // Base 3
'db'=>'jo',
// Table à sirener
'table1'=>'asso',
// Jointure
'table2'=>"asso b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren AND s.idTable='asso'",
// Champs
'champRS'=>'Assoc_Nom',
'champAdresse'=>'Assoc_Adresse',
'champCP'=>'NULL',
'champVille'=>'NULL',
'champSiren'=>'b.siren',
'champNic'=>'nic',
'champSirenValide'=>'sirenValide',
'champNicValide'=>'nicValide'),
array( // Base 4
'db'=>'jo',
// Table à sirener
'table1'=>'rncs_dirigeants',
// Jointure
'table2'=>"rncs_dirigeants b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.dirSiren AND s.idTable='rncs_dirigeants'",
// Champs
'champRS'=>'dirRS',
'champAdresse'=>'NULL',
'champCP'=>'NULL',
'champVille'=>'NULL',
'champSiren'=>'b.dirSiren',
//'champNic'=>'nic',
'champSirenValide'=>"b.typeDir='PM' AND b.dirSiren",
//'champNicValide'=>'nicValide',
),
array( // Base 5
'db'=>'jo',
// Table à sirener
'table1'=>'boamp_lots',
// Jointure
'table2'=>"boamp_lots b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='boamp_lots'",
// Champs
'champRS'=>'nom',
'champAdresse'=>'adresse',
'champCP'=>'cp',
'champVille'=>'ville',
'champSiren'=>'b.siren',
//'champNic'=>'b.nic',
'champSirenValide'=>"(Boamp_Code='BOMP C' OR Boamp_Rubrique IN('9','94')) AND sansSuite=0 AND (nom<>'' OR adresse<>'' OR cp<>'' OR ville<>'') AND nom NOT LIKE '%INFRUCTUEU%' AND b.sirenValide",
//'champNicValide'=>'nicValide',
),
array( // Base 6
'db'=>'jo',
// Table à sirener
'table1'=>'boamp_detail',
// Jointure
'table2'=>"boamp_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='boamp_detail'",
// Champs
'champRS'=>'raisonSociale',
'champAdresse'=>'adresse',
'champCP'=>'cp',
'champVille'=>'ville',
'champSiren'=>'b.siren',
//'champNic'=>'b.nic',
'champSirenValide'=>"(raisonSociale<>'' OR adresse<>'' OR cp<>'' OR ville<>'') AND b.sirenValide",
//'champNicValide'=>'nicValide',
),
array( // Base 7
'db'=>'jo',
// Table à sirener
'table1'=>'tourisme',
// Jointure
'table2'=>"tourisme b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='tourisme'",
// Champs
'champRS'=>'nom',
'champAdresse'=>'adresse',
'champCP'=>'adrCp',
'champVille'=>'adrVille',
'champSiren'=>'b.siren',
'champNic'=>'b.nic',
'champSirenValide'=>"b.sirenValide",
'champNicValide'=>'b.nicValide',
),
array( // Base 8
'db'=>'sdv1',
// Table à sirener
'table1'=>'fedLiens',
// Jointure
'table2'=>"fedLiens b LEFT JOIN bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren2 AND s.idTable='fedLiens'",
// Champs
'champRS'=>'RS',
'champAdresse'=>'adresse_libvoie',
'champCP'=>'adresse_cp',
'champVille'=>'adresse_ville',
'champSiren'=>'b.siren2',
//'champNic'=>'nic',
'champSirenValide'=>"b.PpPm='PM' AND b.siren2",
//'champNicValide'=>'nicValide',
),
array( // Base 9
'db'=>'bopi',
// Table à sirener
'table1'=>'marques',
// Jointure
'table2'=>"bopi.marques b LEFT JOIN jo.bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.sirenDeposant AND s.idTable='marques'",
// Champs
'champRS'=>'deposantMarque',
'champAdresse'=>"CONCAT_WS(' ',deposant_AdrNum,deposant_AdrTypVoie,deposant_AdrLibVoie,deposant_AdrComp)",
'champCP'=>'deposant_AdrCP',
'champVille'=>'deposant_AdrVille',
'champSiren'=>'b.sirenDeposant',
//'champNic'=>'nic',
'champSirenValide'=>"b.sirenValide",
//'champNicValide'=>'nicValide',
),/*
array( // Base 10 - Ce siren tout le temp !!!
'db'=>'sdv1',
// Table à sirener
'table1'=>'tabCNCC',
// Jointure
'table2'=>"sdv1.tabCNCC b LEFT JOIN jo.bodacc_sirenage s ON s.idAnn=b.id AND s.siren=b.siren AND s.idTable='tabCNCC'",
// Champs
'champRS'=>'nom',
'champAdresse'=>"CONCAT_WS(' ',adresse,adresse2)",
'champCP'=>'cp',
'champVille'=>'ville',
'champSiren'=>'b.siren',
'champNic'=>'nic',
'champSirenValide'=>"sirenValide",
'champNicValide'=>'nicValide',
), */
);
//$iDb2=new WDB('modelisation');
foreach ($tabTables as $i=>$table) { // On boucle sur chaque table
if (count($tabCycles)>0 && !in_array($i, $tabCycles)) continue;
$iDb=new WDB($table['db']);
$tableDB=$table['table2'];
if ($iDb === false) die('Could not select database: ' . $iDb->getLastError());
if (!$sansPropo) $strOptions=" AND s.idAnn IS NULL AND s.siren IS NULL ";
else $strOptions="";
//if ($toutes) { $tableDB=$table['table1'].' b'; $strOptions=''; }
if ($index) $strOptions.=' AND b.id>='.$index;
//if ($index) $strOptions.=' AND id>='.$index;
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, nomCommercial, enseigne, sigle, adrNum, adrSiegeNum, '.$table['champAdresse'].' as Adr, CONCAT_WS(adrNum," ",adrLibVoie) as AdrSiege, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, codePostalSiege, villeSiege, Rubrique_Bodacc, Bodacc_Num, Bodacc_Date_Parution, Num_Annonce, Tribunal_Code, dateJugement, DATE_FORMAT(dateJugement, \'%w\') as jourJugement, DATE_FORMAT(dateJugement, \'%d\') as jjJugement';
//if ($i==0)
// $strOptions.=" OR b.typeEven LIKE '%1515%' ";//OR b.typeEven LIKE '%1517%' OR b.typeEven LIKE '%1520%' OR b.typeEven LIKE '%1999%'
// codeEven==1515 || $codeEven==1517 || $codeEven==1520 ||$codeEven==1999))
if ($i==1)
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville,
"" AS Rubrique_Bodacc, parutionNum AS Bodacc_Num, dateSource AS Bodacc_Date_Parution, idAnnonce AS Num_Annonce, tribunal AS Tribunal_Code,
dateJugement, DATE_FORMAT(dateJugement, \'%w\') as jourJugement, DATE_FORMAT(dateJugement, \'%d\') as jjJugement';
elseif ($i==2)
$fields='id, '.$table['champSiren'].' as sir, '.$table['champNic'].' as nic, '.$table['champRS'].' as RS, enseigne, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville,
telephone, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, "" AS Bodacc_Date_Parution, "" AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
elseif ($i==3) {
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, "" AS enseigne, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville,
Type_Annonce AS Rubrique_Bodacc, Num_Parution AS Bodacc_Num, Date_Parution AS Bodacc_Date_Parution, Num_Annonce, Sous_Prefecture AS Tribunal_Code,
Assoc_Date_Declaration2 AS dateJugement, "" as jourJugement, "" as jjJugement';
$strOptions.="";
}
elseif ($i==4)
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, "" AS enseigne, "" as Adr, "" as CP, "" as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, flux AS Bodacc_Date_Parution, 0 AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
elseif ($i==5)
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, Boamp_Rubrique AS Rubrique_Bodacc, "" AS Bodacc_Num, Boamp_Date_Parution AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
elseif ($i==6)
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, Boamp_Rubrique AS Rubrique_Bodacc, "" AS Bodacc_Num, Boamp_Date_Parution AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
elseif ($i==7) {
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, typeClasse AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
} elseif ($i==9) {
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
} elseif ($i==10) {
$fields='id, '.$table['champSiren'].' as sir, '.$table['champRS'].' as RS, '.$table['champAdresse'].' as Adr, '.$table['champCP'].' as CP, '.$table['champVille'].' as ville, "" AS Rubrique_Bodacc, "" AS Bodacc_Num, b.dateInsert AS Bodacc_Date_Parution, s.idAnn AS Num_Annonce, "" AS Tribunal_Code,
"" AS dateJugement, "" as jourJugement, "" as jjJugement';
$strOptions=" AND cp IS NOT NULL ";
}
$where=$table['champSirenValide']."=0 ";
if ($i<>2 && $i<>4 && $i<>7 && $i<>9 && $i<>10) {
$where.=" AND idSuppr=0";
}
if ($noLimit)
$strOptions.=" ORDER BY id DESC";
else
$strOptions.=" /*AND id>768245*/ ORDER BY id ASC LIMIT 0,5000";
$where.=" $strOptions ";
echo date('Y/m/d - H:i:s') ." - REQUETE SQL = SELECT $fields FROM $tableDB WHERE $where;".EOL;
//$listeNonSirene=$iDb->select($tableDB, $fields, $where, true, MYSQL_ASSOC);
$nbNonSirene=$iDb->select($tableDB, $fields, $where, true, MYSQL_ASSOC, true);
//echo date('Y/m/d - H:i:s') ." - Nombre d'entitées non SIRENEES : ". count($listeNonSirene) . EOL;
echo date('Y/m/d - H:i:s') ." - Nombre d'entitées non SIRENEES : ".$nbNonSirene . EOL;
$k=0;
//foreach ($listeNonSirene as $k=>$entrep) {
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$lastId=$entrep['id'];
// $listeNonSirene as $k=>$entrep) {
$k++;
//if ($k==1000) die();
/* Vérifier dans la table failure
if (substr($entrep['Rubrique_Bodacc'],0,1)=='A') $codJournal='001';
else $codJournal='200';
$failures=$iDb2->select('failures', 'SIREN, NIC, libann, codevt, codtri, SONOM, SOCOM', "codjou='$codJournal' AND datpar='".str_replace('-','',$entrep['Bodacc_Date_Parution'])."' AND numbod='".$entrep['Bodacc_Num']."' AND numannjou='0".$entrep['Num_Annonce']."' AND SIREN NOT LIKE '000000000' GROUP BY SIREN", true);
if (count($failures)==2) {
/** Si plus de 1 siren, il faut vérifier suivant le type de l'annonce à quelle entreprise rattacher le siren manquant
$tabSirF=array();
foreach ($failures as $sirenf)
$tabSirF[]=$sirenf['SIREN'];
$strTabSir=implode(',',$tabSir);
$tabTmp=$iDb->select('bodacc_detail','id, siren, sirenValide', 'id='. $entrep['id'].' ORDER BY sirenValide ASC', true);// ." AND siren NOT IN ($strTabSir)", true);
$tabSir=array();
foreach ($tabTmp as $sirenf)
$tabSir[]=$sirenf['siren'];
/*echo "Failures:\n";
print_r($failures);
echo "S&D:\n";
print_r($tabTmp);
echo "Diff:\n";
$tabTmp2=array_diff($tabSirF,$tabSir);
$siren=$tabTmp2[0]; // Valeur du Siren à prendre pour la mise à jour
$sir=$tabTmp[0]['siren']; // Sir à mettre à jour
//$nom=$entrep['SONOM'];
//$vil=$entrep['SOCOM'];
echo "Trouvé = $siren !\n";
$iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>2), 'id='.$entrep['id'].' AND siren='.$sir, true) or die($iDb->getLastError());
//die();
// On efface l'information de la table A sirener au cas où !
$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$sir);
} elseif (count($failures)==1) {
echo "Une seule correspondance failures:\n";
print_r($failures);
$siren=$failures[0]['SIREN']; // Valeur du Siren à prendre pour la mise à jour
//$sir=$tabTmp[0]['siren']; // Sir à mettre à jour
$iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>2), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true);// or die($iDb->getLastError());
// On efface l'information de la table A sirener au cas où !
$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']);
//die();
/*} elseif (count($failures)>2) {
echo "Plus de 2 correspondance failures:\n";
print_r($failures);
die();
} else { // Pas trouvé dans failures
**/
$raisonSociale=preg_replace("/,(.*)\)/",'',$entrep['RS']);
if ($i==5 || $i==6)
$raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.$raisonSociale.' ',array(' VILLE '=>' COMMUNE ',
' CONSEIL GENERAL '=>' DEPARTEMENT ',
))));
/* $raisonSociale=strtoupper(strtr($raisonSociale, '/(),-\\\'":',' '));
$raisonSociale=preg_replace('/[^0-9A-Z]/', ' ', strtr($raisonSociale, 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$raisonSociale=preg_replace("/GERANT (.*)/",'', $raisonSociale);
$raisonSociale=preg_replace("/^(MLLE |MELLE |MLE |MME |ME |M |MR )/",'', $raisonSociale);
$raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.$raisonSociale.' ',
array(' NEE '=>' ', ' DIVORCEE '=>' ', ' DENOMINATION '=>' ',' D NOMINATION '=>' ', ' NOM D USAGE '=>' ', ' ASSOCIATION '=>' ',' CLUB '=>' ', ' SUCCESSION '=>' ', ' CONJOINT '=>' ', ' COLLABORATEUR '=>' ', ' VEUVE '=>' ', // FEU
' S E L A R L '=>' ', ' S A R L '=>' ', ' S A S '=>' ', ' S A '=>' ', ' S C I '=>' ', ' S N C '=>' ', ' S C P '=>' ', ' S C E A '=>' ', ' S C A '=>' ', ' E U R L '=>' ', ' E A R L '=>' ', ' E A R '=>' ', ' E A '=>' ', ' S C '=>' ',
' SELARL '=>' ', ' SARL '=>' ', ' SAS '=>' ', ' SA '=>' ', ' SCI '=>' ', ' SNC '=>' ', ' SCP '=>' ', ' SCEA '=>' ', ' SCA '=>' ', ' EURL '=>' ',
' EARL '=>' ', ' EAR '=>' ', ' EA '=>' ',' SC '=>' ',
' DE '=>' ',' ET '=>' ',' LA '=>' ',' DU '=>'', ' DES '=>' ', ' L '=>' ', ' SOCIETE '=>' ', ' MONSIEUR '=>' ', ' MADAME '=>' ', ' STE '=>' ', ' CIVILE '=>' ', ' IMMOBILIERE '=>' ',' LIQUIDATION '=>' ', ' DISSOLUTION '=>' ',
))));*/
if ($entrep['CP']<>0) {
$adresse=preg_replace('/[^0-9A-Z]/', ' ', strtr($entrep['Adr'], 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$adresse=trim(preg_replace("/ +/",' ', strtr(' '.$adresse.' ',
array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' '))));
$codePostal=$entrep['CP'];
$ville=trim(strtr($entrep['ville'], '/(),',' '));
} else {
$adresse=preg_replace('/[^0-9A-Z]/', ' ', strtr($entrep['AdrSiege'], 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ?', 'aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$adresse=trim(preg_replace("/ +/",' ', strtr(' '.$adresse.' ',
array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' '))));
$codePostal=$entrep['codePostalSiege'];
$ville=trim(strtr($entrep['villeSiege'], '/(),',' '));
}
if ($i==3) {
$strAdresse=$entrep['Adr'];
$tabAdresse=$mInsee->structureVoie($entrep['Adr']);
$adresse=trim(preg_replace("/ +/",' ', strtr(' '.$tabAdresse['libVoie'].' '.$tabAdresse['adrComp0'].' ',
array(' DE '=>' ',' LA '=>' ',' L '=>' ',' BIS '=>' ', ' DU '=>'', ' DES '=>' ',' LES '=>' ', ' A '=>' '))));
$codePostal=$tabAdresse['cp'];
$ville=$tabAdresse['ville'];
// print_r($tabAdresse);
// die();
}
if ($i==2 && $entrep['sir']>1000 && $entrep['nic']>9) {
$sirC=$entrep['sir'];
$nicC=$entrep['nic'];
$tabTmp=$mInsee->getIdentiteLight($sirC, $nicC);
//print_r($tabTmp);
// Entreprise recherchée !
$raisonSociale=strtoupper($entrep['RS']);
$adresse=strtoupper($entrep['Adr']);
$codePostal=strtoupper($entrep['CP']);
$ville=strtoupper($entrep['ville']);
$telephone=strtr(@$entrep['telephone'],array('.'=>'',','=>'',';'=>'','-'=>'','/'=>'','+33'=>'','0033'=>'','('=>'',')'=>'',' '=>''));
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE cli : $sirC $nicC - $raisonSociale, $adresse, $codePostal $ville ($telephone)".EOL;
// Entreprise lue (trouvée)
$raisonSocialeLu=strtoupper($tabTmp['Nom']);
$adresseLu=strtoupper($tabTmp['Adresse']);
$codePostalLu=$tabTmp['CP'];
$villeLu=strtoupper($tabTmp['Ville']);
$sirL=$tabTmp['Siren'];
$nicL=$tabTmp['Nic'];
$telephoneLu=$tabTmp['Tel'];
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : TROUVEE cli : $sirL $nicL - $raisonSocialeLu, $adresseLu, $codePostalLu $villeLu ($telephoneLu)".EOL;
$len=strlen($raisonSociale.$adresse.$codePostal.$ville);
$lenLu=strlen($raisonSocialeLu.$adresseLu.$codePostalLu.$villeLu);
$levRS=levenshtein($raisonSociale,$raisonSocialeLu);
$levAdr=levenshtein($adresse,$adresseLu);
$levCP=levenshtein($codePostal,$codePostalLu);
$levVille=levenshtein($ville,$villeLu);
$levTotal=$levRS+$levAdr+$levCP+$levVille;
$len1=($lenLu+$len)/2;
$ratio1=$levTotal/$len1*1.0;
$ratio2=$len1/$levTotal;
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité $levTotal, $len1 => $ratio1, $ratio2 : ";
if ($ratio1<0.4 && $table['table1']=='sirenage_clients') {
$tabUpdate=array( 'siren'=>$sirL,
'nic'=>$nicL);
$tabUpdate[$table['champSirenValide']]=1;
$tabUpdate[$table['champNicValide']]=1;
$iDb->update($table['table1'], $tabUpdate,
"id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL);
echo 'VALIDE'.EOL;
continue;
}
echo 'non validé'.EOL;
if ($telephone<>'') {
$tabTmp=$mInsee->getEtablissementsParId('TEL', $telephone, $deb, $nbRep, $maxRep);
$tabTrouve=$tabTmp['reponses'];
if ($tabTmp[nbReponses]>0) {
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité TELEPHONE => $ratio1, $ratio2 : ";
if ($tabTmp[nbReponses]==1 && $tabTrouve[0]['Siren']==$sirC) {
$tabTrouv=$tabTrouve[0];
$tabUpdate=array( 'siren'=>$sirC,
/*'nic'=>$nicL*/);
$tabUpdate[$table['champSirenValide']]=1;
$tabUpdate[$table['champNicValide']]=1;
$iDb->update($table['table1'], $tabUpdate,
"id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL);
echo 'VALIDE'.EOL;
continue;
}
echo 'non validé'.EOL;
}
}
}
$deb=0;$nbRep=20;$maxRep=20;$actif='';
$tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
/** On recherche au nom Commercial **/
/* if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
/** On recherche à l'enseigne **/
/* if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
/** On recherche au sigle **/
/* if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['sigle'], $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
/** On présume que le code postal n'est pas bon **/
/* if (count($tabTrouve)==0) {
$tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et nom Commercial
if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et à l'enseigne
if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et au sigle
if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['sigle'], $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
/**
** On présume que le numéro dans la rue est faux
**/
/* if (count($tabTrouve)==0) {
$tabTmp=$mInsee->rechercheEtab($raisonSociale, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et nom Commercial
if (count($tabTrouve)==0 && trim($entrep['nomCommercial'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['nomCommercial'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et à l'enseigne
if (count($tabTrouve)==0 && trim($entrep['enseigne'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['enseigne'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// et au sigle
if (count($tabTrouve)==0 && trim($entrep['sigle'])<>'') {
$tabTmp=$mInsee->rechercheEtab($entrep['sigle'], trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
// Recherche par le dernier mot de la RS
if (count($tabTrouve)==0) {
$tabMot=explode(' ', $raisonSociale);
$rsFin=end($tabMot);
$rsDeb=end($tabMot);
if (strlen($motFin)>3)
$tabTmp=$mInsee->rechercheEtab($rsFin, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
elseif (strlen($motDeb)>3)
$tabTmp=$mInsee->rechercheEtab($rsDeb, trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))), $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
if (count($tabTrouve)==0) {
$tabMot=explode(' ', trim(strtoupper(preg_replace("/[0-9]{1,4} /i",' ',strtr($adresse, '/(),-',' ')))));
$adrFin=end($tabMot);
if (strlen($adrFin)>3) {
$tabTmp=$mInsee->rechercheEtab($rsFin, $adrFin, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
}
if (count($tabTrouve)==0) {
$tabMot=explode(' ', $ville);
$vilFin=end($tabMot);
if (strlen($vilFin)>3) {
$tabTmp=$mInsee->rechercheEtab($rsFin, $adrFin, '', $vilFin, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
}
}
/** Si l'adresse est "exhaustive", on cherche sans la raison sociale **/
/* if (count($tabTrouve)==0 && ($entrep['adrNum']<>0 || $entrep['adrSiegeNum']<>0)) {
$tabTmp=$mInsee->rechercheEtab('', $adresse, $codePostal, '', $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
/** Si l'adresse est "exhaustive", on cherche sans la raison sociale **/
/* if (count($tabTrouve)==0 && ($entrep['adrNum']<>0 || $entrep['adrSiegeNum']<>0)) {
$tabTmp=$mInsee->rechercheEtab('', $adresse, '', $ville, $siege, $actif, $deb, $nbRep, $maxRep, $pertinence, true);
$tabTrouve=$tabTmp['reponses'];
}
*/
//$adresse=trim(strtoupper(preg_replace("/[0-9]{1,4}( rue | avenue | boulevard )/i",'',strtr($entrep['Adr'], '/(),-',' '))));
//$ville=trim(strtr($entrep['Ville'], '/(),',' '));
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE DE ". $entrep['id'].', '.$entrep['sir'].' : '.$raisonSociale.', '.$adresse.', '.$codePostal.' '.$ville.' ('.count($tabTrouve). " réponses)".EOL;
$tabAnn=$iDb2->select('bodacc', 'annonce', 'id='.$entrep['id']);
$annonce=$tabAnn[0][0];
//die($annonce);
if ($i==3) {
$tabTrouve2=array();
if (is_array($tabTrouve) && count($tabTrouve)>0)
foreach ($tabTrouve as $iT=>$tabTrouveT)
if ($tabTrouveT['FJ']>=9100 && $tabTrouveT['FJ']<=9300 &&
$tabTrouveT['Siret']>=1000) $tabTrouve2[]=$tabTrouveT;
$tabTrouve=$tabTrouve2;
}
if (count($tabTrouve)==1) {
$entrepT=$tabTrouve[0];
$siren=substr($entrepT['Siret'],0,9);
$nic=substr($entrepT['Siret'],9,5);
// Entreprise recherchée !
$raisonSociale=strtoupper($entrep['RS']);
$adresse=strtoupper($entrep['Adr']);
$codePostal=strtoupper($entrep['CP']);
$ville=strtoupper($entrep['ville']);
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : RECHERCHE : $raisonSociale, $adresse, $codePostal $ville".EOL;
// Entreprise lue (trouvée)
$raisonSocialeLu=strtoupper($entrepT['Nom']);
$adresseLu=strtoupper($entrepT['Adresse']);
$codePostalLu=$entrepT['CP'];
$villeLu=strtoupper($entrepT['Ville']);
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : TROUVEE : $raisonSocialeLu, $adresseLu, $codePostalLu $villeLu".EOL;
//die(print_r($entrep));
$len=strlen($raisonSociale.$adresse.$codePostal.$ville);
$lenLu=strlen($raisonSocialeLu.$adresseLu.$codePostalLu.$villeLu);
$levRS=levenshtein($raisonSociale,$raisonSocialeLu);
$levAdr=levenshtein($adresse,$adresseLu);
$levCP=levenshtein($codePostal,$codePostalLu);
$levVille=levenshtein($ville,$villeLu);
$levTotal=$levRS+$levAdr+$levCP+$levVille;
$len1=($lenLu+$len)/2;
$ratio1=$levTotal/$len1*1.0;
$ratio2=$len1/$levTotal;
echo "$siren $nic\n";
//print_r($entrepT);//die();
/*if ($table['db']<>'jo')
$iDb->update($tableDB, array($table['champSiren']=>$siren), "id='".$entrep['id']."'", true) or die($iDb->getLastError());
else*/
//print_r($tabTmp);
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : 1 seule possibilité $levTotal, $len1 => $ratio1, $ratio2 : ";
if (($ratio1<0.4 && $table['table1']=='sirenage_clients') ||
($ratio1<0.3 && $table['table1']=='asso' && $siren>1000) ||
($ratio1<0.4 && $table['table1']=='boamp_lots' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') ||
($ratio1<0.4 && $table['table1']=='boamp_detail' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') ||
($ratio1<0.4 && $table['table1']=='marques' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'') ||
($ratio1<0.3 && $table['table1']=='tabCNCC' && $siren>1000 && $raisonSociale<>'' && $adresse<>'' && $codePostal>0 && $ville<>'')
) {
//print_r($entrepT);die();
// Si bon rapprochement, on ne demande pas de confirmation !
if ($table['table1']=='boamp_lots' || $table['table1']=='boamp_detail') {
$tabUpdate=array( 'siren'=>$siren,
'nic'=>$nic);
$tabUpdate['sirenValide']=1;
$tabUpdate['nicValide']=1;
} elseif ($table['table1']=='marques') {
$tabUpdate=array( 'sirenDeposant'=>$siren,
'sirenValide'=>4);
} else {
$tabUpdate=array( 'siren'=>$siren,
'nic'=>$nic);
$tabUpdate[$table['champSirenValide']]=1;
$tabUpdate[$table['champNicValide']]=1;
}
$iDb->update($table['table1'], $tabUpdate,
"id='".$entrep['id']."'", false, 0, true) or die('ERREUR 1'.$iDb->getLastError().EOL.print_r($tabUpdate,1).EOL.$table['table1']);
echo 'VALIDE'.EOL;
continue;
}
echo 'non validé'.EOL;
//fgets(STDIN);
if (trim($siren)<>'') {
/* $tabTmp=$iDb->select('bodacc_detail','count(*)', 'id='. $entrep['id'] ." AND siren=$siren", true);
if ($tabTmp[0][0]<>0) { // Cette annonce est déjà ratachée au siren, on supprime donc ce lien inutile référençant le même siren
//$iDb->delete('bodacc_detail', 'id='. $entrep['id'] .' AND siren='.$entrep['sir'], true);
} else
$iDb->update('bodacc_detail', array('siren'=>$siren, $table['champNic']=>$nic, $table['champSirenValide']=>3, $table['champNicValide']=>3), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die('ERREUR : '.$iDb->getLastError());
// On efface l'information de la table A sirener au cas où !
//$iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die('ERREUR : '.$iDb->getLastError());
*/
$tabInsert=array( 'idAnn'=>$entrep['id'],
'idTable'=>$table['table1'],
'siren'=>$entrep['sir'],
'siretProposes'=>$siren,
'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce),
);
if ($iDb2->insert('bodacc_sirenage', $tabInsert, false, true))
$iDb2->update('bodacc_sirenage', array('siretProposes'=>$siren), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'", false, 0, true) or die('ERREUR 2 : '.$iDb->getLastError().EOL.print_r($tabInsert, true).EOL.'idAnn='.$entrep['id']." AND siren=".$entrep['sir']." AND idTable='".$table['table1']."'");
}
} elseif (count($tabTrouve)==0) {
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : Pas de réponse !".EOL;
$tabInsert=array( 'idAnn'=>$entrep['id'],
'idTable'=>$table['table1'],
'siren'=>$entrep['sir'],
'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce),
);
if (!$iDb2->insert('bodacc_sirenage', $tabInsert, false, true))
$iDb2->update('bodacc_sirenage', array('siretProposes'=>''), 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'", false, 0, true) or die('ERREUR 3 : '.$iDb->getLastError().EOL);
} else { // Plusieurs siren possibles
// print_r($tabTrouve);
// die();
//echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : Plusieurs siren possibles".EOL;
$siren1=substr($tabTrouve[0]['Siret'],0,9);
$nic1=substr($tabTrouve[0]['Siret'],9,5);
$sirenDiff=$sirenNomIdem=$sirenAdrIdem=false;
$tabSiren=array(0=>0);
$tabSiret=array();
foreach ($tabTrouve as $j=>$entrepT) {
if($j==0) echo date('Y/m/d - H:i:s') ." - PROBABLES :".EOL;
$siren=substr($entrepT['Siret'],0,9);
$nic=substr($entrepT['Siret'],9,5);
$tabSiren[]=$siren;
$nomT=strtr($entrep['RS'], '/(),-',' ');
$adresseT=trim(strtoupper(preg_replace("/[0-9]{1,4}(.*)( R | AV | RUE | AVENUE | BD | BOULEVARD )/i",'',strtr($entrepT['Adresse'], '/(),-',' '))));
if (levenshtein($raisonSociale,$nomT)>2) $sirenNomIdem=$siren;
if ($siren<>$siren1) $sirenDiff=true;
if (levenshtein($adresse,$adresseT)<2) $sirenAdrIdem=$siren;
$num=$j+1;
echo "$num. $siren $nic, ". $entrepT['Nom'].', '.$entrepT['Nom2'].', '.$entrepT['Enseigne'].', '.$entrepT['Adresse'].', '.$entrepT['CP'].', '.$entrepT['Ville']."\n";
$tabSiret[]=$entrepT['Siret'].'-'.$entrepT['Pertinence'];
}
echo date('Y/m/d - H:i:s') ." - $k/$nbNonSirene : ".count($tabTrouve)." possibilités :\n";
$tabInsert=array( 'idAnn'=>$entrep['id'],
'idTable'=>$table['table1'],
'siren'=>$entrep['sir'],
'siretProposes'=>implode(';',$tabSiret),
'droitLocal'=>$iBodacc->isAudienceCivile($entrep['Tribunal_Code'], $entrep['dateJugement'], $entrep['jourJugement'], $entrep['jjJugement'], $annonce),
);
//fgets(STDIN);
// if ($sirenDiff==false) {
// Tous les SIREN sont identiques, l'entreprise ttouvée est la bonne !
// echo "$num. Siren trouvé = $siren (tous les Sirens sont identiques) !\n";
// $iDb->update('bodacc_detail', array('siren'=>$siren, $table['champSirenValide']=>4, $table['champNicValide']=>0), 'id='.$entrep['id'].' AND siren='.$entrep['sir'], true) or die('ERREUR : '.$iDb->getLastError());
// // On efface l'information de la table A sirener au cas où !
// $iDb->delete('bodacc_sirenage', 'idAnn='.$entrep['id'].' AND siren='.$entrep['sir']) or die('ERREUR : '.$iDb->getLastError());
// } else {
// /** On insère en base toutes les multipropositions pour le sirenage manuel */
if ($iDb2->insert('bodacc_sirenage', $tabInsert, false, true)) {
$tabUpdate=array('siretProposes'=>implode(';',$tabSiret));
$strUpdate='idAnn='.$entrep['id'].' AND siren='.$entrep['sir']." AND idTable='".$table['table1']."'";
// print_r($tabUpdate);
// echo $strUpdate.EOL;
$iDb2->update('bodacc_sirenage', $tabUpdate, $strUpdate, false, 0, true) or die('ERREUR 4 : '.$iDb->getLastError());
}
// }
//, 'id='.$entrep['id'].' AND '. $table['champSiren'] .'='.$entrep['sir'], true) or die(mysql_error());
/*elseif ($sirenNomIdem!=false) {
echo "$num. Siren trouvé = $sirenNomIdem (raisons sociales identiques) !\n";
if ($table['db']<>'jo')
$iDb->update($tableDB, array($table['champSiren']=>$sirenNomIdem), "id='".$entrep['id']."'", true) or die(mysql_error());
else
$iDb->update($tableDB, array($table['champSiren']=>$sirenNomIdem, $table['champSirenValide']=>5), 'id='.$entrep['id'], true) or die(mysql_error());
} elseif ($sirenAdrIdem!=false) {
echo "$num. Siren trouvé = $sirenNomIdem (adresses identiques) !\n";
if ($table['db']<>'jo')
$iDb->update($tableDB, array($table['champSiren']=>$sirenAdrIdem), "id='".$entrep['id']."'", true) or die(mysql_error());
else
$iDb->update($tableDB, array($table['champSiren']=>$sirenAdrIdem, $table['champSirenValide']=>6), 'id='.$entrep['id'], true) or die(mysql_error());
} else
{ //if ($semiManuel==true);
$saisie='';
while($semiManuel==true && $saisie=='') {
echo "Veuillez saisir le numéro qui identifie la bonne entreprise (0 si pas de réponse) : ";
$saisie = trim(fgets(STDIN));
if ($saisie==0) break;
elseif ($saisie>0 && $saisie<=$j+1) {
$sir=$tabSiren[$saisie];
if ($table['db']<>'jo')
$iDb->update($tableDB, array($table['champSiren']=>$sir), "id='".$entrep['id']."'", true) or die(mysql_error());
else
$iDb->update($tableDB, array($table['champSiren']=>$sir, $table['champSirenValide']=>2),
'id='.$entrep['id'], true) or die(mysql_error());
break;
}
else $saisie='';
}
}*/
}
echo "\n";
}
// $nbSirenage=count($listeNonSirene);
if ($nbNonSirene>9 && $envoyerMail) {
// On n'envoie pas de mails pour le sirenage de l'historique boamp
if ($table['table1']=='boamp_lots' && $lastId7<768245) continue;
/** Envoi d'un email aux Equipes de production pour le sirenage **/
$message="Il y a $nbNonSirene nouveaux rapprochements '".$table['table1']."' à faire.";
sendMail('production@scores-decisions.com', 'jal42@scores-decisions.com', 'Nouvelles entreprises disponibles pour le sirenage.', $message);
}
//}
unset($iDb); // A cause du changement possible de Base de Données
}
echo date('Y/m/d - H:i:s') ." - FIN du programme de SIRENAGE des annonces mal sirenés du BODACC.".EOL;
die();
?>

View File

@ -0,0 +1,488 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2013 rel. 2 sp2 (http://www.altova.com) by Roux (DIR. INFO LEGALE ADMINISTRATIVE) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by journal-officiel (Direction Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 10/06/08 -->
<!-- Version V02 du 18/07/2008 adresse et depot passé en optionnel pour les annulation. -->
<!-- Version V03 du 15/04/2010 prise en compte du nouveau numéro de département de la Mayotte (976) -->
<!-- Version V06 du 8/04/2014 prise en compte du nouveau champ descriptif -->
<!-- ********************************************************************************************************************************************************************************** -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:iso4217="urn:un:unece:uncefact:codelist:standard:5:4217:2001" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Bilan_XML_Rediff">
<xs:annotation>
<xs:documentation>Composant Annonce Modifications générales et Radiation pour les Reffuseurs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numero de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="listeAvis">
<xs:complexType>
<xs:sequence>
<xs:element name="avis" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="typeAnnonce">
<xs:annotation>
<xs:documentation>Type de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="annonce">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="rectificatif">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="annulation">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nojo">
<xs:annotation>
<xs:documentation>Numéro d'identification J.O.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroAnnonce">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Num_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroDepartement" type="Departement_Type">
<xs:annotation>
<xs:documentation>N° de département du Greffe</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tribunal" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Code Greffe qui a procédé à l'avis -</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroImmatriculation">
<xs:complexType>
<xs:sequence>
<xs:element name="numeroIdentificationRCS">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:length value="11"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeur fixée à "RCS"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="denomination" type="NomDenomination_Type">
<xs:annotation>
<xs:documentation>Dénomination</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sigle" type="Sigle_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Sigle</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="formeJuridique" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Forme juridique (Ex : Société Anonyme, SARL, EURL,...)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="adresse" minOccurs="0">
<xs:annotation>
<xs:documentation>Adresse</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="france" type="AdresseFrance_Type">
<xs:annotation>
<xs:documentation>Adresse en France de la société </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="etranger" type="AdresseEtranger_Type">
<xs:annotation>
<xs:documentation>Adresse à l'étranger</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="depot" type="Depot_Type" minOccurs="0"/>
<xs:element name="parutionAvisPrecedent" minOccurs="0">
<xs:annotation>
<xs:documentation>Information sur l'avis à rectifier</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nomPublication" type="Alpha_Type"/>
<xs:element name="numeroParution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numéro de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroAnnonce" type="Num_Type">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- date -->
<xs:simpleType name="Date_Type">
<xs:annotation>
<xs:documentation>type simple format date YYYY-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="....-..-.."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateHeure_Type">
<xs:annotation>
<xs:documentation>format YYYY-MM-DDTHH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime">
<xs:pattern value="....-..-..T..:..:.."/>
</xs:restriction>
</xs:simpleType>
<!-- string -->
<xs:simpleType name="Alpha_Type">
<xs:annotation>
<xs:documentation>type A : tous les caractères, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlphaNum_Type">
<xs:annotation>
<xs:documentation>type AN : tous les caractères, tous les chiffres, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*"/>
</xs:restriction>
</xs:simpleType>
<!-- number -->
<xs:simpleType name="Num_Type">
<xs:annotation>
<xs:documentation>type N : tous les chiffres</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*"/>
</xs:restriction>
</xs:simpleType>
<!-- technique -->
<xs:simpleType name="NomDenomination_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="200"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Sigle_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Departement_Type">
<xs:annotation>
<xs:documentation>code département</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
<xs:pattern value="2A|2B|[0-2]{1}[1-9]{1}|10|[3-8]{1}\d{1}|[9]{1}[0-5]{1}|(97[1-6]{1})|98[4-8]{1}|99"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NumeroGreffe_Type">
<xs:annotation>
<xs:documentation>code Greffe</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:minLength value="4"/>
<xs:maxLength value="6"/>
<xs:pattern value="\d{4,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomGreffe_Type">
<xs:annotation>
<xs:documentation>dérivé de Alpha_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Parution_Type">
<xs:restriction base="Num_Type">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AdresseEtranger_Type">
<xs:sequence>
<xs:element name="adresse">
<xs:annotation>
<xs:documentation>Nom d'adresse à l'étranger</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pays" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom du pays</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdresseFrance_Type">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Numéro de la voie
Ex : 4</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="typeVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Type de la voie
Ex : rue</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom de la voie
Ex : d'Enfer</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="complGeographique" minOccurs="0">
<xs:annotation>
<xs:documentation>Complément gépgraphique
Ex : Résidence Bel-Air</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BP" minOccurs="0">
<xs:annotation>
<xs:documentation>Boîte postale
Ex : BP 14192</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="localite" minOccurs="0">
<xs:annotation>
<xs:documentation>Localité
Ex : Saint-Chéron</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codePostal" type="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal
Ex : 51290</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ville">
<xs:annotation>
<xs:documentation>Ville/Bureau distributeur
Ex : Saint-Rémy-en-Bouzemont-Saint-Genest-et-Isson</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NumeroImmatriculation_Type">
<xs:annotation>
<xs:documentation>NNN NNN NNN RCS XXXXXX avec NNN NNN NNN N° d'identification et XXXXXXX Greffe d'immatriculation du dossier (Ex : 324 568 789 RCS Paris)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroIdentification">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="11"/>
<xs:pattern value="\d{3} \d{3} \d{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeur fixée à "RCS"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="3"/>
<xs:enumeration value="RCS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Depot_Type">
<xs:annotation>
<xs:documentation xml:lang="fr">définition d'un dépôt</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:annotation>
<xs:documentation xml:lang="fr"/>
</xs:annotation>
<xs:element name="dateCloture" type="Date_Type">
<xs:annotation>
<xs:documentation>Date de clôture des comptes</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="typeDepot">
<xs:annotation>
<xs:documentation xml:lang="fr">Enumération : Comptes annuels et rapports
Comptes consolidés et rapports
Comptes annuels et consolidés et rapports</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:enumeration value="Comptes annuels et rapports"/>
<xs:enumeration value="Comptes consolidés et rapports"/>
<xs:enumeration value="Comptes annuels, consolidés et rapports"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="descriptif" minOccurs="0">
<xs:annotation>
<xs:documentation xml:lang="fr">Descriptif à publier
Ex : Cette société a également déposé une déclaration de confidentialité des comptes annuels en application du premier alinéa de l'article L.232-25.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by SSI/CTI (JOURNAUX OFFICIELS) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by journal-officiel (Direction Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 29/07/09 -->
<!-- ********************************************************************************************************************************************************************************** -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:iso4217="urn:un:unece:uncefact:codelist:standard:5:4217:2001" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Divers_XML_Rediff">
<xs:annotation>
<xs:documentation>Composant Annonce diverse pour les Reffuseurs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numero de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="listeAvis">
<xs:complexType>
<xs:sequence>
<xs:element name="avis" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="typeAnnonce">
<xs:annotation>
<xs:documentation>Type de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="annonce">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nojo">
<xs:annotation>
<xs:documentation>Numéro d'identification J.O.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroAnnonce">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Num_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="titreAnnonce" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Titre de l'annonce</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="contenuAnnonce" type="xs:string">
<xs:annotation>
<xs:documentation>Contenu de l'annonce</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- date -->
<xs:simpleType name="Date_Type">
<xs:annotation>
<xs:documentation>type simple format date YYYY-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="....-..-.."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateHeure_Type">
<xs:annotation>
<xs:documentation>format YYYY-MM-DDTHH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime">
<xs:pattern value="....-..-..T..:..:.."/>
</xs:restriction>
</xs:simpleType>
<!-- string -->
<xs:simpleType name="Alpha_Type">
<xs:annotation>
<xs:documentation>type A : tous les caractères, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlphaNum_Type">
<xs:annotation>
<xs:documentation>type AN : tous les caractères, tous les chiffres, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*"/>
</xs:restriction>
</xs:simpleType>
<!-- number -->
<xs:simpleType name="Num_Type">
<xs:annotation>
<xs:documentation>type N : tous les chiffres</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*"/>
</xs:restriction>
</xs:simpleType>
<!-- technique -->
<xs:simpleType name="Parution_Type">
<xs:restriction base="Num_Type">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,616 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2013 rel. 2 sp2 (http://www.altova.com) by DIR. INFO LEGALE ADMINISTRATIVE (DIR. INFO LEGALE ADMINISTRATIVE) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by journal-officiel (Direction de l'Information Légale et Administrative) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- Modification de la version 3 -->
<!-- Adresse/etranger/pays : optionnel -->
<!-- Ajout d'une séquence de 1 à + pour (personneMorale,personnePhysique, numeroImmatriculation, nonInscrit, inscriptionRM, enseigne, activite, adresse) -->
<!-- Ajout identifiant Reemission -->
<!-- Modification de la version 4 -->
<!-- Supressiont identifiantReemission -->
<!-- Les éléments : numeroAnnonce, numeroIdentificationRCS, codeRCS et nomGreffeImmat ont été typé. -->
<!-- Modification de la version 5 . -->
<!-- Ajout de 3 natures : Arrêts divers, Autres avis de dépôt et Autres jugements et ordonnances -->
<!-- Modification de la version 6 . -->
<!-- Ajout de nouvelles natures
<!_ 31/07/09 Modification nature "Autres jugements et ordonnances" en "Autre jugement et ordonnance" -> -->
<!--
V10 11/09/09 Ajouts de 2 natures :
- Jugement prononçant la résolution du plan de sauvegarde et le redressement judiciaire
- Dépôt de létat des créances et du projet de répartition
-->
<!-- Modification de la version 11 -->
<!-- Changement du numéro de département de la Mayotte en 976 -->
<!-- Modification de la version 12 -->
<!-- Ajout de nouvelles natures de jugement liées à la sauvegarde financière accélérée -->
<!-- Modification de la version 13 -->
<!-- Ajout de l'élément denominationEIRL pour les personnes physiques -->
<!-- Ajout de 8 nouvelles natures de jugement -->
<!-- Modification valeur <codeRCS> -->
<!-- ****************************************************************************************************************************************************************************************** -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="PCL_REDIFF">
<xs:annotation>
<xs:documentation>Composant Annonce Procédure Collective pour les Reffuseurs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numero de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="annonces">
<xs:complexType>
<xs:sequence>
<xs:element name="annonce" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="typeAnnonce">
<xs:annotation>
<xs:documentation>Type de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="creation">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="rectificatif">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="annulation">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nojo">
<xs:annotation>
<xs:documentation>Numéro J.O.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroAnnonce" type="Num_Type">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroDepartement" type="Departement_Type">
<xs:annotation>
<xs:documentation>N° de département du Greffe</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tribunal" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Code Greffe qui a procédé à l'avis - A transmettre dans le fichier Retour</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="identifiantClient" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Identifiant unique</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element name="personneMorale">
<xs:complexType>
<xs:sequence>
<xs:element name="denomination" type="NomDenomination_Type">
<xs:annotation>
<xs:documentation>Dénomination</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="formeJuridique" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Forme juridique (Ex : Société Anonyme, SARL, EURL,...)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sigle" type="Sigle_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Sigle</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="personnePhysique">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="nom" type="Alpha_Type">
<xs:annotation>
<xs:documentation>Nom de famille (naissance)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="prenom" type="Alpha_Type" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Prénom</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nomUsage" type="Alpha_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom d'usage</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="denominationEIRL" type="Alpha_Type"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice>
<xs:element name="numeroImmatriculation">
<xs:complexType>
<xs:sequence>
<xs:element name="numeroIdentificationRCS">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN ( A transmettre dans le fichier de retour des parutions)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:length value="11"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeurs RCS, RSEIRL, RA, RSAC</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:maxLength value="6"/>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
<xs:element name="inscriptionRM" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="numeroIdentificationRM" type="AlphaNum_Type"/>
<xs:element name="codeRM" type="Alpha_Type"/>
<xs:element name="numeroDepartement" type="Departement_Type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="enseigne" type="AlphaNum_Type" minOccurs="0"/>
<xs:element name="activite" type="AlphaNum_Type" minOccurs="0"/>
<xs:element name="adresse" minOccurs="0">
<xs:annotation>
<xs:documentation>Adresse</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="france">
<xs:annotation>
<xs:documentation>Adresse en France de la société </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="numeroVoie" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Code Greffe qui a procédé à l'avis - A transmettre dans le fichier Retour</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="typeVoie" type="Alpha_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Type de la voie
Ex : rue</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nomVoie" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom de la voie
Ex : d'Enfer </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="complGeographique" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Complément gépgraphique
Ex : Résidence Bel-Air</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BP" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Boîte postale
Ex : 192</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="localite" type="Alpha_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Localité
Ex : Saint-Chéron</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="codePostal" type="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal
Ex : 51290</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ville" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Ville/Bureau distributeur
Ex : Saint-Rémy-en-Bouzemont-Saint-Genest-et-Isson</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="etranger">
<xs:annotation>
<xs:documentation>Adresse à l'étranger</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="adresse" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Nom d'adresse à l'étranger</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="pays" type="Alpha_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom du pays</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:choice>
<xs:element name="jugement" type="Jugement_Type">
<xs:annotation>
<xs:documentation>Publicité</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="jugementAnnule" type="Jugement_Type"/>
</xs:choice>
<xs:element name="parutionAvisPrecedent" minOccurs="0">
<xs:annotation>
<xs:documentation>Information sur l'avis à rectifier</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nomPublication" type="Alpha_Type"/>
<xs:element name="numeroParution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numéro de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroAnnonce" type="Num_Type">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- date -->
<xs:simpleType name="Date_Type">
<xs:annotation>
<xs:documentation>type simple format date YYYY-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="....-..-.."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateHeure_Type">
<xs:annotation>
<xs:documentation>format YYYY-MM-DDTHH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime">
<xs:pattern value="....-..-..T..:..:.."/>
</xs:restriction>
</xs:simpleType>
<!-- string -->
<xs:simpleType name="Alpha_Type">
<xs:annotation>
<xs:documentation>type A : tous les caractères, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlphaNum_Type">
<xs:annotation>
<xs:documentation>type AN : tous les caractères, tous les chiffres, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*"/>
</xs:restriction>
</xs:simpleType>
<!-- number -->
<xs:simpleType name="Num_Type">
<xs:annotation>
<xs:documentation>type N : tous les chiffres</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*"/>
</xs:restriction>
</xs:simpleType>
<!-- technique -->
<xs:simpleType name="Version_Type">
<xs:annotation>
<xs:documentation>VXX (XX=num de version)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:length value="3"/>
<xs:pattern value="V\d{2}"/>
</xs:restriction>
</xs:simpleType>
<!-- fonctionnel -->
<xs:simpleType name="NomDenomination_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomCommercial_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Enseigne_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
<xs:simpleType name="Sigle_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Activite_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
<xs:simpleType name="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Departement_Type">
<xs:annotation>
<xs:documentation>code département</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
<xs:pattern value="2A|2B|[0-2]{1}[1-9]{1}|10|[3-8]{1}\d{1}|[9]{1}[0-5]{1}|(97[1-6]{1})|98[4-8]{1}|99"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NumeroGreffe_Type">
<xs:annotation>
<xs:documentation>code Greffe</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:minLength value="4"/>
<xs:maxLength value="6"/>
<xs:pattern value="\d{4,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomGreffe_Type">
<xs:annotation>
<xs:documentation>dérivé de Alpha_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPP_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="A"/>
<xs:enumeration value="F"/>
<xs:enumeration value="AC"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPM_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="B"/>
<xs:enumeration value="C"/>
<xs:enumeration value="D"/>
<xs:enumeration value="F"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Parution_Type">
<xs:restriction base="Num_Type">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Devise_Type">
<xs:restriction base="Alpha_Type">
<xs:enumeration value="EUR"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Jugement_Type">
<xs:annotation>
<xs:documentation>Annonce de Procédure Collective</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="famille">
<xs:annotation>
<xs:documentation>Famille de jugement
Ex : Jugement d'ouverture, extrait de jugement, ...</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:enumeration value="Jugement d'ouverture"/>
<xs:enumeration value="Jugement prononçant"/>
<xs:enumeration value="Arrêt de la Cour d'Appel"/>
<xs:enumeration value="Extrait de jugement"/>
<xs:enumeration value="Avis de dépôt"/>
<xs:enumeration value="Jugement de clôture"/>
<xs:enumeration value="Loi de 1967"/>
<xs:enumeration value="Rétractation sur tierce opposition"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nature">
<xs:annotation>
<xs:documentation>Nature du jugement
Ex : Jugement d'ouverture de redressement judiciaire, jugement nommanbt un organe, ...</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
<xs:enumeration value="Jugement d'homologation de l'accord"/>
<xs:enumeration value="Jugement de résolution de l'accord homologué"/>
<xs:enumeration value="Jugement d'ouverture d'une procédure de sauvegarde"/>
<xs:enumeration value="Jugement d'extension d'une procédure de sauvegarde"/>
<xs:enumeration value="Jugement de conversion en redressement judiciaire de la procédure de sauvegarde"/>
<xs:enumeration value="Jugement de conversion en liquidation judiciaire de la procédure de sauvegarde"/>
<xs:enumeration value="Jugement mettant fin à la procédure de sauvegarde"/>
<xs:enumeration value="Liste des créances nées après le jugement d'ouverture d'une procédure de redressement judiciaire"/>
<xs:enumeration value="Liste des créances nées après le jugement d'ouverture d'une procédure de liquidation judiciaire"/>
<xs:enumeration value="Dépôt de l'état des créances"/>
<xs:enumeration value="Jugement de clôture de la procédure de sauvegarde"/>
<xs:enumeration value="Jugement arrêtant le plan de sauvegarde"/>
<xs:enumeration value="Jugement modifiant le plan de sauvegarde"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde et la liquidation judiciaire"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde et le redressement judiciaire"/>
<xs:enumeration value="Jugement d'ouverture d'une procédure de redressement judiciaire"/>
<xs:enumeration value="Jugement d'extension d'une procédure de redressement judiciaire"/>
<xs:enumeration value="Jugement modifiant la date de cessation des paiements"/>
<xs:enumeration value="Jugement de conversion en liquidation judiciaire"/>
<xs:enumeration value="Jugement mettant fin à la procédure de redressement judiciaire"/>
<xs:enumeration value="Jugement arrêtant un plan de cession"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de cession et la liquidation judiciaire"/>
<xs:enumeration value="Jugement de plan de redressement"/>
<xs:enumeration value="Jugement modifiant le plan de redressement"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de redressement et la liquidation judiciaire"/>
<xs:enumeration value="Jugement d'ouverture de liquidation judiciaire"/>
<xs:enumeration value="Jugement d'extension de liquidation judiciaire"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de cession"/>
<xs:enumeration value="Dépôt de l'état de collocation"/>
<xs:enumeration value="Jugement de clôture pour extinction du passif"/>
<xs:enumeration value="Jugement de clôture pour insuffisance d'actif"/>
<xs:enumeration value="Jugement de clôture pour insuffisance d'actif et autorisant la reprise des poursuites individuelles"/>
<xs:enumeration value="Jugement autorisant la reprise des poursuites individuelles des créanciers"/>
<xs:enumeration value="Jugement de reprise de la procédure de liquidation judiciaire"/>
<xs:enumeration value="Dépôt du projet de répartition"/>
<xs:enumeration value="Dépôt de l'état des créances et du projet de répartition"/>
<xs:enumeration value="Autres avis de dépôt"/>
<xs:enumeration value="Ordonnance statuant sur les contestations du projet de répartition"/>
<xs:enumeration value="Arrêt de la cour d'appel infirmant une décision soumise à publicité"/>
<xs:enumeration value="Arrêts divers"/>
<xs:enumeration value="Jugement de désignation des organes de la procédure"/>
<xs:enumeration value="Jugement d'interdiction de gérer"/>
<xs:enumeration value="Jugement de faillite personnelle"/>
<xs:enumeration value="Jugement modifiant le plan de continuation"/>
<xs:enumeration value="Jugement modifiant le plan de cession"/>
<xs:enumeration value="Autre jugement et ordonnance"/>
<xs:enumeration value="Dépôt de l'état des créances Loi de 1985"/>
<xs:enumeration value="Jugement accordant un délai pour déposer la liste des créances"/>
<xs:enumeration value="Jugement d'interdiction de gérer Loi de 1985"/>
<xs:enumeration value="Jugement de faillite personnelle Loi de 1985"/>
<xs:enumeration value="Jugement de clôture de la liquidation des biens pour extinction du passif"/>
<xs:enumeration value="Jugement de clôture de la liquidation des biens pour insuffisance d'actif"/>
<xs:enumeration value="Rétractation de jugement d'ouverture sur tierce opposition"/>
<xs:enumeration value="Rétractation de prononcé de redressement judiciaire sur tierce opposition"/>
<xs:enumeration value="Rétractation de prononcé de liquidation judiciaire sur tierce opposition"/>
<xs:enumeration value="Autre jugement d'ouverture"/>
<xs:enumeration value="Autre jugement prononçant"/>
<xs:enumeration value="Autre arrêt de la Cour d'Appel"/>
<xs:enumeration value="Autre jugement de clôture"/>
<xs:enumeration value="Autre jugement de liquidation des biens"/>
<xs:enumeration value="Autre rétractation sur tierce opposition"/>
<xs:enumeration value="Jugement d'ouverture d'une procédure de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement d'extension d'une procédure de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement de conversion en redressement judiciaire de la procédure de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement de conversion en liquidation judiciaire de la procédure de sauvegarde financière accélérée"/>
<xs:enumeration value="Clôture de la procédure à défaut d'arrêté du plan dans le délai"/>
<xs:enumeration value="Jugement mettant fin à la procédure de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement arrêtant le plan de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement modifiant le plan de sauvegarde financière accélérée"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde financière accélérée et la liquidation judiciaire"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde accélérée et le redressement judiciaire"/>
<xs:enumeration value="Jugement d'ouverture d'une procédure de sauvegarde accélérée"/>
<xs:enumeration value="Jugement d'extension d'une procédure de sauvegarde accélérée"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde accélérée et la liquidation judiciaire"/>
<xs:enumeration value="Jugement prononçant la résolution du plan de sauvegarde accélérée et redressement judiciaire"/>
<xs:enumeration value="Jugement prononçant la clôture de la procédure de rétablissement professionnel"/>
<xs:enumeration value="Jugement arrêtant le plan de sauvegarde accélérée"/>
<xs:enumeration value="Jugement modifiant le plan de sauvegarde accélérée"/>
<xs:enumeration value="Jugement mettant fin à la procédure de sauvegarde accélérée"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="date" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date du jugement</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="complementJugement" minOccurs="0">
<xs:annotation>
<xs:documentation>Complément du jugement</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,830 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by djo (JOURNAUX OFFICIELS) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by journal-officiel (Direction de l'Information Légale et Administrative) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 14/01/08 -->
<!-- V05 du 12/03/08 : ajout norme ISO 4217 pour Devise_Type -->
<!-- V06 du 04/04/08 : Dans les éléments precedentProprietairePM, precedentProprietairePP, -->
<!-- precedentExploitantPP et precedentExploitantPM, les éléments numeroImmatriculation et nonInscrit sont devenus optionnels -->
<!-- V07 du 17/04/08 : ajout champs dateEffet -->
<!-- V09 du 07/10/09 : Longueur maximum de 1000 caractère pour l'élément nomVoie dans Adresse au lieu de 50 -->
<!-- V10 du 15/04/10 : Changement du numéro de département de la Mayotte qui devient 976 -->
<!-- 24/05/13 : Augmentation de la longueur max de NomDenomination_Type à 1000 pour harmoniser avec la schéma d'entrée -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- ********************************************************************************************************************************************************************************** -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:iso4217="urn:un:unece:uncefact:codelist:standard:5:4217:2001" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="urn:un:unece:uncefact:codelist:standard:5:4217:2001" schemaLocation="ISO_CurrencyCode_2001.xsd"/>
<xs:element name="RCS-A_IMMAT">
<xs:annotation>
<xs:documentation>Composant Annonce Immatriculations, Ventes et Créations pour les Reffuseurs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numero de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="Date_Type">
<xs:annotation>
<xs:documentation>Date de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="listeAvis">
<xs:complexType>
<xs:sequence>
<xs:element name="avis" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="typeAnnonce">
<xs:annotation>
<xs:documentation>Type de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="annonce">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="rectificatif">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="annulation">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nojo">
<xs:annotation>
<xs:documentation>Numéro d'identification J.O.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroAnnonce">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Num_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroDepartement" type="Departement_Type">
<xs:annotation>
<xs:documentation>N° de département du Greffe</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tribunal" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Code Greffe qui a procédé à l'avis -</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="personnes">
<xs:complexType>
<xs:sequence>
<xs:element name="personne" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element name="personneMorale">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit">
<xs:simpleType>
<xs:restriction base="Alpha_Type"/>
</xs:simpleType>
</xs:element>
</xs:choice>
<xs:element name="denomination" type="NomDenomination_Type">
<xs:annotation>
<xs:documentation>Dénomination</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="formeJuridique" minOccurs="0">
<xs:annotation>
<xs:documentation>Forme juridique (Ex : Société Anonyme, SARL, EURL,...)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomCommercial" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom commercial</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="sigle" type="Sigle_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Sigle</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="administration" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>nouvelle situation,ex: Gérants : Dumoulin Bernard</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="personnePhysique">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
<xs:element name="nom">
<xs:annotation>
<xs:documentation>Nom de famille (naissance)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prenom" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Prénom</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomUsage" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom d'usage</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pseudonyme" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomCommercial" minOccurs="0">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
</xs:element>
<xs:element name="nationnalite" type="Alpha_Type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="capital" minOccurs="0">
<xs:annotation>
<xs:documentation>Capital de la société</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="montantCapital">
<xs:annotation>
<xs:documentation>Montant du capital</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="devise" type="Devise_Type">
<xs:annotation>
<xs:documentation>Devise (conforme à la norme ISO 4217)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="capitalVariable">
<xs:annotation>
<xs:documentation>Capital variable</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="adresse" minOccurs="0">
<xs:annotation>
<xs:documentation>Adresse</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="france" type="AdresseFrance_Type">
<xs:annotation>
<xs:documentation>Adresse en France de la société </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="etranger" type="AdresseEtranger_Type">
<xs:annotation>
<xs:documentation>Adresse à l'étranger</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:element name="etablissement" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="origineFonds" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Origine du fonds
Ex : Fonds principal acquis par achat au prix stipulé de 28 940 euros, Cette société se constitue, Moitié indivise dépendante d'un fonds complémentaire acquise par apport au montant évalué à 55 000 euros, Création, Fonds acquis par achat, ...</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="qualiteEtablissement" type="Alpha_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Siège social, Etablissement principal, Etablissemennt complémentaire, ..., Fonds complémentaire, Fonds secondaire</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="activite" type="AlphaNum_Type" minOccurs="0"/>
<xs:element name="enseigne" type="AlphaNum_Type" minOccurs="0"/>
<xs:element name="adresse" type="AdresseFrance_Type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="precedentProprietairePM">
<xs:complexType>
<xs:sequence>
<xs:element name="denomination" type="NomDenomination_Type"/>
<xs:choice minOccurs="0">
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="precedentProprietairePP">
<xs:complexType>
<xs:sequence>
<xs:element name="nature" minOccurs="0">
<xs:annotation>
<xs:documentation>Héritier, indivisaire</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nom">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prenom" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomUsage" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:choice minOccurs="0">
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="precedentExploitantPM">
<xs:complexType>
<xs:sequence>
<xs:element name="denomination" type="NomDenomination_Type"/>
<xs:choice minOccurs="0">
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="precedentExploitantPP">
<xs:complexType>
<xs:sequence>
<xs:element name="nature" minOccurs="0">
<xs:annotation>
<xs:documentation>Héritier, indivisaire</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nom">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prenom" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomUsage" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:choice minOccurs="0">
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="parutionAvisPrecedent" minOccurs="0">
<xs:annotation>
<xs:documentation>Information sur l'avis à rectifier</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nomPublication" type="Alpha_Type"/>
<xs:element name="numeroParution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numéro de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroAnnonce" type="Num_Type">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="acte">
<xs:complexType>
<xs:choice>
<xs:element name="creation">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:element name="dateImmatriculation" type="Date_Type" minOccurs="0"/>
<xs:element name="categorieCreation" type="AlphaNum_Type"/>
<xs:element name="dateCommencementActivite" type="Date_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date de début d'activité</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="descriptif" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Descriptif de la modification</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="immatriculation">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:element name="dateImmatriculation" type="Date_Type" minOccurs="0"/>
<xs:element name="categorieImmatriculation" type="AlphaNum_Type"/>
<xs:element name="dateEffet" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date d'effet utilisée pour les greffes dépendants du Ministère de la Justice</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateCommencementActivite" type="Date_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date de début d'activité</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="descriptif" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Descriptif de la modification</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="vente">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:element name="dateImmatriculation" type="Date_Type" minOccurs="0"/>
<xs:element name="categorieVente" type="AlphaNum_Type"/>
<xs:element name="dateEffet" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date d'effet utilisée pour les greffes dépendants du Ministère de la Justice</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateCommencementActivite" type="Date_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date de début d'activité</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="journal" minOccurs="0">
<xs:annotation>
<xs:documentation>Journal d'annonces légales</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="titre" type="AlphaNum_Type"/>
<xs:element name="date" type="Date_Type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice maxOccurs="2">
<xs:element name="opposition" type="AlphaNum_Type"/>
<xs:element name="declarationCreance" type="AlphaNum_Type"/>
</xs:choice>
<xs:element name="descriptif" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Descriptif de la modification</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- date -->
<xs:simpleType name="Date_Type">
<xs:annotation>
<xs:documentation>type simple format date YYYY-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="....-..-.."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateHeure_Type">
<xs:annotation>
<xs:documentation>format YYYY-MM-DDTHH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime">
<xs:pattern value="....-..-..T..:..:.."/>
</xs:restriction>
</xs:simpleType>
<!-- string -->
<xs:simpleType name="Alpha_Type">
<xs:annotation>
<xs:documentation>type A : tous les caractères, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlphaNum_Type">
<xs:annotation>
<xs:documentation>type AN : tous les caractères, tous les chiffres, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*"/>
</xs:restriction>
</xs:simpleType>
<!-- number -->
<xs:simpleType name="Num_Type">
<xs:annotation>
<xs:documentation>type N : tous les chiffres</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*"/>
</xs:restriction>
</xs:simpleType>
<!-- technique -->
<xs:simpleType name="Version_Type">
<xs:annotation>
<xs:documentation>VXX (XX=num de version)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:length value="3"/>
<xs:pattern value="V\d{2}"/>
</xs:restriction>
</xs:simpleType>
<!-- fonctionnel -->
<xs:simpleType name="NomDenomination_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomCommercial_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Sigle_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Activite_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
<xs:simpleType name="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Departement_Type">
<xs:annotation>
<xs:documentation>code département</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
<xs:pattern value="2A|2B|[0-2]{1}[1-9]{1}|10|[3-8]{1}\d{1}|[9]{1}[0-5]{1}|(97[1-6]{1})|98[4-8]{1}|99"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NumeroGreffe_Type">
<xs:annotation>
<xs:documentation>code Greffe</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:minLength value="4"/>
<xs:maxLength value="6"/>
<xs:pattern value="\d{4,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomGreffe_Type">
<xs:annotation>
<xs:documentation>dérivé de Alpha_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPP_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="A"/>
<xs:enumeration value="F"/>
<xs:enumeration value="AC"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPM_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="B"/>
<xs:enumeration value="C"/>
<xs:enumeration value="D"/>
<xs:enumeration value="F"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Parution_Type">
<xs:restriction base="Num_Type">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Devise_Type">
<xs:restriction base="iso4217:CurrencyCodeContentType"/>
</xs:simpleType>
<xs:complexType name="AdresseEtranger_Type">
<xs:sequence>
<xs:element name="adresse">
<xs:annotation>
<xs:documentation>Nom d'adresse à l'étranger</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pays" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom du pays</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdresseFrance_Type">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Numéro de la voie
Ex : 4</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="typeVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Type de la voie
Ex : rue</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom de la voie
Ex : d'Enfer</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000" fixed="false"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="complGeographique" minOccurs="0">
<xs:annotation>
<xs:documentation>Complément gépgraphique
Ex : Résidence Bel-Air</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BP" minOccurs="0">
<xs:annotation>
<xs:documentation>Boîte postale
Ex : BP 14192</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="localite" minOccurs="0">
<xs:annotation>
<xs:documentation>Localité
Ex : Saint-Chéron</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codePostal" type="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal
Ex : 51290</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ville">
<xs:annotation>
<xs:documentation>Ville/Bureau distributeur
Ex : Saint-Rémy-en-Bouzemont-Saint-Genest-et-Isson</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NumeroImmatriculation_Type">
<xs:annotation>
<xs:documentation>NNN NNN NNN RCS XXXXXX avec NNN NNN NNN N° d'identification et XXXXXXX Greffe d'immatriculation du dossier (Ex : 324 568 789 RCS Paris)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroIdentification">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="11"/>
<xs:pattern value="\d{3} \d{3} \d{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeur fixée à "RCS"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="3"/>
<xs:enumeration value="RCS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,794 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by SSI/CTI (JOURNAUX OFFICIELS) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by journal-officiel (Direction de l'Information Légale et Administrative) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 14/01/08 -->
<!-- V04 du 12/03/08 : ajout norme ISO 4217 pour Devise_Type -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- -->
<!-- V05 du 11/04/08 : ajout champs dateEffet -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- -->
<!-- V08 du 23/01/09 : modification longueur maximum (d 200 à 1000) pour l'élément denomination -->
<!-- *********************************************************************************************************************** -->
<!--
V09 du 30/04/09 : Ajout élément commentaire dans radiationAuRCS -->
<!-- ********************************************************************************************************************************************************************************** -->
<!--
V10 du 11/09/09 : Choix rendu optionnel après les éléments ModificationsGenerales et radiationAuRCS afin de pouvoir trier les radiations et les modifications-->
<!-- ********************************************************************************************************************************************************************************** -->
<!--
V11 du 15/04/10 : Prise en compte du nouveau numéro de département de la Mayotte (976) -->
<!-- ********************************************************************************************************************************************************************************** -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:iso4217="urn:un:unece:uncefact:codelist:standard:5:4217:2001" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="urn:un:unece:uncefact:codelist:standard:5:4217:2001" schemaLocation="ISO_CurrencyCode_2001.xsd"/>
<xs:element name="RCS-B_REDIFF">
<xs:annotation>
<xs:documentation>Composant Annonce Modifications générales et Radiation pour les Reffuseurs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numero de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="listeAvis">
<xs:complexType>
<xs:sequence>
<xs:element name="avis" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="typeAnnonce">
<xs:annotation>
<xs:documentation>Type de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="annonce">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="rectificatif">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="annulation">
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nojo">
<xs:annotation>
<xs:documentation>Numéro d'identification J.O.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:length value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroAnnonce">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Num_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="numeroDepartement" type="Departement_Type">
<xs:annotation>
<xs:documentation>N° de département du Greffe</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tribunal" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Code Greffe qui a procédé à l'avis -</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="personnes">
<xs:complexType>
<xs:sequence>
<xs:element name="personne" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="personneMorale">
<xs:complexType>
<xs:sequence>
<xs:element name="denomination">
<xs:annotation>
<xs:documentation>Dénomination</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="NomDenomination_Type">
<xs:maxLength value="1000" fixed="true"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="formeJuridique" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Forme juridique (Ex : Société Anonyme, SARL, EURL,...)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="capital" minOccurs="0">
<xs:annotation>
<xs:documentation>Capital de la société</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="montantCapital">
<xs:annotation>
<xs:documentation>Montant du capital</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="devise" type="Devise_Type">
<xs:annotation>
<xs:documentation>Devise (conforme à la norme ISO 4217)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:element name="capitalVariable">
<xs:annotation>
<xs:documentation>Capital variable</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="nomCommercial" type="AlphaNum_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom commercial</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="administration" minOccurs="0">
<xs:annotation>
<xs:documentation>nouvelle situation,ex: Gérants : Dumoulin Bernard</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="sigle" type="Sigle_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Sigle</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="personnePhysique">
<xs:complexType>
<xs:sequence>
<xs:element name="nom">
<xs:annotation>
<xs:documentation>Nom de famille (naissance)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prenom" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Prénom</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomUsage" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom d'usage</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pseudonyme" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomCommercial" type="AlphaNum_Type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice>
<xs:element name="numeroImmatriculation">
<xs:complexType>
<xs:sequence>
<xs:element name="numeroIdentificationRCS">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:length value="11"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeur fixée à "RCS"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
<xs:element name="activite" type="AlphaNum_Type" minOccurs="0"/>
<xs:element name="adresse" minOccurs="0">
<xs:annotation>
<xs:documentation>Adresse</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="france" type="AdresseFrance_Type">
<xs:annotation>
<xs:documentation>Adresse en France de la société </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="etranger" type="AdresseEtranger_Type">
<xs:annotation>
<xs:documentation>Adresse à l'étranger</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="siegeSocial" minOccurs="0">
<xs:annotation>
<xs:documentation>Siège social de la société</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="france" type="AdresseFrance_Type"/>
<xs:element name="etranger" type="AdresseEtranger_Type"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="etablissementPrincipal" minOccurs="0">
<xs:annotation>
<xs:documentation>Etablissement principal de la société</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="france" type="AdresseFrance_Type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="modificationsGenerales">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="precedentExploitantPM">
<xs:annotation>
<xs:documentation>Precedent exploitant pour une personne morale</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="denomination">
<xs:simpleType>
<xs:restriction base="NomDenomination_Type">
<xs:maxLength value="200"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:choice>
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="precedentExploitantPP">
<xs:annotation>
<xs:documentation>Precedent exploitant pour une personne physique</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nature" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nom">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prenom">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomUsage" minOccurs="0">
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:choice minOccurs="0">
<xs:element name="numeroImmatriculation" type="NumeroImmatriculation_Type"/>
<xs:element name="nonInscrit" type="Alpha_Type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="descriptif">
<xs:annotation>
<xs:documentation>Descriptif de la modification</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="dateCommencementActivite" type="Date_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date de début d'activité</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateEffet" type="Date_Type" minOccurs="0">
<xs:annotation>
<xs:documentation>Date d'effet utilisée pour les greffes dépendants du Ministère de la Justice</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="radiationAuRCS">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:choice>
<xs:element name="radiationPP">
<xs:annotation>
<xs:documentation>Radiation pour les Personnes Physiques</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="dateCessationActivitePP" type="Date_Type">
<xs:annotation>
<xs:documentation>Date de cessation d'activité pour les Personnes Physiques</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="radiationPM">
<xs:annotation>
<xs:documentation>Radiation pour les Personnes Morales</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
<xs:element name="commentaire" minOccurs="0">
<xs:annotation>
<xs:documentation>Commentaire pour les radiations</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="parutionAvisPrecedent" minOccurs="0">
<xs:annotation>
<xs:documentation>Information sur l'avis à rectifier</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nomPublication" type="Alpha_Type"/>
<xs:element name="numeroParution" type="Parution_Type">
<xs:annotation>
<xs:documentation>Numéro de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateParution" type="AlphaNum_Type">
<xs:annotation>
<xs:documentation>Date de la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numeroAnnonce" type="Num_Type">
<xs:annotation>
<xs:documentation>Numéro de l'avis dans la parution précédente</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- date -->
<xs:simpleType name="Date_Type">
<xs:annotation>
<xs:documentation>type simple format date YYYY-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="....-..-.."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateHeure_Type">
<xs:annotation>
<xs:documentation>format YYYY-MM-DDTHH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime">
<xs:pattern value="....-..-..T..:..:.."/>
</xs:restriction>
</xs:simpleType>
<!-- string -->
<xs:simpleType name="Alpha_Type">
<xs:annotation>
<xs:documentation>type A : tous les caractères, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlphaNum_Type">
<xs:annotation>
<xs:documentation>type AN : tous les caractères, tous les chiffres, toutes les pontuations, tous les symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*"/>
</xs:restriction>
</xs:simpleType>
<!-- number -->
<xs:simpleType name="Num_Type">
<xs:annotation>
<xs:documentation>type N : tous les chiffres</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*"/>
</xs:restriction>
</xs:simpleType>
<!-- technique -->
<xs:simpleType name="Version_Type">
<xs:annotation>
<xs:documentation>VXX (XX=num de version)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:length value="3"/>
<xs:pattern value="V\d{2}"/>
</xs:restriction>
</xs:simpleType>
<!-- fonctionnel -->
<xs:simpleType name="NomDenomination_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomCommercial_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Sigle_Type">
<xs:annotation>
<xs:documentation>type anySimpleType</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Activite_Type">
<xs:annotation>
<xs:documentation>dérivé de AlphaNum_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type"/>
</xs:simpleType>
<xs:simpleType name="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Departement_Type">
<xs:annotation>
<xs:documentation>code département</xs:documentation>
</xs:annotation>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
<xs:pattern value="2A|2B|[0-2]{1}[1-9]{1}|10|[3-8]{1}\d{1}|[9]{1}[0-5]{1}|(97[1-6]{1})|98[4-8]{1}|99"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NumeroGreffe_Type">
<xs:annotation>
<xs:documentation>code Greffe</xs:documentation>
</xs:annotation>
<xs:restriction base="Num_Type">
<xs:minLength value="4"/>
<xs:maxLength value="6"/>
<xs:pattern value="\d{4,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NomGreffe_Type">
<xs:annotation>
<xs:documentation>dérivé de Alpha_Type</xs:documentation>
</xs:annotation>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPP_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="A"/>
<xs:enumeration value="F"/>
<xs:enumeration value="AC"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StatutRCSPM_Type">
<xs:restriction base="xs:token">
<xs:enumeration value="B"/>
<xs:enumeration value="C"/>
<xs:enumeration value="D"/>
<xs:enumeration value="F"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Parution_Type">
<xs:restriction base="Num_Type">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Devise_Type">
<xs:restriction base="iso4217:CurrencyCodeContentType"/>
</xs:simpleType>
<xs:complexType name="AdresseEtranger_Type">
<xs:sequence>
<xs:element name="adresse">
<xs:annotation>
<xs:documentation>Nom d'adresse à l'étranger</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pays" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom du pays</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdresseFrance_Type">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Numéro de la voie
Ex : 4</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="typeVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Type de la voie
Ex : rue</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomVoie" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom de la voie
Ex : d'Enfer</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="complGeographique" minOccurs="0">
<xs:annotation>
<xs:documentation>Complément gépgraphique
Ex : Résidence Bel-Air</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BP" minOccurs="0">
<xs:annotation>
<xs:documentation>Boîte postale
Ex : BP 14192</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="localite" minOccurs="0">
<xs:annotation>
<xs:documentation>Localité
Ex : Saint-Chéron</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codePostal" type="CodePostal_Type">
<xs:annotation>
<xs:documentation>Code Postal
Ex : 51290</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ville">
<xs:annotation>
<xs:documentation>Ville/Bureau distributeur
Ex : Saint-Rémy-en-Bouzemont-Saint-Genest-et-Isson</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="AlphaNum_Type">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NumeroImmatriculation_Type">
<xs:annotation>
<xs:documentation>NNN NNN NNN RCS XXXXXX avec NNN NNN NNN N° d'identification et XXXXXXX Greffe d'immatriculation du dossier (Ex : 324 568 789 RCS Paris)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroIdentification">
<xs:annotation>
<xs:documentation>N° d'identification au format NNN NNN NNN</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="11"/>
<xs:pattern value="\d{3} \d{3} \d{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeRCS">
<xs:annotation>
<xs:documentation>valeur fixée à "RCS"</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Alpha_Type">
<xs:length value="3"/>
<xs:enumeration value="RCS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="nomGreffeImmat" type="NomGreffe_Type">
<xs:annotation>
<xs:documentation>Greffe d'immatriculation du dossier </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,578 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML Studio Developer Edition 9.0.11.3078 (http://www.liquid-technologies.com)-->
<!--
OCTDE_EXPORT_JAL XSD - Schéma d'export des annonces JAL au format XML.
Copyright OCTDE - v3.4 - 11/03/2015
L'ensemble des tables de codes associées aux balises code* sont disponibles dans le fichier : OCTDE_Tables_Codes.xls
Les fichiers JAL en XML livrés sont nommés selon le masque : "Annonces_YYYYMMDD.xml"
Les fichiers PDF livrés sont nommés selon le masque : "<journalID>_YYYYMMDD_<numParution>.pdf"
Dans le cas où il ny a pas de numParution, ce numéro devient 00.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Définition de types -->
<xs:simpleType name="alphaType">
<xs:annotation>
<xs:documentation>Alphabétique : Caractères, ponctuations et symboles, [ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[ \p{M}\p{P}\p{S}\p{L}\p{Z}\p{C} ]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="alphaNumType">
<xs:annotation>
<xs:documentation>Alphanumérique : Caractères, chiffres, ponctuations et symboles, [ \p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C} &amp; &lt; &gt;]*</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\p{M}\p{P}\p{S}\p{L}\p{N}\p{Z}\p{C}]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="numType">
<xs:annotation>
<xs:documentation>Numérique</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[\d]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="boolType">
<xs:annotation>
<xs:documentation>Booléen (0 ou 1)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-1]{1}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="typeType">
<xs:annotation>
<xs:documentation>M : Personne Morale; P : Personne Physique</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="M" />
<xs:enumeration value="P" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="capitalType">
<xs:annotation>
<xs:documentation>Type de capital : MINinmum, FIXe, VARiable ou LIBéré (en totalité)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="MIN" />
<xs:enumeration value="FIX" />
<xs:enumeration value="VAR" />
<xs:enumeration value="LIB" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="rubriqueType">
<xs:annotation>
<xs:documentation> Type de rubrique : CoMPTes, CREAtions, MODIFications, PROCedures COLlectives, RADiations, ventes, DIVers,CESsation </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CMPT" />
<xs:enumeration value="CREA" />
<xs:enumeration value="MODIF" />
<xs:enumeration value="PROCCOL" />
<xs:enumeration value="RAD" />
<xs:enumeration value="VENTE" />
<xs:enumeration value="DIV" />
<xs:enumeration value="CES" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="annonceType">
<xs:annotation>
<xs:documentation> Type d'annonce : Rectificatif, Additif, Suppression, AnnuleEtRemplace, Insertion, Creation </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="RECTIFICATIF" />
<xs:enumeration value="ADDITIF" />
<xs:enumeration value="SUPPRESSION" />
<xs:enumeration value="ANNULEETREMPLACE" />
<xs:enumeration value="INSERTION" />
<xs:enumeration value="CREATION" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sirenType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{9}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="adresseLineType">
<xs:annotation>
<xs:documentation>Ligne d'adresse au format RNVP selon la norme 38 caractères</xs:documentation>
</xs:annotation>
<xs:restriction base="alphaNumType">
<xs:maxLength value="38" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="codePostalType">
<xs:restriction base="alphaNumType">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="departementType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{2,3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="codePaysIso2Type">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="formeJuridiqueType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="decimalType">
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0" />
<xs:fractionDigits value="2" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="deviseType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="adminType">
<xs:restriction base="xs:integer">
<xs:minExclusive value="0" />
<xs:maxInclusive value="9999" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="civiliteType">
<xs:annotation>
<xs:documentation>Ste : Société; Dr : Docteur; M : Monsieur; Mme : Madame; Mlle : Mademoiselle; Me : Maître</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Ste" />
<xs:enumeration value="Dr" />
<xs:enumeration value="M" />
<xs:enumeration value="Mme" />
<xs:enumeration value="Mlle" />
<xs:enumeration value="Me" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="typeActeurType">
<xs:annotation>
<xs:documentation>AB : Societe Absorbante; AC : Acquereur; CD : Cedant; NE : Nouvel Exploitant; PE : Précédent Exploitant</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="2" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="roleIntervenantType">
<xs:annotation>
<xs:documentation>A : Administrateur; C :Commissaire au plan; H : Huissier*; J : Juge commissaire; K : Juge commissaire suppléant; L : Liquidateur; M : Mandataire; N : Notaire*; O : Opposition*; R : Représentant des créanciers ; T : conciliaTeur; V : aVocat*; Les intervenants avec une * sont spécifiques aux annonces de ventes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{1,2}" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="adresseType">
<xs:annotation>
<xs:documentation>Adresses structurées. Le tag adresseTexte est utilisé quand l'adresse n'est pas disponible de façon structurée, par exemple pour les adresses à l'étranger.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="numeroVoie" type="alphaNumType" minOccurs="0" />
<xs:element name="indRep" type="alphaNumType" minOccurs="0" />
<xs:element name="typeVoie" type="alphaNumType" minOccurs="0" />
<xs:element name="nomVoie" type="alphaNumType" minOccurs="0" />
<xs:element name="complGeographique" type="alphaNumType" minOccurs="0" />
<xs:element name="boitePostale" type="alphaNumType" minOccurs="0" />
<xs:element name="localite" type="alphaNumType" minOccurs="0" />
<xs:element name="codePostal" type="codePostalType" minOccurs="0" />
<xs:element name="ville" type="alphaNumType" minOccurs="0" />
<xs:element name="departement" type="departementType" minOccurs="0" />
<xs:element name="codePays" type="codePaysIso2Type" minOccurs="0" default="FR" />
<xs:element name="labelPays" type="alphaNumType" minOccurs="0" />
<xs:element name="idVoie" type="numType" minOccurs="0" />
<xs:element name="codeInseeCommune" type="numType" minOccurs="0" />
<xs:element name="adresseTexte" type="alphaNumType" minOccurs="0" />
<!-- <xs:element name="adresseRNVP" type="boolType" minOccurs="0" />-->
<xs:element name="diagAdresse" type="numType" minOccurs="0" />
<xs:element name="topRejet" type="boolType" minOccurs="0" />
<xs:element name="topAmelia" type="boolType" minOccurs="0" />
<xs:element name="adresse_L1" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L2" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L3" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L4" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L5" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L6" type="adresseLineType" minOccurs="0" />
<xs:element name="adresse_L7" type="adresseLineType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<!-- Définition des éléments -->
<xs:element name="livraisonAnnoncesLegales">
<xs:annotation>
<xs:documentation>Elément racine</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="livraisonInfo" />
<xs:element ref="annonces" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="livraisonInfo">
<xs:annotation>
<xs:documentation>Metadonnées de la livraison</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="dateLivraison" type="xs:date" />
<xs:element name="nbItems" type="xs:integer" />
<xs:element name="codeLivraison" type="alphaNumType" minOccurs="0">
<xs:annotation>
<xs:documentation>Ce tag peut le cas échéant contenir un code permettant d'identifier la livraison fournie.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="annonces">
<xs:annotation>
<xs:documentation>Les annonces de la livraison</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="annonce" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="annonce">
<xs:annotation>
<xs:documentation>Description d'une annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="annonceInfo" />
<xs:element ref="personnes" />
<xs:element ref="evenements" />
<xs:element ref="acteursCession" minOccurs="0" />
<xs:element ref="etablissementsCession" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="annonceInfo">
<xs:annotation>
<xs:documentation>Metadonnées de l'annonce. Certains de ces tags sont specifiques aux Jal (ex: journalID), d'autres spécifiques au Bodacc (ex: nojo), d'autres étant communs à diverses sources</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="adID" type="alphaNumType" minOccurs="0" />
<xs:element name="origine" type="xs:string" minOccurs="0" />
<xs:element name="sourcePdf" type="alphaNumType" minOccurs="0">
<xs:annotation>
<xs:documentation>Nom du fichier PDF contenant l'annonce OCRisée avec lien vers la page de l'annonce si multipage (exemple: myfile.pdf#page=4)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nomPublication" type="alphaNumType" minOccurs="0" />
<xs:element name="journalID" type="numType" minOccurs="0" />
<xs:element name="dateParution" type="xs:date" minOccurs="0" />
<xs:element name="numParution" type="alphaNumType" minOccurs="0" />
<xs:element name="tribunal" type="alphaNumType" minOccurs="0" />
<xs:element name="texte" type="xs:string" minOccurs="0" />
<xs:element name="rubrique" type="rubriqueType" minOccurs="0" />
<xs:element name="typeAnnonce" type="annonceType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="personnes">
<xs:annotation>
<xs:documentation>Les personnes d'une annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="personne" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="personne">
<xs:annotation>
<xs:documentation>Infos associées à la personne concernée</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="identite" minOccurs="0" />
<xs:element ref="dirigeants" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="identite">
<xs:annotation>
<xs:documentation>identité d'une personne Physique ou Morale</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="alphaNumType" minOccurs="0" />
<xs:element name="pseudonyme" type="alphaNumType" minOccurs="0" />
<xs:element name="civilite" type="civiliteType" minOccurs="0" />
<xs:element name="prenom" type="alphaNumType" minOccurs="0" />
<xs:element name="nomUsage" type="alphaNumType" minOccurs="0" />
<xs:element name="dateNaissance" type="xs:date" minOccurs="0" />
<xs:element name="lieuNaissance" type="xs:string" minOccurs="0" />
<xs:element name="sigle" type="alphaNumType" minOccurs="0" />
<xs:element name="type" type="typeType" minOccurs="0" />
<xs:element name="siren" type="sirenType" minOccurs="0" />
<xs:element name="sirenValide" type="boolType" minOccurs="0" />
<xs:element name="codeFormeJuridique" type="formeJuridiqueType" minOccurs="0" />
<xs:element name="capital" type="decimalType" minOccurs="0" />
<xs:element name="capitalType" type="capitalType" minOccurs="0" />
<xs:element name="devise" type="deviseType" minOccurs="0" default="EUR" />
<xs:element name="capitalNbParts" type="numType" minOccurs="0" />
<xs:element name="duree" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="99" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="etablissements" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="etablissement" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="etablissement">
<xs:annotation>
<xs:documentation>Description d'un établissement</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="enseigne" type="alphaNumType" minOccurs="0" />
<xs:element name="activite" type="alphaNumType" minOccurs="0" />
<xs:element name="adresse" type="adresseType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dirigeants" nillable="true">
<xs:annotation>
<xs:documentation>Les dirigeants d'une entreprise</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="dirigeant" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dirigeant">
<xs:annotation>
<xs:documentation>Description d'un dirigeant</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="civilite" type="civiliteType" minOccurs="0" />
<xs:element name="nom" type="alphaNumType" minOccurs="0" />
<xs:element name="nomUsage" type="alphaNumType" minOccurs="0" />
<xs:element name="prenom" type="alphaNumType" minOccurs="0" />
<xs:element name="siren" type="sirenType" minOccurs="0" />
<xs:element name="sirenValide" type="boolType" minOccurs="0" />
<xs:element name="codeFonction" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{3}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="codeMouvement" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{2}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="dateMissionDebut" type="xs:date" minOccurs="0">
<xs:annotation>
<xs:documentation>
Date d'effet de début de mission d'un dirigeant (notamment pour les CAC)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateMissionFin" type="xs:date" minOccurs="0">
<xs:annotation>
<xs:documentation>
Date d'effet passée ou à venir de la fin de
mission d'un dirigeant (notamment pour les
CAC)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="adresse" type="adresseType" minOccurs="0" />
<xs:element name="dateNaissance" type="xs:date" minOccurs="0" />
<xs:element name="lieuNaissance" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="intervenant">
<xs:annotation>
<xs:documentation>Zonage des informations liées à chaque mandataire ou autre intervenant de l'annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="civilite" type="civiliteType" minOccurs="0" />
<xs:element name="nom" type="alphaNumType" minOccurs="0" />
<xs:element name="prenom" type="alphaNumType" minOccurs="0" />
<xs:element name="roleIntervenant" type="roleIntervenantType" minOccurs="0" />
<xs:element name="adresse" type="adresseType" minOccurs="0" />
<xs:element name="finMission" type="boolType" minOccurs="0">
<xs:annotation>
<xs:documentation>Pour cet intervenant, il s'agit d'une fin de mission</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="intervenants">
<xs:annotation>
<xs:documentation>Les intervenants d'une procédure collective</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="intervenant" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="evenements">
<xs:annotation>
<xs:documentation>Les évènements d'une annonce</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="evenement" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="evenement">
<xs:annotation>
<xs:documentation>Description d'un evenement</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="codeEvenement" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="dateDecision" type="xs:date" minOccurs="0" />
<xs:element name="dateEffet" type="xs:date" minOccurs="0" />
<xs:element ref="procedureCollective" minOccurs="0" />
<xs:element ref="rectificatif" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="procedureCollective" nillable="true">
<xs:annotation>
<xs:documentation>Description d'une Procédure Collective</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="dateCessationPaiements" type="xs:date" minOccurs="0" />
<xs:element name="dateFinPlanObs" type="xs:date" minOccurs="0" />
<xs:element name="dureePlanObs" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Pour les annonces de plans ou les annonces avec périodes d'observation, selon les annonces, la durée du plan ou de la période d'observation est communiqué (36 mois, 8 ans, etc...) ou alors la dateFinPlanObs</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="intervenants" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rectificatif">
<xs:annotation>
<xs:documentation>Description d'un rectificatif ou annulation</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nomPublication" type="alphaNumType" minOccurs="0" />
<xs:element name="dateParution" type="xs:date" minOccurs="0" />
<xs:element name="numParution" type="alphaNumType" minOccurs="0" />
<xs:element name="page" type="numType" minOccurs="0" />
<xs:element name="texteRectificatif" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="acteursCession" nillable="true">
<xs:annotation>
<xs:documentation>Les acteurs d'une cession</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="acteurCession" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="acteurCession" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="typeActeur" type="typeActeurType" />
<xs:element name="identiteActeur">
<xs:annotation>
<xs:documentation>identité d'une personne Physique ou Morale</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="alphaNumType" minOccurs="0" />
<xs:element name="pseudonyme" type="alphaNumType" minOccurs="0" />
<xs:element name="civilite" type="civiliteType" minOccurs="0" />
<xs:element name="prenom" type="alphaNumType" minOccurs="0" />
<xs:element name="nomUsage" type="alphaNumType" minOccurs="0" />
<xs:element name="dateNaissance" type="xs:date" minOccurs="0" />
<xs:element name="lieuNaissance" type="xs:string" minOccurs="0" />
<xs:element name="sigle" type="alphaNumType" minOccurs="0" />
<xs:element name="type" type="typeType" minOccurs="0" />
<xs:element name="siren" type="sirenType" minOccurs="0" />
<xs:element name="sirenValide" type="boolType" minOccurs="0" />
<xs:element name="codeFormeJuridique" type="formeJuridiqueType" minOccurs="0" />
<xs:element name="capital" type="decimalType" minOccurs="0" />
<xs:element name="capitalType" type="capitalType" minOccurs="0" />
<xs:element name="devise" type="deviseType" minOccurs="0" default="EUR" />
<xs:element name="capitalNbParts" type="numType" minOccurs="0" />
<xs:element name="duree" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="99" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="adresse" type="adresseType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="cessionInfo" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="cessionInfo" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="montantCession" type="decimalType" minOccurs="0" />
<xs:element name="deviseMontantCession" type="deviseType" minOccurs="0" />
<xs:element name="natureCession" type="alphaNumType" minOccurs="0" />
<xs:element name="dureeCession" type="numType" minOccurs="0" />
<xs:element name="nbParts" type="numType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="etablissementsCession" nillable="true">
<xs:annotation>
<xs:documentation>Les établissements concernés par une cession</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="etablissement" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -72,8 +72,15 @@ if ($all) {
$baseInpi=$baseBodacc=$baseBodaccHisto=true;
}
$iDb=new WDB('jo');
$iDbSdv1=new WDB('sdv1');
$ret = $iDbSdv1->insert('sphinx_idx', array('nom'=>'jo.dirigeants', 'createBegin'=>date('YmdHis')));
$consolidationId = null;
if (is_int($ret) ) {
$consolidationId = $ret;
}
echo date ('Y/m/d - H:i:s')." - Sphinx Idx id=".$consolidationId.EOL;
$iDb=new WDB('jo');
echo date ('Y/m/d - H:i:s')." - Création de la nouvelle table dirigeants.".EOL;
if (!$iDb->query("DROP TABLE IF EXISTS jo.dirigeants_tmp;"))
die($iDb->getLastError());
@ -155,6 +162,13 @@ if ($baseBodaccHisto) {
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC Histo consolidés.".EOL;
}
$iDb->query("ALTER TABLE jo.dirigeants_tmp PACK_KEYS=1;");
echo date ('Y/m/d - H:i:s')." - Commpression des Index de la table OK.".EOL;
if ( $consolidationId !== null ) {
$ret = $iDbSdv1->update('sphinx_idx', array('createEnd'=>date('YmdHis')), "id=$consolidationId");
}
echo date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Dirigeants".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Dirigeants".EOL;

View File

@ -15,9 +15,9 @@ include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$all=true;
$joAsso=$joBodacc=$baseInsee=$baseInpi=$reset=$pageRankOnly=$iGreffe=false;
$joAsso=$joBodacc=$baseInsee=$baseInpi=$reset=$pageRankOnly=$iGreffe=$iLiens=false;
// Compteurs
$nbInsertAsso=$nbInsertRncs1=$nbInsertRncs2=$nbInsertBod=$nbConjoints=$nbInsertBodNS=$nbInsertGreffes=$nbInsertMarques=$nbUpdateAsso=0;
$nbInsertAsso=$nbInsertAssoAdr2=$nbInsertRncs1=$nbInsertRncs2=$nbInsertBod=$nbConjoints=$nbInsertBodNS=$nbInsertGreffes=$nbInsertMarques=$nbUpdateAsso=$nbInsertLiens=0;
$table='etablissements_tmp';
@ -31,6 +31,7 @@ Options :
-i Consolider les infos SIRENE (Insee)
-n Consolider les infos RNCS (Inpi)
-g Consolider les entreprises en provenance des Greffes
-l Consolider les entreprises issues de la base Liens
-m Mettre à jour les données sur les marques
-r Reconstruire complètement la base
-p traiter uniquement la construction du 'page rank'
@ -43,46 +44,19 @@ if ($_SERVER['argc']>1)
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a':
$all=false;
$joAsso=true;
break;
case 'g':
$all=false;
$iGreffe=true;
break;
case 'm':
$all=false;
$iMarques=true;
break;
case 'b':
$all=false;
$joBodacc=true;
break;
case 'i':
$all=false;
$baseInsee=true;
break;
case 'n':
$all=false;
$baseInpi=true;
break;
case 'r':
$reset=true;
break;
case 'p':
$pageRankOnly=true;
break;
case 't':
$table=strtolower(substr($argv[$i],3));
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
case 'a': $all=false; $joAsso=true; break;
case 'g': $all=false; $iGreffe=true; break;
case 'l': $all=false; $iLiens=true; break;
case 'm': $all=false; $iMarques=true; break;
case 'b': $all=false; $joBodacc=true; break;
case 'i': $all=false; $baseInsee=true; break;
case 'n': $all=false; $baseInpi=true; break;
case 'r': $reset=true; break;
case 'p': $pageRankOnly=true; break;
case 't': $table=strtolower(substr($argv[$i],3)); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
}
}
@ -96,7 +70,7 @@ if (file_exists(REP_TEMP.'stockInsee.lock')) {
/** Par défaut, on consolide toutes les sources **/
if ($all) {
$joAsso=$joBodacc=$baseInsee=$baseInpi=$iGreffe=$iMarques=true;
$joAsso=$joBodacc=$baseInsee=$baseInpi=$iGreffe=$iLiens=$iMarques=true;
}
$iDb=new WDB('jo');
@ -165,57 +139,68 @@ $iInsee=new MInsee();
echo date ('Y/m/d - H:i:s')." - Création de la nouvelle table établissements.".EOL;
$iDbSdv1=new WDB('sdv1');
$ret = $iDbSdv1->insert('sphinx_idx', array('nom'=>'jo.etablissements', 'createBegin'=>date('YmdHis')));
$consolidationId = null;
if (is_int($ret) ) {
$consolidationId = $ret;
}
echo date ('Y/m/d - H:i:s')." - Sphinx Idx id=".$consolidationId.EOL;
if (!$iDb->query("DROP TABLE IF EXISTS jo.etablissements_tmp;"))
die($iDb->getLastError());
if (!$iDb->query("CREATE TABLE jo.etablissements_tmp (
`id` bigint(20) NOT NULL auto_increment,
`source` tinyint(3) unsigned zerofill NOT NULL,
`source_id` bigint(20) unsigned NOT NULL,
`triCode` varchar(6) NOT NULL,
`autre_id` varchar(15) NOT NULL,
`siren` int(9) unsigned zerofill NOT NULL,
`nic` mediumint(5) unsigned zerofill NOT NULL,
`actif` tinyint(1) NOT NULL,
`siege` tinyint(1) unsigned NOT NULL,
`raisonSociale` varchar(80) NOT NULL,
`enseigne` varchar(40) NOT NULL,
`sigle` varchar(20) NOT NULL,
`identite_pre` varchar(255) NOT NULL,
`marques` TEXT NOT NULL,
`adr_num` smallint(4) unsigned zerofill NOT NULL,
`adr_btq` char(1) NOT NULL,
`adr_typeVoie` char(4) NOT NULL,
`adr_libVoie` varchar(32) NOT NULL,
`adr_comp` varchar(38) NOT NULL,
`adr_cp` mediumint(5) unsigned zerofill NOT NULL,
`adr_ville` varchar(32) NOT NULL,
`adr_dep` char(3) NOT NULL,
`adr_com` smallint(3) unsigned zerofill NOT NULL,
`tel` bigint(10) unsigned zerofill NOT NULL,
`fax` bigint(10) unsigned zerofill NOT NULL,
`cj` smallint(4) unsigned zerofill NOT NULL,
`capital` bigint(15) unsigned zerofill NOT NULL,
`capitalDev` char(3) NOT NULL,
`capitalSrc` tinyint(3) unsigned zerofill NOT NULL,
`ape_etab` char(5) NOT NULL,
`ape_entrep` char(5) NOT NULL,
`age_entrep` tinyint(3) unsigned NOT NULL,
`age_etab` tinyint(3) unsigned NOT NULL,
`tca` tinyint(1) unsigned zerofill NULL,
`tcaexp` tinyint(1) unsigned zerofill NOT NULL,
`teff_entrep` tinyint(2) unsigned NULL,
`teff_etab` tinyint(2) unsigned NULL,
`rang` smallint unsigned NOT NULL,
`dateInsert` datetime NOT NULL,
`dateUpdate` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `source` (`source`,`source_id`),
KEY `idxTel` (`tel`),
KEY `idxFax` (`fax`),
KEY `idxSiret` (`siren`,`nic`,`actif`,`siege`),
KEY `idxAutreId` (`autre_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;", true))
id bigint(20) NOT NULL auto_increment COMMENT 'Identifiant dans la table (pas unique pour l''établissement)',
source tinyint(3) unsigned zerofill NOT NULL COMMENT 'Code source de l''entité/établissement',
source_id bigint(20) unsigned NOT NULL COMMENT 'Identifiant de l''établissement/entité dans la source (source+source_id étant invariable=identifiant S&D)',
triCode varchar(6) NOT NULL COMMENT 'Code Tribunal de l''entreprise',
autre_id varchar(15) NOT NULL COMMENT 'Autre identifiant comme Numéro RCS, Waldec/RNA',
siren INT(9) unsigned zerofill NOT NULL COMMENT 'SIREN de l''entreprise',
nic mediumint(5) unsigned zerofill NOT NULL COMMENT 'NIC de l''établissement (SIREN+NIC=SIRET)',
actif tinyint(1) unsigned NOT NULL COMMENT 'Etablissement actif ou inactif (1=actif, 0=inactif)',
siege tinyint(1) unsigned NOT NULL COMMENT 'Type d''établissement (0=Secondaire, 1=Siège, 2=Principal)',
raisonSociale varchar(160) NOT NULL COMMENT 'Raison Sociale de l''entreprise',
enseigne varchar(200) NOT NULL COMMENT 'Enseigne de l''établissement',
sigle varchar(20) NOT NULL COMMENT 'Sigle de l''entreprise',
identite_pre TEXT NOT NULL COMMENT 'Liste des Raisons Sociales précédentes de l''entreprise',
marques TEXT NOT NULL COMMENT 'Liste des marques déposées sur le SIREN',
adr_num SMALLINT(4) UNSIGNED ZEROFILL NOT NULL,
adr_btq CHAR(1) NOT NULL,
adr_typeVoie CHAR(4) NOT NULL,
adr_libVoie VARCHAR(32) NOT NULL,
adr_comp VARCHAR(38) NOT NULL,
adr_cp mediumint(5) UNSIGNED ZEROFILL NOT NULL,
adr_ville VARCHAR(32) NOT NULL,
adr_dep CHAR(3) NOT NULL,
adr_com SMALLINT(3) UNSIGNED ZEROFILL NOT NULL,
rivoli CHAR(5) NOT NULL,
tel bigint(10) UNSIGNED ZEROFILL NOT NULL,
fax bigint(10) UNSIGNED ZEROFILL NOT NULL,
cj SMALLINT(4) UNSIGNED ZEROFILL NOT NULL,
capital bigint(15) UNSIGNED ZEROFILL NOT NULL,
capitalDev CHAR(3) NOT NULL,
capitalSrc TINYINT(3) UNSIGNED ZEROFILL NOT NULL,
ape_etab CHAR(5) NOT NULL,
ape_entrep CHAR(5) NOT NULL,
age_entrep TINYINT(3) UNSIGNED NOT NULL,
age_etab TINYINT(3) UNSIGNED NOT NULL,
tca TINYINT(1) UNSIGNED ZEROFILL NULL COMMENT 'Tranche de Chiffre d''Affaires (INSEE)',
tcaexp TINYINT(1) UNSIGNED ZEROFILL NOT NULL COMMENT 'Tranche de Chiffre d''Affaires à l''export (INSEE)',
teff_entrep TINYINT(2) UNSIGNED NULL,
teff_etab TINYINT(2) UNSIGNED NULL,
rang SMALLINT(5) UNSIGNED NOT NULL COMMENT 'Nombre de consultation de l''entreprise dans la base S&D',
dateInsert DATETIME NOT NULL,
dateUpdate timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
PRIMARY KEY idxIdSphinx(id),
UNIQUE KEY idxSource (source, source_id),
KEY idxTel(tel),
KEY idxFax(fax),
KEY idxSiret(siren,nic,actif,siege),
KEY idxAutreId(autre_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT 'Liste des établissements (Pour la recherche)';", true))
/** @todo Si la construction de la table est trop longue, faire un ALTER TABLE ... PACK_KEYS=1 à la fin du chargement des données **/
die($iDb->getLastError());
$strMailInfo=date ('Y/m/d - H:i:s')." - Consolidation des établissements.".EOL;
@ -251,11 +236,11 @@ if ($baseInsee) {
' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(ENSEIGNE,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.','')
*/
$iDb->query("INSERT INTO jo.etablissements_tmp SELECT 0 AS id, '2' AS source, id AS source_id, e.triCode AS triCode, IF(e.numRC2 IS NOT NULL OR e.numRC2<>'', e.numRC2, i.NUMRC) AS autre_id, i.SIREN AS siren, i.NIC AS nic, i.ACTIF%10 as actif,
SIEGE as siege, i.NOM as raisonSociale, i.ENSEIGNE AS enseigne, i.SIGLE AS sigle, TRIM(CONCAT_WS(' ',i.IDENTITE_PRE,i.NOM2,e.raisonSociale,e.sigle)) AS identite_pre, '' AS marques, ADR_NUMVOIE as adr_num,
SIEGE as siege, IF(LENGTH(i.NOMEN_LONG)>0, i.NOMEN_LONG, i.NOM) AS raisonSociale, i.ENSEIGNE AS enseigne, i.SIGLE AS sigle, TRIM(CONCAT_WS(' ',i.IDENTITE_PRE,i.NOM,i.NOM2,e.raisonSociale,e.sigle,i.NOMEN_LONG,i.NOM_COM)) AS identite_pre, '' AS marques, ADR_NUMVOIE as adr_num,
ADR_BTQ as adr_btq, ADR_TYPVOIE as adr_typevoie, ADR_LIBVOIE as adr_libvoie, ADR_COMP as adr_comp,
ADR_CP as adr_cp, ADR_LIBCOM as adr_ville, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS adr_dep, ADR_COM as adr_com,
ADR_CP as adr_cp, ADR_LIBCOM as adr_ville, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS adr_dep, ADR_COM as adr_com, CODEVOIE AS rivoli,
TEL as tel, FAX as fax, i.CJ as cj, IF(e.capitalMontant IS NOT NULL OR e.capitalMontant>0, e.capitalMontant, i.CAPITAL) AS capital, IF(e.capitalDevIso IS NOT NULL OR e.capitalDevIso<>'', e.capitalDevIso, i.CAPITAL_DEV) AS capitalDev, IF(e.capitalMontant IS NOT NULL OR e.capitalMontant>0, 5, 2) AS capitalSrc, APE_ETAB as ape_etab, APE_ENT as apen_entrep, YEAR(NOW())-YEAR(DCREN) as age_entrep, YEAR(NOW())-YEAR(DCRET) as age_etab,
TCA as tca, TCAEXP as tcaexp, IF(TEFF_ENT='NN', NULL, TEFF_ENT*1) AS teff_entrep, IF(TEFF_ET='NN', NULL, TEFF_ET*1) AS teff_etab,
TCA as tca, TCAEXP as tcaexp, IF(TEFF_ENT='NN', NULL, TEFF_ENT*1) AS teff_entrep, IF(TEFF_ET='NN', NULL, TEFF_ET*1) AS teff_etab,
0 as rank, DATE_MAJ as dateInsert,
0 as dateUpdate FROM insee.identite i LEFT JOIN jo.rncs_entrep e ON i.siren=e.siren");
$retTmp=$iDb->select('jo.etablissements_tmp', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
@ -380,6 +365,8 @@ if ($baseInpi) {
'adr_cp'=>$tabEt['cp'],
'adr_ville'=>$tabEt['commune'],
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$tabEntrep['cj'],
@ -443,6 +430,8 @@ if ($baseInpi) {
'adr_cp'=>$tabEt['cp'],
'adr_ville'=>$tabEt['commune'],
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$tabEntrep['cj'],
@ -579,6 +568,8 @@ if ($joBodacc) {
'adr_cp'=>$adr_cp,
'adr_ville'=>$adr_ville,
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
@ -715,6 +706,8 @@ if ($joBodacc) {
'adr_cp'=>$adr_cp,
'adr_ville'=>$adr_ville,
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
@ -1013,6 +1006,8 @@ if ($joAsso) {
'adr_cp'=>@$adr['cp'],
'adr_ville'=>trim(strtoupper(@$adr['ville'])),
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$cj,
@ -1023,16 +1018,43 @@ if ($joAsso) {
'ape_entrep'=>$naf,
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertAsso++;
/** On enregistre l'autre adresse de l'association **/
if ($tabAsso['Assoc_NAdresse']<>'' && $tabAsso['Assoc_Adresse']<>'') {
$adr=$iInsee->structureVoie($tabAsso['Assoc_Adresse']);
$adrComp=strtoupper(@$adr['adrComp0']);
if (@$adr['adrComp1']<>'') $adrComp.=' '.strtoupper(@$adr['adrComp1']);
$adr['adrComp0']=$adrComp;
$dep=floor(@$adr['cp']/1000);
if ($dep>96) $dep=floor(@$adr['cp']/100);
$tabEtab['source'] = 3;
$tabEtab['adr_num'] = @$adr['num'];
$tabEtab['adr_btq'] = @$adr['indRep'];
$tabEtab['adr_typeVoie']= @$adr['typeVoie'];
$tabEtab['adr_libVoie'] = strtoupper(@$adr['libVoie']);
$tabEtab['adr_comp'] = @$adr['adrComp0'];
$tabEtab['adr_cp'] = @$adr['cp'];
$tabEtab['adr_ville'] = trim(strtoupper(@$adr['ville']));
$tabEtab['adr_dep'] = $dep;
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else {
$nbInsertAsso++;
$nbInsertAssoAdr2++;
}
}
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés.".EOL;
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés (dont $nbInsertAssoAdr2 suite à déménagement).".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés (dont $nbInsertAssoAdr2 suite à déménagement).".EOL;
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le JO Association Sirené (Waldec, etc...)".EOL;
@ -1046,7 +1068,7 @@ if ($joAsso) {
while ($tabAsso=$iDb->fetch(MYSQL_ASSOC)) {
$tabEtab=array( 'triCode'=>$tabAsso['Sous_Prefecture'], // Gérer la table des préfecture
'autre_id'=>$tabAsso['Waldec'],
'identite_pre'=>$tabAsso['Assoc_Nom'],
// 'identite_pre'=>$tabAsso['Assoc_Nom'],
);
$ret=$iDb->update('etablissements_tmp',$tabEtab, 'siren='.$tabAsso['siren']);
if (!$ret || mysql_errno()<>0) {
@ -1101,6 +1123,8 @@ if ($iGreffe) {
'adr_cp'=>$adr_cp,
'adr_ville'=>strtoupper(@$tabBodacc['ville']),
'adr_dep'=>$dep,
// 'adr_com'=>
// 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']);
'tel'=>'',
'fax'=>'',
'cj'=>$tabBodacc['fj'],
@ -1123,6 +1147,78 @@ if ($iGreffe) {
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertGreffes établissements Greffes consolidés.".EOL;
}
if ($iLiens) {
$iRncs=new MRncs();
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis les Liens Financiers.".EOL;
$dateInsert=date('YmdHis');
$nbBodS=$iDb->select('liensRef l LEFT JOIN tabPays p ON l.adresse_pays=p.codPays3', 'l.id, l.siren, l.sirenValide, l.source, l.actif, l.PpPm, l.RS, l.sigle, l.civilite, l.nom, l.prenom, l.nom_usage, l.naissance_date, l.naissance_dept_pays, l.naissance_lieu, l.nat, l.adresse_num, l.adresse_btq, l.adresse_codvoie, l.adresse_libvoie, l.adresse_comp, l.adresse_cp, l.adresse_ville, l.adresse_pays, l.tel, l.fax, l.web, l.email, l.dateSaisie, l.cj, l.ape, l.categorie, l.capital, l.deviseCapital, l.dateCapital, l.nbActions, l.dateNbActions, l.idLoc1Type, l.idLoc1Num, l.idLoc2Type, l.idLoc2Num, l.idLoc3Type, l.idLoc3Num, l.bilMillesime, l.bilDev, l.bilFL, l.bilHN, l.bilFPr, l.bilEE, l.grpTop, l.grpNom, l.dateInsert, p.codePaysInsee, p.libPays', "l.siren<1000 AND l.dateSuppr=0", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS entreprises en provenance de la base Liens absentes de l'insee à consolider depuis $last_id...".EOL;
while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) {
// l.id, l.siren, l.sirenValide, l.source, l., l.naissance_date, l.naissance_dept_pays,
// l.naissance_lieu, l.nat, l., l., l., l., l., l., l., l.adresse_pays,
// l.web, l.email, l.dateSaisie, l.categorie, l.dateCapital, l.nbActions, l.dateNbActions, l.idLoc1Type,
// l.idLoc2Type, l.idLoc2Num, l.idLoc3Type, l.idLoc3Num, l.bilMillesime, l.bilDev, l.bilFL, l.bilHN, l.bilFPr, l.bilEE, l.grpTop, l.grpNom, l.dateInsert
if ($tabBodacc['PpPm']=='PM') {
$raisonSociale=$tabBodacc['RS'];
} else {
$raisonSociale=trim($tabBodacc['civilite'].' '.strtoupper($tabBodacc['nom']).' '.$tabBodacc['prenom']);
if ($tabBodacc['cj']*1==0) $cj=1900;
else $cj=$tabBodacc['cj'];
}
if ($tabBodacc['adresse_pays']<>'' && $tabBodacc['adresse_pays']<>'FRA') {
$dep=99;
$com=$tabBodacc['codePaysInsee'];
} else {
$dep=floor($tabBodacc['adresse_cp']/1000);
if ($dep>96) $dep=floor($tabBodacc['adresse_cp']/100);
$com='';
}
$tabEtab=array( 'source'=>7,
'source_id'=>$tabBodacc['id'],
'siren'=>$tabBodacc['siren'],
'nic'=>0,
'triCode'=>'',
'autre_id'=>$tabBodacc['idLoc1Num'],
'siege'=>1,
'actif'=>$tabBodacc['actif'],
'raisonSociale'=>$raisonSociale,
'enseigne'=>'',//
'sigle'=>$tabBodacc['sigle'],
'identite_pre'=>$tabBodacc['nom_usage'],
'adr_num'=>$tabBodacc['adresse_num'],
'adr_btq'=>$tabBodacc['adresse_btq'],
'adr_typeVoie'=>$tabBodacc['adresse_codvoie'],
'adr_libVoie'=>$tabBodacc['adresse_libvoie'],
'adr_comp'=>$tabBodacc['adresse_comp'],
'adr_cp'=>$tabBodacc['adresse_cp'],
'adr_ville'=>strtoupper($tabBodacc['adresse_ville']),
'adr_dep'=>$dep,
'adr_com'=>$com,
'tel'=>$tabBodacc['tel'],
'fax'=>$tabBodacc['fax'],
'cj'=>$tabBodacc['cj'],
'capital'=>$tabBodacc['capital'],
'capitalDev'=>$tabBodacc['deviseCapital'],
'capitalSrc'=>6,
'ape_etab'=>$tabBodacc['ape'],
'ape_entrep'=>$tabBodacc['ape'],
'dateInsert'=>$dateInsert,
);
$ret=$iDb->insert('etablissements_tmp',$tabEtab);
if (!$ret && mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Liens sur le siren ". $tabBodacc['siren'] .' : '. $raisonSociale .' ('. $tabBodacc['id'].') !'.EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else
$nbInsertLiens++;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertLiens établissements Liens consolidés.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertLiens établissements Liens consolidés.".EOL;
}
if ($iMarques) {
echo date ('Y/m/d - H:i:s')." - Mise à jour des marques.".EOL;
@ -1134,17 +1230,17 @@ if ($iMarques) {
$strMarques='';
while ($tabMarques=$iDb->fetch(MYSQL_ASSOC)) {
$siren =$tabMarques['Siren'];
$strMarques.=' '.$tabMarques['Marques'];
if ($sirenPre<>$siren && $sirenPre<>false) {
/** Il faut mettre à jour l'ensemble des marques pour ce siren **/
$tabUpdate=array( 'marques'=>trim($strMarques));
$ret=$iDb->update($table,$tabUpdate, "siren=$siren");
$ret=$iDb->update($table,$tabUpdate, "siren=$sirenPre");
if (!$ret) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations MARQUES sur le siren $siren impossible ($strMarques) !".EOL;
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations MARQUES sur le siren $sirenPre impossible ($strMarques) !".EOL;
echo date ('Y/m/d - H:i:s'). mysql_error();
} else $nbInsertMarques++;
$strMarques='';
}
$strMarques.=' '.$tabMarques['Marques'];
$sirenPre=$siren;
}
echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertMarques établissements avec Marques consolidés.".EOL;
@ -1197,6 +1293,8 @@ while ($tabRank=$iDbRanks->fetch(MYSQL_ASSOC)) {
if (!$pageRankOnly) {
echo date ('Y/m/d - H:i:s')." - Mise en place des tables pour l'indexation.".EOL;
// $iDb->query("ALTER TABLE jo.etablissements_tmp PACK_KEYS=1;");
// echo date ('Y/m/d - H:i:s')." - Commpression des Index de la table OK.".EOL;
$iDb->query("DROP TABLE jo.etablissements_old;");
echo date ('Y/m/d - H:i:s')." - Suppression de la table etablissements_old : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL;
//$iDb->query("RENAME TABLE jo.etablissements TO jo.etablissements_old;");
@ -1204,6 +1302,11 @@ if (!$pageRankOnly) {
//$iDb->query("RENAME TABLE jo.etablissements_tmp TO jo.etablissements;");
//echo date ('Y/m/d - H:i:s')." - Passage en production de la table tmp : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL;
}
if ( $consolidationId !== null ) {
$ret = $iDbSdv1->update('sphinx_idx', array('createEnd'=>date('YmdHis')), "id=$consolidationId");
}
echo date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Etablissements".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Etablissements".EOL;
@ -1212,6 +1315,6 @@ $strMailInfo.=date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Et
if ($nb>0) die(0);
else die(1);*/
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Consolidation des établissements', $strMailInfo);
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'Consolidation des établissements', $strMailInfo);
die();
?>

138
batch/convertCsv2Txt.php Normal file
View File

@ -0,0 +1,138 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
error_reporting(E_ALL);
$modeDebug=false;
$separator='/t';
$finLigne=false;
$argv=$_SERVER['argv'];
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]... FICHIER
Conversion d'un fichier CSV en fichier Plat format Fixe.
Options :
-v Mode bavard
-s=CHAR séparateur de champs (virgule, point-virgule*, /t=TAB, /p=|, etc...)
-c=CHAR caractère encadrant les zones alphanumériques (inopérationnel)
-l=XXXX Taille maximale d'une ligne
-f=/n Fin de ligne Linux par défaut (Windows /r/n)
(*): Valeurs par défaut !
";
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 's': $separator=substr($argv[$i],3); break;
case 'c': $chaine=substr($argv[$i],3); break;
case 'l': $lenMaxLine=substr($argv[$i],3); break;
case 'f': $finLigne=substr($argv[$i],3); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !".EOL);
}
} else
$fichier_csv[]=$argv[$i];
}
if ($separator=='/t') {
$separator="\t";
echo "séparateur = TAB\n";
} elseif ($separator=='/p') {
$separator='|';
echo "séparateur = PIPE\n";
} elseif (!isset($separator) || $separator=='') {
$separator=';';
echo "séparateur = '$separator'\n";
} else
echo "séparateur = '$separator'\n";
if ($finLigne=='/r')
$finLigne="\r";
elseif ($finLigne=='/n')
$finLigne="\n";
elseif ($finLigne=='/r/n')
$finLigne="\r\n";
else
$finLigne=EOL;
echo date ('Y/m/d - H:i:s') . " - Début de la conversion...".EOL;
foreach ($fichier_csv as $iFichier=>$nomFichier) {
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier : $nomFichier !".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$nbLignes=$iLigne=0;
$tabEntete=$tabTailles=$tabLignes=$tabEntiers=array();
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier $nomFichier...".EOL;
while (($data = fgetcsv($fp, 10000, $separator)) !== FALSE)
{
$nbLignes++;
if ($nbLignes==1)
{ // L'entête contient la structure du fichier
// On compte le nombre de colonnes du fichier
$nbColonnes=count($data);
echo date ('Y/m/d - H:i:s')." - Le fichier '$nomFichier' contient $nbColonnes colonnes.".EOL;
for($i=0; $i<$nbColonnes; $i++) {
$tabEntete[$i]=$data[$i];
$tabEntiers[$i]=1;
}
} else {
// Lecture des tailles maximales des colonnes
for($i=0; $i<$nbColonnes; $i++) {
if (strlen($data[$i])>@$tabTailles[$i]) {
$tabTailles[$i]=strlen($data[$i]);
$tabLignes[$i]=$nbLignes;
}
if ($data[$i]<>'' && strtolower($data[$i])<>strtoupper($data[$i])) $tabEntiers[$i]=0;
}
}
}
echo date ('Y/m/d - H:i:s')." - Le fichier '$nomFichier' contient $nbLignes lignes.".EOL;
foreach ($tabEntete as $i=>$entete) {
if ($tabEntiers[$i]==0) $strInt='alphanum. ';
else $strInt='num. ';
echo "$i - $entete : ". $tabTailles[$i]. " caractères $strInt(ligne ".$tabLignes[$i].')'.EOL;
}
rewind($fp);
$fpOut=fopen(str_replace('.csv','.txt',$nomFichier), 'w');
echo date ('Y/m/d - H:i:s')." - Début de conversion du fichier en texte...".EOL;
while (($data = fgetcsv($fp, 10000, $separator)) !== FALSE)
{
$iLigne++;
$str='';
if ($iLigne>1) {
// Lecture des tailles maximales des colonnes
for($i=0; $i<$nbColonnes; $i++) {
if ($tabEntiers[$i]==0)
$str.=initstr($data[$i], $tabTailles[$i]);
else
$str.=initstr($data[$i], $tabTailles[$i], '0', ALIGN_RIGHT);
}
//fwrite($fpOut, $str.EOL);
fwrite($fpOut, $str.$finLigne);
}
}
echo date ('Y/m/d - H:i:s')." - Conversion réussie du fichier '$nomFichier' en fichier plat ($iLigne lignes).".EOL;
fclose ($fp);
fclose ($fpOut);
}
?>

602
batch/convertSdCsv2.php Normal file
View File

@ -0,0 +1,602 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
define('VERSION_FICHIER_BODACC','0106');
/**
* @todo
* 1. Numéroter toutes les procédures OK
* 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc
* 101 Commentaire
* 102 Activite déclaré au Bodacc
* 103 texte rectificatif
* 104 Annonce complète au format texte
* 105 Structure Dirigeants BODACC
* 106 Libellé du Périmètre de la vente
* 3.
* 5. JugesCommissaires à intégrer correctement
Noms et prénoms des dirigeants de l'entreprise ' Anum. ?
Raison sociale du vendeur Anum. 255
Siren du vendeur (en cas de Vente/Cessions) Num. 9
Indicateur de correction du SIREN vendeur (si C, le siren diffusé au BODACC est faut mais S&D a affecté le bon SIREN) ' Car. 1
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
$iBodacc=new MBodacc();
$iInsee=new MInsee();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion de fichier(s) plat(s) multi-structures S&D en fichier(s) CSV.
Options :
-v Mode verbose
-n Ajout des nics A6CMO
-x Formater la sortie standard en CSV pour exploitation
-i Conversion de la fiche d'identité A6CMO (200)
";
$tabFichier=array();
$verbose=false;
$sortieCSV=false;
$ajoutNic=false;
$csvAnn=false;
$csvId=false;
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a':
$csvAnn=true;
break;
case 'i':
$csvId=true;
break;
case 'n':
$ajoutNic=true;
break;
case 'v':
$verbose=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabFichier[]=$argv[$i];
}
if (count($tabFichier)<1)
die($strInfoScript);
if (!$csvAnn && !$csvId) $csvAnn=true;
$ligne001tot=$ligne100tot=$ligne104tot=$ligne200tot=$ligne999tot=0;
$ligne100chaptot=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0);
$procoltot=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0);
foreach ($tabFichier as $iFic=>$fichier) {
$ligne001=$ligne100=$ligne104=$ligne200=$ligne999=0;
$ligne100chap=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0);
$procol=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0);
$tabLignes=file($fichier);
$fp=fopen($fichier.'.csv', 'w');
foreach ($tabLignes as $i=>$ligne) {
$ligne=strtr($ligne,';',' ');
$ecrireLignePre=false;
$typeLigne=substr($ligne, 0, 3)*1;
switch ($typeLigne) {
case 1: // Ligne ignorée
// if ($csvAnn && !$csvId)
// Ecriture de l'entête
$siren ='Siren';
$nic ='Nic';
$ref ='Référence';
$numPar ='Parution';
$bodacc ='Bodacc';
$datePar='Date parution';
$numAnn ='Numéro Annonce';
$cor ='Type Annonce';
$libTri ='Tribunal';
$numRC ='Numéro RCS';
$raisonS='Raison sociale';
$catEven='Chapitre';
$txtEven='Evènement(s)';
$txtAnn ='Texte Annonce';
$codeTri ='Code Tribunal';
$actifEt ='Etab. Actif';
$siege ='Siège';
$nomCom ='Nom Commercial';
$enseigne ='Enseigne';
$sigle ='Sigle';
$adrEtNum ='Adresse Num';
$adrEtBtq ='Adresse Btq';
$adrEtTypV ='Adresse Type Voie';
$adrEtVoie ='Adresse Lib Voie';
$adrEtComp ='Complèment adresse';
$adrEtDisp ='Adresse Distribution Spéciale';
$adrEtCp ='Adresse CP';
$adrEtVille ='Adresse Ville';
$adrEtPays ='Adresse Pays';
$capital ='Capital';
$capitalDev ='';
$cj ='Forme Juridique';
$civilite ='Civilité';
$nbEtab ='Nb Etab';
$dateMaj ='Date MAJ';
$sitJur ='Situation Juridique';
$depCom ='Code Commune';
$rivoli ='Fantoir';
$iris ='IRIS';
$ilot ='Ilot';
$indDom ='Domiciliation';
$tel ='Téléphone';
$fax ='Fax';
$web ='Web';
$mail ='Mail';
$auxil ='Auxiliarité';
$saisonat ='Saisonnalité';
$activnat ='Nature Activité';
$origine ='Origine création';
$typexploit ='Type Exploitation';
$lieuact ='Lieu Activité';
$actisurf ='Type magasin';
$prodpart ='ProdPart';
$arronet ='Arrondissemeent';
$ctonet ='Canton';
$tcd ='Tranche commune';
$zemet ='Zone Emploi';
$du ='Dépt Unité Urbaine';
$tu ='Taille Unité Urbaine';
$uu ='Numéro Unité Urbaine';
$dcret ='Date création étab.';
$apet ='NAF étab.';
$nacet ='NACE étab';
$dapet ='Année NAF étab';
$effet ='Effectif étab.';
$teffet ='Tranche Eff. ét.';
$defet ='Année effectif étab.';
$modet ='Modalité APE étab.';
$explet ='Etab. exploitant';
$rpet ='Région étab.';
$dreactet ='Date réactivation étab.';
$dateferet ='Date fermeture étab.';
$eaeant ='Année EAE';
$eaeapet ='APE1 EAE';
$eaesec1t ='APE2 EAE';
$eaesec2t ='APE3 EAE';
$dcren ='Date création ent.';
$apen ='NAF ent.';
$nacen ='NACE ent.';
$dapen ='Année NAF ent.';
$effen ='Effectif ent.';
$teffen ='Tranche Eff. ent';
$defen ='Année effectif ent.';
$moden ='Modalité APE ent.';
$explen ='Ent. exploitante';
$rpen ='Région ent.';
$dreacten ='Date réactivation ent.';
$dateferen ='Date fermeture ent.';
$dateImma ='Date Immatriculation';
$dateRad ='Date Radiation';
$tca ='Tranche CA';
$tcaExp ='Tranche CA Exp.';
$zus ='ZUS';
$zru ='ZRU';
$zfu ='ZFU';
$cucs ='CUCS';
$afr ='AFR';
$zrr ='ZRR';
$tva ='TVA';
$isin ='ISIN';
$dir1nom ='Dirigeant 1 nom';
$dir1prenom ='Dirigeant 1 prénom';
$dir1cfct ='Dirigeant 1 code Fct';
$dir2nom ='Dirigeant 2 nom';
$dir2prenom ='Dirigeant 2 prénom';
$dir2cfct ='Dirigeant 2 code Fct';
$bilanClot ='Date dernier bilan';
$bilanDuree ='Durée bilan';
$bilanCA ='Dernier CA';
$bilanRES ='Dernier Résultat';
$ligneOut='';
$ligne001++;
$ligne001tot++;
break;
case 200: // Structure Identité
if (!$csvId) break;
$ligneOut ="$siren;$nic;$codeTri;$libTri;$numRC;$actifEt;$siege;$raisonS;$nomCom;$enseigne;$sigle;";
$ligneOut.="$adrEtNum;$adrEtBtq;$adrEtTypV;$adrEtVoie;$adrEtComp;$adrEtDisp;$adrEtCp;$adrEtVille;$adrEtPays;";
$ligneOut.="$capital $capitalDev;$cj;$civilite;$nbEtab;$dateMaj;$sitJur;$depCom;$rivoli;$iris;$ilot;$indDom;";
$ligneOut.="$tel;$fax;$web;$mail;$auxil;$saisonat;$activnat;$origine;$typexploit;$lieuact;$actisurf;$prodpart;";
$ligneOut.="$arronet;$ctonet;$tcd;$zemet;$du;$tu;$uu;$dcret;$apet;$nacet;$dapet;$effet;$teffet;";
$ligneOut.="$defet;$modet;$explet;$rpet;$dreactet;$dateferet;$eaeant;$eaeapet;$eaesec1t;$eaesec2t;";
$ligneOut.="$dcren;$apen;$nacen;$dapen;$effen;$teffen;$moden;$explen;$rpen;$dreacten;$dateferen;$dateImma;$dateRad;$tca;$tcaExp;";
$ligneOut.="$zus;$zru;$zfu;$cucs;$afr;$zrr;$tva;$isin;$dir1nom;$dir1prenom;$dir1cfct;$dir2nom;$dir2prenom;$dir2cfct;";
$ligneOut.="$bilanClot;$bilanDuree;$bilanCA;$bilanRES";
$ligne200++;
$ligne200tot++;
$siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise
$nic = trim(substr($ligne, 22, 5 )); // Nic de l'établissement
/*
$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année
$bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C
$datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ
$numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc
$typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce
$corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion
$corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ
$corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion
$corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion
$cor='';
if ($typeAnn<>'I')
$cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate);
switch($typeAnn) {
case 'I': $cor='Insertion'.$cor; break;
case 'A': $cor='Additif'.$cor; break;
case 'R': $cor='Rectificatif'.$cor; break;
case 'S': $cor='Suppression'.$cor; break;
default: break;
}
*/
$codeTri=trim(substr($ligne, 41 , 6 )); // Code Tribunal Codification interne utilisée par le Bodacc
$libTri=@$iBodacc->getTribunalNom($codeTri);
$adrEtNum= trim(substr($ligne, 513 , 4)); // Adresse de l'établissement : Numéro dans la voie
$adrEtBtq= trim(substr($ligne, 517 , 1 )); // ADR_BTQ Indicateur de répétition (Bis, Ter, etc...)
$adrEtTypV= trim(substr($ligne, 518 , 4 )); // ADR_TYPVOIE Type de voie
$adrEtVoie= trim(substr($ligne, 522 , 32 )); // Adresse de l'établissement : Libellé de la voie
$adrEtComp= trim(substr($ligne, 591 , 38 )); // ADR_COMP Complément d'adresse
$adrEtDisp = trim(substr($ligne, 629 , 38 )); // ADR_DISTSP Distribution spéciale
$adrEtCp= trim(substr($ligne, 586 , 5 )); // Code Postal de l'établissement
$adrEtVille=trim(substr($ligne, 554 , 32 )); // Ville de l'établissement
$adrEtPays = trim(substr($ligne, 667 , 38 )); // PAYS Pays
$numRC = trim(substr($ligne, 31 , 10 )); // Numéro de RC (Registre du Commerce) de l'entreprise
$raisonS= trim(substr($ligne, 73 , 160 )); // Raison sociale de l'entreprise
/*
$siren = substr($ligne, 3 , 10 ); // ID Numéro unique d'identification interne d'un établissement S&D
$siren = substr($ligne, 27 , 3 ); // SOURCE Source de la fiche d'identité
$siren = substr($ligne, 30 , 1 ); // SIRETVALIDE Siren/siret valide
*/
$dateMaj= substr($ligne, 47 , 8 ); // DATEMAJ Date de la dernière mise à jour dans la base S&D
$actifEt = substr($ligne, 55 , 1 ); // ACTIF Établissement juridiquement actif
$actifEco= substr($ligne, 56 , 1 ); // ACTIFECO Établissement économiquement actif
$sitJur = trim(substr($ligne, 57 , 2 )); // SITJUR Situation Juridique de l'entreprise
$codeEve = substr($ligne, 59 , 3 ); // EVE Dernier événement Insee recensé
$dateEve = substr($ligne, 62 , 8 ); // DATEVE Date du dernier événement Insee recensé
// $siren = substr($ligne, 70 , 2 ); // TYPETAB Type d'établissement concerné par l'événement
$siege = substr($ligne, 72 , 1 ); // SIEGE Établissement siège, secondaire ou principal
$nomCom = trim(substr($ligne, 233 , 160 )); // NOMCOM Nom commercial
$enseigne = trim(substr($ligne, 393 , 80 )); // ENSEIGNE Enseigne de l'établissement
$sigle = trim(substr($ligne, 473 , 40 )); // SIGLE sigle de l'entreprise
$depCom = substr($ligne, 707 , 5 ); // ADR_DEP Département de l'établissement
$rivoli = trim(substr($ligne, 712 , 5 )); // CODEVOIE Code voie de l'établissement
$iris = trim(substr($ligne, 717 , 4 )); // CODEIRIS Code Iris de l'établissement
$ilot = trim(substr($ligne, 721 , 5 )); // CODEILOT Code Ilot de l'établissement
$indDom = trim(substr($ligne, 726 , 1 )); // ADRESSEDOM Indicateur d'adresse de domiciliation
$tel= trim(substr($ligne, 727 , 15 )); // TEL Numéro de téléphone
$fax = trim(substr($ligne, 742 , 15 )); // FAX Numéro de télécopie
$web = trim(substr($ligne, 757 , 80 )); // WEB Site Web
$mail = trim(substr($ligne, 837 , 80 )); // MAIL Adresse Email de contact générique
$auxilt = trim(substr($ligne, 917 , 1 )); // AUXILT Auxiliarité de l'activité de l'établissement
$saisonat= trim(substr($ligne, 918 , 1 )); // SAISONAT Saisonnalité de l'établissement
$activnat= trim(substr($ligne, 919 , 2 )); // ACTIVNAT Nature de l'activité de l'établissement
$origine= trim(substr($ligne, 921 , 2 )); // ORIGINE Origine de la création de l'établissement
$typexploit= trim(substr($ligne, 923 , 2 )); // TYPEXPLOIT Type d'exploitation
$lieuact=trim(substr($ligne, 925 , 2 )); // LIEUACT Lieu de l'activité de l'établissement
$actisurf=trim(substr($ligne, 927 , 2 )); // ACTISURF Type de magasin
$prodpart=trim(substr($ligne, 929 , 1 )); // PRODPART Participation particulière à la production de l'établissement
$arronet=trim(substr($ligne, 930 , 2 )); // ARRONET Arrondissement de l'établissement
$ctonet = trim(substr($ligne, 932 , 3 )); // CTONET Canton
$tcd=trim(substr($ligne, 935 , 2 )); // TCD Tranche de commune détaillée
$zemet= trim(substr($ligne, 937 , 2 )); // ZEMET Zone d'emploi
$du= trim(substr($ligne, 939 , 2 )); // DU Département de l'unité urbaine de localisation
$tu= trim(substr($ligne, 941 , 1 )); // TU Taille de l'unité urbaine
$uu= trim(substr($ligne, 942 , 2 )); // UU Numéro de l'untié urbaine
$dcret = substr($ligne, 944 , 8 ); // DCRET Date de création de l'établissement
$apet = substr($ligne, 952 , 5 ); // APE_ETAB Code activité dans la NAF rév2 de l'établissement
$nacet= trim(substr($ligne, 957 , 5 )); // NACE_ETAB Code activité NACE de l'établissement
$dapet = trim(substr($ligne, 962 , 4 )); // DAPET Année de validité de l'activité principale de l'établissement
$effet = trim(substr($ligne, 966 , 7 ))*1; // EFF_ET Effectif de l'établissement
$teffet = substr($ligne, 973 , 2 ); // TEFF_ET Tranche d'effectif de l'établissement
$defet = trim(substr($ligne, 975 , 4 )); // DEFET Année de mise à jour de l'effectif établissement
$modet = trim(substr($ligne, 979 , 1 )); // MODET Modalité de l'activité pricipale de l'établissement
$explet= trim(substr($ligne, 980 , 1 )); // EXPLET Etablissement exploitant tout ou partie des moyens de production
$rpet = trim(substr($ligne, 981 , 2 )); // RPET Région de localisation de l'établissement
$dreactet = trim(substr($ligne, 983 , 8 )); // DREACTET Date de réactivation de l'établissement
$dateferet = trim(substr($ligne, 991 , 8 )); // DATEFERET Date de fermeture de l'établissement
$eaeant = trim(substr($ligne, 999 , 4 )); // EAEANT Année de validité des rubriques de niveau Etab provenant des EAE*
$eaeapet = trim(substr($ligne, 1003 , 5 )); // EAEAPET Activité principale de l'établissement issue des EAE
$eaesec1t = trim(substr($ligne, 1008 , 5 )); // EAESEC1T Activité secondaire de l'établissement issue des EAE
$eaesec2t = trim(substr($ligne, 1013 , 5 )); // EAESEC2T Autre activité secondaire de l'établissement issue des EAE
$dcren = substr($ligne, 1018 , 8 ); // DCREN Date de création de l'entreprise
$apen = substr($ligne, 1026 , 5 ); // APE_ENT Code activité dans la NAF rév2 de l'entreprise
$nacen = substr($ligne, 1031 , 5 ); // NACE_ENT Code activité NACE de l'entreprise
$dapen = substr($ligne, 1036 , 4 ); // DAPEN Année de validité de l'activité principale de l'entreprise
$effen = trim(substr($ligne, 1040 , 7 ))*1; // EFF_ENT Effectif de l'entreprise
$teffen = substr($ligne, 1047 , 2 ); // TEFF_ENT Tranche d'effectif de l'entreprise
$defen = substr($ligne, 1049 , 4 ); // DEFEN Année de mise à jour de l'effectif entreprise
$moden = substr($ligne, 1053 , 1 ); // MODEN Modalité de l'activité pricipale de l'entreprise
$explen = substr($ligne, 1054 , 1 ); // EXPLEN Entreprise exploitant tout ou partie des moyens de production
$rpen = substr($ligne, 1055 , 2 ); // RPEN Région de localisation du siège de l'entreprise
$dreacten = substr($ligne, 1057 , 8 ); // DREACTEN Date de réactivation de l'entreprise
$dateferen = substr($ligne, 1065 , 8 ); // DATEFEREN Date de fermeture de l'entreprise
$dateImma = substr($ligne, 1073 , 8 ); // DATEIMMAT Date d'immatriculation de l'entreprise au RCS
$dateRad = substr($ligne, 1081 , 8 ); // DATERAD Date de radiation de l'entreprise du RCS
$capital = trim(substr($ligne, 1089 , 15 ))*1; // CAPITAL Montant du capital de l'entreprise
$capitalTyp= substr($ligne, 1104 , 1 ); // CAPITALTYPE Type de capital
$capitalDev= trim(substr($ligne, 1105 , 3 )); // CAPITALDEV Devise du capital
$cj = substr($ligne, 1108 , 4 ); // CJ Catégorie Juridique de l'entreprise
$civilite= trim(substr($ligne, 1112 , 1 )); // CIVILITE Civilité de l'entreprise si Personne Physique
$nbEtab = trim(substr($ligne, 1113 , 4 ))*1; // NBETAB Nombre d'établissements actifs de l'entreprise
$tca= substr($ligne, 1117 , 1 ); // TCA Tranche de chiffre d'affaire
$tcaExp = substr($ligne, 1118 , 1 ); // TCAEXP Tranche de chiffre d'affaire à l'export
$aprm = substr($ligne, 1119 , 6 ); // APRM Activité principale au registre des métiers
$monoreg= substr($ligne, 1125 , 1 ); // MONOREG Mono-régionalité de l'entreprise
$regimp = substr($ligne, 1126 , 2 ); // REGIMP Principale région d'implantation de l'entreprise
$monoact = substr($ligne, 1128 , 1 ); // MONOACT Mono-activité de l'entreprise
$nicsiege = substr($ligne, 1129 , 5 ); // NICSIEGE Nic de l'établissement siège
$recme = substr($ligne, 1134 , 1 ); // RECME Répertoire des Entreprises Contrôlées Majoritairement par lÉtat
$siretLie = substr($ligne, 1135 , 14 ); // SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre
$siretLieType = substr($ligne, 1149 , 1 ); // SIRETLIETYPE Type de sitet lié
$nicPrec = substr($ligne, 1150 , 5 ); // NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert)
$nicSuiv = substr($ligne, 1155 , 5 ); // NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert)
/*
$siren = substr($ligne, 1160 , 2 ); // insDESTINAT Destination Insee
$siren = substr($ligne, 1162 , 5 ); // insDEPCOMEN Code commune Insee du siège de l'entreprise
$siren = substr($ligne, 1167 , 1 ); // insMNICSIEGE Indicateur de MAJ du NIC SIEGE
$siren = substr($ligne, 1168 , 1 ); // insMNOMEN Indicateur de MAJ de la Raison Sociale
$siren = substr($ligne, 1169 , 1 ); // insMCJ Indicateur de MAJ de la Forme Juridique
$siren = substr($ligne, 1170 , 1 ); // insMAPEN Indicateur de MAJ du NAF entreprise
$siren = substr($ligne, 1171 , 1 ); // insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE
$siren = substr($ligne, 1172 , 1 ); // insMAPET Indicateur de MAJ du NAF établissement
$siren = substr($ligne, 1173 , 1 ); // insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement
$siren = substr($ligne, 1174 , 1 ); // insMAUXILT Indicateur de MAJ de l'AUXILIARITE
$siren = substr($ligne, 1175 , 1 ); // insMSIGLE Indicateur de MAJ du SIGLE
$siren = substr($ligne, 1176 , 1 ); // insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep
$siren = substr($ligne, 1177 , 1 ); // insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab
*/
$adr_rnvp = substr($ligne, 1178 , 1 ); // ADR_RNVP Type de Prestation RNVP si RNVP
$adrL1 = substr($ligne, 1179 , 38 ); // L1_nomen Ligne 1 : Nom de l'entreprise
$adrL2 = substr($ligne, 1217 , 38 ); // L2_COMP Ligne 2 : Complément de nom
$adrL3 = substr($ligne, 1255 , 38 ); // L3_CADR Ligne 3 : Complément d'adresse
$adrL4 = substr($ligne, 1293 , 38 ); // L4_VOIE Ligne 4 : Adresse
$adrL5 = substr($ligne, 1331 , 38 ); // L5_DISP Ligne 5 : Distribution spéciale
$adrL6 = substr($ligne, 1369 , 38 ); // L6_POST Ligne 6 : Code Postal, commune, etc..
$adrL7 = substr($ligne, 1407 , 38 ); // L7_ETRG Ligne 7 : Pays si étranger
/*
$siren = substr($ligne, 1445 , 4 ); // EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE*
$siren = substr($ligne, 1449 , 5 ); // EAEAPEN Activité principale de l'entreprise issue des EAE
$siren = substr($ligne, 1454 , 5 ); // inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE
$siren = substr($ligne, 1459 , 5 ); // inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE
$siren = substr($ligne, 1464 , 5 ); // inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE
$siren = substr($ligne, 1469 , 5 ); // inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE
*/
$gpsX = substr($ligne, 1474 , 12 ); // GPSX Latitude en ° et décimales de ° (format WGS1984)
$gpsY = substr($ligne, 1486 , 12 ); // GPSY Longitude en ° et décimales de ° (format WGS1984)
$gpSP = substr($ligne, 1498 , 1 ); // GPSP Niveau de précision du géocodage (de 0 à 9)
$zus = trim(substr($ligne, 1499 , 10 )); // ZUS Identifiant de la Zone Urbaine Sensible
$zru = trim(substr($ligne, 1509 , 10 )); // ZRU Identifiant de la Zone de Rénovation Urbaine
$zfu = trim(substr($ligne, 1519 , 10 )); // ZFU Identifiant de la Zone Franche Urbaine
$cucs = trim(substr($ligne, 1529 , 10 )); // CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social
$afr = trim(substr($ligne, 1539 , 10 )); // AFR Identifiant de la Zone AFR
$zrr = trim(substr($ligne, 1549 , 10 )); // ZRR Identifiant de la ZRR
$tva = trim(substr($ligne, 1559 , 15 )); // TVA Numéro de TVA Intracommunataire
$tvaValide = substr($ligne, 1574 , 1 ); // TVAVALIDE Numéro de TVA validé
// $siren = substr($ligne, 1575 , 1 ); // ANCIENSIEGE Ancien siège
$isin= trim(substr($ligne, 1576 , 12 )); // CODEISIN Code ISIN de l'entreprise si cotation en bourse
$dir1nom = trim(substr($ligne, 1588 , 40 )); // PPDIR1NOM Nom du principal dirigeant
$dir1prenom = trim(substr($ligne, 1628 , 30 )); // PPDIR1PRENOM Prénom du principal dirigeant
$dir1naissn = substr($ligne, 1658 , 40 ); // PPDIR1NNAISS Nom de naissance du ppl dirigeant
$dir1naissd = substr($ligne, 1698 , 8 ); // PPDIR1DNAISS Date de naissance
$dir1naissl = substr($ligne, 1706 , 35 ); // PPDIR1LNAISS Lieu de Naissance
$dir1cfct= substr($ligne, 1741 , 4 ); // PPDIR1FONC Code Fonction
// $siren = substr($ligne, 1745 , 8 ); // PPDIR1MAJ Date de MAJ du ppl dirigeant
$dir2nom= trim(substr($ligne, 1753 , 40 )); // PPDIR2NOM Nom du seconde principal dirigeant
$dir2prenom = trim(substr($ligne, 1793 , 30 )); // PPDIR2PRENOM Prénom du 2ème principal dirigeant
$dir2naissn = substr($ligne, 1823 , 40 ); // PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant
$dir2naissd = substr($ligne, 1863 , 8 ); // PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant
$dir2naissl = substr($ligne, 1871 , 35 ); // PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant
$dir2cfct = substr($ligne, 1906 , 4 ); // PPDIR2FONC Code Fonction du 2ème ppl dirigeant
// $siren = substr($ligne, 1910 , 8 ); // PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant
$bilanClot= trim(substr($ligne, 1918 , 8 ))*1; // BILANCLOT Date de dernière clôture de bilan disponible
$bilanDuree = trim(substr($ligne, 1926 , 2 ))*1; // BILANDUREE Durée du dernier exercice disponible
$bilanCA= trim(substr($ligne, 1928 , 15 ))*1; // BILANCA Chiffre d'affaires au dernier bilan disponible
$bilanRES = trim(substr($ligne, 1943 , 15 ))*1; // BILANRES Résultat au dernier bilan disponible
// $siren = substr($ligne, 1958 , 41 ); // FILLER1 Zone libre
$ecrireLignePre=true;
break;
case 100: // Structure Bodacc
$ligne100++;
$ligne100tot++;
if (!$csvAnn) break;
$ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
$siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce
$nic = trim(substr($ligne, 22, 5 )); // Nic
$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année
$bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C
$datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ
$numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc
$typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce
$corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion
$corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ
$corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion
$corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion
$cor='';
if ($typeAnn<>'I')
$cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate);
switch($typeAnn) {
case 'I': $cor='Insertion'.$cor; break;
case 'A': $cor='Additif'.$cor; break;
case 'R': $cor='Rectificatif'.$cor; break;
case 'S': $cor='Suppression'.$cor; break;
default: break;
}
$codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc
$libTri=$iBodacc->getTribunalNom($codeTri);
$adrEtNum= substr($ligne, 596 , 4 ); // Adresse de l'établissement : Numéro dans la voie
$adrEtVoie= substr($ligne, 606 , 50 ); // Adresse de l'établissement : Libellé de la voie
$adrEtCp= substr($ligne, 746 , 5 ); // Code Postal de l'établissement
$adrEtVille=substr($ligne, 751 , 45 ); // Ville de l'établissement
$adrEnNum= substr($ligne, 796 , 4 ); // Adresse de l'établissement : Numéro dans la voie
$adrEnVoie= substr($ligne, 806 , 50 ); // Adresse de l'établissement : Libellé de la voie
$adrEnCp= substr($ligne, 946 , 5 ); // Code Postal de l'établissement
$adrEnVille=substr($ligne, 951 , 45 ); // Ville de l'établissement
$numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise
$raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise
$even=array();
$even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN
$even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN
$even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN
$even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN
$even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN
$even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN
$even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN
$even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN
$txtEven='';
foreach ($even as $codeEven)
if ($codeEven<>0) {
$txtEven.=$iBodacc->getEvenement($codeEven).', ';
$catEven=$iBodacc->getChapitreEvenement($codeEven);
}
else
$txtEven.='';
if ($catEven=='procol') {
switch($codeEven) {
case 1050:
case 1055: $procol['CONC']++; $procoltot['CONC']++; break;
case 1100: $procol['SAUV']++; $procoltot['SAUV']++; break;
case 1200:
case 1201:
case 1211:
case 1212: $procol['RJ']++; $procoltot['RJ']++; break;
case 1300:
case 1301:
case 1302:
case 1303:
case 1304:
case 1305:
case 1306:
case 1307:
case 1311:
case 1312:
case 1313: $procol['LJ']++; $procoltot['LJ']++; break;
default: $procol['SUITE']++; $procoltot['SUITE']++; break;
}
}
@$ligne100chap[$catEven]++;
@$ligne100chaptot[$catEven]++;
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
$ecrireLignePre=true;
break;
case 104: // Annonce
$ligne104++;
$ligne104tot++;
$txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce
break;
case 999: // Ligne ignorée
if ($csvId) {
$ligneOut ="$siren;$nic;$codeTri;$libTri;$numRC;$actifEt;$siege;$raisonS;$nomCom;$enseigne;$sigle;";
$ligneOut.="$adrEtNum;$adrEtBtq;$adrEtTypV;$adrEtVoie;$adrEtComp;$adrEtDisp;$adrEtCp;$adrEtVille;$adrEtPays;";
$ligneOut.="$capital $capitalDev;$cj;$civilite;$nbEtab;$dateMaj;$sitJur;$depCom;$rivoli;$iris;$ilot;$indDom;";
$ligneOut.="$tel;$fax;$web;$mail;$auxil;$saisonat;$activnat;$origine;$typexploit;$lieuact;$actisurf;$prodpart;";
$ligneOut.="$arronet;$ctonet;$tcd;$zemet;$du;$tu;$uu;$dcret;$apet;$nacet;$dapet;$effet;$teffet;";
$ligneOut.="$defet;$modet;$explet;$rpet;$dreactet;$dateferet;$eaeant;$eaeapet;$eaesec1t;$eaesec2t;";
$ligneOut.="$dcren;$apen;$nacen;$dapen;$effen;$teffen;$moden;$explen;$rpen;$dreacten;$dateferen;$dateImma;$dateRad;$tca;$tcaExp;";
$ligneOut.="$zus;$zru;$zfu;$cucs;$afr;$zrr;$tva;$isin;$dir1nom;$dir1prenom;$dir1cfct;$dir2nom;$dir2prenom;$dir2cfct;";
$ligneOut.="$bilanClot;$bilanDuree;$bilanCA;$bilanRES";
} elseif ($csvAnn)
$ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
$ligne999++;
$ligne999tot++;
$ecrireLignePre=true;
break;
default: // Ligne non gérée
break;
}
if ($ecrireLignePre)
fwrite($fp, $ligneOut.EOL);
if ($ajoutNic && ($typeLigne==1 || $typeLigne==999 || $catEven=='procol' ||
($catEven<>'comptes' &&
(preg_match('/VITRY.*SEINE/i', $adrEtVille) || preg_match('/VITRY.*SEINE/i', $adrEnVille)))
)) {
// $nic=0;
if ($siren*1>1000) {
$tabEt=$iInsee->getEtablissements($siren, '', 0, 200, 200, 94);
//print_r($tabEt);
//die();
}
if ($tabEt['nbReponsesTotal']==1) {
// 1 seul établissement connu : on le valide en auto @todo : Vérifier adresser
$nic=$tabEt['reponses'][0]['Nic'];
} elseif ($tabEt['nbReponsesTotal']==0) {
continue;
} else {
$nicTrouve=$nbNic=0;
foreach ($tabEt['reponses'] as $iEt=>$tabIdEt) {
$villeRec=$tabIdEt['Ville'];
$numRec=substr($tabIdEt['Adresse'],0,4)*1;
$numDemEt=$adrEtNum*1;
$numDemEn=$adrEnNum*1;
if (($numDemEt==0 && $numDemEn==0) || $numRec==0) continue;
if ($numDemEt==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) {
$nicTrouve=$tabIdEt['Nic'];
$nbNic++;
} elseif ($numDemEn==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) {
$nicTrouve=$tabIdEt['Nic'];
$nbNic++;
}
}
//if ($nbNic==1) {
$nic=$nicTrouve;
//}
}
echo substr($ligne,0,22).initstr($nic*1,5,'0',ALIGN_RIGHT).substr($ligne,27,2000);
}
}
if ($ajoutNic) echo EOL;
fclose($fp);
if ($verbose) echo date ('Y/m/d - H:i:s')." - Conversion terminée de $fichier ($ligne100 annonces)" . EOL;
elseif ($sortieCSV) {
echo "$fichier;$ligne100;";
foreach ($ligne100chap as $chap=>$nb) echo "$nb;";
foreach ($procol as $chap=>$nb) echo "$nb;";
echo EOL;
}
}
if ($sortieCSV) {
echo "$iFic fichiers;$ligne100tot;";
foreach ($ligne100chaptot as $chap=>$nb) echo "$nb;";
foreach ($procoltot as $chap=>$nb) echo "$nb;";
echo EOL;
} else
echo date ('Y/m/d - H:i:s')." - Conversion terminée : $iFic fichiers, $ligne001tot entêtes, $ligne200tot etab., $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL;
die();
?>

View File

@ -0,0 +1,606 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$tabMailDepot=array(
// Région NORD EST
'ST0B'=>'fb.ne.contentieux@heineken.fr,stephane.bisiaux@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST0C'=>'fb.ne.contentieux@heineken.fr,eric.gerbaud@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST0D'=>'fb.ne.contentieux@heineken.fr,severine.poulain@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST0E'=>'fb.ne.contentieux@heineken.fr,eric.debuyzer@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST0F'=>'fb.ne.contentieux@heineken.fr,sylvain.michoux@france-boissons.fr',
'ST05'=>'fb.ne.contentieux@heineken.fr,dominique.husson@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST06'=>'fb.ne.contentieux@heineken.fr,nathalie.heyer@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST07'=>'fb.ne.contentieux@heineken.fr,annick.guyot@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST08'=>'fb.ne.contentieux@heineken.fr,annick.guyot@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST00'=>'fb.ne.contentieux@heineken.fr,valerie.baechler@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST0A'=>'fb.ne.contentieux@heineken.fr,valerie.baechler@france-boissons.fr,sylvain.michoux@france-boissons.fr',
'ST09'=>'fb.ne.contentieux@heineken.fr,laurence.hassler@france-boissons.fr,sylvain.michoux@france-boissons.fr',
// Région BRETAGNE NORMANDIE
'SJ04'=>'fb.bn.contentieux@heineken.fr,marie-francoise.beneat@france-boissons.fr', //thierry.hacques@france-boissons.fr,linda.bourges fb.bn.contentieux@heineken.fr,thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr
'SJ0A'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges
'SJ0C'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ0D'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ06'=>'fb.bn.contentieux@heineken.fr,angelique.thomas@france-boissons.fr', // thierry.hacques,linda.bourges@france-boissons.fr',
'SJ07'=>'fb.bn.contentieux@heineken.fr,thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ05'=>'fb.bn.contentieux@heineken.fr,genevieve.gales@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ00'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr
'SJ08'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ09'=>'fb.bn.contentieux@heineken.fr,denise.gillard@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@
// Région ILE DE FRANCE
'NO00'=>'francoise.andre@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO02'=>'francoise.andre@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO04'=>'amandine.vergnaud@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO06'=>'annie.bontemps@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO0E'=>'murielle.pinte@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO0F'=>'laurence.braquehais@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'NO0G'=>'catherine.simon@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'PB00'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'PB01'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'PB02'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'PB03'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr',
'PB0A'=>'fb.idf.contentieux@heineken.fr',
'PB0C'=>'fb.idf.contentieux@heineken.fr',
'PB0D'=>'fb.idf.contentieux@heineken.fr',
'PB0E'=>'fb.idf.contentieux@heineken.fr',
'PB0F'=>'fb.idf.contentieux@heineken.fr',
'PB0G'=>'fb.idf.contentieux@heineken.fr',
// LOIRE SUD OUEST
'BO00'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO01'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO02'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO03'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO04'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO05'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO06'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO07'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO08'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO09'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0B'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0C'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0D'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0E'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0F'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0G'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0H'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0I'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0J'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
'BO0K'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr',
// Région CENTRE RHONE ALPES
'LY05'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr',
'LY06'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr',
'LY07'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr',
'LY08'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr',
'LY0A'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr',
'LY0B'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr',
'LY0C'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr',
'LY0E'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0H'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0I'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0J'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0L'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0M'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0P'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0Q'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0R'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY0V'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr',
'LY00'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr,virginie.charbonnier@france-boissons.fr',
// Ajouté le 05/11/2013 pour CRA
'LE00'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
'LE05'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
'LE06'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
'LE07'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
'LE08'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
'LE09'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr',
// Région SUD EST
'LY0F'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA00'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA01'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA02'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA03'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA04'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0B'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0C'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0D'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0F'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0H'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0I'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0J'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0L'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0M'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MA0T'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
'MO00'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr',
);
//define('VERSION_FICHIER_BODACC','0106');
define('DIR_RECORDATI_IN','/mnt/samba/partage/production/');
/**
* @todo
* 1. Numéroter toutes les procédures OK
* 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc
* 101 Commentaire
* 102 Activite déclaré au Bodacc
* 103 texte rectificatif
* 104 Annonce complète au format texte
* 105 Structure Dirigeants BODACC
* 106 Libellé du Périmètre de la vente
* 3.
* 5. JugesCommissaires à intégrer correctement
Noms et prénoms des dirigeants de l'entreprise ' Anum. ?
Raison sociale du vendeur Anum. 255
Siren du vendeur (en cas de Vente/Cessions) Num. 9
Indicateur de correction du SIREN vendeur (si C, le siren diffusé au BODACC est faut mais S&D a affecté le bon SIREN) ' Car. 1
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iBodacc=new MBodacc();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier spécifique Bouchara-Recordati.
";/*Options :
-d Clients en Diffusion Bodacc (par défaut)
-s Clients en Surveillance Bodacc
-e Ne pas tenir compte de la date de dernière exécution du script
-i Ne pas incrémenter les numéros de tour (pour les tests).
";*/
$tabFichLigneCmd=$tabFichier=array();
$sortieCSV=true;
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir(DIR_RECORDATI_IN);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,40)=='surveillanceBodacc_SURBODPRDFTPFBOISSON_')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier France Boisson à traiter !".EOL);
//print_r($tabFichier);
//die();
$ligne001tot=$ligne100tot=$ligne104tot=$ligne999tot=0;
$ligne100chaptot=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0);
$procoltot=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0);
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichier =$tabFichier[$iFic];
$ligne001=$ligne100=$ligne104=$ligne999=0;
$ligne100chap=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0);
$procol=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0);
$tabLignes=file(DIR_RECORDATI_IN.$nomFichier);
$message=$tabNbAnn=array();
$lignesCsv=array();
foreach ($tabLignes as $i=>$ligne) {
$ecrireLignePre=false;
$typeLigne=substr($ligne, 0, 3)*1;
switch ($typeLigne) {
case 1: // Ligne ignorée
// Ecriture de l'entête
$siren ='Siren';
$nic ='Nic';
$ref ='Référence';
$numPar ='Parution';
$bodacc ='Bodacc';
$datePar='Date parution';
$numAnn ='Numéro Annonce';
$cor ='Type Annonce';
$libTri ='Tribunal';
$numRC ='Numéro RCS';
$raisonS='Raison sociale';
$catEven='Chapitre';
$txtEven='Evènement(s)';
$txtAnn ='Texte Annonce';
$ligneOut='';
$ligne001++;
$ligne001tot++;
break;
case 100: // Structure Bodacc
$lignesCsv[$ref1][]="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
// Mail de surveillance
$sirenAff=implode(' ', str_split($siren,3));
$message[$ref1].="Siren : $sirenAff\r\n".'Raison Sociale : '.$raisonS."\r\n";
if (trim($ref)<>'')
$message[$ref1].="Votre référence : $ref\r\n";
$message[$ref1].="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message[$ref1].='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message[$ref1].="Tribunal : $libTri"."\r\n";
$message[$ref1].="\r\n";
$message[$ref1].="$txtEven"."\r\n";
$message[$ref1].="\r\n";
$message[$ref1].=$txtAnn."\r\n";
$message[$ref1].="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
$ligne100++;
$ligne100tot++;
$siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce
$nic = trim(substr($ligne, 22, 5 )); // Nic
$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$ref=explode('-',$ref);
$ref1=$ref[1];
$ref=$ref[0];
if (!isset($message[$ref1]) || @$message[$ref1]=='') {
//$fp[$ref1]=fopen(DIR_RECORDATI_IN.$nomFichier."-$ref1.csv", 'w');
//fwrite($fp[$ref1], 'Siren;Nic;Référence;Parution;Bodacc;Date parution;Numéro Annonce;Type Annonce;Tribunal;Numéro RCS;Raison sociale;Chapitre;Evènement(s);Texte Annonce'.EOL);
$message[$ref1]='Bonjour,
Veuillez trouver ci-joint la liste des modifications relatives à votre abonnement Scores & Décisions.
';
}
@$tabNbAnn[$ref1]++;
// die(EOL."$ref1\t$ref2".EOL);
$numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année
$bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C
$datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ
$numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc
$typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce
$corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion
$corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ
$corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion
$corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion
$cor='';
if ($typeAnn<>'I')
$cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate);
switch($typeAnn) {
case 'I': $cor='Insertion'.$cor; break;
case 'A': $cor='Additif'.$cor; break;
case 'R': $cor='Rectificatif'.$cor; break;
case 'S': $cor='Suppression'.$cor; break;
default: break;
}
$codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc
$libTri=$iBodacc->getTribunalNom($codeTri);
$adrEtNum= substr($ligne, 596 , 4 ); // Adresse de l'établissement : Numéro dans la voie
$adrEtVoie= substr($ligne, 606 , 50 ); // Adresse de l'établissement : Libellé de la voie
$adrEtCp= substr($ligne, 746 , 5 ); // Code Postal de l'établissement
$adrEtVille=substr($ligne, 751 , 45 ); // Ville de l'établissement
$adrEnNum= substr($ligne, 796 , 4 ); // Adresse de l'établissement : Numéro dans la voie
$adrEnVoie= substr($ligne, 806 , 50 ); // Adresse de l'établissement : Libellé de la voie
$adrEnCp= substr($ligne, 946 , 5 ); // Code Postal de l'établissement
$adrEnVille=substr($ligne, 951 , 45 ); // Ville de l'établissement
$adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '.
substr($ligne, 600 , 1 ).' '.
substr($ligne, 601 , 5 ).' '.
substr($ligne, 606 , 50 ).' '.
substr($ligne, 656 , 50 ).' '.
substr($ligne, 706 , 40 ).', '.
substr($ligne, 746 , 5 ).' '.
substr($ligne, 751 , 45 )));
$venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8));
$venteMt= substr($ligne, 1169 , 15 );
$venteDev=substr($ligne, 1184 , 3 );
$dateInsert=substr($ligne, 1910 , 8 );
$numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise
$raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise
$even=array();
$even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN
$even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN
$even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN
$even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN
$even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN
$even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN
$even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN
$even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN
$txtEven='';
foreach ($even as $codeEven)
if ($codeEven<>0) {
$txtEven.=$iBodacc->getEvenement($codeEven).', ';
$catEven=$iBodacc->getChapitreEvenement($codeEven);
}
else
$txtEven.='';
if ($catEven=='procol') {
switch($codeEven) {
case 1050:
case 1055: $procol['CONC']++; $procoltot['CONC']++; break;
case 1100: $procol['SAUV']++; $procoltot['SAUV']++; break;
case 1200:
case 1201:
case 1211:
case 1212: $procol['RJ']++; $procoltot['RJ']++; break;
case 1300:
case 1301:
case 1302:
case 1303:
case 1304:
case 1305:
case 1306:
case 1307:
case 1311:
case 1312:
case 1313: $procol['LJ']++; $procoltot['LJ']++; break;
default: $procol['SUITE']++; $procoltot['SUITE']++; break;
}
}
@$ligne100chap[$catEven]++;
@$ligne100chaptot[$catEven]++;
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
break;
case 104: // Annonce
$ligne104++;
$ligne104tot++;
$txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce
break;
case 999: // Ligne ignorée
$lignesCsv[$ref1][]="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
// Mail de surveillance
$sirenAff=implode(' ', str_split($siren,3));
$message[$ref1].="Siren : $sirenAff\r\n".'Raison Sociale : '.$raisonS."\r\n";
if (trim($ref)<>'')
$message[$ref1].="Votre référence : $ref\r\n";
$message[$ref1].="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message[$ref1].='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message[$ref1].="Tribunal : $libTri"."\r\n";
$message[$ref1].="\r\n";
$message[$ref1].="$txtEven"."\r\n";
$message[$ref1].="\r\n";
$message[$ref1].=$txtAnn."\r\n";
$message[$ref1].="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
$ligne999++;
$ligne999tot++;
break;
default: // Ligne non gérée
break;
}
}
print_r($message);
foreach ($message as $ref=>$msg) {
if ($ref<>'') {
// Ecriture des CSV
$fp=fopen(DIR_RECORDATI_IN.$nomFichier."-$ref.csv", 'w');
fwrite($fp, 'Siren;Nic;Référence;Parution;Bodacc;Date parution;Numéro Annonce;Type Annonce;Tribunal;Numéro RCS;Raison sociale;Chapitre;Evènement(s);Texte Annonce'.EOL);
foreach ($lignesCsv[$ref] as $iLigne=>$ligneCsv) {
fwrite($fp, $ligneCsv.EOL);
}
fclose($fp);
copy(DIR_RECORDATI_IN.$nomFichier."-$ref.csv", '/tmp/Sed_FBoissons_'.date('Ymd')."_$ref.csv");
@move(DIR_RECORDATI_IN.$nomFichier."-$ref.csv", '/home/data/clients/france boissons/'.$nomFichier."-$ref.csv");
$tabAttached=array('/tmp/Sed_FBoissons_'.date('Ymd')."_$ref.csv");
// Envoi des mails
if (isset($tabMailDepot[$ref]) && $tabMailDepot[$ref]<>'') {
@sendMail('infoslegales@scores-decisions.com', $tabMailDepot[$ref].',support@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", $msg, '', $tabAttached);
$azerty=0;
}
elseif (!isset($tabMailDepot[$ref]) || $tabMailDepot[$ref]=='') {
$msg="ATTENTION, CE DEPOT N'A PAS DE MAIL RENSEIGNE !".EOL.EOL.$msg;
@sendMail('infoslegales@scores-decisions.com', 'flora.durandeau@france-boissons.fr,emmanuel.przystaniak@france-boissons.fr,support@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", "ATTENTION, CE DEPOT N'A PAS DE MAIL RENSEIGNE !".EOL.EOL.$msg, '', $tabAttached);
$azerty=0;
}
$nbAnnTmp=$tabNbAnn[$ref];
@$nbAnnTot+=$nbAnnTmp;
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", $msg.EOL.EOL.date('Y/m/d H:i:s').
" - Les $nbAnnTmp annonce(s) ont été envoyés à ".$tabMailDepot[$ref]." (Dépôt n°$ref).", '', $tabAttached);
@$nbDepots++;
@unlink('/tmp/Sed_FBoissons_'.date('Ymd')."_$ref.csv");
}
}
if ($verbose) echo date ('Y/m/d - H:i:s')." - Conversion terminée de $nomFichier ($ligne100 annonces sur $nbDepots dépôts)" . EOL;
elseif ($sortieCSV) {
echo "$nomFichier;$ligne100;";
foreach ($ligne100chap as $chap=>$nb) echo "$nb;";
foreach ($procol as $chap=>$nb) echo "$nb;";
echo EOL;
}
@sendMail('infoslegales@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons)", $msgGlobal.EOL.EOL.date('Y/m/d H:i:s').
" - Les $nbAnnTot/$ligne100tot annonce(s) ont été envoyés aux $nbDepots dépôts.");
if (bzip2(DIR_RECORDATI_IN.$nomFichier, DIR_RECORDATI_IN.$nomFichier)) {
unlink(DIR_RECORDATI_IN.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
}
if ($sortieCSV) {
echo "$iFic fichiers;$ligne100tot;";
foreach ($ligne100chaptot as $chap=>$nb) echo "$nb;";
foreach ($procoltot as $chap=>$nb) echo "$nb;";
echo EOL;
} else
echo date ('Y/m/d - H:i:s')." - Conversion terminée : $iFic fichiers, $ligne001tot entêtes, $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL;
die();
/*
$ligneOut="$idannPre;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn";
if ($idannPre<>'Identifiant Annonce') {
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n";
$message.="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message.="Tribunal : $libTri"."\r\n";
$message.="\r\n";
if (trim($raisonSA)<>'') {
$message.="Acheteur : $raisonSA $sirenAffA"."\r\n";
if ($montantVente*1>0)
$message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n";
$message.="\r\n";
}
$message.="$txtEven"."\r\n";
$message.="\r\n";
$message.=$txtAnn."\r\n";
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
}
$sirenA=$raisonSA=$sirenV=$raisonSV=$adresseFond=$montantVente=$deviseVente=$dateVente='';
}
$siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce
$nic = trim(substr($ligne, 22, 5 )); // Nic
$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année
$bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C
$datePar= WDate::dateT('Ymd','d/m/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ
$numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc
$typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce
$corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion
$corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ
$corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion
$corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion
$adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '.
substr($ligne, 600 , 1 ).' '.
substr($ligne, 601 , 5 ).' '.
substr($ligne, 606 , 50 ).' '.
substr($ligne, 656 , 50 ).' '.
substr($ligne, 706 , 40 ).', '.
substr($ligne, 746 , 5 ).' '.
substr($ligne, 751 , 45 )));
$venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8));
$venteMt= substr($ligne, 1169 , 15 );
$venteDev=substr($ligne, 1184 , 3 );
$dateInsert=substr($ligne, 1910 , 8 );
$cor='';
if ($typeAnn<>'I')
$cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate);
switch($typeAnn) {
case 'I': $cor='Insertion'.$cor; break;
case 'A': $cor='Additif'.$cor; break;
case 'R': $cor='Rectificatif'.$cor; break;
case 'S': $cor='Suppression'.$cor; break;
default: break;
}
$even=array();
$even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN
$even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN
$even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN
$even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN
$even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN
$even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN
$even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN
$even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN
$txtEven='';
$inter='Vendeur'; // Par défaut, nous sommes avec un vendeur
foreach ($even as $codeEven)
if ($codeEven<>0) {
$txtEven.=$iBodacc->getEvenement($codeEven).', ';
$catEven=$iBodacc->getChapitreEvenement($codeEven);
if ($codeEven==5700) {
$inter='Acheteur'; // L'interlocuteur est l'acheteur !
$sirenA=$siren;
$raisonSA=$raisonS;
$adresseFond=$adresse;
$montantVente=$venteMt;
$deviseVente=$venteDev;
$dateVente=$venteDt;
}
}
else
$txtEven.='';
if ($inter=='Vendeur') {
$sirenV=$siren;
$raisonSV=$raisonS;
}
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
if ($idannPre<>$idann) $ecrireLignePre=true;
else $ecrireLignePre=false;
$idannPre=$idann;
break;
case 104: // Annonce
$ligne104++;
$txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce
break;
case 999: // Ligne ignorée
//$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$txtAnn";
$opposition=preg_replace('/.*Oppositions \:/i','', $txtAnn);
$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn";
// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
if ($idann<>'Identifiant Annonce') {
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n";
$message.="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message.="Tribunal : $libTri"."\r\n";
$message.="\r\n";
if (trim($raisonSA)<>'') {
$message.="Acheteur : $raisonSA $sirenAffA"."\r\n";
if ($montantVente*1>0)
$message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n";
$message.="\r\n";
}
$message.="$txtEven"."\r\n";
$message.="\r\n";
$message.=$txtAnn."\r\n";
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
}
$ligne999++;
$ecrireLignePre=true;
break;
default: // Ligne non gérée
break;
}
if ($ecrireLignePre)
fwrite($fp, $ligneOut.EOL);
}
if ($catEven<>'Chapitre') {
//sendMail('infoslegales@scores-decisions.com', 'c.ferault@bouchara-recordati.fr,f.hadjadj@bouchara-recordati.fr,a.mandar@bouchara-recordati.fr', "Surveillance Annonces Legales ($catEven)", $message);
sendMail('infoslegales@scores-decisions.com', '<Yoann Le Naour>ylenaour@scores-decisions.com,<Fabienne Zicarro>fzicaro@scores-decisions.com', "Surveillance Annonces Legales ($catEven)", $message);
}
fclose($fp);
if (bzip2(DIR_RECORDATI_IN.$nomFichier, DIR_RECORDATI_IN.$nomFichier)) {
unlink(DIR_RECORDATI_IN.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
}*/
echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL;
die();
?>

View File

@ -306,8 +306,8 @@ foreach ($tabLignes as $i=>$ligne) {
}
if ($catEven<>'Chapitre') {
sendMail('infoslegales@scores-decisions.com', 'c.ferault@bouchara-recordati.fr,f.hadjadj@bouchara-recordati.fr,a.mandar@bouchara-recordati.fr', "Surveillance Annonces Legales ($catEven)", $message);
sendMail('infoslegales@scores-decisions.com', '<Yoann Le Naour>ylenaour@scores-decisions.com,<Fabienne Zicarro>fzicaro@scores-decisions.com', "Surveillance Annonces Legales ($catEven)", $message);
sendMail('infoslegales@scores-decisions.com', 'c.ferault@bouchara-recordati.fr,s.ambroise@bouchara-recordati.fr,c.jourdain@bouchara-recordati.fr,suivi@scores-decisions.com', "Surveillance Annonces Legales ($catEven)", $message);
// sendMail('infoslegales@scores-decisions.com', '', "Surveillance Annonces Legales ($catEven)", $message);
}
fclose($fp);

View File

@ -763,7 +763,39 @@ for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
}
fclose($fp);
// die('FIN PROVISOIRE !'.EOL);
exec('/var/www/batch/convertSdCsv.php "'.DIR_SOFID_IN.$nomFichierIn.'"');
$fichierCSV=substr(DIR_SOFID_IN.$nomFichierIn,0,-4).'.csv';
move(DIR_SOFID_IN.$nomFichierIn.'.csv',$fichierCSV);
$tabAttached=array($fichierCSV);
$messageInfo="Bonjour,
Veuillez trouver le fichier d'annonces relatif à votre abonnement Scores & Décisions.
Bien Cordialement,
Le service Support.
ATTENTION : Cet email est un message automatique. Merci de ne pas y répondre. Pour toute question nous vous invitons à contacter notre support à l'adresse support@scores-decisions.com.
---
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com,eliane.juhel@kronenbourg.com,anne.obrecht@kronenbourg.com,nathalie.schilling@kronenbourg.com', "Surveillance Annonces Legales SOFID", $messageInfo, '', $tabAttached);
//die('FIN PROVISOIRE !'.EOL);
if (bzip2(DIR_SOFID_IN.$nomFichierIn, DIR_SOFID_IN.$nomFichierIn)) {
unlink(DIR_SOFID_IN.$nomFichierIn);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $nomFichierIn vient d'être historisé.".EOL;
@ -778,7 +810,7 @@ for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
}
}
sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID", "Conversion terminée. Penser à déposer le fichier !!!");
sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID", "Conversion terminée.");
echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL;
die();

View File

@ -454,8 +454,7 @@ if (date('w')==5) {
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
//$emailEnvoi='vfahmy@verdoso.com,contact@scores-decisions.com';
$emailEnvoi='ylenaour@scores-decisions.com';
$emailEnvoi='vfahmy@verdoso.com,suivi@scores-decisions.com,ylenaour@scores-decisions.com';
if ($catEven<>'Chapitre') {
sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Annonces Legales", $messageInfo, '', $tabAttached);
//sendMail('infoslegales@scores-decisions.com', 'jean.frederic.lambert@gmail.com', "Surveillance Annonces Legales", $messageInfo, '', $tabAttached);

166
batch/creationsComptes.php Normal file
View File

@ -0,0 +1,166 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'partenaires/classMTel.php');
include_once(INCLUDE_PATH.'partenaires/classMMap.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iGreffe=new MGreffes();
$iInsee=new MInsee();
$iTel=new MTel();
$iDb=new WDB('sdv1');
$sendMail=true;
$strInfoScript='Usage : '.basename($argv[0]). " <option> loginUserDroits FICHIER.csv
Création automatisée de comptes utilisateurs Extranet
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-m Ne pas envoyer le mail à l'utilisateur
";
$argv=$_SERVER['argv'];
$tabFichiers=array();
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'm': $sendMail=false; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichiers[]=$argv[$i];
}
$loginUserDroits=@$tabFichiers[0];
if (!isset($tabFichiers[0]))
die("Compte Extranet/WS non communiqué !".EOL);
$ret=$iDb->select('utilisateurs', 'login,formatMail,pref,droits,lienExtranetMail,nbReponses', "login='$loginUserDroits'", false);
$profil=@$ret[0];
if (!isset($profil['login'])) die("Compte Extranet/WS inexistant : $loginUserDroits !".EOL);
if (!isset($tabFichiers[1])) die("Aucun fichier CSV communiqué !".EOL);
$tabLignes=file($tabFichiers[1]);
$nbLignes=count($tabLignes);
foreach($tabLignes as $i=>$ligne) {
$tabCells=explode("\t", $ligne);
//print_r($tabCells);
if ($i==0 && $tabCells[0]<>'idClient') die('idClient non trouvé en 1ère celule de la 1ère ligne !'.EOL);
elseif ($i==0) continue;
$login=trim(preg_replace('/\s+/','',$tabCells[1]));
$password=trim(preg_replace('/\s+/','',$tabCells[2]));
$email=trim(preg_replace('/\s+/','',$tabCells[3]));
$tabInsert=array( 'idClient' => $tabCells[0],
'login' => $login,
'password' => $password,
'email' => $email,
'referenceParDefaut'=> $tabCells[4],//RéférenceParDéfaut
'nom' => $tabCells[5],
'prenom' => $tabCells[6],
'actif' => 1,
'deleted' => 0,
'typeCompte' => 'PROD', // 'TEST'
'profil' => 'Utilisateur',
'filtre_ip' => '',
'civilite' => 'M', // 'Mme', 'Mlle'
'lang' => 'fr',
'formatMail' => $profil['formatMail'], // 'txt1', 'txt2', 'htm', 'csv', 'xls', 'pdf', 'pdf1'
'pref' => $profil['pref'], // 'naf4 nace news mappy cartes',
'droits' => $profil['droits'], // 'searchent searchdir identite liens etablissements groupe eveninsee avisinsee dirigeants indiscore monprofil',
'lienExtranetMail' => $profil['lienExtranetMail'],
'nbReponses' => $profil['nbReponses'],
'dateDebutCompte' => date('Ymd'),
'dateInsert' => date('YmdHis'),
);
/* raisonSociale
siret
adrNum
adrIndRep
adrTypeVoie
adrLibVoie
adrCp
adrVille
adrComp
tel
fax
mobile
dateInscription
dateValidation
*/
echo date('Y/m/d - H:i:s'). " - Compte n°$i/$nbLignes '".$login."', ";
if ($iDb->insert('utilisateurs', $tabInsert, false)) {
$message="Bonjour,
Dans le cadre du Contrat établi entre UTC Fire & Security Services et Scores & Décisions, nous avons le plaisir de vous remettre les éléments nécessaires afin que vous puissiez utiliser notre extranet.
Adresse site :
http://extranet.scores-decisions.com
Codes d'accès et mot de passe :
Identifiant : ".$login."
Mot de passe : ".$password." (nous vous conseillons de faire un copier/coller de ce mot de passe)
Lors de vos premières connexions, nous vous invitons à modifier votre mot de passe.
=> menu \"OPTIONS\"
=> onglet \"Mes options\"
=> cliquer sur 'Modifier le mot de passe.'
=> saisir votre mot de passe (alphanumérique) et cliquer sur 'modifier'
=> pour valider il est impératif de cliquer sur \"Sauver\" tout en bas de page
Cet accès vous permet :
> la consultation de la base de données
> la consultation des IndiScore,
Nous vous souhaitons bonne réception de ces informations.
Votre interlocuteur privilégié, Monsieur Julien Proust et toute l'équipe support de Scores & Décisions (support@scores-decisions.com) restent à votre écoute.
Bien cordialement
Amel
--
Service Support
SCORES ET DECISIONS
1, rue Clairefontaine - 78120 RAMBOUILLET
tél. support : +33 (0)1 48 00 04 52
tél. standard : +33 (0)1 75 43 80 10
fax bureau : +33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com
Scores & Décisions est l'acteur nouvelle génération de linformation et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
if ($sendMail) {
@sendMail('support@scores-decisions.com', $email, "Codes Accès Extranet Scores et Décisions", $message);
@sendMail('support@scores-decisions.com', 'ylenaour@scores-decisions.com', "Codes Accès Extranet Scores et Décisions", $message);
echo "Créé et e-mail envoyé à ".$tabCells[3].EOL;
} else
echo "Créé sans envoi d'e-mail à ".$tabCells[3].EOL;
} elseif (mysql_errno()==1062)
echo "Login déjà existant !".EOL;
else
die('Erreur SQL n° '.mysql_errno().' : '.mysql_error().EOL);
//die();
}
?>

126
batch/crontab.txt Normal file
View File

@ -0,0 +1,126 @@
#*/15 * * * * cd /var/www/html/crm; php -f cron.php > /dev/null 2>&1
0 10-22/4 * * 1-6 /var/www/batch/getInfosReg.php >> /var/www/log/getInfosReg.log
0 7 * * * /var/www/batch/getInpi2009.php >> /var/www/log/getInpi2009.log
30 18 * * * /var/www/batch/getInpi2009.php >> /var/www/log/getInpi2009Soir.log
###30 8 * * * /var/www/batch/getInpiDecisions.php >> /var/www/log/getInpiDecisions.log
###30 19 * * * /var/www/batch/getInpiDecisions.php >> /var/www/log/getInpiDecisionsSoir.log
55 4 * * * /var/www/batch/getInseeEven.php >> /var/www/log/getInseeEven.log
0 18 * * * /var/www/batch/getInseeEven.php >> /var/www/log/getInseeEvenSoir.log
10 5 * * * /var/www/batch/consolideEtab.php >> /var/www/log/consolideEtab.log
45 8 * * * /var/www/batch/getDefaillances.php -i >> /var/www/log/getDefaillances.log
0 9 * * * /var/www/batch/getAnnoncesTessi.php -i >> /var/www/log/getAnnoncesTessi.log
0 9-21/4 * * 1-6 /var/www/batch/getBodacc.php -s -i -n >> /var/www/log/getBodacc.log
30 9-21/4 * * * /var/www/batch/sirenage.php >> /var/www/log/sirenage.log
30 19 4 * * /home/data/dila/getDilaStock.sh >> /home/data/dila/getDilaStock.log
30 23 * * * /home/data/dila/getDilaFlux.sh >> /home/data/dila/getDilaFlux.log
30 9 * * * /var/www/batch/getBalo.php >> /var/www/log/getBalo.log
#0 9 * * 1-5 /var/www/batch/getAsso.php -c >> /var/www/log/getAsso.log
#0 8 * * * /var/www/batch/getTelFaxIdentite.php >> /var/www/log/getTelFaxIdentite.log
30 12 * * 1-5 /var/www/batch/getInfosFin.php >> /var/www/log/getInfosFin.log
5 0 * * * /var/www/batch/clients/exportPCL.sh >> /var/www/batch/clients/exportPCL.log
30 0 * * 1-5 reboot -f
0 0 * * * rm -f /var/spool/clientmqueue/*
###40 0 * * 1-5 /etc/init.d/mysqld start
###0 21 * * 0 /root/scripts/netbackup.sh >> /root/scripts/netbackup.log
###30 23 * * 1-5 /home/backup/sql/syncroQuoti.sh >> /home/backup/sql/syncroQuotiSh.log
###30 16 * * 0 /home/backup/sql/syncroHebdo.sh >> /home/backup/sql/syncroHebdoSh.log
###0 16 * * 0 /home/backup/sql/syncroMensuel.sh >> /home/backup/sql/syncroMensuelSh.log
0 21 * * 1-5 /var/www/batch/loadSurveillances.php >> /var/www/log/loadSurveillances.log
40 0 * * 1-5 /var/www/batch/diffusionBodacc.php -s >> /var/www/log/surveillanceBodacc.log
0 2 * * 1-5 /var/www/batch/surveillanceBodaccSite.php -m >> /var/www/log/surveillanceBodaccSite.log
0 5 * * 1-5 /var/www/batch/surveillanceInseeSite.php >> /var/www/log/surveillanceInseeSite.log
30 22 * * * /var/www/batch/consolideTelFaxIdentite.php >> /var/www/log/consolideTelFaxIdentite.log
0 8-22/2 * * * /var/www/batch/getRSS.php >> /var/www/log/getRSS.log
0 2 * * * /var/www/batch/calculRatios.php >> /var/www/log/calculRatios.log
30 6 * * * /var/www/batch/calculScores.php >> /var/www/log/calculScores.log
###0 20 * * * /var/www/batch/calculScoreSurv.php >> /var/www/log/calculScoreSurv.log
0 7 * * 1-5 /var/www/batch/surveillanceScoreSite.php >> /var/www/log/surveillanceScoreSite.log
45 9 * * 1-5 /var/www/batch/surveillanceActesSite.php >> /var/www/log/surveillanceActesSite.log
15 10 * * 1-5 /var/www/batch/surveillanceDirSite.php >> /var/www/log/surveillanceDirSite.log
0 17 * * 1-5 /var/www/batch/surveillanceLiensSite.php >> /var/www/log/surveillanceLiensSite.log
0 23 * * 1-5 /var/www/batch/surveillanceBilanSite.php >> /var/www/log/surveillanceBilanSite.log
30 9 * * 1-5 /var/www/batch/surveillancePrivSite.php >> /var/www/log/surveillancePrivSite.log
###30 19 * * 1-5 /var/www/batch/fedaso.php -d:100 >> /var/www/log/fedasoOut.log
15 19 * * 1-5 /var/www/batch/fedasoBilans.php -d >> /var/www/log/fedasoBilans.log
30 6 * * 2-6 /var/www/batch/getIsin.php -h >> /var/www/log/getIsinMatin.log
0 23 * * 1-5 /var/www/batch/getIsin.php -s >> /var/www/log/getIsinSoir.log
30 8 * * * /var/www/batch/getDevises.php >> /var/www/log/getDevises.log
0-59/30 9-18 * * 1-5 /var/www/batch/getIsin.php >> /var/www/log/getIsin.log
50 23 * * * /var/www/batch/getBilansInpi.php -p >> /var/www/log/getBilansInpi.log
10 1 * * 1-4 /var/www/batch/getBilansInpi.php -p >> /var/www/log/getBilansInpi.log
15 13 * * * /var/www/batch/getTelSources.php >> /var/www/log/getTelSources.log
## Mensuels
0 20 1 * * /var/www/batch/facturation.php >> /var/www/log/facturation.log
0 1 1 * * /var/www/batch/calculRedevances.php >> /var/www/log/calculRedevances.log
0 11 25 * * /var/www/batch/getInflation.php >> /var/www/log/getInflation.log
0 10 15 * * /var/www/batch/getImportExport.php >> /var/www/log/getImportExport.log
0 9 * * 1 /var/www/batch/getIsin.php -a -n -r >> /var/www/log/getIsinSociete.log
#0 12 20 * * /var/www/batch/peps/getPepCia.php >> /var/www/log/getPepCia.log
30 12 1 * * /var/www/batch/getLiens.php >> /var/www/log/getLiens.log
## Hebdomadaire
0 18 * * 1 /var/www/batch/getBoMonaco.php >> /var/www/log/getBoMonaco.log
## Provisoire à revoir
0 9 * * 1-5 /var/www/batch/getPrivileges.php >> /var/www/log/getPrivilegesMatin.log
0 19 * * 1-5 /var/www/batch/getPrivileges.php >> /var/www/log/getPrivilegesSoir.log
0 3 * * 1-5 /var/www/batch/diffusionBodacc.php >> /var/www/log/diffusionBodacc.log
30 7 * * 1-5 /var/www/batch/convertSdRecordati.php >> /var/www/log/convertSdRecordati.log
0 13 * * 1-5 /var/www/batch/convertSdVerdoso.php >> /var/www/log/convertSdVerdoso.log
30 8 * * 1-5 /var/www/batch/convertSdSO2000.php >> /var/www/log/convertSdSO2000.log
30 18 * * * /var/www/batch/geoCodeAdresses.php >> /var/www/log/geoCodeAdresses.log
30 9 * * 5 /var/www/batch/getOrias.php >> /var/www/log/getOrias.log
30 8 * * 1-6 /var/www/batch/getQualibat.php >> /var/www/log/getQualibat.log
#30 7 * * * /var/www/batch/repriseDirigeants.php >> /var/www/log/repriseDirigeants.log
30 8 * * 1-5 /var/www/batch/getTribunaux.php >> /var/www/log/getTribunaux.log
#0 9 * * 1-6 /var/www/batch/getAnnoncesJal.php >> /var/www/log/getAnnoncesJal.log
45 8 * * 1-5 /root/scripts/miseEnCacheSirenage.sh
#0 18 * * 1-5 /var/www/batch/majIMR.php >> /var/www/log/majIMR.log
#30 8 * * 1-5 /var/www/batch/getBilansWeb.php >> /var/www/log/getBilansWeb.log
0 8 * * * /var/www/batch/repriseSirenBodaccHisto.php -o >> /var/www/log/repriseSirenBodaccHistOcr.log
20 8 * * * /var/www/batch/repriseSirenBodaccHisto.php >> /var/www/log/repriseSirenBodaccHistB.log
10 8 * * 1-5 /var/www/batch/getMarques.php -b >> /var/www/log/getMarques.log
###############0 22 * * * /var/www/batch/rapportsTextes.php -d >> /var/www/log/rapportsTextesWeb.log
###############0 23 * * * /var/www/batch/rapportsTextes.php -f >> /var/www/log/rapportsTextesFtp.log
15 9 * * * /var/www/batch/majArtisans.php >> /var/www/log/majArtisans.log
30 19 * * 5 /var/www/batch/clients/doEtabAct.sh >> /var/www/batch/clients/doEtabAct.log
###0 3 * * 0 /var/www/batch/clients/indexFileGiant.sh >> /var/www/batch/clients/indexFileGiant.log
###0 7 1-6 1,4,7,10 * /var/www/batch/clients/stockKadeal.sh >> /var/www/batch/clients/stockKadeal.log
0 2 * * * /var/www/batch/clients/proceduresQ.sh >> /var/www/batch/clients/proceduresQ.log
30 21 * * 1-6 /var/www/batch/majAdressesDom.php >> /var/www/log/majAdressesDom.log
*/15 * * * * /var/www/batch/getLogos.php >> /var/www/log/getLogos.log
30 8 * * * /var/www/batch/getLogos.php -b >> /var/www/log/getLogosBing.log
0 20 * * 1-6 /var/www/batch/consolideDiri.php >> /var/www/log/consolideDiri.log
30 9 * * * /var/www/batch/getInfosHotelerie.php >> /var/www/log/getInfosHotelerie.log
###0 20 * * 5 /root/geoCodeHisto.sh
###0 1 * * * /var/www/batch/genereEpl.php -t >> /var/www/log/genereEpl.log
###1 1 * * * /var/www/batch/testWorldCheck.php -o
###0 1 * * * /var/www/batch/testWorldCheck.php
30 11 * * 3 /var/www/batch/getEcoArtisan.php >> /var/www/log/getEcoArtisan.log
35 11 * * 3 /var/www/batch/getQualifelec.php >> /var/www/log/getQualifelec.log
40 11 * * 3 /var/www/batch/getQualiPaysage.php >> /var/www/log/getQualiPaysage.log
45 0 9 * * /var/www/batch/clients/kompass.sh >> /var/www/batch/clients/kompass.log
###46 0 2-8 * * /var/www/batch/exportKompass.php -5 >> /var/www/batch/clients/kompass5.log
45 0 1 2,5,8,11 * /var/www/batch/clients/stockCorporama.sh >> /var/www/batch/clients/stockCorporama.log
29 0 * * * /root/psxa.sh
##############0 7 10 * * /var/www/batch/getInfosGE.php >> /var/www/log/getInfosGE.log
0 9 * * * /var/www/batch/getAnnoncesJal.php >> /var/www/log/getAnnoncesJal.log
40 6 * * * /var/www/batch/convertSdFBoissons.php >> /var/www/log/convertSdFBoissons.log
30 5 * * 1-5 /var/www/batch/diffusionEntrepA6cmo.php -d >> /var/www/log/diffusionEntrepA6cmo.log
0 9 * * * cp --force /tmp/diffusionBodacc_DIFBOD*FTSA6CMO* /home/data/clients/a6cmo
0 11 * * * /var/www/batch/getInpi2009.php -v -j -m >> /var/www/log/getInpi2009siren.log
15 16 * * * /var/www/batch/getMarques.php -s -a
30 16 * * * /var/www/batch/getBodacc.php -t:DEFAO2014_009005.taz -s -w -p -v >> /var/www/log/getBodaccSiren.log
0 8 * * 2,4 /var/www/batch/getRSS.php -b >> /var/www/log/getRSSisin.log
0 9 * * 1-5 /var/www/batch/getRcMonaco.php >> /var/www/log/getRcMonaco.log
0 17 * * 1-5 /var/www/batch/getRcMonaco.php -d >> /var/www/log/getRcMonaco.log
30 13 * * * /var/www/batch/giantMonitoring.php -v >> /var/www/log/giantMonitoring.log
30 8 4-10 * * /var/www/batch/clients/doAdecco.sh
0 13 15 * * /var/www/batch/clients/doCoface.sh
0 19 * * * /var/www/batch/majLiens.php -i >> /var/www/log/majLiens.log
30 5 * * 1 /var/www/batch/surveillanceIsin.php >> /var/www/log/surveillanceIsin.log
30 8 * * * /var/www/batch/specifiqueReco.php >> /var/www/log/specifiqueReco.log
15 9 * * 1-5 /var/www/batch/getBanques.php >> /var/www/log/getBanques.log
30 8 5 * * /var/www/batch/diffusionCegedim.php >> /var/www/log/diffusionCegedim.log
0 5 * * 1 /var/www/batch/clients/proceduresH.sh >> /var/www/batch/clients/proceduresH.log
30 7 * * 1-5 /var/www/batch/testCptsPub.php >> /var/www/log/testCptsPub.log
###45 7 * * * /var/www/batch/testMixData.php >> /var/www/log/testMixData.log
###40 0 * * * /var/www/batch/diffusionEntrepA6cmo.php -s -c=21 >> /var/www/log/stockA6CMO.log

379
batch/diffusionActes.php Normal file
View File

@ -0,0 +1,379 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
define('DATE_HEURE_SCRIPT', date('Ymd_His'));
/** @todo
**/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$repProduction='/mnt/samba/partage/production/';
$modeTest=$envoiGroupe=$envoiGroupePre=false;
$ignoreDateDerExec=$retroActivite=false;
$tableSurveillance='surveillances_site';
//$modeTest=true;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Envoi des messages de surveillance Actes par email (site et WS uniquement).
Options :
-i Ne pas exécuter en réel (pas de MAJ des infos d'exécution et envoi des mails à lenaoury@gmail.com...)
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'i':
//$envoiGroupe=true;
$modeTest=true;
//$tableSurveillance='surveillances_site_old';
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
$iDb=new WDB('jo');
$iDb2=new WDB('sdv1');
$nbUtilisateurs=$iDb2->select('utilisateurs u, clients c', 'u.id, u.idClient, LOWER(u.login) AS login, u.password, u.email, u.formatMail, u.lienExtranetMail, u.listeEven', "u.idClient=c.id AND u.actif=1 AND u.deleted=0 AND c.actif='Oui'", true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbUtilisateurs utilisateurs habilités à recevoir des surveillances...".EOL;
$tabFormat=$tabLienEx=$tabLstEve=$tabHash=array();
while ($uti=$iDb2->fetch(MYSQL_ASSOC)) {
switch ($uti['formatMail']) {
case 'txt2': // MAIL au format texte, 1 mail par envoi
case 'csv': // MAIL au format CSV, 1 mail par envoi
case 'txt1': // MAIL au format texte, 1 mail par annonce (format par défaut)
case 'pdf1': // MAIL au format PDF, 1 mail par envoi
$tabFormat['_'.$uti['login']]=$uti['formatMail'];
break;
default:
$tabFormat['_'.$uti['login']]='txt1';
break;
}
$tabLienEx['_'.$uti['login']]=$uti['lienExtranetMail'];
$tabLstEve['_'.$uti['login']]=explode(';',trim($uti['listeEven']));
sort($tabLstEve['_'.$uti['login']]);
if (count($tabLstEve['_'.$uti['login']])==1 && $tabLstEve['_'.$uti['login']][0]=='')
$tabLstEve['_'.$uti['login']]=array();
$tabHash['_'.$uti['login']]=md5($uti['login'].'|'.$uti['password']);
}
//sort($tabFormat);
//print_r($tabFormat);die();
$iBodacc=new MBodacc();
$iInsee=new MInsee();
echo date ('Y/m/d - H:i:s')." - Début du traitement d'envoi des surveillances Actes.\n";
$fields="CONCAT(s.siren,'-',s.login,'-',s.ref) AS id, s.siren, LOWER(TRIM(s.login)) AS login, LOWER(TRIM(s.email)) AS email, s.ref, s.dateAjout, s.dateDerEnvoi, a.codeInterne, a.dateDepot, a.flux, a.codeEven, a.dateInsert";
$where ="1 AND s.source='actes' AND s.siren>1000 AND s.siren=a.siren AND a.dateInsert>=s.dateAjout AND a.dateInsert>=s.dateDerEnvoi AND s.dateSuppr='0000-00-00' AND DATEDIFF(NOW(), a.dateDepot)<=90
AND a.dateInsert>'2010-05-24' ";
$where.=' GROUP BY s.login, s.email, a.siren, a.codeInterne, a.dateDepot
ORDER BY s.login ASC, s.email ASC, a.siren, a.codeInterne, a.dateDepot';
$tables="$tableSurveillance s, rncs_even a";
echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
$nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces surveillances Actes à traiter...".EOL;
$emailPre=$loginPre=false;
//die();
require_once('/var/www/html/tests/pdf/html2pdf.class.php');
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
$tabIdentite=$iInsee->getIdentiteLight($annonce['siren']);
//print_r($tabIdentite);
//die();
/*
[id] => 6838322
[Siret] => 55214450300018
[Siege] => 1
[Nom] => AUTOMOBILES PEUGEOT
[Sigle] =>
[Enseigne] =>
[Adresse] => 0075 AV LA GRANDE ARMEE
[Adresse2] =>
[AdresseNum] => 0075
[AdresseBtq] =>
[AdresseVoie] => AV
[AdresseRue] => LA GRANDE ARMEE
[CP] => 75116
[Ville] => PARIS 16
[Tel] => 141193150
[Fax] => 140665414
[FJ] => 5599
[FJ_lib] => Autre SA à conseil d'administration
[Siren] => 552144503
[Nic] => 00018
[Actif] => 1
[NafEtab] => 7010Z
[NafEnt] => 2910Z
[NafEntLib] => Construction de véhicules automobiles
[NafEtabLib] => Activités des sièges sociaux
[AutreId] => 55B14450
[Source] => 002
[SourceId] => 6853244
*/
$fp2=fopen("/var/www/html/factures/pdf/surv_actes_".date('Y-m-d').'.csv', 'a');
fwrite($fp2, implode("\"\t\"", $annonce));
fclose($fp2);
$email=$annonce['email'];
$loginLu=$annonce['login'];
if (!isset($tabFormat['_'.$loginLu])) {
echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." non traitée pour cause de format indéfini pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
/** Avant de faire un continue, on initialise les variables précédentes obligatoires **/
/*$emailPre=$email;
$loginPre=$loginLu;
$envoiGroupePre=$envoiGroupe;
$conversionPdfPre=$conversionPdf;
$conversionCsvPre=$conversionCsv;*/
continue;
}
$conversionPdf=$conversionCsv=false;
if ($tabFormat['_'.$loginLu]=='txt2') $envoiGroupe=true;
elseif ($tabFormat['_'.$loginLu]=='csv') { $envoiGroupe=true; $conversionCsv=true; }
elseif ($tabFormat['_'.$loginLu]=='txt1') $envoiGroupe=false;
elseif ($tabFormat['_'.$loginLu]=='pdf1') { $envoiGroupe=true; $conversionPdf=true; }
else die(date('Y/m/d H:i:s')." - Erreur impossible : Format '".$tabFormat['_'.$loginLu]."' non géré pour $loginLu !");
echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." à traiter pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
echo "Test $envoiGroupe vs $envoiGroupePre, Login $loginLu vs $loginPre, Email $email vs $emailPre, Csv/Pdf=$conversionCsv/$conversionPdf\n";
//$saisie = trim(strtoupper(fgets(STDIN)));
if ( ($envoiGroupe||$envoiGroupePre) && // Envoi groupé demandé ET
( ($loginPre!=false && $loginLu!=$loginPre) || // Login différent OU
($emailPre!=false && $email!=$emailPre) ) // Email différent
) { /** Login souhaitant un seul email pour toutes les annonces **/
$emailEnvoi=$emailPre;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
if ($conversionPdfPre) {
$html2pdf = new HTML2PDF('P','A4', 'fr');
$messagePdf='<page>'.str_replace("---------------------------------------------------------------------------",'</page><page>', strtr($message, array("\r\n"=>'<br/>'))).'</page>';
$html2pdf->WriteHTML($messagePdf);
$content=$html2pdf->Output('annonces.pdf', true);
$fichierPdf="/var/www/html/factures/pdf/scores_$loginPre".'_'.date('Y-m-d').".pdf";
$fp=fopen($fichierPdf, 'w');
fwrite($fp, $content);
fclose($fp);
$tabAttached=array($fichierPdf);
} elseif ($conversionCsvPre) {
$tabAttached=array($fichierCsvPre);
} else
$tabAttached=array();
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance des actes déposés", $message, '', $tabAttached)) {
if ($envoiGroupe) $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='actes' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where".EOL;
if (!$modeTest) {
if ($envoiGroupe) $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='actes' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$loginPre, mail=$emailPre, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
}
$messageInfo=$message."\r\n".date('Y/m/d - H:i:s')." - L'annonce n°$idAnn a été envoyé à $emailPre.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés", $messageInfo, '', $tabAttached);
echo date('Y/m/d - H:i:s')." - Les annonces n°$strIdAnn ont été envoyées à $emailPre.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $emailPre !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés - Echec Envoi !", $messageInfo, '', $tabAttached);
echo date('Y/m/d - H:i:s')." - Les annonces n°$strIdAnn n'ont pas été envoyées à $emailPre.\n";
}
// Remise à banc du message
$message=$strIdAnn='';
$tabSiren=array();
}
// GESTION DE L'ANNONCE COURANTE
$siren=$annonce['siren'];
$sirenAff=implode(' ', str_split($siren,3));
//$nicAff=$annonce['nicEven'];
$rs=substr($tabIdentite['Nom'],0,30).'...';
//$even=$annonce['insEVE'];
$login=$annonce['login'];
$idAnn=$tabIdentite['id'];
if ($envoiGroupe==false)
$message="Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
else {
if ($emailPre==false && $loginPre==false) {
// Première annonce du mail
$message="Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
$strIdAnn="$idAnn ";
$tabSiren=array($siren);
} else {
// Nième annonce du mail
$message.= "Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
$strIdAnn.="$idAnn ";
$tabSiren[]=$siren;
}
}
if (trim($annonce['ref'])<>'') {
$message.='Votre référence : '.trim($annonce['ref'])."\r\n";
$message."\r\n";
$rs=substr($tabIdentite['Nom'],0,30).'... ('.trim($annonce['ref']).')';
}
// a.codeInterne, a.dateDepot, a.flux, a.codeEven, t.libEven, t.codEven
$message.='Source : Registre du Commerce en date du '.WDate::dateT('Y-m-d','d/m/Y',$annonce['dateDepot']).'. ';
$message.='Mise à jour en base S&D : '. WDate::dateT('Y-m-d','d/m/Y',$annonce['dateInsert'])."\r\n";
$tabEven=$iDb2->select(
'jo.rncs_even a, jo.tabEvenRncs t',
'a.codeEven, t.libEven, t.codEven',
"siren=$siren AND codeInterne='".$annonce['codeInterne']."' AND dateDepot='".$annonce['dateDepot']."' AND a.codeEven=t.codeEven",
true, MYSQL_ASSOC);
$message.="\r\n";
if (count($tabEven)>1) $message.="OBJETS DU DEPOT :\r\n";
else $message.="OBJET DU DEPOT :\r\n";
foreach ($tabEven as $even) {
$message.=' - '.$even['libEven'].' ('.$even['codEven'].$even['codeEven'].')'."\r\n";
}
$message.="\r\n";
$message.="Adresse du siège : ". $tabIdentite['Adresse'].', '.$tabIdentite['CP'].' '.$tabIdentite['Ville']."\r\n";
$message.="Forme juridique : ". $tabIdentite['FJ_lib'].' ('.$tabIdentite['FJ'].")\r\n";
$message.="Activité de l'entreprise : ". $tabIdentite['NafEntLib'].' ('.$tabIdentite['NafEnt'].")\r\n";
$message.="\r\n";
if ($tabLienEx["_$login"]==1) {
if (WS_VERSION==2)
$url="http://extranet.scores-decisions.com/pieces/actes/siret/$siren";
else
$url="http://extranet.scores-decisions.com/?page=greffes&vue=actes&action=logon&login=$login&siret=$siren&hach=".$tabHash["_$login"];
$message.="\r\nCliquez sur le lien suivant pour une consultation directe de l'évènement sur le site de Scores & Décisions :\r\n<div style=\"font-size: 6pt\"><a href=\"$url\">$url</a></div>\r\n";//d6c3f28eda29a2072b36872476a1d37a
}
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
if ($conversionCsv) {
$mel=substr(md5(preg_replace('/[^a-z0-9]/i','',$annonce['email'])),0,8);
$fichierCsv='/var/www/html/factures/pdf/actes_'.$login.'_'.$mel.'_'.DATE_HEURE_SCRIPT.'.csv';
if (!file_exists($fichierCsv)) {
$fp=fopen($fichierCsv, 'a');
fwrite($fp, "Siren;Id Acte;Référence;Date parution;Date Entrée en base;Raison sociale;
FJ;NAF;Type Evenement;Libellé Evènement\r\n");
fclose($fp);
}
$fp=fopen($fichierCsv, 'a');
// Ecriture d'une ligne CSV par évènement du dépôt
foreach ($tabEven as $even) {
fwrite($fp, "$siren;$idAnn;".trim($annonce['ref']).';'.
WDate::dateT('Y-m-d','d/m/Y',$annonce['dateDepot']).';'.
WDate::dateT('Y-m-d','d/m/Y',$annonce['dateInsert']).';'.
$tabIdentite['Nom'].';'.$tabIdentite['FJ'].';'.$tabIdentite['NafEnt'].';'.
$even['codEven'].$even['codeEven'].';'.$even['libEven']."\r\n");
}
fclose($fp);
}
if ($envoiGroupe==false) {
/** Profil souhaitant un email par annonce **/
$emailEnvoi=$email;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
//$emailEnvoi='lenaoury@gmail.com';
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance des actes déposés $sirenAff $nicAff : $rs", $message)) {
if ($envoiGroupe) $where="login='$login' AND email='$emailPre' AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' AND email='$email' AND source='actes' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where; (1 mail/annonce)".EOL;
if (!$modeTest) {
if ($envoiGroupe) $where="login='$login' AND email='$emailPre' AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' AND email='$email' AND source='actes' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d - H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$login, mail=$emailPre/$email, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
}
$messageInfo=$message."\r\n".date('Y/m/d - H:i:s')." - L'annonce n°$idAnn a été envoyé à $email.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés $sirenAff $nicAff : $rs", $messageInfo);
echo date('Y/m/d - H:i:s')." - L'annonce n°$idAnn a été envoyé à $email.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $email !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés $sirenAff $nicAff : $rs - Echec Envoi !", $messageInfo);
echo date('Y/m/d - H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $email.\n";
}
}
$emailPre=$email;
$loginPre=$login;
$envoiGroupePre=$envoiGroupe;
$conversionPdfPre=$conversionPdf;
$conversionCsvPre=$conversionCsv;
$fichierCsvPre=$fichierCsv;
}
/** Envoi du dernier email pour les envois groupés **/
if (($envoiGroupe||$envoiGroupePre) && $emailPre<>false && $loginPre<>false) {
$emailEnvoi=$emailPre;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
if ($conversionPdf) {
$html2pdf = new HTML2PDF('P','A4', 'fr');
$messagePdf='<page>'.str_replace("---------------------------------------------------------------------------",'</page><page>', strtr($message, array("\r\n"=>'<br/>'))).'</page>';
$html2pdf->WriteHTML($messagePdf);
$content=$html2pdf->Output('annonces.pdf', true);
$fichierPdf="/var/www/html/factures/pdf/scores_$login".'_'.date('Y-m-d').".pdf";
$fp=fopen($fichierPdf, 'w');
fwrite($fp, $content);
fclose($fp);
$tabAttached=array($fichierPdf);
} elseif ($conversionCsv) {
$tabAttached=array($fichierCsv);
} else $tabAttached=array();
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance des actes déposés", $message, '', $tabAttached)) {
if ($envoiGroupe) $where="login='$login' /*AND email='$emailPre'*/ AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' /*AND email='$emailPre'*/ AND source='actes' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where".EOL;
if (!$modeTest) {
if ($envoiGroupe) $where="login='$login' /*AND email='$emailPre'*/ AND source='actes' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' /*AND email='$emailPre'*/ AND source='actes' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$login, mail=$emailPre, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
}
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - Les annonces n°$strIdAnn ont été envoyées à $emailPre.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces n°$strIdAnn ont été envoyées à $emailPre.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $emailPre !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance des actes déposés - Echec Envoi !", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces n°$strIdAnn n'ont pas été envoyées à $emailPre.\n";
}
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement d'envoi des surveillances Actes.\n";
die();
?>

View File

@ -14,6 +14,7 @@ include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'conversion/bilAltares.php');
include_once(INCLUDE_PATH.'partenaires/classMRnvp.php');
include_once(FWK_PATH.'mail/sendMail.php');
@ -21,7 +22,7 @@ $repProduction='/mnt/samba/partage/production/';
$incrementationDesTour=true;
$typePrestaton='diffusionBodacc';
$ignoreDateDerExec=$retroActivite=false;
$ignoreDateDerExec=$forceExec=$retroActivite=false;
$codeAdherent='';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
@ -55,6 +56,9 @@ if ($_SERVER['argc']>1)
case 'e':
$ignoreDateDerExec=true;
break;
case 'f':
$forceExec=true;
break;
case 'r':
$retroActivite=substr($argv[$i],3,strlen($argv[$i])-3);
break;
@ -77,7 +81,12 @@ $iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iInsee=new MInsee();
$iBodacc=new MBodacc();
global $iInsee, $a;
$iRnvp=new MRnvp();
global $iInsee, $a, $iRnvp;
//echo genereLigne200('950571802', '00053');
//die();
function genereMultiLigne($typeLigne, $enteteLigne, $chaine, $eol="\r\n", &$nbLignes=0) {
$lonLigne=LONGUEUR_LIGNE_SORTIE-90;
@ -188,14 +197,14 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
/** Le client souhaite une compression du fichier ? **/
if (strpos($tabAdherent['optionSupport'], 'gzip')) $optionZip='gzip';
elseif (strpos($tabAdherent['optionSupport'], 'zip')) $optionZip='zip';
else $optionZip='none';
if (stripos($tabAdherent['optionSupport'], 'gzip')) $optionZip='gzip';
elseif (stripos($tabAdherent['optionSupport'], 'zip')) $optionZip='zip';
else $optionZip='none';
/** Le client préfère un paramétrage UNIX ou Window pour ses fins de lignes **/
if (strpos($tabAdherent['optionSupport'], 'os=dos')) $optionEOL="\r\n";
elseif (strpos($tabAdherent['optionSupport'], 'os=unix')) $optionEOL="\n";
else $optionEOL=EOL;
if (stripos($tabAdherent['optionSupport'], 'os=dos')) $optionEOL="\r\n";
elseif (stripos($tabAdherent['optionSupport'], 'os=unix')) $optionEOL="\n";
else $optionEOL=EOL;
$tabOptOutput=array();
@ -241,11 +250,13 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}// Bloc a décommenter
/** Livraison Quotidienne ou autre ? **/
if ($tabAdherent['freqEnvois']=='h' && date('w')<>1) {
if ($tabAdherent['freqEnvois']=='h' && date('w')<>1 && !$ignoreDateDerExec && !$forceExec) {
/** Le client souhaite une livraison hebdo, pour l'instant elle se fera le lundi... **/
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement hebdomadaire en attente (dernier traitement le $dateDernierTraitement)".EOL;
//if ($dateDernierTraitement<>20130610004000)
continue;
} elseif ($tabAdherent['freqEnvois']=='m' && date('w')<>1 && date('d')*1>7) {
} elseif ($tabAdherent['freqEnvois']=='m' && (date('w')<>1 || date('d')*1>7) && !$ignoreDateDerExec) {
// } elseif ($codeAdherent=='DIFBODPRDFTSA6CMOADACL40MACS') {
/** Le client souhaite une livraison mensuelle, pour l'instant elle se fera le 1er lundi du mois... **/
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement mensuel en attente (dernier traitement le $dateDernierTraitement)".EOL;
continue;
@ -277,57 +288,61 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
**/
$strRubrique='';
$tabRubCollecte=array();
if (strpos($tabAdherent['optionPrestation'], 'comptes')) { // Export du Bodacc C - Dépôt des comptes
$strRubrique.="'comptes',";
$tabRubCollecte[]=" typeEven LIKE '3%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'creations')) { // Export des créations
$strRubrique.="'creations',";
$tabRubCollecte[]=" typeEven LIKE '4%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'mmd')) { // Export des MMD
$strRubrique.="'mmd',";
$tabRubCollecte[]=" typeEven LIKE '2%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'procol')) { // Export des ProCol
$strRubrique.="'procol',";
$tabRubCollecte[]=" typeEven LIKE '1%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'radiations')) { // Export des radiations
$strRubrique.="'radiations',";
$tabRubCollecte[]=" typeEven LIKE '6%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'ventes')) { // Export des ventes cessions
$strRubrique.="'ventes',";
$tabRubCollecte[]=" typeEven LIKE '5%' ";
if (stripos($tabAdherent['optionPrestation'], 'Rubrique')!==false) {
if (stripos($tabAdherent['optionPrestation'], 'comptes')) { // Export du Bodacc C - Dépôt des comptes
$strRubrique.="'comptes',";
$tabRubCollecte[]=" typeEven LIKE '3%' ";
}
if (stripos($tabAdherent['optionPrestation'], 'creations')) { // Export des créations
$strRubrique.="'creations',";
$tabRubCollecte[]=" typeEven LIKE '4%' ";
}
if (stripos($tabAdherent['optionPrestation'], 'mmd')) { // Export des MMD
$strRubrique.="'mmd',";
$tabRubCollecte[]=" typeEven LIKE '2%' ";
}
if (stripos($tabAdherent['optionPrestation'], 'procol')) { // Export des ProCol
$strRubrique.="'procol',";
$tabRubCollecte[]=" typeEven LIKE '1%' ";
}
if (stripos($tabAdherent['optionPrestation'], 'radiations')) { // Export des radiations
$strRubrique.="'radiations',";
$tabRubCollecte[]=" typeEven LIKE '6%' ";
}
if (stripos($tabAdherent['optionPrestation'], 'ventes')) { // Export des ventes cessions
$strRubrique.="'ventes',";
$tabRubCollecte[]=" typeEven LIKE '5%' ";
}
}
if (strpos($tabAdherent['optionPrestation'], '101')) // Commentaire inclus dans l'annonce si nécessaire
$tabOptOutput[101]=true; else $tabOptOutput[101]=false;
if (strpos($tabAdherent['optionPrestation'], '102')) // Activite déclaré au Bodacc
$tabOptOutput[102]=true; else $tabOptOutput[102]=false;
if (strpos($tabAdherent['optionPrestation'], '104')) // Annonce complète au format texte
$tabOptOutput[104]=true; else $tabOptOutput[104]=false;
if (strpos($tabAdherent['optionPrestation'], '105')) // Structure Dirigeants BODACC
$tabOptOutput[105]=true; else $tabOptOutput[105]=false;
if (strpos($tabAdherent['optionPrestation'], '200')) // Structure Identité Insee S&D
$tabOptOutput[200]=true; else $tabOptOutput[200]=false;
if (strpos($tabAdherent['optionPrestation'], '400')) // Structure Bilans
$tabOptOutput[400]=true; else $tabOptOutput[400]=false;
if (stripos($tabAdherent['optionPrestation'], 'lignesOutput')!==false) {
if (strpos($tabAdherent['optionPrestation'], '101')) // Commentaire inclus dans l'annonce si nécessaire
$tabOptOutput[101]=true; else $tabOptOutput[101]=false;
if (strpos($tabAdherent['optionPrestation'], '102')) // Activite déclaré au Bodacc
$tabOptOutput[102]=true; else $tabOptOutput[102]=false;
if (strpos($tabAdherent['optionPrestation'], '104')) // Annonce complète au format texte
$tabOptOutput[104]=true; else $tabOptOutput[104]=false;
if (preg_match('/lignesOutput.*105/Ui', $tabAdherent['optionPrestation'])) // Structure Dirigeants BODACC
$tabOptOutput[105]=true; else $tabOptOutput[105]=false;
if (strpos($tabAdherent['optionPrestation'], '200')) // Structure Identité Insee S&D
$tabOptOutput[200]=true; else $tabOptOutput[200]=false;
if (preg_match('/lignesOutput.*400/Ui', $tabAdherent['optionPrestation'])) // Structure Bilans
$tabOptOutput[400]=true; else $tabOptOutput[400]=false;
}
// Naf inclus
$tabNaf=array();
$posNaf=stripos($tabAdherent['optionPrestation'], 'NAF=');
if ($posNaf!==false) {
if (preg_match('/NAF=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabNaf=preg_split('(;|,)', $matches[1]);
$tabNaf=preg_split('(;|,)', trim($matches[1]));
}
// Naf exclus
$posNaf=stripos($tabAdherent['optionPrestation'], 'NAF-=');
if ($posNaf!==false) {
$tabNafAll=$iInsee->getCodesNaf();
if (preg_match('/NAF\-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) {
$tabNafSuppr=preg_split('(;|,)', $matches[1]);
$tabNafSuppr=preg_split('(;|,)', trim($matches[1]));
$tabNaf=array_diff($tabNafAll, $tabNafSuppr);
}
}
@ -337,14 +352,14 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$posCJ=stripos($tabAdherent['optionPrestation'], 'CJ=');
if ($posCJ!==false) {
if (preg_match('/CJ=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabCJ=preg_split('(;|,)', $matches[1]);
$tabCJ=preg_split('(;|,)', trim($matches[1]));
}
// FJ exclues
$posCJ=stripos($tabAdherent['optionPrestation'], 'CJ-=');
if ($posCJ!==false) {
$tabCJAll=$iInsee->getCodesFJ();
if (preg_match('/CJ-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) {
$tabCJSuppr=preg_split('(;|,)', $matches[1]);
$tabCJSuppr=preg_split('(;|,)', trim($matches[1]));
$tabCJ=array_diff($tabCJAll, $tabCJSuppr);
}
//die(print_r($tabCJ,1));
@ -354,18 +369,35 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$posNaf=stripos($tabAdherent['optionPrestation'], 'CodeCom=');
if ($posNaf!==false) {
if (preg_match('/CodeCom=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabCodeCom=preg_split('(;|,)', $matches[1]);
$tabCodeCom=preg_split('(;|,)', trim($matches[1]));
/////die(print_r($tabCodeCom));
}
// Codes Evènements S&D inclus
$tabEve=array();
$posEve=stripos($tabAdherent['optionPrestation'], 'codeEven=');
if ($posEve!==false) {
if (preg_match('/codeEven=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabEve=preg_split('(;|,)', $matches[1]);
$tabEve=preg_split('(;|,)', trim($matches[1]));
//die(print_r($tabCJ));
}
// Codes Evènements S&D exclus
$posEve=stripos($tabAdherent['optionPrestation'], 'codeEven-=');
if ($posEve!==false) {
$tabEveAll=$iBodacc->getListeCodeEven();
if (preg_match('/codeEven-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) {
$tabEveSuppr=preg_split('(;|,)', trim($matches[1]));
$tabEve=array_diff($tabEveAll, $tabEveSuppr);
}
}
/* print_r($tabAdherent['optionPrestation']);
print_r($tabCodeCom);
print_r($tabCJ);
print_r($tabEve);
print_r($tabOptOutput);
die();*/
$versionEvenClient=0;
if (preg_match('/^versionEven=(.*)$/mUi', $tabAdherent['optionPrestation'], $matches))
$versionEvenClient=$matches[1]*1;
@ -378,15 +410,15 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$posMailSuivi=stripos($tabAdherent['optionPrestation'], 'mailSuivi=');
if ($posMailSuivi!==false) {
if (preg_match('/mailSuivi=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$mailSuivi=preg_replace('/;|,/', ',', $matches[1]);
$mailSuivi=preg_replace('/;|,/', ',', trim($matches[1]));
//die(print_r($mailSuivi));
}
$mailTo=false;
$posMailTo=stripos($tabAdherent['optionPrestation'], 'mailTo=');
$posMailTo=stripos($tabAdherent['optionSupport'], 'mailTo=');
if ($posMailTo!==false) {
if (preg_match('/mailTo=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$mailTo=preg_replace('/;|,/', ',', $matches[1]);
if (preg_match('/mailTo=(.*)(?:$|\n|\r)/i',$tabAdherent['optionSupport'],$matches))
$mailTo=preg_replace('/;|,/', ',', trim($matches[1]));
//die(print_r($mailSuivi));
}
@ -448,9 +480,16 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}*/
$where.=" AND Bodacc_Date_Parution>'2010-05-11' "; /** @todo A supprimer après le 19 juillet 2010 ... **/
$where.=" AND Bodacc_Date_Parution>'2010-05-11' AND d.dateSuppr=0 "; /** @todo A supprimer après le 19 juillet 2010 ... **/
$whereCol.=" AND a.dateSource>'2010-05-12 02:00:00' AND a.dateSuppr=0 "; // Idem ... (Prev: après la rétro du 22 mai 2008)
//echo "'$clientNumTourFichier'".EOL;
if ($clientNumTourFichier>1) { // @todo a tester !!!!! && !$retroActivite) { // Ne pas empecher d'envoyer les annonces sirenée ou intégrées avec du retard !
$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=60 ";
//die('ici');
}
if ($typePrestaton=='diffusionBodacc') {
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : diffusion...".EOL;
$tables='bodacc_detail d';
@ -461,13 +500,12 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) {
$strNaf=$strCJ='';
$fields="'BOD' AS src, d.id";
$fieldsCol="'COL' AS src, a.id";
$fields="'BOD' AS src, d.id, e.siren, e.nic, e.actif, e.ape_etab, e.ape_entrep, e.adr_dep, e.adr_com, e.cj";
$fieldsCol="'COL' AS src, a.id, e.siren, e.nic, e.actif, e.ape_etab, e.ape_entrep, e.adr_dep, e.adr_com, e.cj";
$tables='bodacc_detail d, etablissements e';
$tablesCol='annonces a, etablissements e';
$where.=" AND d.siren=e.siren AND d.siren>1000 AND (d.nic=e.nic OR e.siege=1) AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND a.siren=e.siren AND a.siren>1000 AND DATEDIFF(NOW(), dateJugement)<=60 ";
$where.=" AND d.siren=e.siren AND d.siren>1000 AND (d.nic=e.nic OR e.siege=1) ";
$whereCol.=" AND a.siren=e.siren AND a.siren>1000 ";
}
if (count($tabNaf)>0) {
@ -477,12 +515,13 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
if (count($tabCodeCom)>0) {
$where.=" AND (";
$whereCol.=" AND (";
foreach($tabCodeCom as $iCom=>$codeCom) {
$dep=substr($codeCom,0,2);
if ($dep<>'2A' && $dep<>'2B') {
$dep=$dep*1;
if ($dep<10) $strDep="'$dep','0$dep','00$dep'";
elseif ($dep>96)$strDep="'$dep'";
elseif ($dep>96)$strDep="'$dep','".substr($codeCom,0,3)."'";
else $strDep="'$dep','0$dep'";
} else $strDep="'$dep'";
$com=substr($codeCom,2,3)*1;
@ -530,7 +569,7 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
}
elseif ($typePrestaton=='surveillanceBodacc') {
$tabSiren=$iDb->select('surveillances_listes', 'siren, ref', "idClient='$clientIdentifiant' AND dateSuppr='0000-00-00'", true, MYSQL_ASSOC);
$tabSiren=$iDb->select('surveillances_listes', 'siren, ref, refInfos', "idClient='$clientIdentifiant' AND dateSuppr='0000-00-00'", true, MYSQL_ASSOC);
$nbSirenClient=count($tabSiren);
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbSirenClient unités en surveillance...".EOL;
$fields.=', s.ref';
@ -540,10 +579,10 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$where.=" AND d.siren=s.siren AND s.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
$whereCol.=" AND a.siren=s.siren AND a.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
// if ($clientIdentifiant<>'SURBODPRDFTSMEDERIC') {
if (!$retroActivite) {
/* if (!$retroActivite) {
$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=60 ";
}
}*/
// } else {
$where.=" AND d.dateInsert>s.dateDerEnvoi ";
$whereCol.=" AND a.dateInsert>s.dateDerEnvoi ";
@ -582,6 +621,7 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
//echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Début de génération du fichier client en version $versionEvenClient...".EOL;
//if ($collecte) die();
//die();
if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) {
$fields="d.id, d.siren, d.sirenValide, CONCAT('BOD-',SUBSTRING(d.Rubrique_Bodacc,1,1)) as source, d.Bodacc_Num, d.Bodacc_Date_Parution, d.Num_Annonce, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.corrNum_Annonce, d.corrBodacc_Date_Parution, d.corrPage, d.corrNumParution, d.corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, d.Tribunal_Code, adresse, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, d.ville, adresseSiege, adrSiegeNum, adrSiegeIndRep, adrSiegeTypVoie, adrSiegeLibVoie, adrSiegeComp1, adrSiegeComp2, codePostalSiege, villeSiege, administration, activite, typeEven, commentaires, dateEffet, publication, publicationNom, publicationDate, fusion, dateDebutActivite, dateCessationActivite, dateCessationPaiement, dateJugement, Numero, VenteMt, VenteDev, bienAcqui, 'M' As inter1type, 0 AS inter1id, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, 'R' As inter2type, 0 AS inter2id, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, 'A' As inter3type, 0 AS inter3id, administrateur, admNom, admRepr, admAdresse, admCP, admVille, 'O' AS inter4type, 0 AS inter4id, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert";
@ -590,12 +630,29 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$tablesCol='annonces a';
$where='d.id IN (0';
$whereCol='a.id IN (0';
$fpDebug=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debug', 'w');
$fpDebug2=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugExclu', 'w');
$tabNic=array();
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
if ($annonce['src']=='BOD') $where.=','.$annonce['id'];
else $whereCol.=','.$annonce['id'];
$codeComCour=substr(trim($annonce['adr_dep']),0,2).$annonce['adr_com'];
$txtDebug="Annonce n°".$annonce['id'].", siret=".$annonce['siren'].' '.$annonce['nic'].", Actif=".$annonce['actif'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=$codeComCour, CJ=".$annonce['cj'];
$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]=array('nic'=>$annonce['nic'],
'adr_dep'=>$annonce['adr_dep'],
'adr_com'=>$annonce['adr_com'],
'actif'=>$annonce['actif']);
fwrite($fpDebug, $txtDebug.EOL);
// Si hors périmètre des communes géographique et A6CMO
if ((strpos($clientIdentifiant, 'A6CMO')>0 || strpos($clientIdentifiant, 'ACTDEV')>0) && (!in_array($codeComCour, $tabCodeCom) || $annonce['actif']==0)) {
fwrite($fpDebug2, $txtDebug.EOL);
continue;
}
}
$where.=')';
$whereCol.=')';
fclose($fpDebug);
fclose($fpDebug2);
if ($collecte) {
$query ="SELECT $fields FROM $tables WHERE $where UNION SELECT $fieldsCol FROM $tablesCol WHERE $whereCol";
@ -619,6 +676,9 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
//echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
//while(=$iDb->fetch(MYSQL_ASSOC)) {
$fpDebug=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugProd', 'w');
$fpDebug2=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugProdExclu', 'w');
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
/** Marquer les liens REF/SIREN envoyées à chaque client
@ -698,16 +758,32 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
if ($avecMand) {
/** On doit recherche des mandataires absent ou non décodés de l'annonce Bodacc Texte **/
$tabTypes=array('A','C','L','M','R','O');
for($iInter=1; $iInter<4; $iInter++) {
$tabMand=$iDb2->select('annonces', 'inter'.$iInter.'type, inter'.$iInter.'id, inter'.$iInter.'nom, complement', 'siren='.$annonce['siren']." AND inter".$iInter."type IN ('".implode("','", $tabTypes)."') AND (inter".$iInter."id>0 OR inter".$iInter."nom<>'' OR complement LIKE 'Mandataire%') ORDER BY dateInsert DESC", false, MYSQL_ASSOC);
//for($iInter=1; $iInter<4; $iInter++) {
for($iInter=1; $iInter<3; $iInter++) {
$tabMand=$iDb2->select(
/*'annonces', 'inter'.$iInter.'type, inter'.$iInter.'id, inter'.$iInter.'nom, complement',
'siren='.$annonce['siren']." AND inter".$iInter."type IN ('".implode("','", $tabTypes)."') AND (inter".$iInter."id>0 OR inter".$iInter."nom<>'' OR complement LIKE 'Mandataire%') ORDER BY dateInsert DESC",
false, MYSQL_ASSOC);*/
'rncs_jugements', 'adm'.$iInter.'type AS inter'.$iInter.'type, adm'.$iInter.'id AS inter'.$iInter.'id, adm'.$iInter.'nom AS inter'.$iInter."nom, '' AS complement".', adm'.$iInter.'adrNum, adm'.$iInter.'adrInd, adm'.$iInter.'adrType, adm'.$iInter.'adrLibVoie, adm'.$iInter.'adrVoie, adm'.$iInter.'adr1, adm'.$iInter.'adr2, adm'.$iInter.'adr3, adm'.$iInter.'adrCP, adm'.$iInter.'adrVille',
'siren='.$annonce['siren']." AND adm".$iInter."type IN ('".implode("','", $tabTypes)."') AND (adm".$iInter."id>0 OR adm".$iInter."nom<>'') ORDER BY dateInsert DESC",
false, MYSQL_ASSOC);
//print_r($tabMand);
//die(mysql_error());
$interNom=$interTel=$interCp=$interVille='';
$interSiren=0;
foreach ($tabMand as $mand) {
// As t'on déjà traité ce type de mandataire ?
if (in_array($mand['inter'.$iInter.'type'],$interType)) continue;
//print_r($annonce);
$mandId=$mand['inter'.$iInter.'id'];
$interNom=strtoupper($mand['inter'.$iInter.'nom']);
$inter[$numInter]['Repr']='';
//, , , , adm'.$iInter.'adrVoie, adm'.$iInter.'adr1, adm'.$iInter.'adr2, adm'.$iInter.'adr3, ',
$inter[$numInter]['adrNum']=$mand['adm'.$iInter.'adrNum'];
$inter[$numInter]['adrBis']=$mand['adm'.$iInter.'adrInd'];
$inter[$numInter]['adrType']=trim(strtoupper($mand['adm'.$iInter.'adrType']));
$inter[$numInter]['adrLib']=trim(strtoupper($mand['adm'.$iInter.'adrLibVoie']));
$inter[$numInter]['CP']=$mand['adm'.$iInter.'adrCP'];
$inter[$numInter]['Ville']=trim(strtoupper($mand['adm'.$iInter.'adrVille']));
if ($mandId>0) {
// Il y a un mandataire avec un identifiant numérique
$tabTmp=$iDb2->select( 'tabMandataires', 'id, sirenGrp, sirenMand, Nom, Prenom, type, adresse, adresseComp, cp, ville, tel, fax, email, web', 'id='.$mandId, true, MYSQL_ASSOC);
@ -719,7 +795,7 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$interCp=$mand2['cp']*1;
$interVille=strtoupper($mand2['ville']);
$interTel=strtr($mand2['tel'],array(' '=>'',','=>'','.'=>'', '-'=>'/','-'=>''))*1;
} else {
/* else {
// Il y a un mandataire sans identifiant numérique
if (trim($mand['inter'.$iInter.'nom'])=='' && substr($mand['complement'],0,10)=='Mandataire')
@ -740,7 +816,7 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
// echo $mand['inter'.$iInter.'nom']." : Nom=$interNom, Tél=$interTel, Adresse=";
// print_r($adr);
}
}*/
$inter[$numInter]['type']=$mand['inter'.$iInter.'type']; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=$interSiren.'00000';
$inter[$numInter]['Nom']=trim(strtoupper($interNom));
@ -759,6 +835,10 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
}
//print_r($inter);
//print_r($interType);
//die();
$tribunalCode=$annonce['Tribunal_Code'];
$refLigneClient=@$annonce['ref'];
@ -805,6 +885,24 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
}
// Récupération des informations de l'établissement
$annonce['nic']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['nic'];
$annonce['adr_dep']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['adr_dep'];
$annonce['adr_com']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['adr_com'];
$annonce['actif']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['actif'];
$codeComCour=substr(trim($annonce['adr_dep']),0,2).$annonce['adr_com'];
$txtDebug="Annonce n°".$annonce['id'].", siret=".$annonce['siren'].' '.$annonce['nic'].", Actif=".$annonce['actif'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=$codeComCour, CJ=".$annonce['cj'];
fwrite($fpDebug, $txtDebug.EOL);
// Si l'annonce A6CMO est hors périmètre notamment des communes géographique, ne pas produire $str
if ((strpos($clientIdentifiant, 'A6CMO')>0 || strpos($clientIdentifiant, 'ACTDEV')>0) && (!in_array($codeComCour, $tabCodeCom) || $annonce['actif']==0)) {
fwrite($fpDebug2, $txtDebug.EOL);
continue;
}
if ($tabOptOutput[200]==true) {
$str=genereLigne200($annonce['siren'], $annonce['nic']);
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL);
@ -814,6 +912,7 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
$str=genereLignes400($annonce['siren'], $nbLignes, $optionEOL);
fwrite($fp, $str);
}
//$annonce['nic'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=".$annonce['adr_dep'].$annonce['adr_com'].", CJ=".$annonce['cj'].EOL;
$str= initstr('100', 3, '0', ALIGN_RIGHT) . // Type de ligne
initstr($annonce['id'], 10, '0', ALIGN_RIGHT) . // Numéro unique d'identification interne d'une annonce
@ -967,6 +1066,9 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
if ($nbLignes%1000==1) echo date ('Y/m/d - H:i:s')." - Nb lignes=$nbLignes\n";
}
fclose($fpDebug);
fclose($fpDebug2);
/**
** On génère la ligne de fin de fichier
**/
@ -982,15 +1084,40 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE)); // Pas de fin de ligne sur la dernière ligne
fclose($fp);
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient :Fichier client terminé.".EOL;
//die();
/** Mise à jour des numéros de tour et des date de dernières exécutions
**/
if ($incrementationDesTour) {
$iDbCrm=new WDB('sugarcrm');
$rep=$iDbCrm->update('cases_cstm', array('trtdatederniereexec_c'=>date('YmdHis'), 'trtnumerotour_c'=> $clientNumTourFichier),
$rep=$iDbCrm->update('cases_cstm', array('trtdatederniereexec_c'=>$dateFinFichier, 'trtnumerotour_c'=> $clientNumTourFichier),
"id_c='".$tabAdherent['idPrestationBdd']."'");
}
if ($clientIdentifiant=='SURBODPRDSFTPSFRBT') {
// Copie du fichier pour SFR
$fichierIn=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt';
if (!copy(REP_TEMP.$fichierIn, '/mnt/data/clients/sfrbtr/recv/'.$fichierIn))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fichierIn impossible pour le spécifique SFR !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $fichierIn a été créé pour SFR...".EOL;
// Remplissage de la table sdv1.flux_fileout avec les informations de traitement SFR
$tabSFR=array( 'client' => 'sfrbtr',
'name' => 'FICH_RCE',
'nbLines' => $nbLignes, // Nombre de ligne du fichier
'dateBegin' => $dateDebFichier, // Date de début du traitement Y-m-d H:i:s
'dateEnd' => $dateFinFichier, // Date de fin du traitement Y-m-d H:i:s
'fileOut' => basename($fichierIn), //Nom du fichier uniquement
'depotType' => 'SFTP',
'depotDir' => 'recvsurv',
'depotDate' => '0000-00-00 00:00:00',
);
$iDb3=new WDB('sdv1');
$iDb3->insert('flux_fileout', $tabSFR, false);
}
/** Conversion du fichier si nécessaire en CSV
**/
if ($tabAdherent['formatEnvois']=='csv') {
@ -1223,6 +1350,39 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
}
/** Envoi du fichier produit par mail
**/
if ($mailTo) {
switch($tabAdherent['formatEnvois']) {
case 'csv': $tabAttached=array($repBakClient.'/'.$ficProduction_csv); break;
case 'specifique': $tabAttached=array($repBakClient.'/'.$ficProduction_bil); break;
default: $tabAttached=array($repBakClient.'/'.$ficProduction); break;
}
$messageInfo="Bonjour,
Veuillez trouver le fichier d'annonces Scores & Décisions relatives à votre abonnement.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
@sendMail('production@scores-decisions.com', $mailTo.',support@scores-decisions.com', "$txtPrestaton Annonces S&D", $messageInfo, '', $tabAttached);
}
/** Si FTP, déplacement dans les dossiers adéquats **/
if ($tabAdherent['supportPrestation']=='ftp' || $tabAdherent['supportPrestation']=='web') {//$repProduction.$ficProduction
$repFtpClient='/home/data/ftp/'.strtolower($tabAdherent['nomClient']);
@ -1253,32 +1413,6 @@ foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
}
}
if ($mailTo) {
$tabAttached=array($repBakClient.'/'.$ficProduction);
$messageInfo="Bonjour,
Veuillez trouver le fichier d'annonces Scores & Décisions relatives à votre abonnement.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
sendMail('production@scores-decisions.com', $mailTo.',contact@scores-decisions.com', "$txtPrestaton Annonces S&D", $messageInfo, '', $tabAttached);
}
if ($mailSuivi) {
$strAnnRubs='';
foreach ($tabRubFic as $libRub=>$nbAnnRub)
@ -1302,7 +1436,7 @@ Informations compl
(*) : une même annonce pouvant être ventillée dans plusieurs chapitres, il est possible que la somme des rubriques dépasse le nombre d'annonces du fichier
";/*@todo Nombre d'annonces et ventilation par chapitre !*/
sendMail('production@scores-decisions.com', $mailSuivi, "$txtPrestaton Annonces S&D en télétransmission", $txtMsgPresta);
@sendMail('production@scores-decisions.com', $mailSuivi.',support@scores-decisions.com', "$txtPrestaton Annonces S&D en télétransmission", $txtMsgPresta);
}
}
@ -1314,11 +1448,49 @@ echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n";
die();
function genereLigne200($siren, $nic) {
global $iInsee, $a;
global $iInsee, $a, $iDb2, $iRnvp;
$a=$iInsee->getIdentiteEntreprise($siren,$nic);
$b=$iInsee->getInfosNotice($siren,$nic);
$c=$iInsee->getAdresse($siren,$nic);
$tmp=$iDb2->select('jo.etablissements_act', 'bilType, bilAnnee, bilTca, bilFL', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC, false);
if (count($tmp)>0) {
$tcaSED=$tmp[0]['bilTca'];
$tcaSEDtype=$tmp[0]['bilType'];
$tcaSEDannee=$tmp[0]['bilAnnee'];
$tcaSEDmt=$tmp[0]['bilFL'];
} else {
$tcaSED=' ';
$tcaSEDtype='I';
$tcaSEDannee='0000';
$tcaSEDmt=0;
}
// Forcage pour idclient=3 nimes metropole !!!
// if ($idClient==3 && $tcaSED<>' ') $a['TrancheCA']=$tcaSED;
$tabRnvp=$iRnvp->getAdresseRnvpSource(2, $a['SourceId']);
$codeRnvp=$tabRnvp['CQAdrRnvp']*1;
if ($codeRnvp>0) {
$L1rnvp=strtr($tabRnvp['L1rnvp'],'/*',' ');
$L2rnvp=$tabRnvp['L2rnvp'];
$L3rnvp=$tabRnvp['L3rnvp'];
$L4rnvp=$tabRnvp['L4rnvp'];
$L5rnvp=$tabRnvp['L5rnvp'];
$L6rnvp=$tabRnvp['L6rnvp'];
$L7rnvp=$tabRnvp['L7rnvp'];
} else {
$L1rnvp=strtr($c['L1_NOM'],'/*',' ');
$L2rnvp=$c['L2_NOM2'];
$L3rnvp=$c['L3_ADRCOMP'];
$L4rnvp=$c['L4_VOIE'];
$L5rnvp=$c['L5_DISTSP'];
$L6rnvp=$c['L6_POST'];
$L7rnvp=$c['L7_PAYS'];
}
// Forcage pour idclient=3 nimes metropole !!!
//if ($idClient==3 && $tcaSED<>' ') $a['TrancheCA']=$tcaSED;
$str= initstr(200, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité
initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D
initstr($a['Siren'], 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise
@ -1448,22 +1620,22 @@ function genereLigne200($siren, $nic) {
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab
*/
'00000000000'.
initstr(1, 1 ) . // Facultatif ADR_RNVP Type de Prestation RNVP si RNVP
initstr($c['L1_NOM'], 38 ) . // Facultatif L1_nomen Ligne 1 : Nom de l'entreprise
initstr($c['L2_NOM2'], 38 ) . // Facultatif L2_COMP Ligne 2 : Complément de nom
initstr($c['L3_ADRCOMP'], 38 ) . // Facultatif L3_CADR Ligne 3 : Complément d'adresse
initstr($c['L4_VOIE'], 38 ) . // Facultatif L4_VOIE Ligne 4 : Adresse
initstr($c['L5_DISTSP'], 38 ) . // Facultatif L5_DISP Ligne 5 : Distribution spéciale
initstr($c['L6_POST'], 38 ) . // Facultatif L6_POST Ligne 6 : Code Postal, commune, etc..
initstr($c['L7_PAYS'], 38 ) . // Facultatif L7_ETRG Ligne 7 : Pays si étranger
initstr($codeRnvp, 1 , '0', ALIGN_RIGHT) . // Facultatif ADR_RNVP Type de Prestation RNVP si RNVP
initstr($L1rnvp, 38 ) . // Facultatif L1_nomen Ligne 1 : Nom de l'entreprise
initstr($L2rnvp, 38 ) . // Facultatif L2_COMP Ligne 2 : Complément de nom
initstr($L3rnvp, 38 ) . // Facultatif L3_CADR Ligne 3 : Complément d'adresse
initstr($L4rnvp, 38 ) . // Facultatif L4_VOIE Ligne 4 : Adresse
initstr($L5rnvp, 38 ) . // Facultatif L5_DISP Ligne 5 : Distribution spéciale
initstr($L6rnvp, 38 ) . // Facultatif L6_POST Ligne 6 : Code Postal, commune, etc..
initstr($L7rnvp, 38 ) .
initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE*
initstr($b['insEAEAPEN'], 5 ) . // Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE
initstr($b['insEAESEC1N'], 5 ) . // Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE
initstr($b['insEAESEC2N'], 5 ) . // Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE
initstr($b['insEAESEC3N'], 5 ) . // Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE
initstr($b['insEAESEC4N'], 5 ) . // Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE
initstr($a['GeoLat'], 12 , '0', ALIGN_RIGHT) . // Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoLon'], 12 , '0', ALIGN_RIGHT) . // Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoLat'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoLon'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // Facultatif GPSP Niveau de précision du géocodage
initstr($a['GeoInfos']['NZUS'], 10 ) . // Facultatif ZUS Identifiant de la Zone Urbaine Sensible
initstr($a['GeoInfos']['NZRU'], 10 ) . // Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine
@ -1475,27 +1647,30 @@ function genereLigne200($siren, $nic) {
initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . // Facultatif TVAVALIDE Numéro de TVA validé
initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . // Facultatif ANCIENSIEGE Ancien siège
initstr($a['Isin'], 12 ) . // Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse
// A voir
initstr($a['dir1NomPrenom'], 40 ) . // Facultatif PPDIR1NOM Nom du principal dirigeant
initstr('', 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant
initstr('', 40 ) . // Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant
initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1DNAISS Date de naissance
initstr($a['dir1LieuNaiss'], 35 ) . // Facultatif PPDIR1LNAISS Lieu de Naissance
initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1FONC Code Fonction
initstr(str_replace('-','',$a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant
// A voir
initstr($a['dir2NomPrenom'], 40 ) . // Facultatif PPDIR2NOM Nom du seconde principal dirigeant
initstr('', 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant
initstr('', 40 ) . // Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant
initstr($a['dir2LieuNaiss'], 35 ) . // Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant
initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant
initstr($a['dir1Nom'], 40 ) . // Facultatif PPDIR1NOM Nom du principal dirigeant
initstr($a['dir1Prenom'], 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant
initstr($a['dir1NomUsage'], 40 ) . // Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant
initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR1DNAISS Date de naissance
initstr($a['dir1LieuNaiss'], 35 ) . // Facultatif PPDIR1LNAISS Lieu de Naissance
initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1FONC Code Fonction
initstr(str_replace('-','',$a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant
initstr($a['dir2Nom'], 40 ) . // Facultatif PPDIR2NOM Nom du seconde principal dirigeant
initstr($a['dir2Prenom'], 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant
initstr($a['dir2NomUsage'], 40 ) . // Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant
initstr($a['dir2LieuNaiss'], 35 ) . // Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant
initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant
initstr(str_replace('-','',$a['bilanDate']), 8 , '0', ALIGN_RIGHT) . // Facultatif BILANCLOT Date de dernière clôture de bilan disponible
initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . // Facultatif BILANDUREE Durée du dernier exercice disponible
initstr($a['bilanFL'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible
initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANRES Résultat au dernier bilan disponible
initstr('', 41 ) ; // Facultatif FILLER1 Zone libre
initstr($tcaSED, 1 ) . // Tranche de CA SED
initstr($tcaSEDtype, 1 ) . // Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé
initstr($tcaSEDannee, 4 ) . // Année du CA
initstr($a['dir1Genre'], 1 ) . // PPDIR1 Genre
initstr($a['dir2Genre'], 1 ) . // PPDIR2 Genre
initstr(' ', 33 ) ; // Facultatif FILLER1 Zone libre
return $str;
}

View File

@ -0,0 +1,99 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
error_reporting(E_ALL);
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'scores/classMFinancier.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
global $iDb2,$iDb3,$iLiens,$iBilan,$iInsee,$date;
$iDb=new WDB('jo');
$dateDebut=date('Y-m-d', mktime(0, 0, 0, date('m')-1, 1, date('Y')));
$dateFin =date('Y-m-d', mktime(0, 0, 0, date('m'), 0, date('Y')));
$modeDebug=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Traitement du fichier spécifique des radiations pour Cegedim.
Options :
-v Verbosité maximum
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 'v': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
} else $tabFichier[]=$argv[$i];
}
}
// Si pas de date de début alors on prend le 1er jour du mois précédent
$mailTo='yves.lauliac@cegedim.fr,didier.pelet@cegedim.fr,chantal.labbe@cegedim.fr,isabelle.huge@cegedim.fr,ylenaour@scores-decisions.com';
//$mailTo='ylenaour@scores-decisions.com';
$nomFichier='/tmp/radiationCegedimSetD_'.substr($dateDebut,0,7).'.csv';
echo date('Y/m/d - H:i:s') ." - Début de la production du fichier Cegedim pour la période $dateDebut à $dateFin.".EOL;
$nbRows=$iDb->select('bodacc_detail',
"siren, nic, LPAD(IF(codePostal=0, codePostalSiege,codePostal),5,'0') as codePostal",
"id>=18000000 AND Bodacc_Date_Parution BETWEEN '$dateDebut' AND '$dateFin' AND Rubrique='radiations'", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows radiations Cegedim...".EOL;
$nbLignes=0;
$fp=fopen($nomFichier,'w');
fwrite($fp, "siren;nic;cp".EOL);
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTmp['siren'];
$nic=$tabTmp['nic'];
$cp=$tabTmp['codePostal'];
fwrite($fp, "$siren;$nic;$cp".EOL);
$nbLignes++;
}
fclose($fp);
echo date('Y/m/d - H:i:s') ." - Fin de la production du fichier Cegedim ($nbLignes lignes/$nbRows).".EOL;
$tabAttached=array($nomFichier);
$nomFichierBase=basename($nomFichier);
$messageInfo="Bonjour,
Veuillez trouver ci-joint le fichier Scores & Décisions relatif à votre prestation contractuelle.
Le fichier se nomme $nomFichierBase et contient $nbLignes lignes.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
@sendMail('production@scores-decisions.com', $mailTo, "Prestation Cegedim Radiation", $messageInfo, '', $tabAttached);
die();
?>

View File

@ -1,13 +1,5 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/*
$tabSiret=array(19330142100015,
19331460600016,
39186692800016,
15400073100013,
39909992800018,
18330008600067
);*/
function exporte($txt, $lon, $sep="\t") {
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
@ -82,123 +74,29 @@ echo date ('Y/m/d - H:i:s')." - Il y a $nbRows communes avec des adresses de dom
while($tabCom=$iDb->fetch(MYSQL_ASSOC))
$tabComDom['_'.$tabCom['depComEt']]=1;
/*
$nbRows=$iDb->select('etablissements_act', 'DISTINCT sirenGrp', 'sirenGrp>1000', false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbRows groupes à mettre à jour...".EOL;
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$entrep['sirenGrp'];
$iDb2->update('etablissements_act', array('sirenGrp'=>$siren), "siren=$siren") or die('Err4:'.mysql_error());
}
die();
*
$fields='id, siren, nic, adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com';
$nbRows=$iDb->select('etablissements_act', 'COUNT(*) AS nb', '1', true, MYSQL_ASSOC);
$nbRowsTot=$nbRows[0]['nb'];
echo date('Y/m/d - H:i:s') ." - Début de l'export des $nbRowsTot établissements actifs...".EOL;
$iLimitNb=100000;
for ($iLimit=8100000; $iLimit<$nbRowsTot; $iLimit+=$iLimitNb) {
$nbRows=$iDb->select('etablissements_act', $fields, "1 LIMIT $iLimit, $iLimitNb", true, MYSQL_ASSOC, true);
if (mysql_errno()>0) die(date('Y/m/d - H:i:s') ." - Erreur SQL : ".mysql_error().EOL);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises à diffuser ($iLimit, $iLimitNb)...".EOL;
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$numRow++;
$siren=$entrep['siren'];
$nic=$entrep['nic'];
$siret=$siren.$nic;
$dep=$entrep['adr_dep'];
$com=$entrep['adr_com'];
if ($dep*1>0 && $dep*1<10) { $dep=$dep*1; $depCom='0'.$dep.$com; }
else $depCom=substr(''.$dep,0,2).$com;
if (@$tabComDom['_'.$depCom]==1) {
//echo date('Y/m/d - H:i:s') ." - $depCom dans \$tabCom...".EOL;
$tabDom=@$iInsee->infoAdresseDom( $entrep['adr_num'],
$entrep['adr_btq'],
$entrep['adr_typeVoie'],
$entrep['adr_libVoie'],
$entrep['adr_comp'],
$entrep['adr_cp'],
$entrep['adr_ville']);
if (is_array($tabDom) && count($tabDom)>0) {
$nbDom++;
$tabUpdate=array('adrDom'=>1);
if (preg_match('/^CHEZ (.*)$/i',$entrep['adr_comp'], $matches) &&
!preg_match('/ M | M. | MR | MME | MLLE /i',$entrep['adr_comp']))
$tabUpdate=array('adrDom'=>2);
$iDb->update('etablissements_act', $tabUpdate, "siren=$siren AND nic=$nic");
}
}// else echo date('Y/m/d - H:i:s') ." - $depCom hors \$tabCom...".EOL;
}
}
die();
*/
$iBilan=new MBilans(0);
$iCotation=new ICotation(array());
$iLiens=new MLiens(0);
echo date ('Y/m/d - H:i:s')." - Début du traitement diffusion des Etablissements.\n";
/*
// DEBUT TEST maisonMere
//$nbRows=$iDb->select('etablissements_act', 'DISTINCT siren', 'nbActio>0 AND siren>10000 AND sirenGrp IS NULL', true, MYSQL_ASSOC, true);
$nbRows=$iDb->select('etablissements_act', 'DISTINCT siren', 'nbActio>0 AND siren>439752767 AND sirenGrp IS NULL', true, MYSQL_ASSOC, true);
$j=0;
$tabSirenVisites=array();
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$j++;
$siren=$entrep['siren'];
echo date ('Y/m/d - H:i:s')." - $j/$nbRows - Siren $siren : ";
if (isset($tabSirenVisites[$siren*1])) {
$sirenMere=$tabSirenVisites[$siren];
if ($siren<>$sirenMere)
echo "maison mère $sirenMere (EN CACHE)";
} else {
$sirenMere=@$iLiens->getMaisonMereFr($siren);
if ($siren<>$sirenMere) {
echo "maison mère $sirenMere";
foreach ($iLiens->tabSirenVisites as $siren1) {
$tabSirenVisites[$siren1*1]=$sirenMere;
}
}
}
echo EOL;
if ($siren<>$sirenMere)
$iDb2->update('etablissements_act', array('sirenGrp'=>$sirenMere), "siren=$siren") or die('Err3:'.mysql_error());
}
die("$nbRows traitées".EOL);
// FIN TEST maisonMere
*/
/*
$tabBilans=array();
$nbRows=$iDb->select('bilans', 'DISTINCT siren', "dateExercice>=20080101 AND typeBilan IN('N','S')", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec Bilans...".EOL;
while($tabBilan=$iDb->fetch(MYSQL_ASSOC)) {
$tabBilans[]=$tabBilan['siren'];
}*/
$fields='id, source, source_id, triCode, autre_id, siren, nic, siege, raisonSociale, enseigne, sigle,
adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com, tel, fax,
cj, capital, capitalDev, capitalSrc, ape_etab, ape_entrep, age_entrep, age_etab, tca, tcaexp,
ape4_etab, ape4_entrep, dateCrea_etab, teff_entrep, teff_etab, eff_entrep, eff_etab, distSP, achPost,
dirCiv, dirNom, dirPrenom, dirFct, nbEtab, nbActio, bilType, bilEE, bilFL, bilFK, bilFR, bilGF, bilGP, bilGU, bilGW, bilHD, bilHH, bilHL, bilHM, bilHN, bilYP, tvaIntraValide, tvaIntraCle';
ape4_etab, ape4_entrep, dateCrea_etab, dateCrea_ent, dateImmat, teff_entrep, teff_etab, eff_entrep, eff_etab, distSP, achPost,
dirCiv, dirNom, dirPrenom, dirFct, nbEtab, nbActio, bilType, bilAnnee, bilCloture, bilDuree, bilTca,
bilEE, bilFL, bilFK, bilFR, bilGF, bilGP, bilGU, bilGW, bilHD, bilHH, bilHL, bilHM, bilHN, bilYP,
tvaIntraValide, tvaIntraCle';
//if (0) {
$nbRows=$iDb->select('etablissements_actmp', 'COUNT(*) AS nb', '1', false, MYSQL_ASSOC);
$nbRows=$iDb->select('etablissements_act_tmp', 'COUNT(*) AS nb', '1', false, MYSQL_ASSOC);
$nbRowsTot=$nbRows[0]['nb'];
echo date('Y/m/d - H:i:s') ." - Début de l'export des $nbRowsTot établissements actifs...".EOL;
$iLimitNb=100000;
$fp=fopen('./veolia_'.date('Ymd').'.txt','w');
for ($iLimit=0; $iLimit<$nbRowsTot; $iLimit+=$iLimitNb) {
$nbRows=$iDb->select('etablissements_actmp', $fields, "1 LIMIT $iLimit, $iLimitNb", false, MYSQL_ASSOC, true);
$nbRows=$iDb->select('etablissements_act_tmp', $fields, "1 LIMIT $iLimit, $iLimitNb", false, MYSQL_ASSOC, true);
if (mysql_errno()>0) die(date('Y/m/d - H:i:s') ." - Erreur SQL : ".mysql_error().EOL);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises à diffuser ($iLimit, $iLimitNb)...".EOL;
@ -206,6 +104,9 @@ echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises
$numRow=$sirenPre=0;
$tabTva=array();
$anneeEstime=date('Y')-2;
$clotureEstime=$anneeEstime.'-12-31';
$clotureEstimeYmd=$anneeEstime.'1231';
$tabSirenVisites=array();
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
@ -264,25 +165,43 @@ while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$strOutput.=exporte(sprintf("%10s",preg_replace('/( |\-|\.)/', '', $entrep['tel'])), 10);
$strOutput.=exporte(sprintf("%10s",preg_replace('/( |\-|\.)/', '', $entrep['fax'])), 10);
$strOutput.=exporte($entrep['dateCrea_etab'], 8);
$dateCreationEnt=$entrep['dateCrea_ent'];
/*if $dateCreationEnt=$entrep['dateCrea_ent'];
dateCrea_etab, dateCrea_ent, dateImmat
dateCrea_*/
if (($entrep['siege']*1)==1) $strOutput.=exporte('01', 2);
else $strOutput.=exporte('02', 2);
$strOutput.=exporte($entrep['nbEtab'], 5);
$strOutput.=exporte($entrep['cj'], 4);
$fJur=$entrep['cj'];
$strOutput.=exporte($entrep['capital'], 13);
if ($entrep['capitalDev']=='EUR' || $entrep['capitalDev']=='')
$strOutput.=exporte('Euro', 10);
else
$strOutput.=exporte($entrep['capitalDev'], 10);
$naf4=$entrep['ape4_etab'];
$naf5=$entrep['ape_etab'];
if ($naf4=='') $naf4=@$iCotation->tabNaf21[$naf5];
$naf4lib=@$iInsee->getLibelleNaf($naf4);
if ($naf4lib=='') $tabNaf4inconnu[]=$naf4;
$strOutput.=exporte($naf4, 4); // NAF4
$strOutput.=exporte($naf4lib, 90);
$tabNace=array( 'NaceEtab'=>@$iInsee->getCodeNace($entrep['ape_etab']),
'NaceEntrep'=>@$iInsee->getCodeNace($entrep['ape_entrep']));
$tabNace=array();
$naf5et=$entrep['ape_etab'];
$naf5en=$entrep['ape_entrep'];
$naf4et=$entrep['ape4_etab'];
$naf4en=$entrep['ape4_entrep'];
if ($naf4et=='' || $naf4et=='000Z') $tabNace['ape4_etab']=$naf4et=@$iCotation->tabNaf21[$naf5et];
if ($naf4en=='' || $naf4en=='000Z') $tabNace['ape4_entrep']=$naf4en=@$iCotation->tabNaf21[$naf5en];
$naf4etlib=@$iInsee->getLibelleNaf($naf4et);
if ($naf4etlib=='') $tabNaf4inconnu[]=$naf4et;
$strOutput.=exporte($naf4et, 4); // NAF4
$strOutput.=exporte($naf4etlib, 90);
$naf5etlib=@$iInsee->getLibelleNaf($naf5);
if ($naf5etlib=='') $tabNaf5inconnu[]=$naf5et;
$strOutput.=exporte($naf5et, 5);
$strOutput.=exporte($naf5etlib, 90);
$tabNace['NaceEtab']=@$iInsee->getCodeNace($entrep['ape_etab']);
$tabNace['NaceEntrep']=@$iInsee->getCodeNace($entrep['ape_entrep']);
if (@$tabComDom['_'.$depCom]==1) {
$tabDom=@$iInsee->infoAdresseDom( $entrep['adr_num'],
$entrep['adr_btq'],
@ -326,7 +245,7 @@ while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
}
// Lecture du dernier bilan
$uniteMultiple=1;
/*$uniteMultiple=1;
$tabPostes=array();
//if (in_array($siren, $tabBilans)) {
$tabBilan=$iDb2->select('bilans', 'siren, dateExercice, dureeExercice, unite, typeBilan, postes', "siren=$siren AND typeBilan IN ('N','S') ORDER BY dateExercice DESC LIMIT 1", false, MYSQL_ASSOC);
@ -344,72 +263,59 @@ while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
}
if ($tabBilan['typeBilan']=='S')
$tabPostes=@$iBilan->bilanSimplifie2Normal($tabPostes);
*/
}
$effectifFr=@$tabPostes['YP']*1;
$effectifFr=@$entrep['bilYP']*1;
if ($effectifFr==0)
$effectifFr=$entrep['eff_entrep'];
$strOutput.=exporte($effectifFr, 6);
$strOutput.=exporte($entrep['eff_etab'], 6);
if (@count($tabPostes)>10) {
$montantCA=@$tabPostes['FL']*$uniteMultiple;
$strOutput.=exporte('R', 1); // Réel , Inconnu, Estimé
$strOutput.=exporte(str_replace('NS','', @$tabPostes['FL']*$uniteMultiple), 13);
$strOutput.=exporte(str_replace('NS','', @$tabPostes['FK']*$uniteMultiple), 13);
$strOutput.=exporte(str_replace('NS','', @$tabPostes['HN']*$uniteMultiple), 13);
if ($entrep['bilAnnee']>1900) {
$montantCA=@$entrep['bilFL'];
$iDb2->update('etablissements_actmp',
array_merge($tabTva, $tabNace,
array( 'bilType' =>'R',
'bilAnnee' =>@substr($tabBilan['dateExercice'],0,4),
'bilCloture'=>@$tabBilan['dateExercice'],
'bilDuree' =>@$tabBilan['dureeExercice'],
'bilTca' =>$iInsee->getTca($montantCA),
'bilEE' =>@$tabPostes['EE']*$uniteMultiple,
'bilFL' =>$montantCA,
'bilFK' =>@$tabPostes['FK']*$uniteMultiple,
'bilFR' =>@$tabPostes['FR']*$uniteMultiple,
'bilGF' =>@$tabPostes['GF']*$uniteMultiple,
'bilGP' =>@$tabPostes['GP']*$uniteMultiple,
'bilGU' =>@$tabPostes['GU']*$uniteMultiple,
'bilGW' =>@$tabPostes['GW']*$uniteMultiple,
'bilHD' =>@$tabPostes['HD']*$uniteMultiple,
'bilHH' =>@$tabPostes['HH']*$uniteMultiple,
'bilHL' =>@$tabPostes['HL']*$uniteMultiple,
'bilHM' =>@$tabPostes['HM']*$uniteMultiple,
'bilHN' =>@$tabPostes['HN']*$uniteMultiple,
'bilYP' =>@$tabPostes['YP'])),
"siren=$siren AND nic=$nic") or die('Err1:'.mysql_error());
$strOutput.=$entrep['bilType']; // Réel , Inconnu, Estimé
$strOutput.=exporte(str_replace('NS','', @$entrep['bilFL']), 13);
$strOutput.=exporte(str_replace('NS','', @$entrep['bilFK']), 13);
$strOutput.=exporte(str_replace('NS','', @$entrep['bilHN']), 13);
} elseif ($naf5<>'' && $naf5<>'0000Z' && $effectifFr>0) {
$caEstime=$iInsee->getCAnafEffectif($naf5, $effectifFr);
$montantEBE=@$entrep['bilEBE'];
$tabUpdate=array_merge($tabTva, $tabNace);//, array('bilTca'=>$iInsee->getTca($montantCA)));
} elseif ($naf5en<>'' && $naf5en<>'0000Z' && ($effectifFr>0 || ($fJur<2000 && $effectifFr==0)) && $dateCreationEnt<$clotureEstimeYmd) {
/** On estime le CA si :
* - NAF valide,
* - effectif>0 ou CJ=1xxx
* - date de création >= date de cloture estimée
**/
if ($fJur<2000 && $effectifFr==0)
$caEstime=$iInsee->getCAnafEffectif($naf5en, 1);
else
$caEstime=$iInsee->getCAnafEffectif($naf5en, $effectifFr);
$strOutput.=exporte('E', 1); // Réel , Inconnu, Estimé
$strOutput.=exporte($caEstime, 13); // CA France
$strOutput.=exporte('', 13); // CA Export
$strOutput.=exporte('', 13); // Résultat Net
$iDb2->update('etablissements_actmp',
array_merge($tabTva, $tabNace,
$tabUpdate=array_merge($tabTva, $tabNace,
array( 'bilType' =>'E',
'bilAnnee' =>$anneeEstime,
'bilCloture'=>$anneeEstime.'-12-31',
'bilCloture'=>$clotureEstime,
'bilDuree' =>12,
'bilTca' =>$iInsee->getTca($caEstime),
'bilFL' =>$caEstime)),
"siren=$siren AND nic=$nic") or die('Err2');
'bilFL' =>$caEstime));
} else {
$strOutput.=exporte('I', 1); // Réel , Inconnu, Estimé
$strOutput.=exporte('', 13);
$strOutput.=exporte('', 13);
$strOutput.=exporte('', 13);
$iDb2->update('etablissements_actmp', array_merge($tabTva, $tabNace), "siren=$siren AND nic=$nic") or die('Err3:'.mysql_error());
$tabUpdate=array_merge($tabTva, $tabNace);
}
$strOutput.=exporte($naf5, 5);
$naf5lib=@$iInsee->getLibelleNaf($naf5);
if ($naf5lib=='') $tabNaf5inconnu[]=$naf5;
$strOutput.=exporte($naf5lib, 90);
$iDb2->update('etablissements_act_tmp', $tabUpdate, "siren=$siren AND nic=$nic") or die('Err3:'.mysql_error());
fwrite($fp, $strOutput.EOL);
$sirenPre=$siren;
@ -418,11 +324,11 @@ while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
}
}
$nbRows=$iDb->select('etablissements_actmp', 'DISTINCT sirenGrp', 'sirenGrp>1000', false, MYSQL_ASSOC, true);
$nbRows=$iDb->select('etablissements_act_tmp', 'DISTINCT sirenGrp', 'sirenGrp>1000', false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbRows groupes à mettre à jour...".EOL;
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$entrep['sirenGrp'];
$iDb2->update('etablissements_actmp', array('sirenGrp'=>$siren), "siren=$siren") or die('Err4:'.mysql_error());
$iDb2->update('etablissements_act_tmp', array('sirenGrp'=>$siren), "siren=$siren") or die('Err4:'.mysql_error());
}
$tabNaf5inconnu=array_unique($tabNaf5inconnu);
@ -430,28 +336,26 @@ $tabNaf4inconnu=array_unique($tabNaf4inconnu);
//}
/** Mise à jour de la date de fin de création de la table **/
unset($iDb);
$iDb=new WDB('sdv1');
$ret=$iDb->select('sphinx_idx', 'id', "nom='jo.etablissements_act' AND createBegin IS NOT NULL AND createBegin<NOW() AND createEnd IS NULL AND indexingBegin IS NULL AND indexingEnd IS NULL", false);
$ret=$iDb->select('sphinx_idx', 'id', "nom='jo.etablissements_act' AND createBegin IS NOT NULL AND createBegin<NOW() AND createEnd IS NULL AND indexingBegin IS NULL AND indexingEnd IS NULL ORDER BY createBegin DESC", false);
$id=@$ret[0][0];
$iDb->update('sphinx_idx', array('createEnd'=>date('YmdHis')), "id=$id") or die('Err5:'.mysql_error());
$iDb->update('sphinx_idx', array('createEnd'=>date('YmdHis')), "id=$id");
echo mysql_error().EOL;
echo date ('Y/m/d - H:i:s')." - Historisation des anciens établissements...".EOL;
if (!$iDb->query("INSERT IGNORE INTO jo.etablissements_act_histo SELECT * FROM jo.etablissements_act;"))
die($iDb->getLastError());
if (!$iDb->query("INSERT IGNORE INTO jo.etablissements_act_histo SELECT * FROM jo.etablissements_act;")) die($iDb->getLastError());
echo date ('Y/m/d - H:i:s')." - Rotation des tables 'etablissements_act'...".EOL;
if (!$iDb->query("DROP TABLE jo.etablissements_act_old;"))
die($iDb->getLastError());
if (!$iDb->query("RENAME TABLE jo.etablissements_act TO jo.etablissements_act_old;"))
die($iDb->getLastError());
if (!$iDb->query("RENAME TABLE jo.etablissements_actmp TO jo.etablissements_act;"))
die($iDb->getLastError());
if (!$iDb->query("DROP TABLE jo.etablissements_act_old;")) die($iDb->getLastError());
if (!$iDb->query("RENAME TABLE jo.etablissements_act TO jo.etablissements_act_old;")) die($iDb->getLastError());
if (!$iDb->query("RENAME TABLE jo.etablissements_act_tmp TO jo.etablissements_act;")) die($iDb->getLastError());
echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion des Entreprises.\n";
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Diffusion Entreprise", "$numRow établissements actifs diffusés".EOL.print_r($tabNaf5inconnu, true) .EOL. print_r($tabNaf4inconnu,true) );
// etablissements_act_old
die();
?>

File diff suppressed because it is too large Load Diff

View File

@ -52,10 +52,10 @@ $nbSirValides=$nbSirInvalides=0;
$nbNicValides=$nbNicInvalides=0;
$nbInsert=0;
$eff69=$dateDebut=false;
$eff69=$dateDebut=$nafAMS=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [Stock Adecco à charger]
Traitement spécifique Adecco Diffusion des Mise à jour des champs complexes de la table 'etablissement_act' et génération du fichier spécifique Véolia.
Traitement des fichiers spécifiques Adecco.
Options :
-1 Prestation 1 Mise à jour du stock Adecco
@ -65,9 +65,13 @@ Options :
-c Prestation 3C Stock des liens groupes des établissements de + de 10 salariés
-p Purger la table addeco_out
-r=SIRET Reprendre au siret supérieur
-f Forcer le traitement même si on n'est pas vendredi (le traitement se lance entre le 4 et le 10 du mois)
-v Verbosité maximum
-m Traitement AMS
-6 Traitement des 6 à 9 salariés
";
$presta2='';
$dayOfTheWeek=date('w');
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
@ -75,23 +79,31 @@ if ($_SERVER['argc']>1)
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case '1': $presta=1; break;
case '2': $presta=2; break;
case '6': $eff69=true; break;
case 'a': $presta=3.1; $dateDebut=substr($argv[$i],3); break;
case 'b': $presta=3.2; $dateDebut=substr($argv[$i],3); break;
case 'c': $presta=3.3; break;
case 'p': $purge=true; break;
case 'r': $siretReprise=substr($argv[$i],3); break;
case '1': $presta=1; break;
case '2': $presta=2; break;
case '6': $eff69=true; $presta2='_69'; break;
case 'm': $nafAMS=true; $presta2='ams'; break;
case 'a': $presta=3.1; $dateDebut=substr($argv[$i],3); break;
case 'b': $presta=3.2; $dateDebut=substr($argv[$i],3); break;
case 'c': $presta=3.3; break;
case 'p': $purge=true; break;
case 'r': $siretReprise=substr($argv[$i],3); break;
case 'f': $dayOfTheWeek=5; $mailTo='ylenaour@scores-decisions.com'; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
} else $tabFichier[]=$argv[$i];
}
}
// Si pas de date de début alors on prend le 1er jour du mois précédent
if (!$dateDebut) $dateDebut=date('Ymd', mktime(0, 0, 0, date('m')-1, 1, date('Y')));
$dateDebIniYmd=20111201; // Date de début de sdémarrage de la prestation Adecco
$dateDebYmd=substr($dateDebut,0,6).'01';
$dateFinYmd=date('Ymt', mktime(0, 0, 0, substr($dateDebut,4,2), 1, substr($dateDebut,0,4)));
$mailTo='jproust@scores-decisions.com,ylenaour@scores-decisions.com,support@scores-decisions.com';//,fabienne.sourbier@adecco-groupe.fr,frederic.montagne@adecco-groupe.fr';
if (count($tabFichier)==1) {
/* Chargement du fichier Entrant adecco */
$nomFichier=$tabFichier[0];
@ -165,15 +177,22 @@ if (count($tabFichier)==1) {
echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier '$nomFichier' ($nbLignes/$nbLignesLues lignes traitées dont $nbInsert insérées).".EOL;
}
if ($dayOfTheWeek<>5) {
echo date('Y/m/d - H:i:s') ." - Nous ne sommes pas Vendredi !".EOL;
die();
}
if ($presta<>1 && $presta<>2 && $presta<>3.1 && $presta<>3.2 && $presta<>3.3) {
if (count($tabFichier)<>1)
echo date('Y/m/d - H:i:s') ." - Prestation '$presta' inconnue !".EOL;
die();
}
///home/data/clients/adecco/
$fp=fopen('./adecco'.$presta."_$date.txt",'w');
$nomFichier='/home/data/clients/adecco/adecco'.$presta.$presta2."_$date.txt";
$fp=fopen($nomFichier,'w');
// Ligne d'entête
fwrite($fp, "adSIREN|adNIC|adREF|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adVILLE|adSE|SIREN|NIC|L1_NOMEN|L2_COMP|L3_CADR|L4_VOIE|L5_DISP|L6_POST|L7_ETRG|ZR1|RPET|DEPET|ARRONET|CTONET|COMET|LIBCOM|DU|TU|UU|CODPOS|ZR2|TCD|ZEMET|CODEVOIE|NUMVOIE|INDREP|TYPVOIE|LIBVOIE|ENSEIGNE|APET700|ZR3|SIEGE|TEFET|EFETCENT|ORIGINE|DCRET|MMINTRET|ACTIVNAT|LIEUACT|ACTISURF|SAISONAT|MODET|DAPET|DEFET|EXPLET|PRODPART|AUXILT|EAEANT|EAEAPET|EAESEC1T|EAESEC2T|NOMEN|SIGLE|CIVILITE|CJ|TEFEN|EFENCENT|APEN700|ZR4|APRM|TCA|RECME|DAPEN|DEFEN|DCREN|MMINTREN|MONOACT|MODEN|EXPLEN|EAEANN|EAEAPEN|EAESEC1N|EAESEC2N|EAESEC3N|EAESEC4N|NBETEXPL|TCAEXP|REGIMP|MONOREG|RPEN|DEPCOMEN|sdActif|sdEvenDate|sdEven|sdNomPrenomDir|sdYP|sdPctAct|sdSirenAct|sdNomAct".EOL);
if ($presta<>3.2 && $presta<>3.3)
fwrite($fp, "adSIREN|adNIC|adREF|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adVILLE|adSE|SIREN|NIC|L1_NOMEN|L2_COMP|L3_CADR|L4_VOIE|L5_DISP|L6_POST|L7_ETRG|ZR1|RPET|DEPET|ARRONET|CTONET|COMET|LIBCOM|DU|TU|UU|CODPOS|ZR2|TCD|ZEMET|CODEVOIE|NUMVOIE|INDREP|TYPVOIE|LIBVOIE|ENSEIGNE|APET700|ZR3|SIEGE|TEFET|EFETCENT|ORIGINE|DCRET|MMINTRET|ACTIVNAT|LIEUACT|ACTISURF|SAISONAT|MODET|DAPET|DEFET|EXPLET|PRODPART|AUXILT|EAEANT|EAEAPET|EAESEC1T|EAESEC2T|NOMEN|SIGLE|CIVILITE|CJ|TEFEN|EFENCENT|APEN700|ZR4|APRM|TCA|RECME|DAPEN|DEFEN|DCREN|MMINTREN|MONOACT|MODEN|EXPLEN|EAEANN|EAEAPEN|EAESEC1N|EAESEC2N|EAESEC3N|EAESEC4N|NBETEXPL|TCAEXP|REGIMP|MONOREG|RPEN|DEPCOMEN|sdActif|sdEvenDate|sdEven|sdNomPrenomDir|sdYP|sdPctAct|sdSirenAct|sdNomAct|sdTel|LATITUDE|LONGITUDE|PRECIS".EOL);
//exporteAdecco('32392385400059','ref',$fp, $presta,'','','','','');
//die();
@ -189,7 +208,7 @@ if ($presta==1) {
"$where $strReprise ORDER BY adSIREN ASC, adNIC ASC", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $tabTmp['RAISON_SOCIALE'], $tabTmp['ADRESSE'], $tabTmp['FILLER'], $tabTmp['CP'], $tabTmp['VILLE'], $tabTmp['ADSE']);
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS, $tabTmp['RAISON_SOCIALE'], $tabTmp['ADRESSE'], $tabTmp['FILLER'], $tabTmp['CP'], $tabTmp['VILLE'], $tabTmp['ADSE']);
}
/** @toto Presta 1 :
- enregistrer chaque ligne fourni en bdd
@ -207,62 +226,119 @@ if ($presta==1) {
$nbRows=count($tabSiret);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL;
/** Les Créations d'étab>10 **/
if ($eff69) $where10='AND (insEFENCENT>5 || insTEFET>2)';
else $where10='AND (insEFENCENT>9 || insTEFET>10)';
/*if ($eff69) $where10='AND (insEFENCENT>5 || insTEFET>2)';
elseif($nafAMS) $where10="AND (insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999
AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')";
else $where10='AND (insEFENCENT>9 || insTEFET>10)';*/
$where10="AND (insEFENCENT>5 OR insTEFET>2 OR ((insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999
AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND insDATEVE>=$dateDebut ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND (insDCRET BETWEEN $dateDebIniYmd AND $dateFinYmd OR insDCREN BETWEEN $dateDebYmd AND $dateFinYmd)";
$nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret",
"insCJ NOT BETWEEN 3000 AND 3999 AND insAPET700 NOT IN ('6820B','7020Z') AND
(insEVE IN ('110','120','125','130','145','M0C','M0R') OR
insEVE IN ('510','520') AND insTYPETAB IN(9,11,21,31)) $strDateDeb /*AND
(insDATEVE>=20111201 OR insDCRET>=20111200)*/ $where10 /*AND idFlux>='2011-12-01' AND idFlux<='2012-05-01'*/ $strReprise GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
(insEVE IN ('110','120','125','130','145','M0C','M0R','CE','CS','CTE','CTS','RE','RS','CC','I') OR
insEVE IN ('510','520') AND insTYPETAB IN(9,11,21,31)) $strDateDeb $where10 $strReprise
GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
if (!in_array($tabTmp['siret'], $tabSiret))
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69);
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS);
}
} elseif ($presta==3.2) {
/** Toutes les Fermetures **/
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND insDATEVE>=$dateDebut ";
else die('Préciser une date de début valide !'.EOL);
$nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE",
"(insEVE IN ('400','410','430','435','795','810','M0F') OR
insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
$iDb->query('SELECT CONCAT(siren,nic) AS siret FROM tmp.adecco_fermetures;');
echo mysql_error().EOL;
if (mysql_errno()>0) die();
$tabSiret=array();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$tabSiret[]=$tabTmp['siret'];
}
$tabSiret=array_unique($tabSiret);
$nbRows=count($tabSiret);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta (fermetures déjà communiquées)...".EOL;
//$dateDebYmd=20120701;
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND insDATEVE<=$dateFinYmd AND dateInsert>=$dateDebYmd ";
/* 'iCE' =>'Création établissement',
'iCS' =>'Création siège',
'iCTE' =>'Création établissement (transfert)',
'iCTS' =>'Création siège (transfert)',
'iRE' =>'Réactivation établissement',
'iRS' =>'Réactivation siège',
'iCC' =>'Création par le calage',
'iI' =>'Entrée dans le champ de la diffusion commerciale',
*/
else die('Préciser une date de début valide !'.EOL);
$nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE",
"(insEVE IN ('400','410','430','435','795','810','M0F','SU','SE','SS','STE','STS','RI','SC','O') OR
insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true);
echo "SELECT '' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE
FROM insee.insee_even
WHERE (insEVE IN ('400','410','430','435','795','810','M0F','SU','SE','SS','STE','STS','RI','SC','O') OR
insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC".EOL;
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta (fermetures à transmettre)...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
//die();
fwrite($fp, "adSIREN|adNIC|sdActif|sdEvenDate|sdEven".EOL);
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$even='';
switch ($tabTmp['insEVE']) {
case '400': $even.='suppression du doublon '; break;
case '410': $even.='cessation juridique de l\'entreprise '; break;
/*'i*/
case '400': $even.='suppression du doublon '; break;
case 'SU':
case '410': $even.='cessation juridique de l\'entreprise '; break;
case '420':
case '425': $even.='cessation économique de l\'entreprise '; break;
case '425': $even.='cessation économique de l\'entreprise '; break;
case 'M0F':
case '430':
case '435': $even.='fermeture de l\'etablissement '; break;
case 'SE':
case 'SC':
case '435': $even.='fermeture de l\'etablissement '; break;
case '510':
case 'STE':
case 'STS':
case '530': $even.='fermeture de l\'etablissement dans le cadre d\'un transfert '; break;
case '620':
case '621':
case '650': $even.='cessation economique de l\'etablissement '; break;
case '795': $even.='personne radiee a sa demande de SIRENE diffusion '; break;
case '810': $even.='suppression du siren suite à refus RCS'; break;
default: $even.=' '; break;
case '650': $even.='cessation economique de l\'etablissement '; break;
case '795': $even.='personne radiee a sa demande de SIRENE diffusion '; break;
case '810': $even.='suppression du siren suite à refus RCS'; break;
case 'SS': $even.='Fermeture ou désactivation du siège'; break;
case 'RI': $even.='Refus d\'immatriculation au RCS'; break;
case 'O': $even.='Sortie du champ de la diffusion commerciale'; break;
default: $even.=' '; break;
}
$strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC'].'|0|'.$tabTmp['insDATEVE'].'|'.trim($even).EOL;
if ($fp) fwrite($fp, str_replace(';',' ',$strOut));
if ($fp) {
if (!in_array($tabTmp['SIREN'].$tabTmp['NIC'], $tabSiret)) {
fwrite($fp, str_replace(';',' ',$strOut));
$iDb3->insert('adecco_fermetures', array( 'siren'=>$tabTmp['SIREN'],
'nic'=>$tabTmp['NIC'],
'evenDate'=>$tabTmp['insDATEVE'],
'even'=>trim($even),
'presta'=>$presta,
'prestaDate'=>$date));
}
}
echo $strOut;
}
} elseif ($presta==3.3) {
if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise ";
/** Toutes les Liens Groupe des étabs > 9 salariés **/
if ($eff69) $where10='AND eff_etab>5';
else $where10='AND eff_etab>9';
/* if ($eff69) $where10='AND eff_etab>5';
elseif($nafAMS) $where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
else $where10='AND eff_etab>9';*/
$where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))";
$nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren,nic) AS siret, sirenGrp",
"cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 AND sirenGrp>1000 $strReprise ORDER BY siren, nic", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
@ -322,31 +398,68 @@ if ($presta==1) {
$nbRows=count($tabSiret);*/
//echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL;
echo date('Y/m/d - H:i:s') ." - Préparation des siret Adecco uniques à exclure en Presta $presta...".EOL;
if ($eff69) $where10='AND (eff_etab>5 OR teff_etab>2) AND (eff_etab<10 OR teff_etab<11)';
/*if ($eff69) $where10='AND (eff_etab>5 OR teff_etab>2) AND (eff_etab<10 OR teff_etab<11)';
elseif($nafAMS) $where10="AND eff_etab>=0 AND eff_etab<3 AND teff_etab IS NOT NULL AND presentRcs=1
AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')";
else $where10='AND (eff_etab>9 OR teff_etab>10)';
*/
$where10="AND (eff_etab>5 OR ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B'))";
if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise ";
$nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren, nic) AS siret",
"cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 AND dateCrea_etab<=20120801
"cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 /*AND dateCrea_etab<=20120801*/
AND concat(siren, nic) NOT IN(SELECT siret FROM tmp.adecco_siret) $strReprise ORDER BY siret", true, MYSQL_ASSOC, true);
// $strReprise ORDER BY siret", true, MYSQL_ASSOC, true);
// "siret NOT IN(SELECT CONCAT(SIREN,NIC) AS siret FROM tmp.adecco_echantillon)", true, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
//die();
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
if (!in_array($tabTmp['siret'], $tabSiret)) {
//echo 'siret='.$tabTmp['siret'].EOL;
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69);
exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS);
}
}
$iDb->query('DROP table adecco_siret;');
}
echo date('Y/m/d - H:i:s') ." - Fin de la prestation Adecco en Presta $presta.".EOL;
fclose($fp);
if (($presta==3.1 || $presta==3.2 || $presta==3.3) && $mailTo) {
$tabAttached=array($nomFichier);
$messageInfo="Bonjour,
Veuillez trouver ci-joint le fichier Scores & Décisions relatifs à votre prestation contractuelle $presta.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
@sendMail('production@scores-decisions.com', $mailTo, "Prestation Adecco S&D $presta", $messageInfo, '', $tabAttached);
}
die();
function exporteAdecco($siret,$ref,$fp=false, $presta, $eff69=false, $RAISON_SOCIALE='', $ADRESSE='', $FILLER='', $CP='', $VILLE='', $ADSE='') {
function exporteAdecco($siret,$ref,$fp=false, $presta, $eff69=false, $nafAMS=false, $RAISON_SOCIALE='', $ADRESSE='', $FILLER='', $CP='', $VILLE='', $ADSE='') {
global $iDb2,$iDb3,$iLiens,$iBilan,$iInsee,$date;
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
@ -363,6 +476,7 @@ NULL AS RECME, DAPEN, DEFEN, DCREN,NULL AS MMINTREN, MONOACT, MODEN, EXPLEN, NUL
NULL AS EAESEC1N, NULL AS EAESEC2N, NULL AS EAESEC3N, NULL AS EAESEC4N, NBETAB AS nbETEXPL, TCAEXP, REGIMP,
MONOREG, NULL AS RPEN,NULL AS DEPCOMEN, ACTIF AS sdActif";/*EFF_ET mediumint(7) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
TEFF_ET*/
//$tel
$strNotice="
insSIREN AS SIREN, insNIC AS NIC, insL4_VOIE AS L4_VOIE, insL6_POST AS L6_POST,
insRPET AS RPET, insDEPCOMEN AS DEPCOMEN, insRPEN AS RPEN, insARRONET AS ARRONET, insCTONET AS CTONET, insTCD AS TCD,
@ -427,6 +541,18 @@ insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAES
} else {
$tmp=$ret[0];
$actif=$tmp['sdActif']*1;
/** Geocodage si NAF = 7820Z, 7830Z et 7810Z **/
$lat=$lon=$precis='';
if ($tmp['apet700']=='7810Z' ||
$tmp['apet700']=='7820Z' ||
$tmp['apet700']=='7830Z') {
$mMap=new MMap(true);
$mMap->geoCodeAdresse($tmp['NUMVOIE'], $tmp['INDREP'], $tmp['TYPVOIE'], $tmp['TYPVOIE'], $tmp['LIBVOIE'], $tmp['codpos'], $tmp['libcom'], 'France', trim($tmp['insdepet'].$tmp['comet'].$tmp['CODEVOIE']));
$lat=$mMap->latitudeDec;
$lon=$mMap->longitudeDec;
$precis=$mMap->precision;
}
$nouveauSiret='';
$tabAncienSiret=array();
$nbDem=0;
@ -539,8 +665,10 @@ insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAES
}
if ($presta==2) {
if ($eff69 && (($effet<6 && $effetTR<3) || $actif==0)) return;
elseif (!$eff69 && ($effet<10 || $actif==0)) return;
/* if ($eff69 && (($effet<6 && $effetTR<3) || $actif==0)) return;
elseif ($nafAMS && ($effet>5 || $actif==0)) return;
elseif (!$eff69 && !$nafAMS && ($effet<10 || $actif==0)) return;*/
if (($effet<6 && $effetTR<3) || $actif==0) return;
}
// Dirigeant
@ -566,7 +694,14 @@ insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAES
if ($sirenAct<=1000) $sirenAct='';
}
}
$strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP|$pctAct|$sirenAct|".str_replace('|',' ',$nomAct).EOL;
$ret2=$iDb2->select('jo.telephonie', 'telephone', "siren=$siren AND nic=$nic AND typeTel='tel' AND actif=1 AND dateSuppr=0 ORDER BY dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC);
$tel=@$ret2[0]['telephone'];
//$strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP|$pctAct|$sirenAct|".str_replace('|',' ',$nomAct)."|$tel".EOL;
// Suppression de la livraison des liens a Adecco le 5/03/2015
$strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP||||$tel|$lat|$lon|$precis".EOL;
//if ($presta==1) {
$iDb3->insert('adecco_out', array( 'ref'=>$ref,
'siren'=>$siren,

503
batch/diffusionRRG.php Normal file
View File

@ -0,0 +1,503 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMAmabis.php');
include_once(INCLUDE_PATH.'partenaires/classMRnvp.php');
include_once(FWK_PATH.'mail/sendMail.php');
$mailSuivi=true;
$dateJourCmd=false;
$fileInput=$siretInput=false;
$doLockSql=false;
$tailleRNVP=38;
$tabSiret=array();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Génère le fichier quotidien de diffusion RRG.
Options :
-i Ne pas exécuter en réel (pas de mail ni production de fichiers...)
-l Poser le verrou afin d'indiquer que le traitement SQL tourne
-d:SSAA-MM-JJ Produire le fichier du SSAA-MM-JJ
-s SIREN ou SIRET Ajouter les SIREN ou SIRET donnés en ligne de commande
-f:filename.csv Ajouter les SIREN ou SIRET donnés dans le fichier filename.csv
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'i':
$mailSuivi=false;
break;
case 'd':
$dateJourCmd=substr($argv[$i],3,strlen($argv[$i])-3);
break;
case 'l':
$doLockSql=true;
break;
case 'f':
$fileInput=substr($argv[$i],3,strlen($argv[$i])-3);
break;
case 's':
$siretInput=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} elseif ($argv[$i]>10000 && $siretInput) $tabSiret[]=$argv[$i];
}
}
//$iAmabis=new MAmabis();
$iRnvp=new MRnvp();
$iInsee=new MInsee();
$iRncs=new MRncs();
$iDb=new WDb('tmp');
$iDb2=new WDb('tmp');
$scriptName=basename($argv[0]);
if (count($tabSiret)>0 || $fileInput) {
if ($fileInput) $tabSiret=file($fileInput);
// Ajout de la demande de MAJ du siret
/** @todo
* - MEttre un verrou afin de pouvoir vérifier si le traitement du jour n'est pas en cours (attention à l'étape SQL)
* - Lancer les commandes SQL insert into ...
* - Créer une source MANUEL
*/
if (file_exists(REP_TEMP.basename($scriptName).'.lock')) {
//date('Ymd-His')."$fichier;Traitement PHP du $dateJourSql;$fileName;Export de $nbEtab établissements".EOL);
// $tab2Tmp=explode(';',file_get_contents(REP_TEMP.basename($fichier).'.lock'));
//$date2Tmp=WDate::DateT('YmdHis', 'd/m/Y H:i:s',$tab2Tmp[1]);
// $nbL2Tmp=$tab2Tmp[2];
// $message="Le fichier $fichier est en cours de chargement depuis le $date2Tmp ($nbL2Tmp lignes)...";
echo date('Y/m/d - H:i:s')." - Le traitement RRG est en cours, patienter et recommencer plus tard !!!".EOL;
die();
}
foreach ($tabSiret as $iSiret=>$siret) {
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
if ($nic>9) $strNic=" AND NIC=$nic ";
$strPre='';
$ret=$iDb->select('tmp.diffusionRRG','dateSurrfa,dateSurrfa*1 AS dateSurrfaYmd, dateFlux,srcFlux,dateInsert,dateUpdate', "SIREN=$siren $strNic ORDER BY dateSurrfa DESC LIMIT 0,1", false, MYSQL_ASSOC);
if (@$ret[0]['dateSurrfaYmd']*1>0) $strPre=' (dernier envoi le '.$ret[0]['dateSurrfa'].')';
$iDb->query("INSERT INTO tmp.diffusionRRG SELECT NULL as idLine, id, SIREN, NIC, 'SED' AS source, TRIM(REPLACE(REPLACE(IF(NOMEN_LONG='',NOM,NOMEN_LONG),'/',' '),'*',' ')) AS rs, insL1_NOMEN AS adrL1, 'N' AS adrL1t, SIGLE, ENSEIGNE AS ens, insL2_COMP AS adrL2, '' AS adrL2t, IF (SIEGE=0,'SEC','PRIN') AS statut, IF (ACTIF=1,'','CESSE') AS situ, '' AS maj, 0 AS dateHexavia, '' AS codVoieHexavia, CONCAT (ADR_DEP, ADR_COM) AS codeInseeCom, '' AS libInseeCom, '' AS cpCom, insL3_CADR AS adrL3, ADR_NUMVOIE AS adrNum, ADR_BTQ AS adrBtq, '' AS adrNum2, '' AS adrBtq2, insL4_VOIE AS adrLibVoie, insL5_DISP AS adrDisp, insL5_DISP AS adrComp, insL6_POST AS adrL6, DCRET AS dateCrea, 'J' AS dateCreaPre, CJ AS fj, '' AS fjLib, APE_ENT AS nafEn, '' AS nafEnLib, APE_ETAB AS nafEt, '' AS nafEtLib, TEL, IF(CIVILITE=1,'M',IF(CIVILITE=2,'MME',CIVILITE)) AS dirCiv, DIR_IDEN AS dirNom, '' AS dirPrenom, '' AS dirFctCode, '' AS dirFctLib, '' AS bilanMil, '' AS bilanFL, EFF_ENT AS effEn, EFF_ET AS effEt, 0 AS nicSiege, '' AS even, '' AS evenLib, '' AS tva, '' AS email, 0 AS siretPre, 0 AS siretSuc, ADDDATE(NOW(), INTERVAL 1 DAY) AS dateSurrfa, 0 AS dateFlux, 'MANUEL' AS srcFlux, dateUpdate AS dateInsert, 0 as dateUpdate FROM insee.identite WHERE SIREN=$siren $strNic");
if (!mysql_errno())
echo date('Y/m/d - H:i:s')." - Siret $siren $nic ajouté avec succès au flux de demain".$strPre.EOL;
else
echo date('Y/m/d - H:i:s')." - Siret $siren $nic non ajouté car erreur SQL N°".mysql_errno().' : '.mysql_error().' !'.EOL;
}
die();
}
if (!$doLockSql) {
$message=date('Y/m/d - H:i:s') ." - Début du traitement RRG...".EOL;
echo date('Y/m/d - H:i:s') ." - Début du traitement RRG...".EOL;
}
/*$iDb=new WDb('sdv1');
$tabRRG=array( 'client' => 'rrg',
'name' => 'HEXAVIA',
'nbLines' => 11948, // Nombre de ligne
'dateBegin' => 20150105200503, // Date de début de traitement au format YmdHis
'dateEnd' => 20150105203052, // Date de fin de traitement au format YmdHis
'fileOut' => 'surrfa_20150105.csv', // Nom du fichier sans le chemin
'depotType' => 'FTP',
'depotDate' => '0000-00-00 00:00:00');
$iDb->insert('flux_fileout', $tabRRG, false);
*/
/*
$nbEtab=$iDb->query("# On efface tout depuis l'init de la presta RRG
DELETE FROM tmp.diffusionRRG WHERE id>0;
# On stock la dernière date de MAJ
SET @lastDateMaj := (SELECT MAX(dateUpdate) FROM tmp.diffusionRRG);
# Ajout des établissements modifiés
INSERT INTO tmp.diffusionRRG SELECT id, SIREN, NIC, 'INS' AS source, TRIM(REPLACE(REPLACE(NOMEN_LONG,'/',' '),'*',' ')) AS rs, insL1_NOMEN AS adrL1, 'N' AS adrL1t, SIGLE, ENSEIGNE AS ens, insL2_COMP AS adrL2, '' AS adrL2t, IF (SIEGE=0,'SEC','PRIN') AS statut, IF (ACTIF=1,'','CESSE') AS situ, '' AS maj, 0 AS dateHexavia, '' AS codVoieHexavia, CONCAT (ADR_DEP, ADR_COM) AS codeInseeCom, '' AS libInseeCom, '' AS cpCom, insL3_CADR AS adrL3, ADR_NUMVOIE AS adrNum, ADR_BTQ AS adrBtq, '' AS adrNum2, '' AS adrBtq2, insL4_VOIE AS adrLibVoie, insL5_DISP AS adrDisp, insL5_DISP AS adrComp, insL6_POST AS adrL6, DCRET AS dateCrea, 'J' AS dateCreaPre, CJ AS fj, '' AS fjLib, APE_ENT AS nafEn, '' AS nafEnLib, APE_ETAB AS nafEt, '' AS nafEtLib, TEL, IF(CIVILITE=0,'',IF(CIVILITE=1,'M','MME')) AS dirCiv, DIR_IDEN AS dirNom, '' AS dirPrenom, '' AS dirFctCode, '' AS dirFctLib, '' AS bilanMil, '' AS bilanFL, EFF_ENT AS effEn, EFF_ET AS effEt, 0 AS nicSiege, '' AS even, '' AS evenLib, '' AS tva, '' AS email, 0 AS siretPre, 0 AS siretSuc, 0 AS idFlux, dateUpdate FROM insee.identite WHERE dateUpdate>=@lastDateMaj ;
# Ajout du code mouvement
UPDATE tmp.diffusionRRG, insee.insee_even
SET diffusionRRG.maj='C'
WHERE diffusionRRG.maj='' AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj AND insee_even.insVMAJ='C';
UPDATE tmp.diffusionRRG, insee.insee_even
SET diffusionRRG.maj='S'
WHERE diffusionRRG.maj='' AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj AND insee_even.insVMAJ='E';
UPDATE tmp.diffusionRRG
SET maj='M'
WHERE maj='';
# Ajout du NIC siège
UPDATE tmp.diffusionRRG, insee.insee_even
SET diffusionRRG.nicSiege=insee_even.insNICSIEGE
WHERE diffusionRRG.nicSiege=0 AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj;
# Ajout des radiations
UPDATE tmp.diffusionRRG, jo.rncs_entrep
SET diffusionRRG.situ='RADIE'
WHERE diffusionRRG.situ='CESSE' AND diffusionRRG.siren=rncs_entrep.siren AND rncs_entrep.actif=0 AND diffusionRRG.dateUpdate>=@lastDateMaj;
# Ajout des libellés FJ et NAF
UPDATE tmp.diffusionRRG, jo.tabFJur
SET diffusionRRG.fjLib=tabFJur.libelle
WHERE diffusionRRG.fj=tabFJur.code AND diffusionRRG.fjLib='';
UPDATE tmp.diffusionRRG, jo.tabNaf5
SET diffusionRRG.nafEnLib=tabNaf5.libNaf5
WHERE diffusionRRG.nafEn=tabNaf5.codNaf5 AND diffusionRRG.nafEnLib='';
UPDATE tmp.diffusionRRG, jo.tabNaf5
SET diffusionRRG.nafEtLib=tabNaf5.libNaf5
WHERE diffusionRRG.nafEt=tabNaf5.codNaf5 AND diffusionRRG.nafEtLib='';
# Ajout des zones Hexavia
SET @lastDateHexa := (SELECT MAX(dateMaj38) FROM villes.hexaviaVilles);
UPDATE tmp.diffusionRRG
SET diffusionRRG.dateHexavia=@lastDateHexa
WHERE diffusionRRG.dateHexavia=0;
UPDATE tmp.diffusionRRG, villes.rnvpSources
SET diffusionRRG.codVoieHexavia=rnvpSources.IdHexavia,
diffusionRRG.libInseeCom=rnvpSources.Ville,
diffusionRRG.cpCom=rnvpSources.Cp
WHERE diffusionRRG.codVoieHexavia='' AND diffusionRRG.id=rnvpSources.source_id AND rnvpSources.source=2;
# Ajout du CA
UPDATE tmp.diffusionRRG, jo.etablissements_act
SET diffusionRRG.bilanMil=etablissements_act.bilAnnee,
diffusionRRG.bilanFL=etablissements_act.bilFL
WHERE diffusionRRG.bilanMil='' AND diffusionRRG.siren=etablissements_act.siren;
*/
$dateDeb=date('Y-m-d H:i:s');
if ($dateJourCmd) {
$dateJourPhp=str_replace('-','',$dateJourCmd);
$dateJourSql=WDate::dateT('Ymd','Y-m-d',$dateJourPhp);
if (!$doLockSql) echo date('Y/m/d - H:i:s') ." - Recherche des établissements a exporter pour le : $dateJourSql...".EOL;
} else {
$dateJourSql=substr($dateDeb,0,10);
$dateJourPhp=str_replace('-','',$dateJourSql);
if (!$doLockSql) {
echo date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL;
echo date('Y/m/d - H:i:s') ." - Recherche des établissements a exporter du jour : $dateJourSql...".EOL;
}
}
$fileName="surrfa_$dateJourPhp.csv";
$anneeBilanVieux=substr($dateJourPhp,0,4)-3;
$fpT=fopen(REP_TEMP.basename($scriptName).'.lock', 'w');
if ($doLockSql) {
fwrite($fpT, date('Ymd-His').";$scriptName;Traitement RRG SQL du $dateJourSql;$fileName".EOL);
fclose($fpT);
die();
}
//$fileName="surrfa_20141231a.csv"; // Créations fait le 11/02/2015
//$fileName="surrfa_20141230b.csv"; // Radiations fait le ???
$fpOut=fopen(REP_TEMP.$fileName,'w');
//Il faudra insérer dans la base de données (sdv1.flux_fileout) lorsque le fichier est généré, les informations suivantes
$nbEtab=$iDb->select('tmp.diffusionRRG','idLine, id, siren, nic, CONCAT(siren, nic) AS siret, source, rs, adrL1, adrL1t, sigle, ens, adrL2, adrL2t, statut, situ, maj, dateHexavia, codVoieHexavia, codeInseeCom, libInseeCom, cpCom, adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, dateCrea, dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, dateFlux, srcFlux, dateInsert, dateUpdate',"siren>0 AND dateSurrfa='$dateJourSql'", false, MYSQL_ASSOC, true);
//$nbEtab=$iDb->select('tmp.diffusionRRG','idLine, id, siren, nic, CONCAT(siren, nic) AS siret, source, rs, adrL1, adrL1t, sigle, ens, adrL2, adrL2t, statut, situ, maj, dateHexavia, codVoieHexavia, codeInseeCom, libInseeCom, cpCom, adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, dateCrea, dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, dateFlux, srcFlux, dateInsert, dateUpdate', "siren>0 AND dateSurrfa='2014-12-30'", false, MYSQL_ASSOC, true);
echo mysql_error().EOL;
echo date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL;
$message.=date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL;
fwrite($fpT, date('Ymd-His').";$scriptName;Traitement RRG PHP du $dateJourSql;$fileName;Export de $nbEtab établissements".EOL);
fclose($fpT);
$iL=0;
$accesDist=false;
$nbCpVide76310=$nbCpVide=0;
while($tabId=$iDb->fetch(MYSQL_ASSOC)) {
$iL++;
$idLine=$tabId['idLine'];
$siren=$tabId['siren'];
$nic=$tabId['nic'];
$iTva=@new MTva($siren, $accesDist);
$vatNumber=$iTva->vatNumber;
$nomLong=$tabId['rs'];
$iTel=new MTel($accesDist);
$tmp=$iTel->getTel($siren, $nic, true);
//print_r($tmp);
$tel=$mail='';
foreach ($tmp as $tTel) {
if ($tTel['typeTel']=='tel' && $tTel['actif']==1 && $tel=='') $tel=$tTel['telephone'];
if ($tTel['typeTel']=='mail' && $tTel['actif']==1 && $mail=='') $mail=$tTel['infoTel'];
}
// , , , , , adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, , dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, idFlux, dateUpdate
$hexaviaMat=$tabId['codVoieHexavia'];
if ($hexaviaMat<0) $hexaviaMat='';
$tabRnvp=@$iRnvp->normaliseAdresse($nomLong, $tabId['adrL2'], $tabId['adrL3'], $tabId['adrLibVoie'], $tabId['adrDisp'], $tabId['adrL6'], '', $tailleRNVP);
if ($hexaviaMat*1==0)
$hexaviaMat=@$tabRnvp['HexaViaMat'];
$L1tr=$L2tr='N';
if ($hexaviaMat*1>0 && @$tabRnvp['HexaViaMat']*1>0) {
$hexaviaVoie=@$tabRnvp['HexaViaVoie'];
$cp=@substr($tabRnvp['L6'],0,5);
$achPost=@trim(preg_replace('/^\d+/','', $tabRnvp['L6']));
$L1=@$tabRnvp['L1'];
if (@$tabRnvp['L1_tr']==1) $L1tr='O';
//$L1=$iRnvp->normaliseRS($nomLong, $tailleRNVP);
//if ($iRnvp->nomTronque==1) $L1tr='O';
$L2=@$tabRnvp['L2'];
if (@$tabRnvp['L2_tr']==1) $L2tr='O';
$L3=@trim($tabRnvp['L3']);
$L5=@trim($tabRnvp['L5']);
$codCommune=@$tabRnvp['HexaviaComCod'];
$libCommune=@$tabRnvp['HexaviaComLib'];
} else {
$hexaviaVoie=@trim(preg_replace('/^\d+/','', $tabId['adrLibVoie']));
$cp=@substr($tabId['adrL6'],0,5);
$achPost=trim(preg_replace('/^\d+/','', $tabId['adrL6']));
if ($cp<1000) {
$cp=$iRnvp->getCPCommune($tabId['codeInseeCom']);
$achPost=trim(preg_replace('/^\d+/','', $tabId['adrL6']));
$nbCpVide++;
if ($cp<1000) {
$tabRnvp=$iRnvp->normaliseAdresse76310($nomLong, $tabId['adrL2'], $tabId['adrL3'], $tabId['adrLibVoie'], $tabId['adrDisp'], $tabId['adrL6']);
// print_r($tabRnvp);
$cp=substr($tabRnvp['L6'],0,5);
$achPost=trim(preg_replace('/^\d+/','', $tabRnvp['L6']));
$nbCpVide76310++;
//die();
}
echo "$iL/$nbEtab: $vatNumber $nic $L1\t$cp $achPost\t $nbCpVide76310 appels/$nbCpVide CP vides".EOL;
}
$L1=$iRnvp->normaliseRS($nomLong, $tailleRNVP);
if ($iRnvp->nomTronque==1) $L1tr='O';
$L2=$iRnvp->normaliseRS($tabId['adrL2'], $tailleRNVP);
if ($iRnvp->nomTronque==1) $L2tr='O';
$L3=trim($tabId['adrL3']);
$L5=trim($tabId['adrDisp']);
$codCommune=$tabId['codeInseeCom'];// Tester 97x
$libCommune=$iRnvp->getLibCommune($codCommune, $tailleRNVP);
}
//adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp
$adrNum1=preg_replace('/^0+/','',$tabId['adrNum']);
$adrBtq1=$tabId['adrBtq'];
$adrNum2=$adrBtq2='';
if ($adrNum1*1>0) {
$adrNum=$adrNum1*1;
if (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrL3']), $matches)) {
$adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',));
$adrBtq2='';
} elseif (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrDisp']), $matches)) {
$adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',));
$adrBtq2='';
} elseif (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrL2']), $matches)) {
$adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',));
$adrBtq2='';
}
}
$tabAssoc=$iInsee->getSiretAssoc($siren, $nic);
//print_r($tabAssoc);
$tabDirs=$iRncs->getDirigeantsPrin($siren, 1);
if (count($tabDirs)>0) {
$civ=$tabDirs[0]['Civilite'];
$dir1Nom=$tabDirs[0]['Nom'];
$dir1Prenom=$tabDirs[0]['Prenom'];
$dir1Code=$tabDirs[0]['Fonction'];
$dir1Titre=$tabDirs[0]['Titre'];
} elseif ($tabId['fj']<2000) {
$civ=$tabId['dirCiv'];
$dir1Nom=$tabId['dirNom'];
$dir1Prenom=$tabId['dirPrenom'];
$dir1Code=1050;
$dir1Titre='Personne Physique';
}
$dateHexavia=initstr(preg_replace('/^00/','01',WDate::dateT('Y-m-d','dmY',$tabId['dateHexavia'])), 8, '0', ALIGN_RIGHT);
$dateCreation=initstr(WDate::dateT('Y-m-d','dmY',preg_replace('/00$/','01',$tabId['dateCrea'])), 8, '0', ALIGN_RIGHT);
if (!$dateJourCmd) {
if ($tabId['bilanMil']<=$anneeBilanVieux) {
// Aller vérifier s'il n'y a pas un bilan plus récent en base
$tmpBilan=$iDb2->select('jo.bilans_postes','FL, YEAR(dateExercice) AS annee', "siren=$siren AND consolide=0 ORDER BY dateExercice DESC LIMIT 0,1", false, MYSQL_ASSOC);
$tabTmpBil=$tmpBilan[0];
$bilAnnee=$tabTmpBil['annee'];
$bilFL=$tabTmpBil['FL'];
} else {
$bilAnnee=$tabId['bilanMil'];
$bilFL=$tabId['bilanFL'];
}
/*
Rajouter l'estimation de CA dans les cas suivants :
1a. Quand il n'y a pas de bilan
OU 1b. Quand le bilan est trop vieux pour RRG soit (plus de 36 mois)
De plus, on ne donne de CA Estimé que :
2a. Si le NAF est valide (5 positions, différent de vide et de 0000Z)
2b. Si l'effectif est > à 0 OU (effectif<1 ET CJ=1xxx)
2c. Si la date de création >= date de clôture estimée (dernière jour de l'année courante - 2 ans)
Attention, pour les créations récentes (nouvelle demande de RRG) :
3a. Si le NAF est valide (5 positions, différent de vide et de 0000Z)
3b. Si l'effectif est > à 0 OU (effectif<1 ET CJ=1xxx)
3c. Si la date de création EST dans l'année en cours ou dans l'année précédente et pas de bilans REEL
==> Alors donner le CA Estimé qui est donc "prévisionnel" au 31/12 de l'année en cours
*/
} else {
$bilAnnee=$tabId['bilanMil'];
$bilFL=$tabId['bilanFL'];
}
$strOut=initstr($tabId['id']*1, 10 , '0', ALIGN_RIGHT) .'$'. // Identification ORT de l'établissement !
$tabId['siret'].'$'. // Numéro de SIRET
$tabId['source'].'$'. // Source de l'information (INS ou S&D)
trim(str_replace('$',' ',$tabId['rs'])).'$'. // Raison sociale Officielle de l'entreprise
$L1.'$'. // Raison sociale Postale de l'entreprise !
$L1tr.'$'. // Indicateur si la RS postale a été tronquée !
trim(str_replace('$',' ',$tabId['sigle'])).'$'. // Sigle de l'entreprise
trim(str_replace('$',' ',$tabId['ens'])).'$'. // Enseigne officielle de l'établissement
$L2.'$'. // Enseigne postale de l'établissement !
$L2tr.'$'. // Indicateur si l'enseigne postale a été tronquée !
$tabId['statut'].'$'. // Statut de l'établissement
$tabId['situ'].'$'. // Code situation de l'entreprise
$tabId['maj'].'$'. // Flag de Mise à jour de l'établissement ???
$dateHexavia.'$'. // Date d'actualisation du fichier HEXAVIA
$hexaviaMat.'$'. // code voie HEXAVIA
$codCommune.'$'. // Code commune INSEE
$libCommune.'$'. // Libellé de la commune INSEE
$cp.'$'. // Code postal
$L3.'$'. // Complément d'adresse
$adrNum1.'$'. // Numéro dans la voie
$adrBtq1.'$'. // Lettre dans la voie
$adrNum2.'$'. // Numéro dans la voie 2
$adrBtq2.'$'. // Lettre dans la voie 2
$hexaviaVoie.'$'. // Libellé dans la voie
$L5.'$'. // Distribution postale
$L5.'$'. // Complément postal
$achPost.'$'. // Acheminement postal (spécificité RRG : Pas de CP)
$dateCreation.'$'. // Date de création de l'entreprise
'J'.'$'. // Précision de la date de création
$tabId['fj'].'$'. // Code forme juridique
$tabId['fjLib'].'$'. // Libellé forme juridique
$tabId['nafEn'].'$'. // Code NAF Entreprise
$tabId['nafEnLib'].'$'. // Libellé du NAF Entreprise
$tabId['nafEt'].'$'. // Code NAF Etablissement
$tabId['nafEtLib'].'$'. // Libellé du NAF Etablissement
$tel.'$'. // Numéro de téléphone
$civ.'$'. // Civilité du principal dirigeant
$dir1Nom.'$'. // Nom du principal dirigeant
$dir1Prenom.'$'. // Prénom du principal dirigeant
$dir1Code.'$'. // Code Fonction du principal dirigeant ???
$dir1Titre.'$'. // Libellé de la fonction ???
initstr($bilAnnee, 4, '0',ALIGN_RIGHT).'$'. // Année du dernier exercice
$bilFL.'$'. // CA du dernier exercice
$tabId['effEn'].'$'. // Effectif de l'entreprise
$tabId['effEt'].'$'. // Effectif de l'établissement
initstr($tabId['nicSiege']*1, 5, '0', ALIGN_RIGHT).'$'. // Numéro NIC de l'établissement principal
$tabId['even'].'$'. // Code jugement ???
$tabId['evenLib'].'$'. // Libellé code Jugement ???
$vatNumber.'$'. // N° TVA intracommunautaire
$mail.'$'. // Adresse mail de l'entreprise
str_replace('00000000000000','',
initstr(@$tabAssoc['pre']['siren']*1, 9 , '0', ALIGN_RIGHT) .
initstr(@$tabAssoc['pre']['nic']*1, 5 , '0', ALIGN_RIGHT)) .'$'.
str_replace('00000000000000','',
initstr(@$tabAssoc['suc']['siren']*1, 9 , '0', ALIGN_RIGHT) .
initstr(@$tabAssoc['suc']['nic']*1, 5 , '0', ALIGN_RIGHT)) ;
//echo $strOut.EOL;
fwrite($fpOut, $strOut.EOL);
echo "$iL/$nbEtab: $vatNumber $nic (".$tabId['source'].",".$tabId['maj'].") $L1\t$cp $achPost\t$hexaviaMat".EOL;
if (!$dateJourCmd) {
$tabUpdate=array( 'rs' =>trim(str_replace('$',' ',$tabId['rs'])),
'adrL1' =>$L1,
'adrL1t'=>$L1tr,
'sigle' =>trim(str_replace('$',' ',$tabId['sigle'])),
'ens' =>trim(str_replace('$',' ',$tabId['ens'])),
'adrL2' =>$L2,
'adrL2t'=>$L2tr,
'dateHexavia'=>$dateHexavia,
'codVoieHexavia'=>$hexaviaMat,
'codeInseeCom'=>$codCommune,
'libInseeCom'=>$libCommune,
'cpCom'=>$cp,
'adrL3'=>$L3,
'adrNum'=>$adrNum1,
'adrBtq'=>$adrBtq1,
'adrNum2'=>$adrNum2,
'adrBtq2'=>$adrBtq2,
'adrLibVoie'=>$hexaviaVoie,
'adrDisp'=>$L5,
'adrComp'=>$L5,
//'adrL6'=>$achPost,
'tel'=>$tel,
'dirCiv'=>$civ,
'dirNom'=>$dir1Nom,
'dirPrenom'=>$dir1Prenom,
'dirFctCode'=>$dir1Code,
'dirFctLib'=>$dir1Titre,
'bilanMil'=>$bilAnnee,
'bilanFL'=>$bilFL,
//'effEn'=>,
//'even'=>,
//'evenLib'=>,
'tva'=>$vatNumber,
'email'=>$mail,
'siretPre'=>initstr(@$tabAssoc['pre']['siren']*1, 9 , '0', ALIGN_RIGHT).
initstr(@$tabAssoc['pre']['nic']*1, 5 , '0', ALIGN_RIGHT),
'siretSuc'=>initstr(@$tabAssoc['suc']['siren']*1, 9 , '0', ALIGN_RIGHT).
initstr(@$tabAssoc['suc']['nic']*1, 5 , '0', ALIGN_RIGHT),
'dateUpdate'=>$dateDeb,
);
$iDb2->update('diffusionRRG', $tabUpdate, "idLine=$idLine", false);
}
//print_r($tabId);
//die();
}
fclose($fpOut);
$message.=date('Y/m/d - H:i:s') ." - Fin du traitement RRG : export de $iL/$nbEtab établissements.".EOL;
echo date('Y/m/d - H:i:s') ." - Fin du traitement RRG : export de $iL/$nbEtab établissements.".EOL;
if ($mailSuivi) {
if (!copy(REP_TEMP.$fileName, '/mnt/data/clients/rrg/recv/'.$fileName))
$msgLine=date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fileName impossible pour le spécifique RRG !".EOL;
else
$msgLine=date ('Y/m/d - H:i:s')." - Le fichier $fileName a été créé pour RRG...".EOL;
echo $msgLine;
$message.=$msgLine;
unset($iDb);
$iDb=new WDb('sdv1');
$tabRRG=array( 'client' => 'rrg',
'name' => 'HEXAVIA',
'nbLines' => $iL, // Nombre de ligne
'dateBegin' => $dateDeb, // Date de début de traitement au format YmdHis
'dateEnd' => date('YmdHis'), // Date de fin de traitement au format YmdHis
'fileOut' => $fileName, // Nom du fichier sans le chemin
'depotType' => 'FTP',
'depotDate' => '0000-00-00 00:00:00');
$iDb->insert('flux_fileout', $tabRRG, false);
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Prestation RRG", $message);
}
unlink(REP_TEMP.basename($scriptName).'.lock');
die();
?>

2612
batch/doProBtp.php Normal file

File diff suppressed because it is too large Load Diff

2640
batch/doProBtp2013.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -56,16 +56,18 @@ $tabFichier=array();
$nbSirValides=$nbSirInvalides=0;
$nbNicValides=$nbNicInvalides=0;
$nbInsert=0;
$modeDebug=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [Stock Adecco à charger]
Traitement spécifique Kompass.
Options :
-s @todo Prévoir le chargement du stock
-1 Prestation 1 Mise à disposition du stock des Entrep Risques Fort
-1 Prestation 1 Mise à disposition du stock des Classes de risque
-3 Prestation 3 Transformation de la surveillance Bodacc en spécifique Kompass
-4 Prestation 4 Mise à disposition de la base Liens
-5 Prestation 5 Mise à disposition de la base Ratios
-6 Prestation 6 Mise à disposition des URL pour les rapports Kompass
-v Verbosité maximum
";
@ -75,11 +77,12 @@ if ($_SERVER['argc']>1)
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 'v': $modeDebug=true; break;
case '1': $presta=1; break;
case '3': $presta=3; break;
case '4': $presta=4; break;
case '5': $presta=5; if (date('N')<>5) echo 'La génération du stock des bilans ne peut se faire que le vendredi !'.EOL;
break;
case '5': $presta=5; break;
case '6': $presta=6; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
@ -89,21 +92,26 @@ if ($_SERVER['argc']>1)
}
}
if ($presta<>1 && $presta<>3 && $presta<>4 && $presta<>5) {
if ($presta<>1 && $presta<>3 && $presta<>4 && $presta<>5 && $presta<>6) {
if (count($tabFichier)<>1)
echo date('Y/m/d - H:i:s') ." - Prestation '$presta' inconnue !".EOL;
die();
}
}/* elseif ($presta==5 && date('N')<>5) {
if (!$modeDebug) die('La génération du stock des bilans ne peut se faire que le vendredi !'.EOL);
}*/
$fp=fopen('/home/data/clients/kompass/kompass_p'.$presta."_$date.txt",'w');
// Base des Siren avec Risque Financier
if ($presta==1) {
$nbRows=$iDb->query("SELECT CONCAT(siren, REPLACE(REPLACE(risque,1,'C'),0,' ')) AS LigneRisque
FROM etablissements_act
WHERE cj NOT IN (1900, 6540, 9110, 9150) AND siege=1 AND risque=1
ORDER BY siren ASC;");
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siren Kompass en Presta $presta...".EOL;
echo date('Y/m/d - H:i:s') ." - Recherche des siren en Presta $presta...".EOL;
$nbRows=$iDb->query("SELECT CONCAT(e.siren, risque) AS LigneRisque
FROM etablissements_act e, surveillances_listes s
WHERE e.siren=s.siren AND cj NOT IN (1900, 6540, 9110, 9150) AND siege=1 AND risque IN ('A','B','C') AND s.idClient='SURBODPRDFTSKOMPASS' AND s.dateSuppr=0
ORDER BY e.siren ASC;");
$nbLignes=$iDb->getNumRows();
echo date('Y/m/d - H:i:s') ." - Export des $nbLignes siren Kompass en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
fwrite($fp, $tabTmp['LigneRisque'].EOL);
}
@ -119,7 +127,8 @@ if ($presta==3) {
$dh = opendir(DIR_KOMPASS_IN);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,39)=='surveillanceBodacc_SURBODPRDFTSKOMPASS_'/*.date('Ym')*/) {
// substr($filename, 0,39)=='surveillanceBodacc_SURBODPRDFTSKOMPASS_'/*.date('Ym')*/) {
substr($filename, 0,36)=='diffusionBodacc_DIFBODPRDFTSKOMPASS_'/*.date('Ym')*/) {
$fichierIn = $filename;
$tabLignes=file(DIR_KOMPASS_IN.$fichierIn);
$ligne100=0;
@ -132,11 +141,20 @@ if ($presta==3) {
/*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */
$ligne100++;
$siren = substr($ligne, 13, 9 ); // Siren de l'entreprise concernée par l'annonce
$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$ref = '';
if ($siren>1000) {
/** @todo Vérifier que le siren est présent chez kompass avec une référence **/
$tabTmp=$iDb->select('surveillances_listes','siren, ref',"idClient='SURBODPRDFTSKOMPASS' AND dateSuppr=0 AND siren='$siren'", false, MYSQL_ASSOC);
if (@trim($tabTmp[0]['ref'])<>'') $ref=$tabTmp[0]['ref'];
else continue;
} else continue;
//$ref = trim(substr($ligne, 71, 18 )); // Référence Client
$datePar= substr($ligne, 31, 8 ); // Date de parution du Bodacc Format AAAAMMJJ
$dateJuge=substr($ligne, 1144, 8 ); // Date du jugement
if ($dateJuge<=19900101)
$dateJuge=substr($ligne, 1161, 8 ); // Date d'effet (Ventes/MMD/Créations)
$dateJuge=substr($ligne, 1161, 8 ); // Date d'effet (Ventes/MMD/Créations)
if ($dateJuge==0)
$dateJuge=$datePar;
$even=array();
$even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN
$even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN
@ -163,6 +181,21 @@ if ($presta==3) {
elseif ($codeEven==1542) $typeJuge='RS'; // Rétractation Sauvegarde
elseif (($codeEven>1399 && $codeEven<1416) ||
($codeEven>1419 && $codeEven<1500)) $typeJuge='SJ'; // Suite de jugement
elseif ($codeEven>1099 && $codeEven<2000) $typeJuge='AJ'; // Autre jugement ou suite de jugement
elseif ($codeEven==2000 || $codeEven==2200 ||
$codeEven==2202 || $codeEven==2203 ||
$codeEven==2204 || $codeEven==2210) $typeJuge='DI'; // Dissolution
elseif ($codeEven==2211 || $codeEven==2212) $typeJuge='LA'; // Liquidation amiable
elseif ($codeEven==2620) $typeJuge='TU'; // Transmission universelle du patrimoine
elseif ($codeEven==2720 || $codeEven==2721) $typeJuge='FU'; // Fusion/Absorption
elseif ($codeEven>=5500 && $codeEven<=5503) $typeJuge='VT'; // Vente
elseif ($codeEven>=6000 && $codeEven<=6700) { $typeJuge='RA'; // Radiation
if ($siren>1000) {
$tabId=@$iInsee->getIdentiteLight($siren);
if (@$tabId['actif']==0) $typeJuge='';
} else $typeJuge='';
}
}
if ($typeJuge<>'') {
//echo "$siren\t$ref\t$dateJuge\t$typeJuge\t".$even[0].EOL;
@ -172,6 +205,7 @@ if ($presta==3) {
initstr($dateJuge, 8, '0', ALIGN_RIGHT);
fwrite($fp, $ligne.EOL);
$ligneOut++;
if ($ligneOut%10000==0) echo date('Y/m/d - H:i:s') ." - Traitement du fichier $fichierIn : $ligneOut annonces traitées...".EOL;
}
break;
default: // Ligne non gérée
@ -179,7 +213,7 @@ if ($presta==3) {
}
} // Fin du fichier
$ligne100tot+=$ligne100;
echo date('Y/m/d - H:i:s') ." - Traitement du fichier $fichierIn : $ligne100 annonces...".EOL;
echo date('Y/m/d - H:i:s') ." - Traitement du fichier $fichierIn : $ligne100 annonces livrées !".EOL;
move(DIR_KOMPASS_IN.$fichierIn,DIR_KOMPASS_IN.$fichierIn.'.done');
}
}
@ -188,6 +222,92 @@ if ($presta==3) {
// Surveillance Liens Capitalistiques
if ($presta==4) {
echo date('Y/m/d - H:i:s') ." - Création de la table de liens temportaires pour la Presta $presta...".EOL;
$nbRows=$iDb->query("DROP TABLE IF EXISTS tmp_LiensKompass;");
$nbRows=$iDb->query("CREATE TABLE tmp_LiensKompass
SELECT l.id, l.idAct, a.siren AS sirenA, a.RS AS rsA, CONCAT(a.nom,' ', a.prenom) AS nomA, a.adresse_pays AS paysA, l.actif, PDetention, Pvote, MajMin, l.idPar, p.siren AS sirenP, p.RS AS rsP, CONCAT(p.nom,' ', p.prenom) AS nomP, p.adresse_pays AS paysP, l.dateEffetLien, l.dateInsert, l.dateUpdate, s.siren AS sirenK, 0 AS nic, s.ref, 3 AS tp_df
FROM liens2 l, liensRef a, liensRef p, surveillances_listes s
WHERE l.dateSuppr=0 AND l.actif=1 AND l.idAct=a.id AND l.idPar=p.id AND a.siren=s.siren AND s.idClient='SURBODPRDFTSKOMPASS' AND s.dateSuppr=0 AND a.dateSuppr=0 AND p.dateSuppr=0 AND PDetention>=30
UNION
SELECT l.id, l.idAct, a.siren AS sirenA, a.RS AS rsA, CONCAT(a.nom,' ', a.prenom) AS nomA, a.adresse_pays AS paysA, l.actif, PDetention, Pvote, MajMin, l.idPar, p.siren AS sirenP, p.RS AS rsP, CONCAT(p.nom,' ', p.prenom) AS nomP, p.adresse_pays AS paysP, l.dateEffetLien, l.dateInsert, l.dateUpdate, s.siren AS sirenK, 0 AS nic, s.ref, 2 AS tp_df
FROM liens2 l, liensRef a, liensRef p, surveillances_listes s
WHERE l.dateSuppr=0 AND l.actif=1 AND l.idAct=a.id AND l.idPar=p.id AND p.siren=s.siren AND s.idClient='SURBODPRDFTSKOMPASS' AND s.dateSuppr=0 AND a.dateSuppr=0 AND p.dateSuppr=0 AND PDetention>=30");
echo date('Y/m/d - H:i:s') ." - Ajout des index...".EOL;
$nbRows=$iDb->query("ALTER TABLE tmp_LiensKompass ADD INDEX(sirenK);");
echo date('Y/m/d - H:i:s') ." - Ajout des NIC...".EOL;
$nbRows=$iDb->query("UPDATE tmp_LiensKompass k, etablissements_act a SET k.nic=a.nic WHERE k.sirenK=a.siren AND a.siege=1 AND k.sirenA>1000;");
$tabTmp=$iDb->select('tabPays','codPays3, libPays', '1', false, MYSQL_ASSOC);
foreach($tabTmp as $i=>$tabTmp2) {
$tabPays[$tabTmp2['codPays3']]=$tabTmp2['libPays'];
}
$nbRows=count($tabTmp);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows pays en Presta $presta...".EOL;
$nbRows=$iDb->query("SELECT id, idAct, sirenA, rsA, nomA, paysA, actif, PDetention, Pvote, MajMin, idPar, sirenP, rsP, nomP, paysP, dateEffetLien*1 AS dateEffet, dateInsert*1 AS dateInsert, dateUpdate*1 AS dateUpdate, sirenK, nic, ref, tp_df FROM tmp_LiensKompass GROUP BY id, tp_df ORDER BY sirenK ASC, tp_df ASC, PDetention DESC, dateEffet DESC;");
$nbLignes=$iDb->getNumRows();
echo date('Y/m/d - H:i:s') ." - Export des $nbLignes liens Kompass en Presta $presta...".EOL;
$nbLignes4=$nbLiensP100=0;
$strLiensP100='Listes des siren avec des actionnaires > à 100 % :'.EOL.EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTmp['sirenK']*1;
$nic=$tabTmp['nic']*1;
$pctT=$tabTmp['PDetention'];
if ($nic<10) {
$tabId=@$iInsee->getIdentiteLight($siren);
$nic=$tabId['Nic'];
}
if ($tabTmp['tp_df']==3) {
// $siren a $sirentT pour PARTICIPATION
$sirenT=$tabTmp['sirenP'];
$nomT=substr(trim($tabTmp['rsP'].' '.$tabTmp['nomP']),0,64);
$pays=$tabPays[$tabTmp['paysP']];
} elseif ($tabTmp['tp_df']==2) {
// $siren a $sirentT pour ACTIONNAIRE
$sirenT=$tabTmp['sirenA'];
$nomT=substr(trim($tabTmp['rsA'].' '.$tabTmp['nomA']),0,64);
$pays=$tabPays[$tabTmp['paysA']];
if ($sirenPre==$siren) $pctCumul+=$pctT;
else $pctCumul=$pctT;
if ($pctCumul>100) {
$nbLiensP100++;
echo "$siren\t$sirenT\t$pctCumul".EOL;
$strLiensP100.="$siren\t$sirenT\t$pctCumul".EOL;
$sirenPre=$siren;
continue;
}
}
$dateMAJ=substr($tabTmp['dateEffet'],0,8)*1;
$dateInsert=substr($tabTmp['dateInsert'],0,8)*1;
$dateUpdate=substr($tabTmp['dateUpdate'],0,8)*1;
if ($dateInsert>$dateMAJ) $dateMAJ=$dateInsert;
if ($dateUpdate>$dateMAJ) $dateMAJ=$dateUpdate;
$ligne= initstr($siren, 9, '0', ALIGN_RIGHT) .
initstr($nic, 5, '0', ALIGN_RIGHT) .
initstr($tabTmp['ref'], 7, '0', ALIGN_RIGHT) .
initstr($tabTmp['tp_df'],1, '0', ALIGN_RIGHT) .
initstr($sirenT, 9, '0', ALIGN_RIGHT) .
initstr($nomT, 64) .
' '.
sprintf("%06.2f", $pctT) .
initstr($pays, 30) .
initstr($dateMAJ, 8, '0', ALIGN_RIGHT);
fwrite($fp, $ligne.EOL);
$nbLignes4++;
$sirenPre=$siren;
}
echo date('Y/m/d - H:i:s') ." - Fin de l'export en Presta $presta ($nbLignes4 liens retenus/$nbLignes liens)...".EOL;
sendMail('prod@scores-decisions.com', 'ylenaour@scores-decisions.com,mpurcarin@scores-decisions.com,abalayan@snd-a.com',
"Liste des $nbLiensP100 Entités avec + de 100% d'actionnariat pour le mois ".date('m/Y'), $strLiensP100);
//die();
$nbRows=$iDb->query("DROP TABLE tmp_LiensKompass;");
//die();
/*
$nbRows=$iDb->select('surveillances_listes','siren, ref',"idClient='SURBODPRDFTSKOMPASS' AND dateSuppr=0 ORDER BY siren ASC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siren Kompass en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
@ -202,7 +322,7 @@ if ($presta==4) {
foreach ($tabAct as $i=>$lien) {
$sirenT=$lien['Siren']*1;
$pctT=$lien['PminNum'];
if ($pctT==0) continue;
if ($pctT<30) continue;
$pctTtot+=$pctT;
$nomT=strtr(trim(substr($lien['RaisonSociale'],0,64)),array('*'=>' ','/'=>' '));
$paysT=$lien['CodePays'];
@ -237,7 +357,7 @@ if ($presta==4) {
foreach ($tabAct as $i=>$lien) {
$sirenT=$lien['Siren']*1;
$pctT=$lien['PminNum'];
if ($pctT==0) continue;
if ($pctT<30) continue;
$pctTtot+=$pctT;
$nomT=strtr(trim(substr($lien['RaisonSociale'],0,64)),array('*'=>' ','/'=>' '));
$paysT=$lien['CodePays'];
@ -265,49 +385,158 @@ if ($presta==4) {
initstr($dateT, 8, '0', ALIGN_RIGHT);
fwrite($fp, $ligne.EOL);
}
}*/
}
// partner.scores-decisions.com/id/144/siren/
if ($presta==6) {
$urlKompass='http://partner.scores-decisions.com/id/144/siren/';
echo date('Y/m/d - H:i:s') ." - Recherche des siren en Presta $presta...".EOL;
$nbRows=$iDb->query( "SELECT e.siren, s.ref
FROM etablissements_act e, surveillances_listes s
WHERE e.siren=s.siren AND e.cj>1999 AND siege=1 AND s.idClient='SURBODPRDFTSKOMPASS' AND s.dateSuppr=0
ORDER BY e.siren ASC");
$nbLignes=$iDb->getNumRows();
echo date('Y/m/d - H:i:s') ." - Export des $nbLignes siren Kompass en Presta $presta...".EOL;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$ligne= initstr($tabTmp['siren'], 9, '0', ALIGN_RIGHT) .
initstr($tabTmp['ref'], 7, '0', ALIGN_RIGHT) .
initstr($urlKompass.$tabTmp['siren'],120);
fwrite($fp, $ligne.EOL);
}
echo date('Y/m/d - H:i:s') ." - Fin de l'export en Presta $presta...".EOL;
sendMail('support@scores-decisions.com', 'ylenaour@scores-decisions.com',
'Fichiers hors Elements Financiers Scores & Décisions du mois '.date('m/Y'), 'Bonjour,
Pour votre information, nous avons déposé ce jour sur notre serveur FTP, les différents fichiers hors prestation "éléments financiers" relatif au contrat.
Cordialement,
Service Support S&D.
--
SCORES & DECISIONS
1, rue de Clairefontaine 78120 Rambouillet
tél. direct : 33 (0)1 34 57 39 58
tél. standard : 33 (0)1 75 43 80 10
fax bureau : 33 (0)1 75 43 85 74
support@scores-decisions.com
www.scores-decisions.com
Scores & Décisions est l\'acteur nouvelle génération de l\'information et de l\'évaluation des entreprises');
}
if ($presta==5) {
$uniteLiv=1000; // En K€
$nbRows=$iDb->select('surveillances_listes','siren, ref',"idClient='SURBODPRDFTSKOMPASS' AND dateSuppr=0 /*AND siren>422372466*/ ORDER BY siren ASC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Création de la table de bilans temportaires pour la Presta $presta...".EOL;
$nbRows=$iDb->query("DROP TABLE IF EXISTS tmp_BilansKompass;");
$nbRows=$iDb->query("CREATE TABLE tmp_BilansKompass
SELECT siren, 0 AS nic, '' AS ref, 0 AS eff_entrep, dateExercice, consolide, dureeExercice, monnaie, teffen, dateInsert, FL, HN, GG, IF(ISNULL(FL),0,FL) + IF(ISNULL(FM),0,FM) + IF(ISNULL(FN),0,FN) -( IF(ISNULL(FS),0,FS) + IF(ISNULL(FU),0,FU) )-( IF(ISNULL(FT),0,FT) + IF(ISNULL(FV),0,FV) )-( IF(ISNULL(FW),0,FW) - IF(ISNULL(HP),0,HP) - IF(ISNULL(HQ),0,HQ) )-( IF(ISNULL(FY),0,FY) + IF(ISNULL(FZ),0,FZ) )- IF(ISNULL(FX),0,FX) + IF(ISNULL(FO),0,FO) AS EBE, YP
FROM bilans_postes
WHERE consolide IN('N','S') AND dateExercice>date(NOW())*1-50000
");
echo date('Y/m/d - H:i:s') ." - Ajout des index...".EOL;
$nbRows=$iDb->query("ALTER TABLE tmp_BilansKompass ADD INDEX(siren, dateExercice);");
echo date('Y/m/d - H:i:s') ." - Ajout des NIC...".EOL;
$nbRows=$iDb->query("UPDATE tmp_BilansKompass k, etablissements_act a SET k.nic=a.nic, k.eff_entrep=a.eff_entrep WHERE k.siren=a.siren AND a.siege=1 AND k.siren>1000;");
echo date('Y/m/d - H:i:s') ." - Ajout de la référence Kompas...".EOL;
$nbRows=$iDb->query("ALTER TABLE tmp_BilansKompass CHANGE ref ref CHAR(7);");
$nbRows=$iDb->query("UPDATE tmp_BilansKompass k, surveillances_listes s SET k.ref=s.ref WHERE k.siren=s.siren AND k.siren>1000 AND s.idClient='SURBODPRDFTSKOMPASS' AND s.dateSuppr=0;");
$nbRows=$iDb->query("SELECT siren, nic, ref, eff_entrep, dateExercice, consolide, dureeExercice, monnaie, teffen, DATE(dateInsert)*1 AS dateMAJ, FL, HN, GG, EBE, YP FROM tmp_BilansKompass WHERE ref<>'' ORDER BY siren ASC, dateExercice DESC;");
$nbLignes=$iDb->getNumRows();
echo date('Y/m/d - H:i:s') ." - Traitement des $nbLignes bilans Kompass maximum en Presta $presta...".EOL;
$sirenPre=$nbBilans=$nbSiren=$nbLignes=0;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTmp['siren']*1;
if ($siren<>$sirenPre) { $nbBilans=0; $nbSiren++; }
else $nbBilans++;
if ($nbBilans<5) {
$nic=$tabTmp['nic']*1;
if ($nic<10) {
$tabId=@$iInsee->getIdentiteLight($siren);
$nic=$tabId['Nic'];
}
$effectif=$tabTmp['YP'];
if ($effectif<1) $effectif=$tabTmp['eff_entrep'];
$millesime=substr($tabTmp['dateExercice'], 4,2).substr($tabTmp['dateExercice'], 0,4);
$dateMAJ=$tabTmp['dateMAJ'];
$ligne= initstr($siren, 9, '0', ALIGN_RIGHT) .
initstr($nic, 5, '0', ALIGN_RIGHT) .
initstr($tabTmp['ref'], 7, '0', ALIGN_RIGHT) .
initstr($effectif, 7, '0', ALIGN_RIGHT) .
initstr($millesime, 6, '0', ALIGN_RIGHT) .
initstr($tabTmp['dureeExercice'], 2, '0', ALIGN_RIGHT) .
initstr($tabTmp['monnaie'], 3) .
initstr(@round($tabTmp['FL']/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // CA
initstr(@round($tabTmp['EBE']/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // EBE
initstr(@round($tabTmp['HN']/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // HN
initstr(@round($tabTmp['GG']/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Res Exploit.
initstr($dateMAJ, 8, '0', ALIGN_RIGHT);
fwrite($fp, $ligne.EOL);
$nbLignes++;
if ($nbLignes%100000==0) echo date('Y/m/d - H:i:s') ." - Presta $presta : $nbLignes lignes, $nbSiren siren traités...".EOL;
}
$sirenPre=$siren;
}
echo date('Y/m/d - H:i:s') ." - Fin de l'export en Presta $presta ($nbLignes lignes/$nbSiren siren)...".EOL;
$nbRows=$iDb->query("DROP TABLE tmp_BilansKompass;");
//die();
/*
$nbRows=$iDb->select('surveillances_listes','siren, ref',"idClient='SURBODPRDFTSKOMPASS' AND dateSuppr=0 ORDER BY siren ASC", false, MYSQL_ASSOC, true);
//$nbRows=$iDb->select('surveillances_listes','siren, ref',"idClient='SURBODPRDFTSKOMPASS' AND dateSuppr=0 AND siren IN (451321335,954509741,780130175) ORDER BY siren ASC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siren Kompass en Presta $presta...".EOL;
$nbSir=0;
$millesimeMini=date('Y')-5;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$nbSir++;
$siren=$tabTmp['siren'];
$ref=trim($tabTmp['ref']);
$tabId=@$iInsee->getIdentiteLight($siren);
$nic=$tabId['Nic'];
$nom=strtr(trim(substr($tabId['Nom'],0,60)),array('*'=>' ','/'=>' '));
//$nom=strtr(trim(substr($tabId['Nom'],0,60)),array('*'=>' ','/'=>' '));
$mBil=new MBilans($siren);
$tabBilans=@$mBil->listeBilans();
$iBil=0;
foreach ($tabBilans as $idxBilan=>$derBilan) {
$iBil++;
// Nouveau contrat Kompass, on ne livre plus les bilans plus vieux de 5 ans ni les bilans consolidés
if ($derBilan['millesime']<$millesimeMini || ($derBilan['typeBilan']<>'N' && $derBilan['typeBilan']<>'S')) continue;
$p=@$mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']);
//print_r($p);
$conso=' ';
// $conso=' ';
$dateClot=str_replace('-','',$p['DATE_CLOTURE']);
$duree=$p['DUREE_MOIS']; // Durée de l'exercice en mois
$devise=strtoupper($p['MONNAIE']); // Monnaie
$dateFraicheur=$p['DATE_FRAICHE_BILAN'];
$unite=@strtoupper($p['MONNAIE_LIV_UNITE']);
if ($unite=='') $unite='U';
$conso='N';
if ($p['CONSOLIDE']=='C') $conso='C';
elseif ($p['CONSOLIDE']=='S') $p=@$mBil->bilanSimplifie2Normal($p);
// $conso='N';
// if ($p['CONSOLIDE']=='C') $conso='C';
// else
if ($p['CONSOLIDE']=='S') $p=@$mBil->bilanSimplifie2Normal($p);
$uniteMultiple=1;/*
switch (strtoupper($unite)) {
case 'K': $uniteMultiple=1000; break;
case 'M': $uniteMultiple=1000000; break;
}*/
}
$effectif=@$p['YP']*1;
// Modifier la table établissements_act
$va=@$p['FL']+@$p['FM']+@$p['FN']-(@$p['FS']+@$p['FU'])-(@$p['FV']+@$p['FT']) - (@$p['FW']-@$p['HP']-@$p['HQ']);
$ebe=$va-(@$p['FY']+@$p['FZ'])-@$p['FX']+@$p['FO'];
$caf=@$p['HN']+ @$p['HF']+ @$p['HG']- @$p['HB']- @$p['HC']+ @$p['GQ']- @$p['GM']+ @$p['GA']+ @$p['GB']+ @$p['GC']+ @$p['GD']- @$p['FP'];
/* $caf=@$p['HN']+ @$p['HF']+ @$p['HG']- @$p['HB']- @$p['HC']+ @$p['GQ']- @$p['GM']+ @$p['GA']+ @$p['GB']+ @$p['GC']+ @$p['GD']- @$p['FP'];
$inv=@$p['KC']+@$p['KF']+@$p['LP']+@$p['MY']-@$p['NC'];
$liq=@$p['CJ']-@$p['CK']-@$p['CH']+@$p['CI']-@$p['DW']-@$p['DX']-@$p['DY']-@$p['DZ']-@$p['EA']-@$p['EH'];
$cap=@$p['DL']+@$p['DO']-@$p['AA']-(@$p['CL']+@$p['CM']+@$p['CN'])+ @$p['ED'];
@ -350,13 +579,13 @@ if ($presta==5) {
/*$calc=($p['FL']*$uniteMultiple)/$uniteLiv;
echo "$siren le $dateClot en $unite $devise ($uniteMultiple, $uniteLiv): CA=$calc\t".$p['FL'].EOL;
*/
$ligne= initstr($siren, 9, '0', ALIGN_RIGHT) .
initstr($nic, 5, '0', ALIGN_RIGHT) .
initstr($ref, 7, '0', ALIGN_RIGHT) .
initstr($nom, 60) .
initstr($conso, 1) .
// initstr($nom, 60) .
// initstr($conso, 1) .
initstr($effectif, 7, ' ', ALIGN_RIGHT) .
initstr(substr($dateClot, 4,2).substr($dateClot, 0,4), 6, '0', ALIGN_RIGHT) . // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ
initstr($duree, 2, '0', ALIGN_RIGHT) . // BILAN_DUREE Durée de l'exercice en mois
@ -364,7 +593,7 @@ if ($presta==5) {
initstr(@round(($p['FL']*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // CA
initstr(@round(($ebe*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // EBE
initstr(@round(($p['HN']*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // HN
initstr(@round(($caf*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // CAF
/* initstr(@round(($caf*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // CAF
initstr(@round(($inv*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Investissements
initstr(@round(($liq*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Liquidités
initstr(sprintf("%+07.2f", $ren), 7) . // Rentabilite
@ -374,8 +603,9 @@ if ($presta==5) {
initstr(@round(($va*$uniteMultiple)/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // VA
initstr(@sprintf("%+07.2f", round($va*100/@$p['FL']),2), 7) . // Tx VA
initstr(' ', 3) .
initstr(@round($p['GG']*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Res Exploit.
initstr(@round($p['GV']*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Res. Fi
/* initstr(@round($p['GV']*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Res. Fi
initstr(@round($p['HI']*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Res Excep.
initstr(@round($actImmo*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Actif ImmoNet
initstr(@round($actCirc*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Actif CirculantNet
@ -390,13 +620,34 @@ if ($presta==5) {
initstr(@round($treso*$uniteMultiple/$uniteLiv,0), 10, ' ', ALIGN_RIGHT) . // Trésorerie
initstr(sprintf("%+07.2f", $end), 7) . // Tx endettement
initstr(' ', 3) .
initstr(str_replace('/','',WDate::dateT('Ymd','d/m/Y',$dateFraicheur)), 8);
//echo $ligne.EOL;
fwrite($fp, $ligne.EOL);
if ($iBil==3) break;
if ($iBil==4) break;
}
if ($nbSir%1000==0) echo date('Y/m/d - H:i:s') ." - $nbSir/$nbRows siren traites...".EOL;
}
}*/
sendMail('support@scores-decisions.com', 'ylenaour@scores-decisions.com',
'Fichier Elements Financiers Scores & Décisions du mois '.date('m/Y'), "Bonjour,
Pour votre information, nous avons déposé ce jour sur notre serveur FTP, le fichier des \"éléments financiers\" contenant $nbLignes lignes relatif au contrat.
Cordialement,
Service Support S&D.
--
SCORES & DECISIONS
1, rue de Clairefontaine 78120 Rambouillet
tél. direct : 33 (0)1 34 57 39 58
tél. standard : 33 (0)1 75 43 80 10
fax bureau : 33 (0)1 75 43 85 74
support@scores-decisions.com
www.scores-decisions.com
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises");
}
fclose($fp);

View File

@ -77,7 +77,7 @@ foreach ($tabLignes as $i=>$ligne) {
$siren=trim($tmp1[0]);
$nic=trim($tmp1[1]);
//$tmp1=$iTel->getTel($siren);
$tmp=$iTel->getTel($siren, $nic);
$tmp=$iTel->getTel($siren, $nic,1);
//echo "$siren $nic".EOL;
if (count($tmp)==0) echo "$siren,$nic".EOL;
else {

21747
batch/export_classement.csv Normal file

File diff suppressed because it is too large Load Diff

149
batch/exporteLiens.php Normal file
View File

@ -0,0 +1,149 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
function exporte($txt, $lon=false, $sep="\t") {
if ($lon===false) $lon=strlen($txt);
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt);
return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep;
}
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'partenaires/classMTel.php');
include_once(INCLUDE_PATH.'partenaires/classMMap.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
include_once(INCLUDE_PATH.'tmp/configMRatios.php');
include_once(INCLUDE_PATH.'insee/classMSirene.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(INCLUDE_PATH.'scores/classMFinancier.php');
include_once(INCLUDE_PATH.'scores/classMSolvabilite.php');
include_once(INCLUDE_PATH.'partenaires/classMTva.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iInsee=new MInsee();
$iDb=new WDb('jo');
$codPays3='BEL';
$fpL=fopen('/root/sedLiens.csv','w');
$fpE=fopen('/root/sedEntites.csv','w');
$fpI=fopen('/root/sedIdLocaux.csv','w');
$ret=$iDb->select('jo.liens2', 'idAct, PDetention, Pvote, MajMin, idPar', "actif=1 AND dateSuppr=0 AND (idAct IN (SELECT id FROM liensRef WHERE adresse_pays='$codPays3' AND actif=1 AND dateSuppr=0) OR idPar IN (SELECT id FROM liensRef WHERE adresse_pays='$codPays3' AND actif=1 AND dateSuppr=0) )", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Il y a $ret liens '$codPays3' à exporter ...".EOL;
$tDeb=microtime(1);
$tabT=array();
fwrite($fpL, "idActionnaire\tpctDetention\tpctVote\ttype\tidParticipation".EOL);
while($ligne=$iDb->fetch(MYSQL_ASSOC)) {
$idAct= $ligne['idAct'];
$tabT[]=$idAct;
$pDet= $ligne['PDetention'];
$pVot= $ligne['Pvote'];
$majMin=$ligne['MajMin'];
$idPar= $ligne['idPar'];
$tabT[]=$idPar;
if ($majMin=='+' && $pDet<=50 && $pVot<=50) $majMin='-';
if ($majMin=='-' && ($pDet>50 || $pVot>50)) $majMin='+';
fwrite($fpL, "$idAct\t$pDet\t$pVot\t$majMin\t$idPar".EOL);
}
fclose($fpL);
$tFin=microtime(1);
echo EOL."Durée Fichier Liens .......... =".round($tFin-$tDeb,3).' secondes'.EOL;
$tabT=array_unique($tabT);
$strIDs=implode(',', $tabT);
$ret=$iDb->select('jo.liensRef', 'id, siren, sirenValide, actif, PpPm, RS, sigle, civilite, nom, prenom, nom_usage, naissance_date, naissance_dept_pays, naissance_lieu, nat, adresse_num, adresse_btq, adresse_codvoie, adresse_libvoie, adresse_comp, adresse_cp, adresse_ville, adresse_pays, tel, fax, web, email, cj, ape, capital, deviseCapital, isin, idLoc1Type, idLoc1Num, idLoc2Type, idLoc2Num, idLoc3Type, idLoc3Num', "id IN ($strIDs) ORDER BY id ASC", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Il y a $ret entités relatives à '$codPays3' à exporter ...".EOL;
$tDeb=microtime(1);
$tabIdL=array(1);
fwrite($fpE, "id\tsiren\tPpPm\tRS\tsigle\tcivilite\tnom\tprenom\tnom_usage\tnaissance_date\tnaissance_dept_pays\tnaissance_lieu\tnat\tadresse_num\tadresse_btq\tadresse_codvoie\tadresse_libvoie\tadresse_comp\tadresse_cp\tadresse_ville\tadresse_pays\ttel\tfax\tweb\temail\tcj\tape\tcapital\tdeviseCapital\tisin\tidLoc1Type\tidLoc1Num\tidLoc2Type\tidLoc2Num\tidLoc3Type\tidLoc3Num".EOL);
while($ligne=$iDb->fetch(MYSQL_ASSOC)) {
$id= $ligne['id'];
$siren= $ligne['siren'];
$isin= $ligne['isin'];
$ppPm= $ligne['PpPm'];
$rs= $ligne['RS'];
$sigle= $ligne['sigle'];
$civ= $ligne['civilite'];
$nom= $ligne['nom'];
$prenom=$ligne['prenom'];
$nomUsa=$ligne['nom_usage'];
$nDate= $ligne['naissance_date'];
$nLieu= $ligne['naissance_lieu'];
$nPaysD=$ligne['naissance_dept_pays'];
$nat= $ligne['nat'];
$adrNum=$ligne['adresse_num'];
$adrBtq=$ligne['adresse_btq'];
$adrVoi=$ligne['adresse_codvoie'];
$adrLib=$ligne['adresse_libvoie'];
$adrCom=$ligne['adresse_comp'];
$adrCP= $ligne['adresse_cp'];
$adrVil=$ligne['adresse_ville'];
$adrPay=$ligne['adresse_pays'];
$tel= $ligne['tel'];
$fax= $ligne['fax'];
$web= $ligne['web'];
$email= $ligne['email'];
$cj= $ligne['cj'];
$ape= $ligne['ape'];
$cap= $ligne['capital'];
$capDev=$ligne['deviseCapital'];
$id1T=$id1N=$id2T=$id2N=$id3T=$id3N='';
if ($ligne['idLoc1Type']>0 && trim($ligne['idLoc1Num'])<>'') {
$id1T=$ligne['idLoc1Type'];
$id1N=$ligne['idLoc1Num'];
$tabIdL[]=$id1T*1;
}
if ($ligne['idLoc2Type']>0 && trim($ligne['idLoc2Num'])<>'') {
$id2T=$ligne['idLoc2Type'];
$id2N=$ligne['idLoc2Num'];
$tabIdL[]=$id2T*1;
}
if ($ligne['idLoc2Type']>0 && trim($ligne['idLoc2Num'])<>'') {
$id3T=$ligne['idLoc3Type'];
$id3N=$ligne['idLoc3Num'];
$tabIdL[]=$id3T*1;
}
if ($siren>1000) {
if ($id1T=='' && $id1N=='') { $id1T=1; $id1N=$siren; }
elseif ($id2T=='' && $id2N=='') { $id2T=1; $id2N=$siren; }
elseif ($id3T=='' && $id3N=='') { $id3T=1; $id3N=$siren; }
}
fwrite($fpE, "$id\t$isin\t$ppPm\t$rs\t$sigle\t$civ\t$nom\t$prenom\t$nomUsa\t$nDate\t$nLieu\t$nPaysD\t$nat\t$adrNum\t$adrBtq\t$adrVoi\t$adrLib\t$adrCom\t$adrCP\t$adrVil\t$adrPay\t$tel\t$fax\t$web\t$email\t$cj\t$ape\t$cap\t$capDev".EOL);
}
fclose($fpE);
$tFin=microtime(1);
echo EOL."Durée Fichier Entites .......... =".round($tFin-$tDeb,3).' secondes'.EOL;
$tabIdL=array_unique($tabIdL);
$strIdsLoc=implode(',', $tabIdL);
print_r($tabIdL);
$ret=$iDb->select('sdv1.tabIdLocal', 'id, idLocal, idLocalLong', "id IN ($strIdsLoc) ORDER BY id ASC", false, MYSQL_ASSOC, true);
echo mysql_error();
echo date ('Y/m/d - H:i:s') . " - Il y a $ret IdLocaux relatifs à '$codPays3' à exporter ...".EOL;
$tDeb=microtime(1);
fwrite ($fpI, "id\tidLocal\tidLocalLong".EOL);
while($ligne=$iDb->fetch(MYSQL_ASSOC)) {
$id= $ligne['id'];
$idLoc= $ligne['idLocal'];
$idLong=$ligne['idLocalLong'];
fwrite($fpI, "$id\t$idLoc\t$idLong".EOL);
}
fclose($fpI);
$tFin=microtime(1);
echo EOL."Durée Fichier IdLocaux .......... =".round($tFin-$tDeb,3).' secondes'.EOL;
die();
?>

508
batch/extractVWBank.php Normal file
View File

@ -0,0 +1,508 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'conversion/bilAltares.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
include_once(INCLUDE_PATH.'partenaires/classMBanques.php');
$iInsee=new MInsee();
$iDb=new WDB();
$iDb2=new WDB('sdv1');
/*
$rep=$iDb->select( 'bodacc_detail',
'id, siren, VenteMt, Bodacc_Date_Parution, publication, publicationNom, publicationDate, SUBSTRING(codePostal,1,3) AS dep3',
"id>15000000 AND Rubrique='ventes' GROUP BY id", false, MYSQL_ASSOC);
$nb=count($rep);
echo "num\tidAnn\tsiren\tmontantVte\tdateJal\tdateBod\tnomJalBod\tdept\tJal\tidJal".EOL;
foreach($rep as $i=>$vte) {
$id=$vte['id'];
$nom=$vte['publication'];
$datePub=$vte['publicationDate'];
$dateBod=$vte['Bodacc_Date_Parution'];
$siren=$vte['siren'];
$mt=$vte['VenteMt'];
if (strlen($nom)<10) continue;
$dep=$vte['dep3']*1;
if ($dep<970) $dep=substr($vte['dep3'],0,2);
echo "$i/$nb\t$id\t$siren\t$mt\t$datePub\t$dateBod\t$nom\t$dep\t";
$nom2=trim(addslashes($vte['publicationNom']));
$rep=$iDb->select('tabJAL', "id, nomJal", "dep=$dep AND nomJal='$nom2'", false, MYSQL_ASSOC);
$idJal=@$rep[0]['id']*1;
if ($idJal==0) {
$rep=$iDb->select('tabJAL', "id, nomJal, MATCH(nomJal) AGAINST('$nom2') AS pertinence", "dep=$dep HAVING pertinence>1 ORDER BY pertinence DESC LIMIT 0,3", false, MYSQL_ASSOC);
$idJal=@$rep[0]['id'];
}
$nomJal=@$rep[0]['nomJal'];
echo "$nomJal\t$idJal".EOL;
//die();
//$nomTrouve".EOL;
}
die();
*/
/*
$tabSiren=array(318919065,
328412440,
347902587,
349339341,
379699770,
379776057,
379848146,
398984062,
414789016,
414813246,
572140788,
674800859);
foreach($tabSiren as $siren) {
$tabIndiscore=@calculIndiScore($siren, 0, false, 3, false);
print_r($tabIndiscore);
}
die();
*/
$ape77=$ca5=$ratios=$ptf=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des liens actionnaires et participations.
Options :
-a APE77
-c CA5ME
-p Portefeuille
-r Ratios
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a': $ape77=true; break;
case 'c': $ca5=true; break;
case 'p': $ptf=true; break;
case 'r': $ratios=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
/** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php
**
** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007
**/
$iDb=new WDB('jo');
$iInsee=new MInsee();
//$fileIn='/root/sql/sirenManquantsVWB.csv';
if ($ape77) $fileIn='/root/sql/sirenAPE77.csv';
elseif ($ca5) $fileIn='/root/sql/sirenCA5ME.csv';
elseif ($ptf) $fileIn='/root/sql/Portefeuille_Base_Global_Liste_SIREN.csv';
$fileOut=$fileIn.'.out';
if ($ratios) $fileOut=$fileIn.'_ratios.out';
$tabSiren=file($fileIn);
$fp=fopen($fileOut,'w');
$nb=count($tabSiren);
echo date ('Y/m/d - H:i:s')." - Début de l'export des $nb siren pour VWBank...".EOL;
foreach ($tabSiren as $i=>$tmp) {
$siren=trim($tmp)*1;
if ($siren<1000) continue;
//if ($i<21370) continue;
$tabId=@$iInsee->getIdentiteEntreprise($siren,0,0,false,true);
// getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) {
//print_r($tabId);
if ($ratios) {
$mBil=new MBilans($siren);
$tabBilans=$mBil->listeBilans(0);
//print_r($tabBilans);
$NBBILAN=count($tabBilans);
$tabBilan=$tabBil=$tabRatios=array();
$strOut='';
if ($NBBILAN>0) {
$tabRatios=@calculRatios($tabBilans, $tabId, 0);
$j=0;
foreach($tabBilans as $cleMille=>$tabInfosBilan) {
$strOut.=$siren."\t".$tabInfosBilan['dateExercice']."\t".$tabInfosBilan['dureeExercice']."\t".$tabInfosBilan['typeBilan']."\t";
$strOut.=$tabRatios[$j][5]."\t"; // CA
$strOut.=$tabRatios[$j][7]."\t"; // RCAI
$strOut.=$tabRatios[$j][10]."\t"; // RN
$strOut.=$tabRatios[$j][18]."\t"; // FP
$strOut.=$tabRatios[$j][23]."\t"; // TOTAL BILAN
$strOut.=$tabRatios[$j][235]."\t"; // FR
$strOut.=$tabRatios[$j][236]."\t"; // BFR
$strOut.=$tabRatios[$j][254]."\t"; // TRESORERIE
$strOut.=$tabRatios[$j][24]."\t"; // Effectif
$strOut.=$tabRatios[$j][140]."\t"; // EBE
$strOut.=$tabRatios[$j][233]."\t";
$strOut.=$tabRatios[$j][234]."\t";
$strOut.=$tabRatios[$j][237]."\t";
$strOut.=$tabRatios[$j][238]."\t";
$strOut.=$tabRatios[$j][239]."\t";
$strOut.=$tabRatios[$j][240]."\t";
$strOut.=$tabRatios[$j][262]."\t";
$strOut.=$tabRatios[$j][263]."\t";
$strOut.=$tabRatios[$j][264]."\t";
$strOut.=$tabRatios[$j][265]."\t";
$strOut.=$tabRatios[$j][266]."\t";
$strOut.=$tabRatios[$j][250]."\t";
$strOut.=$tabRatios[$j][251]."\t";
$strOut.=$tabRatios[$j][252]."\t";
$strOut.=$tabRatios[$j][244]."\t";
$strOut.=$tabRatios[$j][247]."\t";
$strOut.=$tabRatios[$j][248]."\t";
$strOut.=$tabRatios[$j][271]."\t";
$strOut.=$tabRatios[$j][278]."\t";
$strOut.=$tabRatios[$j][279]."\t";
$strOut.=$tabRatios[$j][281]."\t";
$strOut.=$tabRatios[$j][261]."\t";
$strOut.=$tabRatios[$j][267].EOL;
$j++;
if ($j>2) break;
}
}
} else {
$strOut =@$tabId['Siret']."\t";
$strOut.=@$tabId['Actif']."\t"; // => 1
$strOut.=@$tabId['ActifEco']."\t"; // => 1
$strOut.=@$tabId['ActifEcoDate']."\t"; // =>
$strOut.=@$tabId['ActifEcoType']."\t"; // =>
$strOut.=@$tabId['EntActiveRCS']."\t"; // => 1
$strOut.=@$tabId['EtabActifRCS']."\t"; // => 1
$strOut.=@$tabId['Tribunal']."\t";
$strOut.=@$tabId['Nom']."\t"; // => GABET ALAIN GEORGES
$strOut.=@$tabId['Nom2']."\t"; // =>
$strOut.=@$tabId['nomLong']."\t"; // => SERCY
$strOut.=@$tabId['Sigle']."\t"; // =>
$strOut.=@$tabId['NomCommercial']."\t"; // => SERGY TP
$strOut.=@$tabId['Enseigne']."\t"; // =>
$strOut.=@$tabId['enseigneLong']."\t"; // =>
$strOut.=@$tabId['AdresseNum']."\t"; // => 0049
$strOut.=@$tabId['AdresseBtq']."\t"; // =>
$strOut.=@$tabId['AdresseVoie']."\t"; // => AV
$strOut.=@$tabId['AdresseRue']."\t"; // => DE MACON
$strOut.=@$tabId['Adresse2']."\t"; // => LE FAUBOURG
$strOut.=@$tabId['CP']."\t"; // => 01000
$strOut.=@$tabId['Ville']."\t"; // => BOURG EN BRESSE
$strOut.=@$tabId['PaysIso2']."\t"; // => FR
$strOut.=@$tabId['Civilite']."\t"; // => 1
$strOut.=@$tabId['NbEtab']."\t"; // => 1
$strOut.=@$tabId['Tel']."\t"; // =>
$strOut.=@$tabId['Fax']."\t"; // =>
$strOut.=@$tabId['Web']."\t"; // =>
$strOut.=@$tabId['Mail']."\t"; // =>
$strOut.=@$tabId['GeoLat']."\t"; // => 46.2108498
$strOut.=@$tabId['GeoLon']."\t"; // => 5.2186203
$strOut.=@$tabId['GeoAlt']."\t"; // => 236
$strOut.=@$tabId['GeoPrecis']."\t"; // => 8
$strOut.=@$tabId['TvaNumero']."\t"; // => FR74412724577
$strOut.=@$tabId['TvaAttribue']."\t"; // =>
$strOut.=@$tabId['FJ']."\t"; // => 1900
$strOut.=@$tabId['RECME']."\t"; // => 0
$strOut.=@$tabId['NafEtab']."\t"; // => 7712Z
$strOut.=@$tabId['NafEnt']."\t"; // => 7712Z
$strOut.=@$tabId['NaceEtab']."\t"; // => N7712
$strOut.=@$tabId['NaceEnt']."\t"; // => N7712
$strOut.=@$tabId['Isin']."\t"; // =>
$strOut.=@$tabId['Capital']."\t"; // => 000000000000000
$strOut.=@$tabId['CapitalDev']."\t"; // =>
$strOut.=@$tabId['CapitalType']."\t"; // =>
$strOut.=@$tabId['DateCreaEt']."\t"; // => 19950500
$strOut.=@$tabId['DateCreaEn']."\t"; // => 19950500
$strOut.=@$tabId['SituationJuridique']."\t"; // =>
$strOut.=@$tabId['EffEnTr']."\t"; // => 00
$strOut.=@$tabId['EffEnTrLib']."\t"; // => N/C
$strOut.=@$tabId['EffEtTr']."\t"; // => 00
$strOut.=@$tabId['EffEtTrLib']."\t"; // =>
$strOut.=@$tabId['EffectifEtab']."\t"; // => 0000000
$strOut.=@$tabId['Effectif']."\t"; // => 0000000
$strOut.=@$tabId['Dept']."\t"; // => 01
$strOut.=@$tabId['codeCommune']."\t"; // => 053
$strOut.=@$tabId['TrancheCA']."\t"; // => 0
$strOut.=@$tabId['TrancheCALib']."\t"; // => N/C
$strOut.=@$tabId['TrancheCAexp']."\t"; // => 0
$strOut.=@$tabId['TrancheCAexpLib']."\t"; // => 0%
$strOut.=@$tabId['TrancheCAType']."\t"; // => I
$strOut.=@$tabId['AnneeEffEn']."\t"; // => 2004
$strOut.=@$tabId['AnneeEffEt']."\t"; // => 2004
$strOut.=@$tabId['AnneeTCA']."\t"; // => 0000
$strOut.=@$tabId['Rivoli']."\t"; // => 2400 0
$strOut.=@$tabId['InfosIris']['codIris']."\t"; // => 0201
$strOut.=@$tabId['InfosIris']['codComIris']."\t"; // => 010530201
$strOut.=@$tabId['InfosIris']['libIris']."\t"; // => Citadelle
$strOut.=@$tabId['InfosIris']['typIris']."\t"; // => IRIS d'habitat
$strOut.=@$tabId['InfosIris']['evoIris']."\t"; // => 0
$strOut.=@$tabId['InfosIris']['trIris']."\t"; // => 010021
$strOut.=@$tabId['InfosIris']['grdQuartier']."\t"; // => 0105302
$strOut.=@$tabId['NatureActivite']."\t"; // => 0
$strOut.=@$tabId['OrigineCreation']."\t"; // => 1
$strOut.=@$tabId['Auxiliaire']."\t"; // => 0
$strOut.=@$tabId['Saisonnalite']."\t"; // => 0
$strOut.=@$tabId['ACTISURF']."\t"; // => 0
$strOut.=@$tabId['EXPLEN']."\t"; // => X
$strOut.=@$tabId['EXPLET']."\t"; // => X
$strOut.=@$tabId['LIEUACT']."\t"; // => 99
$strOut.=@$tabId['MODEN']."\t"; // => S
$strOut.=@$tabId['MONOACT']."\t"; // => 1
$strOut.=@$tabId['MONOREG']."\t"; // => 1
$strOut.=@$tabId['REGIMP']."\t"; // => 82
$strOut.=@$tabId['PRODPART']."\t"; // => 0
$strOut.=@$tabId['GeoInfos']['CUCS']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['ZRU']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['ZFU']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['ZUS']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['AFR']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['ZRR']."\t"; // => NON
$strOut.=@$tabId['GeoInfos']['NZRR']."\t"; // => 10194
$strOut.=@$tabId['NonDiffusible']."\t"; // =>
$strOut.=@$tabId['TypeExploitation']."\t"; // => 0
$strOut.=@$tabId['APRM']."\t"; // => 4399CZ
$strOut.=@$tabId['AdresseDom']."\t"; // => 2
$strOut.=@$tabId['AdresseDomNb']."\t"; // => 688
$strOut.=@$tabId['Activite']."\t"; // => Terrassement, travaux publics, (VRD), maçonnerie , Béton armé, location d'engins Tp, négoce de granulats et terre, Recyclage de matériaux
$strOut.=@$tabId['numGreffe']."\t"; // => 0101
$strOut.=@$tabId['numRC']."\t"; // => 2012A00006
$strOut.=@$tabId['NumRM']."\t"; // => 327155404 RM 01
$strOut.=@$tabId['dateImmat']."\t"; // => 2012-01-11
$strOut.=@$tabId['dateRad']."\t"; // => 0000-00-00
$strOut.=@$tabId['TribunalLib']."\t"; // => TC BOURG EN BRESSE
$strOut.=@$tabId['bilanAnnee']."\t"; // => 2010
$strOut.=@$tabId['bilanFLestime']."\t"; // => 250531
$strOut.=@$tabId['dateMajIdentite']."\t"; // => 2012-09-30
$strOut.=@$tabId['DateMajINSEE']."\t"; // => 2012-09-30
$strOut.=@$tabId['dateMajANN']."\t"; // => 2012-01-24
$strOut.=@$tabId['DateMajRCS']."\t";
$ANNONCESVDATE=$ANNONCERJDATE=$ANNONCELJDATE=$ANNONCEPLANDATE='';
if (@$tabId['SituationJuridique']=='P') {
$tabProCol=@$iInsee->getAnnoncesLegales($siren, 0, 'P', false);
foreach ($tabProCol as $iProcol=>$procol) {
foreach ($procol['evenements'] as $even) {
if ($iProcol==0) $ANNONCEPC=$even['LibEven'];
switch ($even['CodeEven']*1) {
case 1300: // Conversion Redressement Judiciaire en Liquidation Judiciaire
case 1301: // Ouverture Liquidation Judiciaire
case 1302: // Ouverture Liquidation Judiciaire Simplifiée
case 1305: // Liquidation Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1303: // Ouverture Liquidation Judiciaire sur résolution du plan
case 1304: // Réouverture Liquidation Judiciaire
case 1306: // Liquidation Judiciaire simplifiée
case 1307: // Conversion sauvegarde en Liquidation Judiciaire
case 1311: // Liquidation Judiciaire par extension au(x) gérant(s)
case 1312: // Liquidation Judiciaire avec continuation d'exploitation
case 1313: // Liquidation Judiciaire sans remise des accessoires
case 1417: // Jugement d'extension de liquidation judiciaire
// Annonce de liquidation judiciaire
$ANNONCELJ=true;
// Date de l'annonce LJ
$ANNONCELJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1200: // Redressement Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1201: // Conversion sauvegarde en Redressement Judiciaire
case 1211: // Redressement Judiciaire par extension au(x) gérant(s)
case 1212: // Réforme de Liquidation Judiciaire en Redressement Judiciaire
case 1418: // Jugement d'extension d'une procédure de redressement judiciaire
// Annonce de redressement judiciaire
$ANNONCERJ=true;
// Date de l'annonce RJ
$ANNONCERJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1100: // Ouverture sauvegarde
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1419: // Jugement d'extension d'une procédure de sauvegarde
// Annonce de sauvegarde
$ANNONCESV=true;
// Date de l'annonce Sauv
$ANNONCESVDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1407: // Modification de plan
case 1408: // Modification du plan de cession
case 1409: // Modification du plan de continuation
case 1415: // Prolongement du plan cession
// Modif de plan d'apurement
$PLANMODIF=true;
$ANNONCEPLANMODIFDATE=$ANNONCEDATE=$procol['dateJugement'];
break;
case 1411: // Arrêt du plan de cession
case 1414: // Arrêt du plan de redressement
$ANNONCEPLANFINDATE=$procol['dateFinObservation'];
if (substr($ANNONCEPLANFINDATE,0,4)*1==0) $ANNONCEPLANFINDATE='';
/** @todo $ANNONCEPLANDUREE='';
**/
case 1412: // Arrêt du plan de cession partielle
case 1413: // Arrêt du plan de continuation
case 1101: // Jugement arrêtant plan de sauvegarde
$PLAN=true; // Présence d'une annonce de plan d'apurement
if ($even['CodeEven']*1==1411) $ANNONCEPLAN='cession';
elseif ($even['CodeEven']*1==1412) $ANNONCEPLAN='cession partielle';
elseif ($even['CodeEven']*1==1413) $ANNONCEPLAN='continuation';
elseif ($even['CodeEven']*1==1414) $ANNONCEPLAN='redressement';
elseif ($even['CodeEven']*1==1101) $ANNONCEPLAN='sauvegarde';
// Date de l'annonce de plan
$ANNONCEPLANDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
break;
case 1600: // Interdictions et Faillites
case 1601:
case 1610:
case 1611:
$ANNONCEINTERDITDATE=$procol['dateJugement'];
break;
case 1202: // Renouvellement de la période d'observation
$ANNONCEPC_OBS=true;
//1430, Jugement autorisant la poursuite d'activité
break;
}
}
}
} elseif ($tabIdentite['SituationJuridique']=='PL') {
$ANNONCEPCHISTO=true;
$ELIMINE=false;
$ANNONCEPC='Plan de continuation/redressement';
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'P', false);
foreach ($tabProCol as $iProcol=>$procol) {
foreach ($procol['evenements'] as $even) {
if ($iProcol==0) $ANNONCEPC=$even['LibEven'];
switch ($even['CodeEven']*1) {
case 1300: // Conversion Redressement Judiciaire en Liquidation Judiciaire
case 1301: // Ouverture Liquidation Judiciaire
case 1302: // Ouverture Liquidation Judiciaire Simplifiée
case 1305: // Liquidation Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1303: // Ouverture Liquidation Judiciaire sur résolution du plan
case 1304: // Réouverture Liquidation Judiciaire
case 1306: // Liquidation Judiciaire simplifiée
case 1307: // Conversion sauvegarde en Liquidation Judiciaire
case 1311: // Liquidation Judiciaire par extension au(x) gérant(s)
case 1312: // Liquidation Judiciaire avec continuation d'exploitation
case 1313: // Liquidation Judiciaire sans remise des accessoires
case 1417: // Jugement d'extension de liquidation judiciaire
// Annonce de liquidation judiciaire
$ANNONCELJ=true;
// Date de l'annonce LJ
$ANNONCELJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1200: // Redressement Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1201: // Conversion sauvegarde en Redressement Judiciaire
case 1211: // Redressement Judiciaire par extension au(x) gérant(s)
case 1212: // Réforme de Liquidation Judiciaire en Redressement Judiciaire
case 1418: // Jugement d'extension d'une procédure de redressement judiciaire
// Annonce de redressement judiciaire
$ANNONCERJ=true;
// Date de l'annonce RJ
$ANNONCERJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1100: // Ouverture sauvegarde
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1419: // Jugement d'extension d'une procédure de sauvegarde
// Annonce de sauvegarde
$ANNONCESV=true;
// Date de l'annonce Sauv
$ANNONCESVDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1407: // Modification de plan
case 1408: // Modification du plan de cession
case 1409: // Modification du plan de continuation
case 1415: // Prolongement du plan cession
// Modif de plan d'apurement
$PLANMODIF=true;
$ANNONCEPLANMODIFDATE=$ANNONCEDATE=$procol['dateJugement'];
break;
case 1411: // Arrêt du plan de cession
case 1414: // Arrêt du plan de redressement
$ANNONCEPLANFINDATE=$procol['dateFinObservation'];
if (substr($ANNONCEPLANFINDATE,0,4)*1==0) $ANNONCEPLANFINDATE='';
/** @todo $ANNONCEPLANDUREE='';
**/
case 1412: // Arrêt du plan de cession partielle
case 1413: // Arrêt du plan de continuation
case 1101: // Jugement arrêtant plan de sauvegarde
$PLAN=true; // Présence d'une annonce de plan d'apurement
if ($even['CodeEven']*1==1411) $ANNONCEPLAN='cession';
elseif ($even['CodeEven']*1==1412) $ANNONCEPLAN='cession partielle';
elseif ($even['CodeEven']*1==1413) $ANNONCEPLAN='continuation';
elseif ($even['CodeEven']*1==1414) $ANNONCEPLAN='redressement';
elseif ($even['CodeEven']*1==1101) $ANNONCEPLAN='sauvegarde';
// Date de l'annonce de plan
$ANNONCEPLANDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
break;
case 1600: // Interdictions et Faillites
case 1601:
case 1610:
case 1611:
$ANNONCEINTERDITDATE=$procol['dateJugement'];
break;
case 1202: // Renouvellement de la période d'observation
$ANNONCEPC_OBS=true;
//1430, Jugement autorisant la poursuite d'activité
break;
}
}
}
} else {
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'PH', false);
if (count($tabProCol)>0) $ANNONCEPCHISTO=1;
else $ANNONCEPCHISTO=0;
}
$strOut.="$ANNONCESVDATE\t$ANNONCERJDATE\t$ANNONCELJDATE\t$ANNONCEPLANDATE".EOL; // => 2012-03-21
}
fwrite($fp, $strOut);
echo date('Y-m-d H:i:s')." - $i/$nb : $siren".EOL;
}
?>

View File

@ -118,265 +118,6 @@ if (count($tabFichLigneCmd)==0) {
sort($tabFichierIn);
} else $tabFichierIn=$tabFichLigneCmd;
/*
$nbLignes=$iDb->exportCSV(file_get_contents($sql), $csv.'.tmp');
$fp = fopen("./csv2sql.log", 'a');
fwrite($fp, date('Y-m-d H:i:s')." - $base $sql $csv : $nbLignes lignes extraites".EOL);
*/
/*
$tabTmp=$iDb2->select('fedaso', 'count(*) AS nb', "DATE(dateEnvoi)=DATE(NOW())", false, MYSQL_ASSOC);
$nbEncours=$tabTmp[0]['nb'];
$tabTmp=$iDb2->select('fedaso', 'DATE(MAX(dateEnvoi)) AS lastEnvoi', "1", false, MYSQL_ASSOC);
$maxEnvoi=$tabTmp[0]['lastEnvoi'];
$message='';
if ($lastDepot || ($genereDepot && $nbEncours==0)) {
$nbEncours=0;
$strFichierOut='';
$tabActesASaisir=$tabFichierOut=array();
$tabTmp=$iDb->select('jo.tabActes', 'codActe', 'prioriteSaisie BETWEEN 1 AND 10', false, MYSQL_ASSOC);
foreach ($tabTmp as $actes)
$tabActesASaisir[]=$actes['codActe'];
$nbTypesSaisie=count($tabActesASaisir);
echo date('Y/m/d - H:i:s') ." - Il y a $nbTypesSaisie types d'actes en saisie.". EOL;
echo date('Y/m/d - H:i:s') ." - Recherche des $nbEnvois documents à envoyer en saisie.". EOL;
while($nbEncours<=$nbEnvois) {
if ($lastDepot)
$tabTmp=$iDb->select('sdv1.fedaso', 'siren, page, params, dateEnvoi AS dateHeure', "dateEnvoi BETWEEN '$maxEnvoi 00:00:00' AND '$maxEnvoi 23:59:59'", false, MYSQL_ASSOC);
else
$tabTmp=$iDb->select('sdv1.logs', 'siren, page, params, dateHeure', "page LIKE 'greffe_%' AND params<>'' AND params NOT LIKE 'Erreur%' GROUP BY siren, page, params ORDER BY dateHeure DESC", false, MYSQL_ASSOC);
foreach ($tabTmp as $actes) {
$siren =$actes['siren'];
$params=$actes['params'];
$pageAc=$actes['page'];
$dateCmd=$actes['dateHeure'];
if ($pageAc=='greffe_bilans') {
$multiDepot=false;
// L'acte a traiter est un bilan
$url="http://extranet.scores-decisions.com/pdf/bilan-$siren-$params.pdf";
//$url="http://extranet.scores-decisions.com/datafile.php?q=bilan-$siren-$params.pdf";
} elseif ($pageAc=='greffe_actes') {
// L'acte est un acte/document divers
if (preg_match('/\|/', $params)) {
$multiDepot=true;
// L'acte contient plusieurs dépôts
$tabParams=explode('-', $params);
$dateActe=$tabParams[1];
// On liste les actes du dépôt
$tabTmp2=$iDb->select('jo.greffes_actes', 'siren, type_acte, (date_acte*1) AS dateActe, numGreffe, numRC, num_depot, num_acte', "siren=$siren AND dateActe=$dateActe", false, MYSQL_ASSOC);
$tabDepots=array();
if (count($tabTmp2)>0) {
foreach ($tabTmp2 as $actes2) {
$numRC1=substr($actes2['numRC'],0,2);
$numRC2=substr($actes2['numRC'],2,1);
$numRC3=substr($actes2['numRC'],3);
$params=$actes2['type_acte'].'-'.$actes2['dateActe'].'-'.$actes2['numGreffe'].
"-$numRC1-$numRC2-$numRC3-".$actes2['num_depot'].'-'.$actes2['num_acte'];
$url="http://extranet.scores-decisions.com/pdf/acte-$siren-$params.pdf";
if (!in_array(''.$actes2['type_acte'], $tabActesASaisir)) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (exclu)".EOL;
continue;
} else {
$tabDepots[]=$params;
// On vérifie si cette acte n'est pas déjà saisie ou en saisie !
if (!$lastDepot) {
$tabTmp2=$iDb2->select('fedaso', 'count(*) AS nb', "siren=$siren AND page='$pageAc' AND params='$params'", false, MYSQL_ASSOC);
if ($tabTmp2[0]['nb']>0) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (en cours)".EOL;
continue;
}
}
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
if (!$tabPdf) {
$page=getUrl($url, '', '', '', false);
if ($page['code']<>200 || !isset($page['header']['Content-Disposition']) || $page['header']['Content-Disposition']=='') {
echo date('Y/m/d - H:i:s') ." - ___\t$url (inexistant)".EOL;
$tabDepots=@$iGreffes->getListeActes($siren);
$nbDepots=count($tabDepots);
print_r($tabDepots);
die();
continue;
}
@mkdir($repPdfInfogreffe);
$fp=@fopen($repPdfInfogreffe.'/'.basename($url), 'w');
if (!$fp || !fwrite($fp, $page['body']))
echo date('Y/m/d - H:i:s') ." - ___\t$url (erreur fichier local)".EOL;
@fclose($fp);
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
// randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
if (!$tabPdf) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (vide)".EOL;
unlink($repPdfInfogreffe.'/'.basename($url));
continue;
}
$pdfSize= $tabPdf['pdfSize'];
$pdfVer = $tabPdf['version'];
$pdfPage= $tabPdf['nbPages'];
$nbEncours++;
$tabFichierOut[]=basename($url);
$strFichierOut.="$nbEncours\t$dateCmd\t$pdfSize ko\t$pdfPage\t".basename($url).EOL;
if(!$iDb2->insert('fedaso', array( 'siren' => $siren,
'params' => $params,
'page' => $pageAc,
'dateEnvoi' => date('YmdHis'),
'dateCmd' => $dateCmd,
'pdfNum' => $nbEncours,
'pdfSize' => $pdfSize,
'pdfPage' => $pdfPage,
))) {
if (!$lastDepot)
echo date('Y/m/d - H:i:s') ." - ERREUR lors de l'insertion de $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
} else
echo date('Y/m/d - H:i:s') ." - $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
if ($nbEncours>=$nbEnvois) {
// On efface le dernier fichier car il est de trop !
//unlink($repPdfInfogreffe.'/'.basename($url));
break(3);
}
}
}
} else {
// La liste des actes n'est pas disponible sur notre Système !
}
} else {
$multiDepot=false;
$url="http://extranet.scores-decisions.com/pdf/acte-$siren-$params.pdf";
//$url="http://extranet.scores-decisions.com/datafile.php?q=acte-$siren-$params.pdf";
$tmp=explode('-', $params);
if (!in_array(''.$tmp[0], $tabActesASaisir)) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (exclu)".EOL;
continue;
}
}
}
if (!$multiDepot) {
// On vérifie si cette acte n'est pas déjà saisie ou en saisie !
if (!$lastDepot) {
$tabTmp2=$iDb2->select('fedaso', 'count(*) AS nb', "siren=$siren AND page='$pageAc' AND params='$params'", false, MYSQL_ASSOC);
if ($tabTmp2[0]['nb']>0) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (en cours)".EOL;
$nbPdfEncours++;
if (($nbPdfEncours+$nbPdfInexist)>1500)
break 2; // Arret de l'export de la liste
continue;
}
}
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
if (!$tabPdf) {
$page=getUrl($url, '', '', '', false);
if ($page['code']<>200 || !isset($page['header']['Content-Disposition']) || $page['header']['Content-Disposition']=='') {
echo date('Y/m/d - H:i:s') ." - ___\t$url (inexistant)".EOL;
$nbPdfInexist++;
if (strlen($params)==35) {
//echo 'ici';
if ($pageAc=='greffe_actes') $tabDepots=@$iGreffes->getListeActes($siren);
elseif ($pageAc=='greffe_bilans') $tabDepots=@$iGreffes->getBilansImages($siren);
$nbDepots=count($tabDepots);
print_r($tabDepots);
echo date('Y/m/d - H:i:s') ." - ___\t$url (RECHERCHE dans $nbDepots $pageAc)".EOL;
foreach ($tabDepots as $depot) {
if ($pageAc=='greffe_actes')
$params2=$depot['acte_type'].'-'.WDate::dateT('Y-m-d','Ymd',$depot['acte_date']).'-'.$depot['numGreffe'].
'-'.$depot['numRC'].'-'.$depot['depot_num'].'-'.$depot['acte_num'];
else {
$params2=$depot['annee'].'_'.$depot['type'].'-'.WDate::dateT('Y-m-d','Ymd',$depot['dateCloture']).'-'.
$depot['numGreffe'].'-'.$depot['numRC'].'-'.$depot['depot_num'];
/// echo("$url\t$params\t$params2".EOL);
// die();
}
if (strpos($params2, $params)===false)
echo("$params2\tDIFFERENT DE\t$params".EOL);
else {
echo("$params2\tIDENTIQUE\t$params".EOL);
$url="http://extranet.scores-decisions.com/pdf/acte-$siren-$params2.pdf";
$params=$params2;
//die($url);
$page=getUrl($url, '', '', '', false);
if ($page['code']<>200 || !isset($page['header']['Content-Disposition']) || $page['header']['Content-Disposition']=='') {
echo date('Y/m/d - H:i:s') ." - ___\t$url (inexistant)".EOL;
continue;
}
break;
}
}
} else
//print_r($page);die();
continue;
}
@mkdir($repPdfInfogreffe);
$fp=@fopen($repPdfInfogreffe.'/'.basename($url), 'w');
if (!$fp || !fwrite($fp, $page['body']))
echo date('Y/m/d - H:i:s') ." - ___\t$url (erreur fichier local)".EOL;
@fclose($fp);
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
// randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
if (!$tabPdf) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (vide)".EOL;
unlink($repPdfInfogreffe.'/'.basename($url));
continue;
}
$pdfSize= $tabPdf['pdfSize'];
$pdfVer = $tabPdf['version'];
$pdfPage= $tabPdf['nbPages'];
$nbEncours++;
//$tabFichierOut[]=basename($url);
$tabFichierOut[]=basename($url);
$strFichierOut.="$nbEncours\t$dateCmd\t$pdfSize ko\t$pdfPage\t".basename($url).EOL;
if(!$iDb2->insert('fedaso', array( 'siren' => $siren,
'params' => $params,
'page' => $pageAc,
'dateEnvoi' => date('YmdHis'),
'dateCmd' => $dateCmd,
'pdfNum' => $nbEncours,
'pdfSize' => $pdfSize,
'pdfPage' => $pdfPage,
))) {
if ($lastDepot)
echo date('Y/m/d - H:i:s') ." - Reprise $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
else
echo date('Y/m/d - H:i:s') ." - ERREUR lors de l'insertion de $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
} else
echo date('Y/m/d - H:i:s') ." - $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
if ($nbEncours>=$nbEnvois) {
// On efface le dernier fichier car il est de trop !
//unlink($repPdfInfogreffe.'/'.basename($url));
break(2);
}
}
}
}
$fichierIndex='lotliensn-'.date('Y-m-d-Hi').'.txt';
$nbActes=count($tabFichierOut);
if (file_put_contents($repPdfInfogreffe.'/'.$fichierIndex, $verFedasoFic.EOL.implode(EOL, $tabFichierOut).EOL.$nbActes))
$message=date('Y/m/d - H:i:s') ." - Le fichier index $fichierIndex a été crée pour les $nbActes.". EOL;
else
$message=date('Y/m/d - H:i:s') ." - Erreur : Création impossible du fichier index $fichierIndex pour les $nbActes !". EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "FEDASO : Génération du dépôt pour le Maroc", $message.EOL.$strFichierOut);
} elseif ($genereDepot && $nbEncours==$nbEnvois) {
$message=date('Y/m/d - H:i:s') ." - Les $nbEncours actes quotidiens ont déjà été déposés.". EOL;
} elseif ($genereDepot && $nbEncours<$nbEnvois) {
$message=date('Y/m/d - H:i:s') ." - Erreur : Il n'y a que $nbEncours actes / $nbActes déposés pour Fedaso !". EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "FEDASO : Génération du dépôt pour le Maroc", $message.EOL.$strFichierOut);
}
echo $message;
*/
// Lecture du dossier des dépots de bilans à demander en saisie
if ($genereDepot) {
$nbEncours=0;
@ -402,6 +143,8 @@ if ($genereDepot) {
$sizeKo=round($pdfSize/1024,1);
echo "$filename\t$sizeKo Ko\t$pdfPage page(s)\t";
if (!$iInsee->valideSiren($siren)) echo 'KO siren invalide'.EOL;
if(!$iDb2->insert('fedaso_bilans',array('siren' => $siren,
'dateCloture' => $dateClot,
'duree' => $dureeClot,
@ -420,8 +163,41 @@ if ($genereDepot) {
} else {
$nbEncours++;
bzip2(BILANS_A_SAISIR_DIR.'/'.$filename, FEDASO_BACKUP_DIR.$filename);
move(BILANS_A_SAISIR_DIR.'/'.$filename, FEDASO_BILANS_TODO_DIR.'/'.$filename);
//move(BILANS_A_SAISIR_DIR.'/'.$filename, FEDASO_BILANS_TODO_DIR.'/'.$filename);
echo 'Ok'.EOL;
$tabIdentite=@$iInsee->getIdentiteLight($siren);
$sirenAff=implode(' ', str_split($siren,3));
$rs=substr($tabIdentite['Nom'],0,30).'...';
$message="Merci de procéder dès que possible à la saisie du bilan PDF de $pdfPage pages pour la société suivante :\r\n";
$message.="\r\n";
$message="Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
// Durée de l'exercice
if ($dureeClot*1>0) $strDuree=" (durée : $dureeClot mois)";
else $strDuree='';
$message.='Date de clôture : '. WDate::dateT('Ymd','d/m/Y',$dateClot)."$strDuree\r\n";
//if ($typeBilan<>'') $message.="Format de liasse : $liasse\r\n";
$message.="\r\n";
$message.="Adresse du siège : ". $tabIdentite['Adresse'].', '.$tabIdentite['CP'].' '.$tabIdentite['Ville']."\r\n";
$message.="Forme juridique : ". $tabIdentite['FJ_lib'].' ('.$tabIdentite['FJ'].")\r\n";
$message.="Activité de l'entreprise : ". $tabIdentite['NafEntLib'].' ('.$tabIdentite['NafEnt'].")\r\n";
$message.="\r\n";
$message.="Document "; if ($conf<>1) $message.="non "; $message.="confidentiel\r\n";
$message.="Fichier $filename du ". WDate::dateT('Ymd','d/m/Y',$dateFic)."\r\n";
$message.="Nombre de pages : $pdfPage pages (".round($pdfSize/1000,1)." Ko)\r\n";
$message.="Utilisateur n°$idUti\r\n";
$message.="Extranet n°$idBddExt\r\n";
$message.="\r\n";
if ($pdfPage*1>10) $message.="Le document étant volumineux, pensez à saisir les actionnaires et participations (généralement mentionnés dans les annexes 17 et 18) !\r\n";
// if ($env==1) $message.="CECI EST UN TEST, MERCI DE NE PAS SAISIR LE DOCUMENT\r\n";
$message.="\r\n";
$message.="https://tville.scores-decisions.com/boffice/sirenbod/bilans.php?type=SAIS&ctrl=0\r\n";
sendMail('production@scores-decisions.com', 'jal42@scores-decisions.com',
"Demande de saisie du bilan $siren du ".WDate::dateT('Ymd','d/m/Y',$dateClot)." ($dureeClot mois)",
$message);
}
}
}
@ -578,7 +354,7 @@ if (count($tabFichierIn)>0 || count($tabFichLigneCmd)>0) {
echo $messageLigne;
$messageErrCtrl.=$messageLigne;
$msgBilan.=$messageLigne; //if ($tabPostes[$strCtrl]<>$total) echo "\tdifférents";
if ($codeSai=='00') $anoBilan=2;
if ($codeSai=='00') $anoBilan=5;
}
// else echo "ok\t(".@$tabPostes[$strCtrl].'='.$total.')'.EOL;
}

View File

@ -8,6 +8,81 @@ include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMMap.php');
include_once(FWK_PATH.'mail/sendMail.php');
//METRO 1 Gare de Lyon 2.374476319481324 48.84582416476877
$tabLignes=file('/root/sql/Metro.csv');
$tabMetroGPS=$tabMetroL93=array();
foreach ($tabLignes as $i=>$ligne) {
$tabTmp=explode("\t", $ligne);
$latitude=$tabTmp[3];
$longitude=$tabTmp[2];
$tabMetroGPS[$tabTmp[0].'-'.$tabTmp[1]]=array('x'=>$latitude,'y'=>$longitude);
$lambert=geos2lambert93($latitude,$longitude);
$x93=round($lambert['x_93']);
$y93=round($lambert['y_93']);
$tabMetroL93[$tabTmp[0].'-'.$tabTmp[1]]=array('x'=>$x93,'y'=>$y93);
}
//print_r($tabMetroGPS);
//print_r($tabMetroL93);
$iDb=new WDB('insee');
$imap=new MMap();
$nbLoaded=$iDb->select('jo.etablissements_act', "siren, nic, siege, raisonSociale, enseigne, sigle, eff_entrep, eff_etab, bilYP, adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, l93_x, l93_y", "(
adr_dep
IN (
'75', '075', 75
)
OR (
adr_dep =93
AND adr_com =048
)
OR (
adr_dep =94
AND adr_com =018
)
OR (
adr_dep =94
AND adr_com =067
)
OR (
adr_dep =94
AND adr_com =080
)
)
AND (
eff_entrep >=100
OR eff_etab >=100
OR bilYP >=100
)
AND precis IS NOT NULL", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses à mettre à jour...".EOL;
$nbLignes=0;
while($adr=$iDb->fetch(MYSQL_ASSOC)) {
$nbLignes++;
/* if (trim($adr['insL7_ETRG'])=='') $pays='France';
else $pays=trim($adr['insL7_ETRG']);
$codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE'];
$geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli);
*/
foreach ($tabMetroL93 as $lib=>$tabXY) {
$dist=round($imap->distanceLambert($tabXY['x'],$tabXY['y'],$adr['l93_x'],$adr['l93_y']));
if ($dist<=100) {
echo "$nbLignes/$nbLoaded\t".$adr['siren'].' '.$adr['nic']."\t$dist mètres\t$lib\t".
implode("\t", $adr).EOL;
}
}
}
die();
/*
$points=array('48.5161400 -4.0806451',
'47.9696045 -4.0953622',

View File

@ -87,6 +87,9 @@ if ($doQuotidien) {
echo "$nbLignes/$nbLoaded:".$adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->altitude.' m., p='.$imap->precision.")\t";
echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => ';
echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL;
if ($modeDebug && $imap->enCache==0)
echo "Code Retour Google = '".$imap->codeRetourG."', Yahoo='".$imap->codeRetourY."', Mappy='".$imap->codeRetourM."'".EOL;
@$tabGeocodeur[$imap->geocodeur][$imap->enCache]++;
if ($imap->enCache==true) $nbEnCache++;
if ($imap->altitude<>NULL) $nbAlt++;
@ -146,7 +149,7 @@ if ($doAltitudes) {
**/
$nbLignes=$nbEnCache=$nbDistant=$nbAlt=0;
$nbLoaded=$iDb->select('jo.zonageXY', "address AS insL4_VOIE, adrNum AS insNUMVOIE, adrIndRep AS insINDREP, adrTypeVoie AS insTYPVOIE, adrLibVoie AS insLIBVOIE, adr_cp AS insCODPOS, adr_ville AS insLIBCOM,
SUBSTRING(rivoli,1,5) AS insDEPCOM, SUBSTRING(rivoli,6,5) AS insCODEVOIE, '' AS insL7_ETRG, 0 AS idFlux", "alt IS NULL LIMIT 0,40000", false, MYSQL_ASSOC, true);
SUBSTRING(rivoli,1,5) AS insDEPCOM, SUBSTRING(rivoli,6,5) AS insCODEVOIE, '' AS insL7_ETRG, 0 AS idFlux", "alt IS NULL AND precis>4 LIMIT 80000,40000", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses sans altitude à mettre à jour...".EOL;
$message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses sans altitude".EOL;
$tabGeocodeur=array();
@ -156,7 +159,7 @@ if ($doAltitudes) {
else $pays=trim($adr['insL7_ETRG']);
$codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE'];
$geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli);
echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.")\t";
echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.") ".$imap->altitude." m.\t";
echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => ';
echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL;
@$tabGeocodeur[$imap->geocodeur][$imap->enCache]++;

View File

@ -0,0 +1,845 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$nbAdrRnvp=1000000;
$nbAdrRnvp=500000;
define('RNVP_FTP_HOST', 'gobie-d2-75.altima-hosting.fr');
define('RNVP_FTP_LOGIN', 'ScoresEtDecisions');
define('RNVP_FTP_PASS', '7631014530');
define('RNVP_FTP_DIR_GET', '/sortie/');
define('RNVP_FTP_DIR_PUT', '/entree/');
define('RNVP_FTP_LOCALDIR', '/home/data/rnvp/');
define('RNVP_BACKUP_DIR', '/home/data/rnvp/histo/');
$sep="\t";
$eol=EOL;
error_reporting(E_ALL ^ E_NOTICE);
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Gestion de la normalisation des adresses en fonction des sources.
Sans paramètre : réception des adresses normalisées, collecte des nouvelles et envoi pour normalisation.
Options :
-c[:OOO] Collecte des adresses à normaliser dans les differentes sources (OOO source optionnelle)
-e Envoi des adresses à normaliser
-r Reception des adresses normalisée
-m Ne pas envoyer de mail
-v Mode verbose/debug
-l Liste des sources
-s:XXX Renvoyer la source XXX en RNVP (non opérationnel)
-n Renvoyer toutes les adresses non traitées en RNVP
";
$tabSrc=array( 'leiReg'=>array('lib'=>'LEI Registered',
'db'=>'sdv1',
'table'=>'bourse_lei',
'zones'=>"100 AS source, id AS source_id, 0 AS num,
RegisteredName AS L1in, MappedRegisteredName AS L2in, RegisteredAddress2 AS L3in, RegisteredAddress1 AS L4in,
CONCAT(RegisteredAddress3,' ', RegisteredAddress4) AS L5in, CONCAT(RegisteredPostalCode,' ',RegisteredCity) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"RegisteredName<>'' AND RegisteredAddress1<>'' AND RegisteredCity<>'' AND RegisteredCountryCode='FR'
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=100 AND num=0),0)",
'go'=>0,
'idSrc'=>100),
'leiHead'=>array('lib'=>'LEI Headquarters',
'db'=>'sdv1',
'table'=>'bourse_lei',
'zones'=>"100 AS source, id AS source_id, 1 AS num,
RegisteredName AS L1in, HeadquarterAddress2 AS L2in, HeadquarterAddress3 AS L3in, HeadquarterAddress1 AS L4in,
HeadquarterAddress4 AS L5in, CONCAT(HeadquarterPostalCode,' ',HeadquarterCity) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"RegisteredName<>'' AND HeadquarterAddress1<>'' AND HeadquarterCity<>'' AND HeadquarterCountryCode='FR'
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=100 AND num=1),0)",
'go'=>0,
'idSrc'=>100),
'bompadm'=>array('lib'=>'Administrations du BOAMP',
'db'=>'jo',
'table'=>'boamp_detail',
'zones'=>"140 AS source, id AS source_id, 0 AS num,
raisonSociale AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in,
'' AS L5in, CONCAT(cp,' ',ville) AS L6in, pays AS L7in, dateInsert*1 AS dateInsert",
'where'=>"raisonSociale<>'' AND adresse<>'' AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=140 AND num=0),0)",
'go'=>1,
'idSrc'=>140),
'bompent'=>array('lib'=>'Entreprises du BOAMP',
'db'=>'jo',
'table'=>'boamp_lots',
'zones'=>"140 AS source, id AS source_id, 1 AS num,
nom AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in,
'' AS L5in, CONCAT(cp,' ',ville) AS L6in, pays AS L7in, dateInsert*1 AS dateInsert",
'where'=>"nom<>'' AND adresse<>'' AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=140 AND num=1),0)",
'go'=>1,
'idSrc'=>140,
'idNum'=>1),
'greffes'=>array('lib'=>'Entreprises Infogreffe',
'db'=>'jo',
'table'=>'greffes_identite',
'zones'=>"4 AS source, id AS source_id, 0 AS num,
nom AS L1in, nomCommercial AS L2in, '' AS L3in, adresse AS L4in,
adresse2 AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"nom<>'' AND adresse<>'' AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=4 AND num=0),0)",
'go'=>1,
'idSrc'=>4),
'liens'=>array('lib'=>'Entreprises LiensRef',
'db'=>'jo',
'table'=>'liensRef',
'zones'=>"7 AS source, id AS source_id, 0 AS num,
RS AS L1in, '' AS L2in, '' AS L3in, CONCAT(adresse_num,' ',adresse_btq,' ',adresse_codvoie,' ',adresse_libvoie) AS L4in,
adresse_comp AS L5in, CONCAT(adresse_cp,' ',adresse_ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"id>999 AND sirenValide=0 AND RS<>'' AND adresse_libvoie<>'' AND adresse_ville<>'' AND adresse_pays='FRA'
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=7 AND num=0),0)",
'go'=>1,
'idSrc'=>7),
'rncsjug1'=>array('lib'=>'Jugements RNCS - Mandataire 1',
'db'=>'jo',
'table'=>'rncs_jugements',
'zones'=>"24 AS source, id AS source_id, 0 AS num,
adm1nom AS L1in, '' AS L2in, adm1adr2 AS L3in, adm1adr1 AS L4in,
adm1adr3 AS L5in, CONCAT(adm1adrCP,' ',adm1adrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"adm1nom<>'' AND adm1adr1<>'' AND adm1adrVille<>'' AND adm1type<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=24 AND num=0),0)",
'go'=>1,
'idSrc'=>24),
'rncsjug2'=>array('lib'=>'Jugements RNCS - Mandataire 2',
'db'=>'jo',
'table'=>'rncs_jugements',
'zones'=>"24 AS source, id AS source_id, 1 AS num,
adm2nom AS L1in, '' AS L2in, adm2adr2 AS L3in, adm2adr1 AS L4in,
adm2adr3 AS L5in, CONCAT(adm2adrCP,' ',adm2adrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"adm2nom<>'' AND adm2adr1<>'' AND adm2adrVille<>'' AND adm2type<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=24 AND num=1),0)",
'go'=>1,
'idSrc'=>24,
'idNum'=>1),
'rncsetab'=>array('lib'=>'Etablissements RNCS actifs',
'db'=>'jo',
'table'=>'rncs_etab e, rncs_entrep p',
'zones'=>"5 AS source, id AS source_id, 0 AS num,
p.raisonSociale AS L1in, IF(e.nomCommercial<>'',e.nomCommercial,e.enseigne) AS L2in, '' AS L3in, CONCAT(e.adrNumVoie,' ',e.adrIndRep,' ',e.adrTypeVoie,' ',e.adrVoie) AS L4in,
e.adrComp AS L5in, CONCAT(e.cp,' ',e.commune) AS L6in, '' AS L7in, e.dateInsert*1 AS dateInsert",
'where'=>"p.raisonSociale <>'' AND e.adrVoie<>'' AND e.commune<>'' AND e.siren=p.siren AND e.siege>=0 AND p.actif=1 AND e.actif=1
AND e.dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=5),0)",
'go'=>1,
'idSrc'=>24),
'clients'=>array('lib'=>'Sirenage Clients',
'db'=>'jo',
'table'=>'sirenage_clients',
'zones'=>"190 AS source, id AS source_id, 0 AS num,
nom AS L1in, enseigne AS L2in, adresse2 AS L3in, adresse1 AS L4in,
CONCAT(adresse3,' ',adresse4) AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"nom<>'' AND (adresse1<>'' OR adresse2<>'' OR adresse3<>'' OR adresse4<>'') AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=190 AND num=0),0)",
'go'=>1,
'idSrc'=>190),
'mand'=>array('lib'=>'Mandataires',
'db'=>'jo',
'table'=>'tabMandataires',
'zones'=>"176 AS source, id AS source_id, 0 AS num,
CONCAT(Nom,' ',Prenom) AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in,
adresseComp AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"Nom<>'' AND adresse<>'' AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=176),0)",
'go'=>1,
'idSrc'=>176),
'asso1'=>array( 'lib'=>'Associations',
'db'=>'jo',
'table'=>'asso',
'zones'=>"3 AS source, id AS source_id, 0 AS num,
Assoc_Nom AS L1in, '' AS L2in, '' AS L3in, Assoc_Adresse AS L4in,
Assoc_AdrComp AS L5in, CONCAT(Assoc_AdrCP,' ',Assoc_AdrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"Assoc_Nom<>'' AND Assoc_Adresse<>'' AND Assoc_AdrVille<>'' AND Type_Annonce NOT LIKE '%Dissolution%'
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=3 AND num=0),0)",
'go'=>1,
'idSrc'=>3,
'idNum'=>0),
'asso2'=>array( 'lib'=>'Associations (Déménagements)',
'db'=>'jo',
'table'=>'asso',
'zones'=>"3 AS source, id AS source_id, 1 AS num,
Assoc_Nom AS L1in, '' AS L2in, '' AS L3in, Assoc_NAdresse AS L4in,
'' AS L5in, '' AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"Assoc_Nom<>'' AND Assoc_NAdresse<>'' AND Type_Annonce NOT LIKE '%Dissolution%'
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=3 AND num=1),0)",
'go'=>1,
'splitterL4'=>1, // Toute l'adresse est comprise dans la ligne 4
'idSrc'=>3,
'idNum'=>1),
'jal'=>array( 'lib'=>'Annonces en Collecte',
'db'=>'jo',
'table'=>'annonces',
'zones'=>"8 AS source, id AS source_id, 0 AS num,
raisonSociale AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in,
'' AS L5in, CONCAT(codePostal,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"raisonSociale<>'' AND adresse<>'' AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=8),0)",
'go'=>1,
'idSrc'=>8),
'insee'=>array( 'lib'=>'Etablissements actifs de l\'Insee',
'db'=>'insee',
'table'=>'insee.identite',
'zones'=>"2 AS source, id AS source_id, 0 AS num,
insL1_NOMEN AS L1in, insL2_COMP AS L2in, insL3_CADR AS L3in, insL4_VOIE AS L4in,
insL5_DISP AS L5in, insL6_POST AS L6in, insL7_ETRG AS L7in, dateUpdate*1 AS dateInsert",
'where'=>"insL1_NOMEN<>'' AND insL4_VOIE<>'' AND insL6_POST<>'' AND ACTIF=1
/*AND id NOT IN (SELECT source_id FROM villes.rnvpSources WHERE source=2)*/
AND dateUpdate>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=2),0)",
'go'=>1,
'idSrc'=>2),
'tourisme'=>array('lib'=>'Hotels/Campings',
'db'=>'jo',
'table'=>'tourisme',
'zones'=>"200 AS source, id AS source_id, 0 AS num,
nom AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in,
'' AS L5in, CONCAT(adrCp,' ',adrVille) AS L6in, '' AS L7in, dateUpdate*1 AS dateInsert",
'where'=>"nom<>'' AND adresse<>'' AND adrVille<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=200),0)",
'go'=>1,
'idSrc'=>200),
'bodacc0'=>array('lib'=>'Bodacc',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 0 AS num,
raisonSociale AS L1in, enseigne AS L2in, nomCommercial AS L3in, adresse AS L4in,
'' AS L5in, CONCAT(codePostal,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"raisonSociale<>'' AND adresse<>'' AND codePostal>0 AND ville<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=0),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>0),
'bodacc1'=>array('lib'=>'Bodacc (Sièges)',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 1 AS num,
raisonSociale AS L1in, enseigne AS L2in, nomCommercial AS L3in, adresseSiege AS L4in,
'' AS L5in, CONCAT(codePostalSiege,' ',villeSiege) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"raisonSociale<>'' AND adresseSiege<>'' AND codePostalSiege>0 AND villeSiege<>''
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=1),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>1),
'bodacc2'=>array('lib'=>'Bodacc (Mandataires)',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 2 AS num,
mandNom AS L1in, mandRepr AS L2in, Mandataire AS L3in, mandAdresse AS L4in,
'' AS L5in, CONCAT(mandCP,' ',mandVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"Mandataire<>'' AND mandAdresse<>'' AND mandCP>0
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=2),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>2),
'bodacc3'=>array('lib'=>'Bodacc (ReprCreanciers)',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 3 AS num,
creaNom AS L1in, creaRepr AS L2in, ReprCreanciers AS L3in, creaAdresse AS L4in,
'' AS L5in, CONCAT(creaCP,' ',creaVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"ReprCreanciers<>'' AND creaAdresse<>'' AND creaCP>0
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=3),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>3),
'bodacc4'=>array('lib'=>'Bodacc (Administrateurs)',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 4 AS num,
admNom AS L1in, admRepr AS L2in, administrateur AS L3in, admAdresse AS L4in,
'' AS L5in, CONCAT(admCP,' ',admVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"administrateur<>'' AND admAdresse<>'' AND admCP>0
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=4),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>4),
'bodacc5'=>array('lib'=>'Bodacc (Oppositions)',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"1 AS source, id AS source_id, 5 AS num,
oppoNom AS L1in, oppoRepr AS L2in, oppositions AS L3in, oppoAdresse AS L4in,
'' AS L5in, CONCAT(oppoCP,' ',oppoVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"oppositions<>'' AND oppoAdresse<>'' AND oppoCP>0
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=5),0)",
'go'=>1,
'idSrc'=>1,
'idNum'=>5),
'rcMonaco'=>array('lib'=>'RC Monaco',
'db'=>'tmp',
'table'=>'rcMonaco',
'zones'=>"30 AS source, id AS source_id, 0 AS num,
IF(rs='',nomPrenom,rs) AS L1in, etabEns AS L2in, ensAdr1 AS L3in, ensAdr2 AS L4in, ensAdr3 AS L5in, ensAdr4 AS L6in, '' AS L7in, dateInsert*1 AS dateInsert",
'where'=>"(rs<>'' OR nomPrenom<>'') AND (ensAdr1 IS NOT NULL OR ensAdr2 IS NOT NULL OR ensAdr3 IS NOT NULL OR ensAdr4 IS NOT NULL)
AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=30),0)",
'go'=>1,
'idSrc'=>30),
/* 'qualifelec'=>array('lib'=>'Qualifelec',
'db'=>'sdv1',
'table'=>'qualifelec',
'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert, tel, fax",
'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>211),
'qualipaysage'=>array('lib'=>'Qualipaysage',
'db'=>'sdv1',
'table'=>'qualipaysage',
'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert, tel, fax",
'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>212),
'qualibat'=>array('lib'=>'Qualibat',
'db'=>'sdv1',
'table'=>'qualibat',
'zones'=>"id, siren, NULL AS nic, '' AS poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(tel,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR email<>'' OR web<>'')",
'go'=>1,
'idSrc'=>213),
'ecoartisan'=>array('lib'=>'EcoArtisan',
'db'=>'sdv1',
'table'=>'ecoartisan',
'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(tel,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS fax,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(mob,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS mob",
'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mob<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>214),
'finess'=>array('lib'=>'Finess',
'db'=>'sante',
'table'=>'finess',
'zones'=>"id, SUBSTRING(SIRET,1,9) AS siren, SUBSTRING(SIRET,10,5) AS nic, '' AS poste, '' AS mail, '' AS web, DATE(NOW())*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"SIRET>1000 AND recupTel=0 AND (Tel<>'' OR Fax<>'')",
'go'=>1,
'idSrc'=>210),
'cncc'=>array('lib'=>'CNCC',
'db'=>'sdv1',
'table'=>'tabCNCC',
'zones'=>"id, siren, nic, '' AS poste, mail, web, dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>300),
'amf_mairies'=>array('lib'=>'AMFM',
'db'=>'jo',
'table'=>'villes',
'zones'=>"id, siren, nic, '' AS poste, '' AS mail, web, dateMajAMF AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR web<>'')",
'go'=>1,
'idSrc'=>400),
'banatic'=>array('lib'=>'Banatic',
'db'=>'insee',
'table'=>'banatic_coor',
'zones'=>"id, sirenGrp AS siren, NULL AS nic, '' AS poste, mail, web, dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"sirenGrp>100 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>52),
'infos_entrep'=>array('lib'=>'InfosEntrep',
'db'=>'jo',
'table'=>'infos_entrep',
'zones'=>"id, siren, nic, '' AS poste, mail, web, dateUpdate AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>175),*/
);
//$tabZones=array('tel', 'fax', 'mob', 'mail', 'web', 'an8');
$verbose=$noMail=$collecteAdr=$recupRnvp=$envoiRnvp=$envoiRnvpAll=$listeSrc=$sourceCollecteOnly=false;
$purgeFtp=30; // Purger les fichiers sur le FTP qui ont plus de X jours
$tabFichiers=$tabFichiersCmd=array();
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1) {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v':
$verbose=true;
break;
case 'm':
$noMail=true;
break;
case 'c':
$collecteAdr=true;
$sourceCollecteOnly=trim(substr($argv[$i],3));
if ($sourceCollecteOnly=='') $sourceCollecteOnly=false;
//die($sourceCollecteOnly);
break;
case 'r':
$recupRnvp=true;
break;
case 'e': // Envoi des adresses à normaliser
case 's': // Renvoyer la source XXX en RNVP (non opérationnel)
case 'n': // Renvoyer toutes les adresses non traitées en RNVP
$envoiRnvp=true;
if (substr($argv[$i],1,1)=='s') {
$tmp=substr($argv[$i],3,strlen($argv[$i])-3);
$envoiSrc=@$tabSrc[$tmp]['idSrc'];
$envoiNum=@$tabSrc[$tmp]['idNum']*1;
if ($envoiSrc==0) die("Source '$tmp' inexistante !".EOL);
$nbAdrRnvp=20000000;
} elseif (substr($argv[$i],1,1)=='n') {
$nbAdrRnvp=1000000;
$envoiRnvpAll=true;
}
break;
case 'l':
$listeSrc=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
else {
$tabFichiersCmd[]=$argv[$i];
// $envoiRnvp=true;
}
}
} else
$collecteAdr=$recupRnvp=$envoiRnvp=true;
$iDb=new WDB('jo');
$iDb2=new WDB('villes');
$iInsee=new MInsee();
if ($listeSrc) {
foreach ($tabSrc as $codSrc=>$tabSrcDet) {
$idSrc=$tabSrcDet['idSrc'];
$nomSrc=$tabSrcDet['lib'];
$srcActive=$tabSrcDet['go'];
if($srcActive) echo "Actif\t";
else echo "INACTIF\t";
echo "$idSrc\t$codSrc\t$nomSrc".EOL;
}
die();
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de RNVP...".EOL;
if ($recupRnvp) {
echo date('Y/m/d - H:i:s') ." - Reception des adresses normalisées...".EOL;
$message=date('Y/m/d - H:i:s') ." - Début de réception des adresses normalisées.".EOL;
$tDeb=microtime(1);
$fc = ftp_connect(RNVP_FTP_HOST);
if (!$fc) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de se connecter à '".RNVP_FTP_HOST."' !". EOL);
$fl = ftp_login($fc, RNVP_FTP_LOGIN, RNVP_FTP_PASS);
if (!$fl) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de s'authentifier à '".RNVP_FTP_HOST."' !". EOL);
// CHARGEMENT ET D'UN FICHIER
$contents = ftp_nlist($fc, RNVP_FTP_DIR_GET);
if ($contents) {
foreach($contents as $k => $server_file) {
$dwl=false;
$tailleDist = ftp_size($fc, $server_file);
$dateDist = ftp_mdtm($fc, $server_file);
$server_fileName=basename($server_file);
if (file_exists(RNVP_FTP_LOCALDIR . $server_fileName)) {
$dateLoc=filemtime(RNVP_FTP_LOCALDIR . $server_fileName);
$tailleLoc=filesize(RNVP_FTP_LOCALDIR . $server_fileName);
}
if ($tailleDist<>@$tailleLoc &&
preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $server_fileName) && substr($server_fileName,-5)<>'.flag') {
$tDeb = microtime(true);
if (ftp_get($fc, RNVP_FTP_LOCALDIR.basename($server_file), $server_file, FTP_BINARY)) {
$tFin = microtime(true);
$tDur = round($tFin-$tDeb,3);
$tailleDistKo=round($tailleDist/1024,1);
$tRatio=@round($tailleDistKo/$tDur,1);
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$message.=date('Y/m/d - H:i:s') ." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$dwl=true;
}
} elseif (($tailleDist==@$tailleLoc && preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $server_fileName)) || substr($server_fileName,-5)=='.flag')
$dwl=true;
if ($dwl && date('Ymd',$dateDist)<date('Ymd')) {
if (ftp_delete($fc, $server_file)) {
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName effacé avec succès ($tailleDistKo Ko)".EOL;
$message.=date('Y/m/d - H:i:s') ." - Fichier distant $server_fileName effacé avec succès ($tailleDistKo Ko)".EOL; }
}
}
}
// Fermeture de la connexion
ftp_close($fc);
echo date('Y/m/d - H:i:s') ." - Fin des transferts FTP.".EOL;
$message.=date('Y/m/d - H:i:s') ." - Fin des transferts FTP.".EOL;
$dh = opendir(RNVP_FTP_LOCALDIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $filename))
$tabFichiers[] = RNVP_FTP_LOCALDIR.$filename;
}
sort($tabFichiers);
$tabPays=array();
$tabTmp=$iDb2->select('jo.tabPays','codPays3, libPays', '1', false, MYSQL_ASSOC);
foreach($tabTmp as $i=>$tabTmp2) {
$tabPays[$tabTmp2['codPays3']]=$tabTmp2['libPays'];
}
$nbRows=count($tabTmp);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows pays en table...".EOL;
foreach ($tabFichiers as $iFic=>$filename) {
$nbUpdate=0;
if (file_exists(REP_TEMP.basename($filename).'.lock')) {
$tab2Tmp=explode(';',file_get_contents(REP_TEMP.basename($filename).'.lock'));
$date2Tmp=WDate::DateT('YmdHis', 'd/m/Y H:i:s',$tab2Tmp[0]);
$nbL2Tmp=$tab2Tmp[2];
$nbLignesTot=trim($tab2Tmp[3]);
// fwrite($fpT, date('Ymd-His')."$fichier;$dateInsert;$nbLignes;
$messageLigne=date('Y/m/d - H:i:s')." - Le fichier n°$iFic ($filename) est en cours de chargement depuis le $date2Tmp ($nbL2Tmp/$nbLignesTot lignes chargées)...".EOL;
echo $messageLigne;
$message.=$messageLigne;
//if (!$stopSiErreur) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement Adresses RNVP - ERREUR !!!', $message);
continue;
//}
}
$fp=fopen($filename, 'r');
if ($fp) {
$nbLignes=$nbLignesTot=0;
if (preg_match('/\.txt\.Rnvp\.(Rejets|20)(.*)\.OK/i', $filename, $matches)) {
// RNVP_SED_20141219_135641.txt.Rnvp.20141219142501062.OK
if ($matches[1]=='Rejets') {
$codeRetourRnvp='KO';
$dateRetourRnvp=substr($matches[2],1,14);
} else {
$codeRetourRnvp='OK';
$dateRetourRnvp='20'.substr($matches[2],0,12);
}
while (!feof($fp)) {
$a = fgets($fp, 4096);
$nbLignesTot++;
}
$nbLignesTot--; // On enlève la ligne d'entête
//if ($codeRetourRnvp<>'KO') {
$ret2=$iDb2->select('villes.rnvpSources', 'COUNT(*) AS nb', "dateRetourRnvp=$dateRetourRnvp AND codeRetour='$codeRetourRnvp'", false, MYSQL_ASSOC);
$nbLignesBase=$ret2[0]['nb']*1;
if ($nbLignesTot>0 && $nbLignesBase>=floor($nbLignesTot*0.995)) {
if ($verbose) echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes et a déjà été chargé ($nbLignesBase lignes en base).".EOL;
fclose($fp);
continue;
} elseif ($nbLignesTot==0) {
if ($verbose) echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' est vide !".EOL;
continue;
} else {
echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes".EOL;
$ratio=floor($nbLignesTot*0.995);
echo date('Y/m/d - H:i:s') ." - en base : $nbLignesBase lignes (rapport = $ratio).".EOL;
echo date('Y/m/d - H:i:s') ." - $nbLignesBase > $ratio ?".EOL;
if ($verbose) die();
}
} else continue;
//if ($codeRetourRnvp<>'KO') continue;
echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes ($nbLignesBase déjà chargées).".EOL;
$message.=date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes ($nbLignesBase déjà chargées).".EOL;
rewind($fp);
$entete = fgets($fp, 4096);
$tabEntete=explode("\t", $entete);
//echo $entete.EOL;
//print_r($tabEntete);
//die();
while (!feof($fp)) {
/** Ajout/Maj des infos du verrou **/
if ($nbLignes==0 || $nbLignes%100000==0) {
$fpT=fopen(REP_TEMP.basename($filename).'.lock', 'w');
fwrite($fpT, date('YmdHis').";$filename;$nbLignes;$nbLignesTot".EOL);
fclose($fpT);
}
$nbLignes++;
//if ($nbLignes<$numReprise) continue;
$ligne = fgets($fp, 4096);
$tabLigne=explode("\t", $ligne);
$tabUpdate=array('dateRetourRnvp'=>$dateRetourRnvp,'codeRetour'=>$codeRetourRnvp);
foreach ($tabLigne as $iCol=>$valeur)
$tabUpdate[trim($tabEntete[$iCol])]=$valeur;
//print_r($tabUpdate);
unset($tabUpdate['Rang']); // => R010
unset($tabUpdate['IdElfy']);// => 1010
unset($tabUpdate['CMedia']);
$tabUpdate['L1rnvp']=strtoupper($tabUpdate['TNP']); unset($tabUpdate['TNP']);
if (isset($tabUpdate['NOM_OUTPUT']) && $tabUpdate['L1rnvp']=='' && $tabUpdate['NOM_OUTPUT']<>'')
$tabUpdate['L1rnvp']=trim($tabUpdate['NOM_OUTPUT']);
unset($tabUpdate['NOM_OUTPUT']);
$tabUpdate['L2rnvp']=strtoupper($tabUpdate['CNom']); unset($tabUpdate['CNom']);
if (isset($tabUpdate['ENSEIGNE_OUTPUT']) && $tabUpdate['L2rnvp']=='' && $tabUpdate['ENSEIGNE_OUTPUT']<>'')
$tabUpdate['L2rnvp']=trim($tabUpdate['ENSEIGNE_OUTPUT']);
unset($tabUpdate['ENSEIGNE_OUTPUT']);
$tabUpdate['L3rnvp']=strtoupper($tabUpdate['CAdrs']); unset($tabUpdate['CAdrs']);
$tabUpdate['L4rnvp']=strtoupper($tabUpdate['Adrs']); unset($tabUpdate['Adrs']);
$tabUpdate['L5rnvp']=strtoupper($tabUpdate['LieuDit']); unset($tabUpdate['LieuDit']);
$tabUpdate['L6rnvp']=strtoupper($tabUpdate['CpVille']); unset($tabUpdate['CpVille']);
if ($tabUpdate['Pays']<>'' && $tabUpdate['Pays']<>'FRA')
$tabUpdate['L6rnvp']=strtoupper($tabPays[$tabUpdate['Pays']]);
unset($tabUpdate['PAYS_OUTPUT']);
$id=$tabUpdate['REF_OUTPUT']; unset($tabUpdate['REF_OUTPUT']);
if ($id==0) continue; // Fin de fichier / Ligne vide
/** Zones non renseignées (option non comprise) **/
unset($tabUpdate['TDM']);
unset($tabUpdate['TourneeFacteur']);
unset($tabUpdate['Codageo_Iris']);
unset($tabUpdate['Codageo_X']);
unset($tabUpdate['Codageo_Y']);
unset($tabUpdate['Codageo_precision']);
unset($tabUpdate['Codageo_Cq']);
unset($tabUpdate['StatAge']);
unset($tabUpdate['CivCourt']);
unset($tabUpdate['CivLong']);
unset($tabUpdate['Sex']);
unset($tabUpdate['Nom']);
unset($tabUpdate['Prenom']);
unset($tabUpdate['CQtnp']);
/** Zones inutiles, chronospace **/
unset($tabUpdate['RSoc_Input']);
unset($tabUpdate['Ville38']);
unset($tabUpdate['LibDept']);
unset($tabUpdate['Prefecture']);
unset($tabUpdate['RegionAdministrative']);
//echo "Mise à jour de l'id=$id ...".mysql_errno().' : '.mysql_error().EOL;
//print_r($tabUpdate);
$ret2=$iDb2->update('rnvpSources', $tabUpdate, "id=$id", false, 1, true);
if (!mysql_errno()) $nbUpdate++;
else {
print_r($tabUpdate);
echo "Erreur n°".mysql_errno()." lors de la mise à jour de la ligne id=$i (".mysql_error().")".EOL;
}
}
fclose($fp);
// Suppression du verrou
unlink(REP_TEMP.basename($filename).'.lock');
if (bzip2($filename,RNVP_BACKUP_DIR.basename($filename))) {
unlink($filename);
$messageLigne=date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic ($filename) vient d'être historisé.".EOL;
echo $messageLigne;
$message.=$messageLigne;
}
$message.=date('Y/m/d - H:i:s') ." - Mise à jour de $nbUpdate lignes d'adresses sur $nbLignes.". EOL;
}
}
//print_r($tabFichiers);
//die();
if (!$noMail) {
$message.=date('Y/m/d - H:i:s') ." - Fin de réception des adresses RNVP.".EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,support@scores-decisions.com', "Traitement RNVP - Envoi en RNVP", $message);
}
echo date('Y/m/d - H:i:s') ." - Fin de la réception des adresses RNVP.".EOL;
}
if ($collecteAdr) {
echo date('Y/m/d - H:i:s') ." - Recherche des nouvelles adresses par sources...".EOL;
foreach ($tabSrc as $src=>$tabSrcDet) {
if ($tabSrcDet['go']==0) {
echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."'".EOL;
continue;
}
if ($sourceCollecteOnly) {
if ($sourceCollecteOnly<>$src) {
//echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."'".EOL;
continue;
}
}
echo date('Y/m/d - H:i:s') ." - Traitement des adresses '".$tabSrcDet['lib']."' (Source ".$tabSrcDet['idSrc'].")".EOL;
unset($iDb);
$iDb=new WDB($tabSrcDet['db']);
//enum('an8', 'domaines', 'fax', 'logo', '', 'mob', 'tel', 'web')
$nb=$iDb->select($tabSrcDet['table'], $tabSrcDet['zones'],$tabSrcDet['where'], false,MYSQL_ASSOC,true);
/*
echo "SELECT ".$tabSrcDet['zones']."
FROM ".$tabSrcDet['table']."
WHERE ".$tabSrcDet['where'].";".EOL;
*/
if (mysql_errno()<>0) die(mysql_error().EOL);
echo date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) d'adresses '".$tabSrcDet['lib']."' à traiter...".mysql_error().EOL;
$j=0;
while ($tabAdr=$iDb->fetch(MYSQL_ASSOC)) {
$j++;
$source = $tabAdr['source'];
$source_id = $tabAdr['source_id'];
$num = $tabAdr['num'];
// Retraitement des adresses dont toutes les informations sont sur la même ligne
if (isset($tabSrcDet['splitterL4']) && $tabSrcDet['splitterL4']==1) {
$adrL4=$tabAdr['L4in'];
$tabAdr2=$iInsee->structureVoie($adrL4);
$tabAdr['L3in']=@$tabAdr2['adrComp0'];
$tabAdr['L4in']=@$tabAdr2['num'].' '.@$tabAdr2['indRep'].' '.@$tabAdr2['typeVoie'].' '.@$tabAdr2['libVoie'];
$tabAdr['L5in']=@$tabAdr2['adrComp1'];
$tabAdr['L6in']=@$tabAdr2['cp'].' '.@$tabAdr2['ville'];
//print_r($tabAdr);
//die($adrL4);
}
if ($iDb2->insert('rnvpSources', $tabAdr, false) || $iDb2->getLastErrorNum()==1062) {
if ($iDb2->getLastErrorNum()<>1062) @$nbInsert[$src]++;
/*elseif ($iDb2->getLastErrorNum()==1062) {
$ret2=$iDb2->select('villes.rnvpSources', 'id', "source=$source AND source_id=$source_id AND num=$num", false, MYSQL_ASSOC);
$id=$ret2[0]['id'];
$iDb2->query("INSERT IGNORE INTO villes.rnvpHisto SELECT * FROM villes.rnvpSources WHERE id=$id;", false);
$iDb2->query("DELETE FROM villes.rnvpSources WHERE id=$id;", false);
@$nbUpdate[$src]++;
if (!$iDb2->insert('rnvpSources', $tabAdr, false)) die($iDb2->getLastError());
}*/
@$nbTot[$src]++;
} else die($iDb2->getLastError());
}
}
print_r($nbInsert);
print_r($nbUpdate);
print_r($nbTot);
if (!$noMail) {
$message=date('Y/m/d - H:i:s') ." - Fin de la récupération des Adresses des différentes sources :".EOL;
foreach ($tabSrc as $src=>$tTmp)
if (@$nbTot[$src]>0)
$message.=" Adresses '$src' :\t".@$nbInsert[$src].' ajouts et '.@$nbUpdate[$src].' MAJ / '.@$nbTot[$src].' adresses'.EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,support@scores-decisions.com', "Traitement RNVP - Récupération des adresses", $message);
}
echo date('Y/m/d - H:i:s') ." - Fin de la recherche des adresses par sources.".EOL;
}
if ($envoiRnvp || $envoiRnvpAll) {
$dateEnvoirRnvp=date('Ymd_His');
$dateEnvoirRnvpInt=str_replace('_','',$dateEnvoirRnvp);
$nbExport=0;
if ($envoiSrc>0) {
$sqlWhereRnvp=" source=$envoiSrc AND num=$envoiNum ";
} elseif ($envoiRnvpAll) {
$sqlWhereRnvp=" dateEnvoiRnvp<>0 AND dateRetourRnvp=0 ";
} else
$sqlWhereRnvp=" dateEnvoiRnvp=0 ";
if (count($tabFichiersCmd)==1)
$fileNameOut=$tabFichiersCmd[0];
else {
$fileNameOut="RNVP_SED_$dateEnvoirRnvp.txt";
echo date('Y/m/d - H:i:s') ." - Sélection des adresses à envoyer en RNVP.".EOL;
$message=date('Y/m/d - H:i:s') ." - Début de la sélection des adresses à envoyer en RNVP.".EOL;
$tabTmp=$iDb2->select('villes.rnvpSources','COUNT(*) AS nb', $sqlWhereRnvp, false, MYSQL_ASSOC);
$nbExport=$tabTmp[0]['nb'];
echo date('Y/m/d - H:i:s') ." - Il y a $nbExport lignes d'adresses à envoyer en RNVP...".EOL;
}
$fileNameFlag=substr($fileNameOut,0,-4).'.flag';
$fileNameZip=substr($fileNameOut,0,-4).'.zip';
if ($nbExport>0 && count($tabFichiersCmd)==0) {
$nb=$iDb->exportCSV("SELECT id AS REF,
TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L1in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS NOM,
TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L2in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS ENSEIGNE,
SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L3in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE1,
SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L4in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE2,
SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L5in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE3,
SUBSTRING(L6in,1,5) AS CP,
SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(L6in,6,LENGTH(L6in)),'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS VILLE,
TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L7in,'F-',''),'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS PAYS FROM villes.rnvpSources WHERE $sqlWhereRnvp ORDER BY id ASC LIMIT 0,$nbAdrRnvp;", RNVP_FTP_LOCALDIR.$fileNameOut,$sep,$eol);
$iDb->query("UPDATE villes.rnvpSources SET dateEnvoiRnvp=$dateEnvoirRnvpInt WHERE $sqlWhereRnvp ORDER BY id ASC LIMIT $nbAdrRnvp;", false);
echo mysql_error().EOL;
$sizeO=filesize(RNVP_FTP_LOCALDIR.$fileNameOut);
file_put_contents(RNVP_FTP_LOCALDIR.$fileNameFlag, "$fileNameOut");
$sizeK=round($sizeO/1024,1);
echo date('Y/m/d - H:i:s') ." - Export de $nb lignes d'adresses ($sizeK Ko).". EOL;
}
if (count($tabFichiersCmd)==1 || $nbExport>0) {
if (count($tabFichiersCmd)==1)
echo date('Y/m/d - H:i:s') ." - Export du fichier '$fileNameOut'...". EOL;
$sizeO=filesize(RNVP_FTP_LOCALDIR.$fileNameOut);
$sizeK=round($sizeO/1024,1);
$tDeb=microtime(1);
$fc = ftp_connect(RNVP_FTP_HOST);
if (!$fc) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de se connecter à '".RNVP_FTP_HOST."' !". EOL);
$fl = ftp_login($fc, RNVP_FTP_LOGIN, RNVP_FTP_PASS);
if (!$fl) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de s'authentifier à '".RNVP_FTP_HOST."' !". EOL);
//CHARGEMENT ET D'UN FICHIER
$fup = ftp_put($fc, RNVP_FTP_DIR_PUT.$fileNameOut, RNVP_FTP_LOCALDIR.$fileNameOut, FTP_BINARY);
//VERIFICATION DU BON CHARGEMENT DU FICHIER
if (!$fup) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de déposer '".RNVP_FTP_LOCALDIR.$fileNameOut."' vers '".RNVP_FTP_HOST."' !". EOL);
$duree=round(microtime(1)-$tDeb,1);
$fup = ftp_put($fc, RNVP_FTP_DIR_PUT.$fileNameFlag, RNVP_FTP_LOCALDIR.$fileNameFlag, FTP_BINARY);
if (!$fup) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de déposer '".RNVP_FTP_LOCALDIR.$fileNameFlag."' vers '".RNVP_FTP_HOST."' !". EOL);
if (count($tabFichiersCmd)==1)
echo date('Y/m/d - H:i:s') ." - Upload du fichier '$fileNameOut' ($sizeK Ko) en $duree secondes.". EOL;
else
echo date('Y/m/d - H:i:s') ." - Upload de $nb lignes d'adresses ($sizeK Ko) en $duree secondes.". EOL;
//FERMETURE DE LA CONNEXION
ftp_close($fc);
if (bzip2(RNVP_FTP_LOCALDIR.$fileNameOut,RNVP_BACKUP_DIR.$fileNameOut)) {
unlink(RNVP_FTP_LOCALDIR.$fileNameOut);
$messageLigne=date ('Y/m/d - H:i:s') . " - Le fichier '$fileNameOut' vient d'être historisé.".EOL;
echo $messageLigne;
$message.=$messageLigne;
}
if (!$noMail) {
$message.=date('Y/m/d - H:i:s') ." - Fin de l'envoi vers la RNVP.".EOL;
if (count($tabFichiersCmd)==1)
$message.=date('Y/m/d - H:i:s') ." - Upload du fichier '$fileNameOut' ($sizeK Ko) en $duree secondes.". EOL;
else
$message.=date('Y/m/d - H:i:s') ." - Upload de $nb lignes d'adresses ($sizeK Ko) en $duree secondes.". EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,support@scores-decisions.com', "Traitement RNVP - Envoi en RNVP", $message);
}
} else
echo date('Y/m/d - H:i:s') ." - Il n'y a aucune adresse à envoyer en RNVP !".EOL;
echo date('Y/m/d - H:i:s') ." - Fin de l'envoi vers la RNVP.".EOL;
}
echo date('Y/m/d - H:i:s') ." - FIN du programme de RNVP.".EOL;
die();
?>

247
batch/getAllIsin.php Normal file
View File

@ -0,0 +1,247 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'common/controles.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(FWK_PATH.'mail/sendMail.php');
function getNextDate($dateCour, $nbJours=7) {
$nextDate=date('Ymd', mktime(0, 0, 0, WDate::dateT('Ymd','m', $dateCour), WDate::dateT('Ymd','d', $dateCour)+$nbJours, WDate::dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$urlBase='http://www.zonebourse.com';// 593
$url='/bourse/actions/a-9/';
$tabUrlZones=array( 8=> array('lib'=>'Amérique du Nord','url'=>'/bourse/actions/Amerique-du-Nord-8/',),
10=>array('lib'=>'Amérique du Sud', 'url'=>'/bourse/actions/Amerique-du-Sud-10/',),
3=>array('lib'=>'Europe', 'url'=>'/bourse/actions/Europe-3/',),
4=>array('lib'=>'Afrique', 'url'=>'/bourse/actions/Afrique-4/',),
5=>array('lib'=>'Moyen-Orient', 'url'=>'/bourse/actions/Moyen-Orient-5/',),
6=>array('lib'=>'Asie', 'url'=>'/bourse/actions/Asie-6/',),
7=>array('lib'=>'Océanie', 'url'=>'/bourse/actions/Oceanie-7/',),
);
$tabUrlPays=array();
$pays=$zone=false;
function getInfosAnnonce($annonceHtml) {
$tabRet=array();
$tabRet['raisonSociale']=trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'<dd><label>Société : </label><strong>', '<strong>', '</strong></dd>'))));
$tabRet['isin']=strtoupper(trim(strtr(@getTextInHtml($annonceHtml, '<dd><label>ISIN : </label>', '</label>', '</dd>'), array(':'=>'',' '=>''))));
$tabRet['docDesc']=trim(@getTextInHtml($annonceHtml, '<div class="r_desc">', 'class="r_desc">', '</div>'));
$tabRet['docDate']=WDate::DateT('d/m/Y','Y-m-d', trim(@getTextInHtml($annonceHtml, '<span class="date">', 'class="date">', '</span>'))).' '.trim(@getTextInHtml($annonceHtml, '<span class="heure">', 'class="heure">', '</span>')).':00';
$tabRet['docCategorie']=utf8_decode(strip_tags('<a href="'.trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '<div class="resultat_HitGroup">', '<a href="', '</div>'))))));
$tabRet['docTitre']=utf8_decode(trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml, '<dd><label>Titre du document : </label>', '"> ', '</a></dd>')))));
$tabRet['docLangue']=trim(@getTextInHtml($annonceHtml, '<dd><label>Langue : </label>', '</label>', '</dd>'));
$tabRet['pdfLink']=str_replace('https://', 'http://', str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '<a href="http://www.info-financiere.fr/', 'href="', '">'))));
return $tabRet;
}
$iPage=1; // Reprendre à la page 1
$tempsMinEntreRequetes=7;
$tempsMaxEntreRequetes=21;
$modeDebug=false;
set_time_limit(0);
$lastJO=$dateDebut=$dateFin=$dateF=$dateCour=$load=false;
$iDb=new WDB('tmp');
$iInsee=new MInsee();
$iBourse=new MBourse();
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les dernières annonces BOAMP sur le site de la DJO.
Sans aucun paramètre, récupération des dernières Annonces.
Sinon:
-r:XXX Reprendre à la page n°XXX
-n:X Intervalle MIN en secondes entre les requêtes sur le site des JO (défaut=$tempsMinEntreRequetes)
-i:X \" MAX \" \" \" \" \" \" \" \" \" \" (défaut=$tempsMaxEntreRequetes)
-z(:NN) Liste des zones/Zones à traiter
-p(:NN) Liste des pays de la zone/Pays à traiter
-d Verbosité debug
-c Chargement détaillé
";/*
-l Dernières parutions uniquement (*)
-d:JJ/MM/AAAA Date de début de publication
-f:JJ/MM/AAAA Date de fin de publication
";*/
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$modeDebug=true;
break;
case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin);
$lastJO=false;
break;
case 'r':
$iPage=substr($argv[$i],3)*1;
break;
case 'n':
$tempsMinEntreRequetes=trim(substr($argv[$i],3))*1;
if ($tempsMinEntreRequetes<0) $tempsMinEntreRequetes=0;
break;
case 'i':
$tempsMaxEntreRequetes=trim(substr($argv[$i],3))*1;
if ($tempsMaxEntreRequetes<5) $tempsMaxEntreRequetes=2;
break;
case 'c':
$load=true;
break;
case 'z':
$zone=substr($argv[$i],3)*1;
if ($zone==0) {
echo 'Liste des zones :'.EOL;
foreach ($tabUrlZones as $iZ=>$tZ) echo " - $iZ = ".$tZ['lib'].EOL;
die();
} else
$url=$tabUrlZones[$zone]['url'];
break;
case 'p':
$pays=substr($argv[$i],3)*1;
//if ($pays==0) $pays=-1;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
}
$tabZones=array('nom2'=>'<title>(.*):(?:.*)Zone bourse</title>',
'ticker'=>'<title>(?:.*):(?:.*)\| (.*) \| (?:.*) \| Zone bourse</title>',
'isin2'=>'<title>(?:.*):(?:.*)\| (?:.*) \| (.*) \| Zone bourse</title>',
'isin3'=>'<title>(?:.*):(?:.*)\| (.*) \| Zone bourse</title>',
'adr1'=>'<nobr><b>Coordonnées société</b></nobr></td></tr>(?:.*)<tr><td class="std_txt" style="padding-top:4px">(.*)<br>(?:.*)<br>(?:.*)<br><br>',
'adr2'=>'<nobr><b>Coordonnées société</b></nobr></td></tr>(?:.*)<tr><td class="std_txt" style="padding-top:4px">(?:.*)<br>(.*)<br>(?:.*)<br><br>',
'adr3'=>'<nobr><b>Coordonnées société</b></nobr></td></tr>(?:.*)<tr><td class="std_txt" style="padding-top:4px">(?:.*)<br>(?:.*)<br>(.*)<br><br>',
'tel'=>'<br>Téléphone : (.*)<br>',
'fax'=>'<br>Fax : (.*)<br>',
'web'=>'<br>Internet : <a class="pageprofil_link_blue" href="(.*)"',
'isin'=>'- Code Isin : </td>\s+<td align="left" style="padding-left:10px">&nbsp;(.*)</td>',
'bloomberg'=>'- Code Bloomberg : </td>\s+<td align="left" style="padding-left:10px;padding-top:5px">&nbsp;(.*)</td>',
'reuteurs'=>'- Code Reuters : </td>\s+<td align="left" style="padding-left:10px;padding-top:5px">&nbsp;(.*)</td>',
'datastream'=>'- Code Datastream : </td>\s+<td valign="top" align="left" style="padding-left:10px;padding-top:5px">&nbsp;(.*)</td>',
);
$tabTmp=$iDb->select('jo.tabPays','codPays,codPays3', '1', false, MYSQL_ASSOC);
foreach($tabTmp as $i=>$tabTmp2) {
$tabPays[$tabTmp2['codPays']]=$tabTmp2['codPays3'];
}
$nbRows=count($tabTmp);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows pays en base.".EOL;
while (true) {
$urlCour=$urlBase.$url.'?Req=&p='.$iPage;
$referer='';
$page=getUrl($urlCour, '', '', $referer, false);
$body=$page['body'];
$referer=$urlCour;
if ($zone>0 && $pays!==false && empty($tabUrlPays) && preg_match_all('/<div class="tabSTab4" style="(?:.*)"><a class="" href="(.*)"\s+?>(.*)<\/a><\/div>/Uis', $body, $matches)) {
foreach($matches[1] as $i=>$url2) {
//print_r($matches);
if (preg_match('/\-(\d+)\/$/Uis', str_replace($url,'',$url2), $matches2)) $idPays=$matches2[1];
//die ($idPays);
$tabUrlPays[$idPays]=array('lib'=>html_entity_decode($matches[2][$i]),'url'=>$url2);
}
if ($pays==0) {
echo "Liste des pays de la zone $zone (".$tabUrlZones[$zone]['lib'].') :'.EOL;
foreach ($tabUrlPays as $iZ=>$tZ) echo " - $iZ = ".$tZ['lib'].EOL;
} else {
$url=$tabUrlPays[$pays]['url'];
//die($url);
continue;
}
die();
}
if (preg_match_all('/<tr\s+><td class="large30 center"(?:.*)<img width="16" height="16" title="(.*)" src="\/images\/png-country\/16x16\/(.*)png"><\/td>(?:.*)<a href="(.*)"(?:.*)<\/a><\/td><td class="large200 center"(?:.*)<span title="(.*)">(?:.*)<\/font><\/td><td class="large70 right pright20"(?:.*)>(.*)<\/td>(?:.*)<\/a><\/td>\s+<\/tr>/Uis', $body, $matches)) {
// print_r($matches[0]);
foreach($matches[2] as $iLigne=>$codePays) {
$codePays=substr(strtoupper($codePays),0,2);
$libPays=$matches[1][$iLigne];
$societe=$matches[3][$iLigne];
$activite=html_entity_decode($matches[4][$iLigne]);
$capitalisation=str_replace(' ','',$matches[5][$iLigne]);
$urlDetail='http://www.zonebourse.com'.$societe.'societe/';
$ret=$iDb->select('zonebourse', 'idZb, LENGTH(html) AS htm, isin', "nom='$societe'",false);
if (@$ret[0]['idZb']*1==0 || @$ret[0]['htm']*1==0) {
$page2=getUrl($urlDetail, '', '', $referer, false);
$tabInsert=@html2array($page2['body'], $tabZones);
$tmpNom=explode('-', str_replace('/','',$societe));
$nbMots=count($tmpNom);
$idZb=end($tmpNom);
$rs='';
foreach ($tmpNom as $iN=>$mot)
if ($iN<$nbMots-1)
$rs.=$mot.' ';
$rs=trim($rs);
$tabInsert['ligne']=$iLigne;
$tabInsert['page']=$iPage;
$tabInsert['paysIso2']=$codePays;
$tabInsert['codPays3']=$tabPays[$codePays];
$tabInsert['paysLib']=$libPays;
$tabInsert['idZb']=$idZb;
$tabInsert['nom']=$societe;
$tabInsert['raisonSociale']=$rs;
$tabInsert['url']=$urlDetail;
$tabInsert['activite']=$activite;
if ($capitalisation<>'-')
$tabInsert['capitalisation']=str_replace(',','.',$capitalisation)*1.0;
$tabInsert['html']=$page2['body'];
if (!isset($tabInsert['isin']) || $tabInsert['isin']=='')
$tabInsert['isin']=@trim($tabInsert['isin2']);
if (strlen($tabInsert['isin'])<>12)
$tabInsert['isin']=@trim($tabInsert['isin3']);
//print_r($tabInsert);
//die();
if (strlen($tabInsert['isin'])<>12)
unset($tabInsert['isin']);
unset($tabInsert['isin2']);
unset($tabInsert['isin3']);
$update=false;
$isin=$tabInsert['isin'];
if (!isValidIsin($isin)) die("Code ISIN $isin invalide !".EOL);
if (@$ret[0]['idZb']*1==0)
echo "AJOUT $iPage\t$iLigne\t$codePays\t$isin\t$societe\t$urlDetail\t$activite\t$capitalisation".EOL;
else {
$update=true;
echo "COMPL $iPage\t$iLigne\t$codePays\t$isin\t$societe\t$urlDetail\t$activite\t$capitalisation".EOL;
}
if (!$update) $iDb->insert('zonebourse', $tabInsert, false);
else $iDb->update('zonebourse', $tabInsert, "nom='$societe'",false);
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
} else {
$isin=@$ret[0]['isin'];
echo "Passe $iPage\t$iLigne\t$codePays\t$isin\t$societe\t$urlDetail\t$activite\t$capitalisation".EOL;
}
//die();
}
randsleep($tempsMinEntreRequetes*3, $tempsMaxEntreRequetes*3);
}
else break;
$iPage++;
}
echo date('Y/m/d - H:i:s') ." - Fin du traitement de récupération de tous les ISIN.".EOL;
die();
?>

View File

@ -21,7 +21,7 @@ $argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'v': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
@ -31,7 +31,8 @@ for ($i=1,$j=0; isset($argv[$i]); $i++) {
$iDb=new WDB('sdv1');
$table='amf_geco';
$urlBase='http://www.amf-france.org/bio/rech_SG.aspx';
//$urlBase='http://www.amf-france.org/bio/rech_SG.aspx';
$urlBase='http://www.amf-france.org/bio/res_SG.aspx';
$tabZones=array('codeQE'=>'&nbsp;<b>Code QE n&deg;</b>(?:.*)&nbsp;(\d+)</td>',
/* type char(3) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier

926
batch/getAnnoncesInsee.php Normal file
View File

@ -0,0 +1,926 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$table='annonces';
/*
ALTER TABLE `annonces` ADD `inter5type` CHAR( 1 ) NOT NULL AFTER `inter4nom`,
ADD `inter5id` SMALLINT( 5 ) UNSIGNED ZEROFILL NOT NULL AFTER `inter5type`,
ADD `inter5nom` VARCHAR( 255 ) NOT NULL AFTER `inter5id`;
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
define('CSF_FTP_DIR', '/home/data/ftp/creditsafe/send/');
define('CSF_BACKUP_DIR', '/home/data/jal/creditsafe/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Chargement des annonces Ventes/LG provenant des évènements Insee.
Options :
-j Ne pas charger les jugements INPI S&D en Amont
-c Ne pas charger les défaillances CSF
-d Mode debug (Verbosité au maximum)
-i Ne pas poser de questions interactives.
-t Charger en test (implique -j -d)
";
$iDb=new WDB('jo');
$iInsee=new MInsee();
$iBodacc=new MBodacc();
$iRncs=new MRncs();
$iGreffe=new MGreffes();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=$nbSiretRetraitement=0;
$modeDebug=false; // Mode débug
$questions=true; // Questions interactives autorisées
$loadInpiLocal=true; // Charger d'abord les derniers jugements INPI IMR locaux
$loadCSF=true; // Charger les jugements Greffes via CSF
$tabFichier=$tabFichLigneCmd=array();
$message=''; // Initialisation du mail d'exécution du traitement
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'i': $questions=false; break;
case 'j': $loadInpiLocal=false; break;
case 'c': $loadCSF=false; break;
case 't': $table='annonces2';
$modeDebug=$questions=true;
$loadInpiLocal=false;
break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir(CSF_FTP_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.csv')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
$nbAnnUpdateJ=$nbAnnInsertJ=0; // Jugements
$nbAnnUpdateE=$nbAnnInsertE=0; // Evènements
$tabTmp=$iDb->select($table, 'MAX(dateInsert) AS lastInsert',"source='II'", false, MYSQL_ASSOC);
$dateMaj=$tabTmp[0]['lastInsert'];
$dateMaj='2013-09-01 02:00:00';
echo date('Y/m/d - H:i:s') ." - Dernier chargement des annonces de ventes/LG Insee le $dateMaj.".EOL;
$tabEvenInseeSED=array( '3' => '5500,5103',
'D' => '2870,2892',
'E' => '2870,2893',
'G' => '2870,2892',
'H' => '2870,2893',
'I' => '2406',
'J' => '5500,5106',
'VP'=> '5500,5200',
);
/**
** Jugements INPI
**/
/*
insSIEGE, insAUXILT, insTEFET, insAPET700, insAPRM, insMODET, insMARCHET,
insSAISONAT, insACTIVNAT, insENSEIGNE, insL2_COMP, insNUMVOIE, insINDREP,
insTYPVOIE, insLIBVOIE, insL5_DISP, insL6_POST, insL7_ETRG, insRPET, insDEPCOM, insCODEVOIE, insDREACTET, insEXPLET, insDAPET,
insLIEUACT, insACTISURF, insDEFET, insTEL, insCJ, insCIVILITE, insTEFEN, insAPEN700, insMODEN, insMARCHEN, insNOMEN, insTYPCREH,
insMNICSIEGE, insMNOMEN, insMCJ, insMAPEN,
insMMARCHEN, insMORDIN, insEFENCENT, insSIGLE, insNBETEXPL, insNICSIEGE, insDEPCOMEN, insMENSEIGNE, insMAPET, insMNATURE,
insMADRESSE, insMEFET, insMSINGT, insMTELT, insMMARCHET, insMAUXILT, insSINGT, insEFETCENT,
dirNom, dirNomUsage, dirPrenom, insDCRET, insDCREN, insPRODPART, insDREACTEN, insEXPLEN, insDEFEN, insMONOREG,
insREGIMP, insMONOACT, insMSIGLE, insMEXPLEN, insRPEN, insMEXPLET, insDAPEN
*/
$AnnDb=$iDb->select('insee.insee_even',
"insSIREN AS siren, insNIC AS nic, siretValide AS sirenValide, insDESTINAT AS DESTINAT, insEVE, insDATEVE AS dateJugement, insDATEMAJ,
idFlux AS dateSource, dateInsert, 'II' AS source, insL1_NOMEN AS raisonSociale,
insL4_VOIE AS Adresse, insCODPOS AS codePostal, insLIBCOM AS ville,
insSIRETPS, insSIRETASS, insTYPETAB, insTRAN, insNICTRAN, insORIGINE, id",
"dateInsert>'$dateMaj' AND DATEDIFF(NOW(), insDATEVE)<=90 AND insDESTINAT IN (3,5,'D','E','G','H','I','J','VP') AND id>23000000
AND dateInsert<'2013-09-11 01:00:00';", false, MYSQL_ASSOC);
// ", false, MYSQL_ASSOC);
/*
DESTINAT => typeEven
*/
$nbAnnonces=count($AnnDb);
$message.="Il y a $nbAnnonces annonce(s) de ventes/LG Insee depuis le dernier chargement du $dateMaj :\r\n";
echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnonces annonce(s) de ventes/LG Insee depuis le dernier chargement du $dateMaj.".EOL;
// Il ne doit pas déjà y avoir d'annonces du même type dans l'année !
$dateVentePre=WDate::getNextDate(date('Ymd'), -360);
foreach ($AnnDb as $i=>$tabInsert) {
$siren=$tabInsert['siren'];
$nic=$tabInsert['nic'];
$siret=''.$siren.''.$nic;
$id=$tabInsert['id']*1;
$dateJugement=$tabInsert['dateJugement'];
$strEven=$tabEvenInseeSED[trim($tabInsert['DESTINAT'])];
$typeEtab='Etablissement';
if (trim($tabInsert['DESTINAT'])=='G' || trim($tabInsert['DESTINAT'])=='H' ||
trim($tabInsert['DESTINAT'])=='I' || trim($tabInsert['DESTINAT'])=='J')
$typeEtab.=' agricole';
/** On récupère les annonces légales liés à cet évènement **/
if (trim($tabInsert['DESTINAT'])=='3' || trim($tabInsert['DESTINAT'])=='J' || trim($tabInsert['DESTINAT'])=='VP')
$tabVentes=@$iInsee->getAnnoncesLegales($siren, 0, 'V', false);
else
$tabVentes=@$iInsee->getAnnoncesLegales($siren, 0, 'G', false);
unset($tabInsert['DESTINAT']);
$tabEven=explode(',', $strEven);
$tabInsert['typeEven']=$tabEven[0];
unset($tabEven[0]);
$tabInsert['strEven']=@implode(',', $tabEven);
$tabTmp=@$iInsee->getIdentiteEntreprise($siren, $tabInsert['nic']);
$tabInsert['tribunal']=$tabTmp['Tribunal'];
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - $i/$nbAnnonces - Even $strEven sur $siren le $dateJugement : ";
/** On recherche s'il y a eu une annonce légale de Ventes/Cessions ou LG en tant que vendeur au cours de N derniers mois **/
if (count($tabVentes)>0) {
$vte=@$tabVentes[0];
$dateVente=@$vte['dateJugement'];
if ($dateVente=='0000-00-00') $dateVente=@$vte['dateEffet'];
if ($dateVente=='0000-00-00') $dateVente=@$vte['DateParution'];
$dateVente=WDate::dateT('Y-m-d','Ymd', $dateVente);
if ($dateVente>=$dateVentePre) {
if ($modeDebug) echo "Annonce de vente récente déjà en base : $dateVente".EOL;
continue;
} elseif ($dateVente<=20010101) {
// Cas impossible car on prend aussi DatePArution
if ($modeDebug) echo "Annonce de vente sans date : $dateVente".EOL;
continue;
}
}
$siretPS=$siretAS=0;
$idDeb=$id-150000;
$idFin=$id+150000;
$tabInsert['complement']='';
if ($tabInsert['insSIRETPS']>1000000000) {
// Si le siret est inactif, on ne l'affiche pas !
$sirenPS=substr($tabInsert['insSIRETPS'],0,9);
$nicPS=substr($tabInsert['insSIRETPS'],9,5);
$tabId=@$iInsee->getIdentiteLight($sirenPS,$nicPS);
if ($tabId['Actif']==1) {
$tabInsert['complement'].='Successeur : '.$tabId['Nom'].', '.$tabId['Adresse'].', '.$tabId['CP'].' '.$tabId['Ville'].' ('.$tabInsert['insSIRETPS'].'). ';
$siretPS=1;
}
}
if ($tabInsert['insSIRETASS']>1000000000) {
// Si le siret est inactif, on ne l'affiche pas !
$sirenAS=substr($tabInsert['insSIRETASS'],0,9);
$nicAS=substr($tabInsert['insSIRETASS'],9,5);
$tabId=@$iInsee->getIdentiteLight($sirenAS,$nicAS);
if ($tabId['Actif']==1) {
$tabInsert['complement'].='Entitée associée : '.$tabId['Nom'].', '.$tabId['Adresse'].', '.$tabId['CP'].' '.$tabId['Ville'].' ('.$tabInsert['insSIRETASS'].'). ';
$siretAS=1;
}
}
if ($siretPS==0 && $siretAS==0) {
// Recherche d'un siret associé sur un autre évènement proche (15 jours)
$AnnDb2=$iDb->select('insee.insee_even', "insSIREN AS siren, insNIC AS nic, insSIRETPS, insSIRETASS",
"id BETWEEN $idDeb AND $idFin AND id<>$id AND ( (insSIREN=$siren AND insNIC=$nic AND (insSIRETPS>1000000000 OR insSIRETASS>1000000000) ) OR insSIRETPS=$siret or insSIRETASS=$siret)", false, MYSQL_ASSOC);
$tabTmp=@$AnnDb2[0];
if (count($tabTmp)>0) {
if ($siret==$tabTmp['insSIRETPS']) {
// Notre établissement est le prédécesseur d'un nouvel établissement, si ce siret est inactif, on ne l'affiche pas !
$sirenPS=$tabTmp['siren'];
$nicPS=$tabTmp['nic'];
$tabId=@$iInsee->getIdentiteLight($sirenPS,$nicPS);
if ($tabId['Actif']==1) {
$tabInsert['complement'].='Successeur : '.$tabId['Nom'].', '.$tabId['Adresse'].', '.$tabId['CP'].' '.$tabId['Ville']." ($sirenPS $nicPS). ";
$siretPS=1;
}
} elseif ($siret==$tabTmp['insSIRETASS']) {
// Notre établissement est le siret associé d'un nouvel établissement, si ce siret est inactif, on ne l'affiche pas !
$sirenAS=$tabTmp['siren'];
$nicAS=$tabTmp['nic'];
$tabId=@$iInsee->getIdentiteLight($sirenAS,$nicAS);
if ($tabId['Actif']==1) {
$tabInsert['complement'].='Entitée associée : '.$tabId['Nom'].', '.$tabId['Adresse'].', '.$tabId['CP'].' '.$tabId['Ville']." ($sirenAS $nicAS). ";
$siretPS=1;
}
} /*else {
print_r($AnnDb2);
echo 'Rechercher un siret associé sur un autre évènement antérieur !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'.EOL;
die();
}*/
}
// echo mysql_error().EOL;
}
$tabInsert['complement'].=$typeEtab.' concerné : '. $tabInsert['Adresse'] .', '. $tabInsert['codePostal'] .' '. $tabInsert['ville'].' ('. $tabInsert['nic'].')';
if ($modeDebug) echo $tabInsert['complement'].EOL;
if (trim($tabInsert['tribunal'])=='') $tabInsert['tribunal']='INCONU';
//print_r($tabInsert);
unset($tabInsert['nic']);
unset($tabInsert['insEVE']);
unset($tabInsert['insDATEMAJ']);
unset($tabInsert['id']);
unset($tabInsert['insSIRETPS']);
unset($tabInsert['insSIRETASS']);
unset($tabInsert['insTYPETAB']);
unset($tabInsert['insTRAN']);
unset($tabInsert['insNICTRAN']);
unset($tabInsert['insORIGINE']);
if (!$iDb->insert($table, array_merge($tabInsert,array('dateInsert'=>date('YmdHis'))))) {
echo date ('Y/m/d - H:i:s') ." - A l'insertion sur $table :".EOL;
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de l'insertion du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
}
/*
$tabTmp=$iDb->select($table, 'id, siren, typeEven, dateJugement, dateCessationPaiement, inter1type, inter1id, inter1nom, inter2type, inter2id, inter2nom, inter3type, inter3id, inter3nom, inter4type, inter4id, inter4nom,
/*inter5type, inter5id, inter5nom,* dateSource, dateInsert, source, tribunal, raisonSociale',"siren=$siren AND ABS(DATEDIFF(dateJugement, '$dateJugement'))<60 AND typeEven=$typeEven", false, MYSQL_ASSOC);
echo date ('Y/m/d - H:i:s') ." - Mise à jour du jugement $typeEven en date du $dateJugement pour $siren : ".count($tabTmp).EOL;
$tabEnbase=$tabTmp[0];
if (isset($tabEnbase['id'])) {
$dateJugementEnBase=$tabEnbase['dateJugement'];
// On garde la source Originel
unset($tabInsert['source']);
unset($tabInsert['dateInsert']);
if ($dateJugementEnBase<>$dateJugement) {
if ($tabEnbase['source']<>'GC') {
echo "ATTENTION : JUGEMENT UN AUTRE JOUR DEJA EN BASE ($dateJugementEnBase<>$dateJugement) :".EOL;
}
}
else
echo 'JUGEMENT le même JOUR déjà en base :'.EOL;
// On liste les types de mandataires enregistrés par les greffes ou autre
$tabMandEnBase=$tabMandSav=array();
for ($iMand=1;$iMand<6;$iMand++)
if (trim($tabEnbase['inter'.$iMand.'type'])<>'')
$tabMandEnBase[$iMand]=trim($tabEnbase['inter'.$iMand.'type']);
// On garde les infos mandataires déjà en base et correctement renseignées
for ($iInsert=1;$iInsert<5;$iInsert++) {
for ($iMand=1; $iMand<6 && isset($tabMandEnBase[$iMand]);$iMand++)
if (in_array($tabInsert['inter'.$iInsert.'type'], $tabMandEnBase)) {
if ($tabInsert['inter'.$iInsert.'type']==$tabMandEnBase[$iMand]) {
if ($tabEnbase['inter'.$iMand.'type']<>'')
$tabMandSav[$tabMandEnBase[$iMand]]['type'] =$tabInsert['inter'.$iInsert.'type'];
else
$tabMandSav[$tabMandEnBase[$iMand]]['type'] =$tabInsert['inter'.$iMand.'type'];
if ($tabEnbase['inter'.$iMand.'id']*1==0)
$tabMandSav[$tabMandEnBase[$iMand]]['id'] =$tabInsert['inter'.$iInsert.'id'];
else
$tabMandSav[$tabMandEnBase[$iMand]]['id'] =$tabEnbase['inter'.$iMand.'id'];
if ($tabEnbase['inter'.$iMand.'nom']<>'')
$tabMandSav[$tabMandEnBase[$iMand]]['nom'] =$tabInsert['inter'.$iInsert.'nom'];
else
$tabMandSav[$tabMandEnBase[$iMand]]['nom'] =$tabInsert['inter'.$iMand.'nom'];
}
} else {
$tabMandSav[$tabMandEnBase[$iMand]]['type'] =$tabEnbase['inter'.$iMand.'type'];
$tabMandSav[$tabMandEnBase[$iMand]]['id'] =$tabEnbase['inter'.$iMand.'id'];
$tabMandSav[$tabMandEnBase[$iMand]]['nom'] =$tabEnbase['inter'.$iMand.'nom'];
}
}
$iInsert=1;
foreach ($tabMandEnBase as $typeMand) {
$tabInsert['inter'.$iInsert.'type']=$tabMandSav[$typeMand]['type'];
$tabInsert['inter'.$iInsert.'id']=$tabMandSav[$typeMand]['id'];
$tabInsert['inter'.$iInsert.'nom']=$tabMandSav[$typeMand]['nom'];
$iInsert++;
if ($iInsert==6) {
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, plus de 4 intervenants dans la procédure pour $siren".EOL.print_r($tabMandSav, true).EOL.
"Annonce en base :".EOL.
print_r($tabEnbase, true).EOL.
"Informations à mettre à jour :".EOL.
print_r($tabInsert, true).EOL);
//die("Trop d'intervenants".EOL);
}
}
echo 'EN BASE :'.EOL;
print_r($tabEnbase);
echo 'MODIFICATIONS :'.EOL;
print_r($tabInsert);
echo 'Mandataires :'.EOL;
print_r($tabMandSav);
if ($modeDebug) $line = trim(fgets(STDIN));
// On met toujours la date INPI en base !
if (!$iDb->update($table, $tabInsert,"siren=$siren AND dateJugement='$dateJugementEnBase' AND typeEven=$typeEven", false, MYSQL_ASSOC)) {
echo date ('Y/m/d - H:i:s') ." - A la mise à jour sur $table :".EOL;
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
} else {
$nbAnnUpdateJ++;
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
} else {
if (// Pour les Procol suivantes, on redemande le sirenage et surtout l'affectation du code Even !!!
$tabInsert['typeEven']*1==1505 || // Appel de jugement
$tabInsert['typeEven']*1==1506 || // Infirmation Jugement
$tabInsert['typeEven']*1==1507 || // Extrait d'arrêt de la cour d'appel
$tabInsert['typeEven']*1==1515 || // Arrêt divers
$tabInsert['typeEven']*1==1517 || // Rectification d'une erreur matérielle
$tabInsert['typeEven']*1==1520 || // Ordonnance
$tabInsert['typeEven']*1==1525 || // Appel du ministère public
$tabInsert['typeEven']*1==1999) { // Autre procol)
$tabInsert['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $i : Annonce INPI à retraiter manuellement ". $tabInsert['siren'] .' !'.EOL;
$nbSiretRetraitement++;
}
if (!$iDb->insert($table, array_merge($tabInsert,array('dateInsert'=>date('YmdHis'))))) {
echo date ('Y/m/d - H:i:s') ." - A l'insertion sur $table :".EOL;
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de l'insertion du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
/*
echo 'JUGEMENT LE MEME JOUR DEJA EN BASE :'.EOL;
print_r($tabEnbase);
echo 'MODIFICATIONS :'.EOL;
print_r($tabInsert);
$line = trim(fgets(STDIN));
}
} else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de l'ajout du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
} else {*
$nbAnnInsertJ++;
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Ajout du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
}
$message.=" $nbAnnInsertJ ajouts et $nbAnnUpdateJ mises à jours sur $nbAnnonces annonces et $nbSiretRetraitement annonces à retraiter !\r\n\r\n".EOL;
*/
die();
if (count($tabFichier)>0 || count($tabFichLigneCmd)>0) {
if (!$loadCSF)
die(date ('Y/m/d - H:i:s') . " - On ignore le chargement des défaillances".EOL);
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des défaillances".EOL;
function getCodeEven($codeEven) {
global $tabCodeEven;
return $tabCodeEven[$codeEven];
}
for ($i=0; isset($tabFichier[$i]); $i++)
{
$nomFichier =$tabFichier[$i];
$fp=fopen(CSF_FTP_DIR.$nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter (".$nomFichier.")".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 1024));
}
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$i, $nomFichier ($nbLignes lignes à traiter) !".EOL;
//$finFichier=false;
$ligne=1;
rewind($fp);
/** Traitement de la 1ère ligne **/
$a = trim(fgets($fp, 2048));
$tab=explode("\t", $a);
$erreur='';
if (strtoupper($tab[ 0])<>'REF_CLIENT') $erreur.='Ligne 1, Champ 1 : libellé REF_CLIENT attentu';
if (strtoupper($tab[ 1])<>'DATE_FRAICHEUR') $erreur.='Ligne 1, Champ 2 : libellé DATE_FRAICHEUR attentu';
if (strtoupper($tab[ 2])<>'RCS') $erreur.='Ligne 1, Champ 3 : libellé RCS attentu';
if (strtoupper($tab[ 3])<>'RAISON_SOCIALE') $erreur.='Ligne 1, Champ 4 : libellé RAISON_SOCIALE attentu';
if (strtoupper($tab[ 4])<>'ADRESSE1') $erreur.='Ligne 1, Champ 5 : libellé ADRESSE1 attentu';
if (strtoupper($tab[ 5])<>'ADRESSE2') $erreur.='Ligne 1, Champ 6 : libellé ADRESSE2 attentu';
if (strtoupper($tab[ 6])<>'ADRESSE3') $erreur.='Ligne 1, Champ 7 : libellé ADRESSE3 attentu';
if (strtoupper($tab[ 7])<>'CCJ_CSFR') $erreur.='Ligne 1, Champ 8 : libellé CCJ_CSFR attentu';
if (strtoupper($tab[ 8])<>'CCJ_DATE') $erreur.='Ligne 1, Champ 9 : libellé CCJ_DATE attentu';
if (strtoupper($tab[ 9])<>'TRIBUNAL') $erreur.='Ligne 1, Champ 10 : libellé TRIBUNAL attentu';
if (strtoupper($tab[10])<>'MANDATAIRE') $erreur.='Ligne 1, Champ 11 : libellé MANDATAIRE attentu';
if (strtoupper($tab[11])<>'REF_CSFR') $erreur.='Ligne 1, Champ 12 : libellé REF_CSFR attentu';
//Ref_client date_fraicheur RCS Raison_sociale adresse1 adresse2 adresse3 CCJ_CSFR
//CCJ_date Tribunal mandataire Ref_csfr
if ($erreur<>'') {
echo date ('Y/m/d - H:i:s') . " - Erreur : $erreur !".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
//$dateInsert=date('YmdHis');
while (!feof($fp))
{
$ligne++;
$a = trim(fgets($fp, 1024));
if ($a=='') continue;
//if ($modeDebug) echo "Ligne $ligne Déb: '$a'".EOL;
//unset($tabErreur); $nbErr=0;
$tab=explode("\t", $a);
$tabAnn=array();
if ($tab[0]<>'SandD')
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs REF_CLIENT différent de 'SandD' (".$tab[0].') !'.EOL;
$siren=$tabAnn['siren'] = $tab[2];
if (!$iInsee->valideSiren($tabAnn['siren'])) {
$tabAnn['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs SIREN invalide ". $tabAnn['siren'] .' !'.EOL;
$nbSiretInvalides++;
} else {
$tabAnn['sirenValide']=1;
$nbSiretValides++;
}
$tabAnn['raisonSociale'] = $tab[3];
if (strlen($tabAnn['raisonSociale'])>60)
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs RAISON_SOCIALE de longueur ". strlen($tabAnn['raisonSociale']) .' !'.EOL;
$tabAnn['adresse'] = $tab[4];
$cpVille = $tab[5];
$tabAnn['codePostal'] = substr($cpVille,0,5);
$tabAnn['ville'] = trim(substr($cpVille,5));
$dep=substr($cpVille,0,2)*1;
if (!$iInsee->isDepartement($dep)) {
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Département '$dep' inconnu !".EOL;
//die($a);
//echo '?';
//$line = trim(fgets(STDIN));
}
$dateIn = $tab[1];
if (strlen($dateIn)<>19)
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs DATE_FRAICHEUR de longueur ". strlen($dateIn) .' !'.EOL;
$tabAnn['dateSource'] = /*@WDate::dateT('Y-m-d','Y-m-d',*/$dateIn/*)*/;
/* $dateIn = $tab[6];
$dateOut=@WDate::dateT('m/d/Y','Y-m-d',$dateIn);
if ($dateIn<>'') $tabAnn['naissance_date']=$dateOut;
else $tabAnn['naissance_date']='0000-00-00';*/
$dateJugeKbis = $tab[8];
if (strlen($dateJugeKbis)<>19)
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs CCJ_DATE de longueur ".strlen($dateJugeKbis).' !'.EOL;
else
$dateJugeKbis=Wdate::dateT('Y-m-d', 'Ymd', $dateJugeKbis);
$codeJugementCSF = $tab[7];
$tabAnn['typeEven'] = getCodeEven($codeJugementCSF)*1;
if ($tabAnn['typeEven']==0) {
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs CCJ_CSFR (Code Jugement CSF) inconnu '$codeJugementCSF' !".EOL;
}
$source= trim($tab[11]);
if ($source=='G' || $source=='I'/* || $source=='P'*/) {
//if ($modeDebug) echo "Ligne $ligne SRC: '$a'".EOL;
$tribunal = trim($tab[9]);
$tabAnn['tribunal'] = $iBodacc->getTribunalCode('TRIBUNAL DE COMMERCE '.strtr(strtoupper(' '.$tribunal.' '),array(' ST '=>' SAINT ')), $dep);
//if ($modeDebug) echo "Ligne $ligne TRI1: '$a'".EOL;
if (!$tabAnn['tribunal']) {
$tabAnn['tribunal'] = $iBodacc->getTribunalCode('TRIBUNAL DE COMMERCE '.strtr(strtoupper(' '.$tribunal.' '),array(' ST '=>' SAINT ')), 0);
//if ($modeDebug) echo "Ligne $ligne TRI2: '$a'".EOL;
if (!$tabAnn['tribunal']) {
if ($tribunal=='AIX') $tabAnn['tribunal']='AIXC';
elseif ($tribunal=='MONT DE MARSAN') $tabAnn['tribunal']='MONTMC';
elseif ($tribunal=='SALON DE PROVENCE') $tabAnn['tribunal']='SALONC';
elseif ($tribunal=='BAGNERES DE BIGORRE') $tabAnn['tribunal']='BAGNEC';
elseif ($tribunal=='OLORON STE MARIE') $tabAnn['tribunal']='OLOROC';
elseif ($tribunal=='LE PUY EN VELAY') $tabAnn['tribunal']='LEPUYC';
elseif ($tribunal=='CLERMONT L HERAULT') $tabAnn['tribunal']='CLHERC';
elseif ($source=='G' && $tribunal=='' && $dep==23) $tabAnn['tribunal']='GUEREC';
elseif ($source=='G' && $tribunal=='' && $dep==26) $tabAnn['tribunal']='ROMANC';
elseif ($source=='G' && $tribunal=='' && $dep==27) $tabAnn['tribunal']='BERNAC';
elseif ($source=='G' && $tribunal=='' && $dep==48) $tabAnn['tribunal']='MENDEC';
elseif ($source=='G' && $tribunal=='' && $tabAnn['siren']>100) {
//if ($modeDebug) echo "Ligne $ligne TRI3: '$a'".EOL;
$tabIdentite=@$iInsee->getIdentiteEntreprise($tabAnn['siren'],0,0,false,false);
//if ($modeDebug) echo "Ligne $ligne TRI4: '$a'".EOL;
$tabTribunaux=$iBodacc->getTribunauxParCommune($tabIdentite['Dept'].$tabIdentite['codeCommune']);
//if ($modeDebug) echo "Ligne $ligne TRI5: '$a'".EOL;
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='C' && $trib['triStatut']=='Actif') {
$tabAnn['tribunal']=$trib['triCode'];
break;
}
//if ($modeDebug) echo "Ligne $ligne TRI6: '$a'".EOL;
if (!$tabAnn['tribunal']) {
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='G' && $trib['triStatut']=='Actif') {
$tab['tribunal']=$trib['triCode'];
break;
}
}
//if ($modeDebug) echo "Ligne $ligne TRI9: '$a'".EOL;
}
elseif ($source=='P' && $dep>0 && $dep<977) {
$tabIdentite=@$iInsee->getIdentiteEntreprise($tabAnn['siren'],0,0,false,false);
$tabTribunaux=$iBodacc->getTribunauxParCommune($tabIdentite['Dept'].$tabIdentite['codeCommune']);
// En fonction du département 67,68 et de la CJ 1xxx non commerçant, Associations : TGI
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='C' && $trib['triStatut']=='Actif') {
$tabAnn['tribunal']=$trib['triCode'];
break;
}
if (!$tabAnn['tribunal']) {
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='G' && $trib['triStatut']=='Actif') {
$tab['tribunal']=$trib['triCode'];
break;
}
}
if (!$tabAnn['tribunal']) {
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='M' && $trib['triStatut']=='Actif') {
$tab['tribunal']=$trib['triCode'];
break;
}
}
if (!$tabAnn['tribunal']) {
foreach ($tabTribunaux as $trib)
if ($trib['triType']=='P' && $trib['triStatut']=='Actif') {
$tab['tribunal']=$trib['triCode'];
break;
}
}
}
else {
echo date ('Y/m/d - H:i:s')." - Ligne $ligne/$nbLignes : Tribunal CSF inconnu '$tribunal' (Dept.=$dep, source=$source) !".EOL;
$tabAnn['tribunal']=$tribunal.'*';
if ($source<>'P' && $source<>'I') { /* On insert le jugement uniquement si on l'a pas déjà en base ! */
echo date ('Y/m/d - H:i:s')." - Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren']." : '$a' - Problème de tribunal".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement CSF : Problème de tribunal', "Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
}
}
}
}
if ($source=='I') {
$tabAnn['source'] = 'JC';
$tabAnn['dateJugement'] = $dateJugeKbis;
$tabIdentite=@$iInsee->getIdentiteEntreprise($tabAnn['siren'],0,0,false,false);
if ($tabIdentite['SituationJuridique']<>'P') {
if ($dateJugeKbis>date('Ymd',mktime(0,0,0,date('m')-6,date('d'),date('Y')))) {
if ($tabAnn['typeEven']<>1445) {
// L'entreprise n'est pas connue comme en Procol et le jugement à mois de 6 mois !
echo date ('Y/m/d - H:i:s')." - Ligne $ligne/$nbLignes, source JC, siren=".$tabAnn['siren']." : '$a'".EOL;
sendMail('production@scores-decisions.com', 'prod@scores-decisions.com', 'Chargement CSF : Procol inconnue', "Ligne $ligne/$nbLignes, source Kairos via CSF, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
} else continue;
} else continue;
} else {
// Provisoirement, on ignore l'annonce car déjà en procol
/** @todo
Si dernière annonce = SV, RJ, LJ prendre la nouv. annonce si suite du jugement
**/
continue;
}
} else {
$tabAnn['source'] = $source.'C';
$texte = trim(@$tab[10]);
/*JUGEMENT DU TRIBUNAL DE COMMERCE DE EVRY EN DATE DU 15/02/2010 A PRONONCÉ LA LIQUIDATION JUDICIAIRE, SOUS LE NUMÉRO 2010J00041 DÉSIGNE LIQUIDATEUR LA SCP YVES COUDRAY-CHRISTOPHE ANCEL, EN LA PERSONNE DE MAÎTRE ANCEL, MANDATAIRE JUDICIAIRE ASSOCIÉ 9 BOULEVARD DE L'EUROPE 91050 ÉVRY CEDEX , JUGE COMMISSAIRE M. CHIKAR , JUGE COMMISSAIRE SUPPLÉANT M. HAMON , MET FIN À LA MISSION DE L'ADMINISTRATEUR ME TULIER RUE RENÉ CASSIN IMMEUBLE LE MAZIÈRE - 4ÈME ÉTAGE 91000 EVRY
*/
$regExDate='((?:\d{1,2}|1er)(?:\/|\.|-)\d{1,2}(?:\/|\.|-)\d{4,4})';
$regExDate2='((?:\d{1,2}|1er)(?:\/|\.|-)\d{1,2}(?:\/|\.|-)\d{2,2})';
$regExDateLong='(([0-9]{1,2}|1er)\s+(janvier|février|fevrier|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre|decembre)\s+([0-9]{4,4}))';
//SUIVANT JUGEMENT RENDU LE 27 AVRIL 2010, LE TRIBUNAL DE COMMERCE DE BOBIGNY A PRONONCE L'OUVERTURE D'UNE PROCEDURE DE REDRESSEMENT JUDICIAIRE
if (preg_match("/(JGT|JUGEMENT|prononc|ORDONNANCE).{1,75}\s+EN\s+DATE\s+DU\s+$regExDate/Uis", $texte, $matches)) {
//echo $texte.EOL;
$dateJuge=$matches[2];
echo "A, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
/*print_r($matches);
die();*/
} elseif (preg_match("/(JGT|JUGEMENT|ORDONNANCE).{1,120}(?:DU|RENDUE? LE)\s+$regExDate/Uis", $texte, $matches)) {
$dateJuge=$matches[2];
echo "B1, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
} elseif (preg_match("/(JGT|JUGEMENT|ORDONNANCE).{1,120}(?:DU|RENDUE? LE)\s+$regExDate2/Uis", $texte, $matches)) {
$dateJuge=$matches[2];
echo "B2, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
} elseif (preg_match("/DATE\s+D(?:\+|')EFFET(?:\s+\:?\s+)$regExDate/Uis", $texte, $matches)) {
$dateJuge=$matches[1];
echo "C, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
/* print_r($matches);
die();*/
} elseif (preg_match("/(JGT|JUGEMENT|ORDONNANCE).{1,120}(?:DU|RENDUE? LE)\s+$regExDateLong/Ui", $texte, $matches)) {
$dateJuge=Wdate::dateT('dMY', 'd/m/Y',$matches[2]);
echo "D, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
/*print_r($matches);
die();*/
} elseif (preg_match("/(JGT|JUGEMENT|ORDONNANCE).RENDU.{1,80}(?: DU| LE)\s+$regExDate/Uis", $texte, $matches)) {
$dateJuge=$matches[2];
echo "D2, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
} elseif (preg_match("/JGT|JUGEMENT.{1,55}\s+$regExDate\s+/Ui", $texte, $matches)) {
$dateJuge=$matches[1];
echo "E, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
/*print_r($matches);
die();*/
//
} elseif (preg_match("/Arr.t de la Cour d.Appel (?:.*) du\s+$regExDate\s+/Uis", $texte, $matches)) {
$dateJuge=$matches[1];
echo "F, $siren : Jugement kbis du $dateJugeKbis vs $dateJuge".EOL;
} else {
/*
Ordonnance de Monsieur le Président de la Chambre des Procédures Collectives du Tribunal de Commerce de Vienne en date du 02/02/2010 décidant de l'APPLICATION DE LA LIQUIDATION JUDICIAIRE SIMPLIFIEE
410946008 : Jugement kbis du 20100413. DATE TEXTE !
*/
echo "$siren : Jugement kbis du $dateJugeKbis. DATE TEXTE NON TROUVEE !!!".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, date texte non trouvée pour le siren $siren :
$texte
Jugement kbis du ".$tabAnn['dateJugement'].EOL);
echo $texte.EOL;
if ($modeDebug || $questions) {
while(1) {
echo "Entrez la date du jugement au format JJ/MM/AAAA ?".EOL;
$dateJuge = trim(fgets(STDIN));
$line=Wdate::dateT('d/m/Y', 'Ymd',strtr($dateJuge, array('.'=>'/','-'=>'/')));
if ($line>=0 && $line<date('Ymd')) break;
}
}
else die("$siren : Jugement kbis du $dateJugeKbis. DATE TEXTE !".EOL);
}//JUGEMENT DU TRIBUNAL DE COMMERCE DE EVRY EN DATE DU 08/02/2010 A PRONONCÉ LA LIQUIDATION JUDICIAIRE,
$dateJuge=Wdate::dateT('d/m/Y', 'Ymd',strtr($dateJuge, array('.'=>'/','-'=>'/')));
$dateJugeMin=date('Ymd', mktime(0, 0, 0,
WDate::dateT('Ymd','m',$dateJugeKbis),
WDate::dateT('Ymd','d',$dateJugeKbis)-60,
WDate::dateT('Ymd','Y',$dateJugeKbis)));
if ($dateJuge>=$dateJugeMin && $dateJuge<=$dateJugeKbis)
$tabAnn['dateJugement']=$dateJuge;
else
$tabAnn['dateJugement']=$dateJugeKbis;
echo "Date de jugement RETENUE : ".$tabAnn['dateJugement'].EOL;
echo $texte.EOL;
//if ($modeDebug) $line = trim(fgets(STDIN));
if (preg_match('/Arr.t.{1,15}Cour.{1,15}Appel.{1,75}INFIRM/is', $texte, $matches)) {
if (preg_match('INFIRM/is', $texte, $matches))
$tabAnn['typeEven']=1506; // Rétractation de jugement => Infirmation Jugement
else
$tabAnn['typeEven']=1507; // Arret de la cours d'appel
$tabAnn['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Annonce à retraiter manuellement ". $tabAnn['siren'] .' !'.EOL;
$nbSiretRetraitement++;
} elseif (// Pour les Procol suivantes, on redemande le sirenage et surtout l'affectation du code Even !!!
$tabAnn['typeEven']*1==1505 || // Appel de jugement
$tabAnn['typeEven']*1==1506 || // Infirmation Jugement
$tabAnn['typeEven']*1==1507 || // Extrait d'arrêt de la cour d'appel
$tabAnn['typeEven']*1==1515 || // Arrêt divers
$tabAnn['typeEven']*1==1517 || // Rectification d'une erreur matérielle
$tabAnn['typeEven']*1==1520 || // Ordonnance
$tabAnn['typeEven']*1==1525 || // Appel du ministère public
$tabAnn['typeEven']*1==1999) { // Autre procol)
$tabAnn['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Annonce à retraiter manuellement ". $tabAnn['siren'] .' !'.EOL;
$nbSiretRetraitement++;
}
if (preg_match('/CESSATION.{1,35}PAIEMENTS(.*)/is', $texte, $matches)) {
if (preg_match("/FIXE AU\s+$regExDate.{1,15}CESSATION.{1,35}PAIEMENTS/is", $texte, $matches2))
$tabAnn['dateCessationPaiement']=Wdate::dateT('d/m/Y', 'Ymd',trim(strtr($matches2[1], array('.'=>'/','-'=>'/'))));
elseif (preg_match("/FIXE AU\s+$regExDateLong.{1,15}CESSATION.{1,35}PAIEMENTS/is", $texte, $matches2))
$tabAnn['dateCessationPaiement']=Wdate::dateT('dMY', 'Ymd', $matches2[1]);
elseif (preg_match("/\s+$regExDate/Uis", substr($matches[1],0,35), $matches))
$tabAnn['dateCessationPaiement']=Wdate::dateT('d/m/Y', 'Ymd',trim(strtr($matches[1], array('.'=>'/','-'=>'/'))));
elseif (preg_match("/\s+$regExDateLong/Ui", $texte, $matches))
$tabAnn['dateCessationPaiement']=Wdate::dateT('dMY', 'Ymd',$matches[1]);
}
$jugeCommissaire=$jugeCommissaireSup='';
if (preg_match('/JUGE.{1,5}COMMISSAIRE(.*)JUGE.{1,5}COMMISSAIRE.{1,5}SUPPL(?:è|é|E)ANT(.*)$/Uis', $texte, $matches)) {
$jugeCommissaire=strtr(strtoupper($matches[1]),array('TITULAIRE'=>'',':'=>'',','=>''));
$jugeCommissaireSup=strtr(strtoupper(preg_replace('/(,|LIQUIDATEUR|MANDATAIRE).*/','',$matches[2])),array('TITULAIRE'=>'',':'=>'',','=>''));
} elseif (preg_match('/JUGE.{1,5}COMMISSAIRE.{1,5}SUPPL(?:è|é|E)ANT(.*)$/Uis', $texte, $matches)) {
$jugeCommissaireSup=preg_replace('/(,|LIQUIDATEUR|MANDATAIRE).*/','',strtr(strtoupper($matches[1])),array(':'=>''));
} elseif (preg_match('/JUGE.{1,5}COMMISSAIRE(.*)$/Uis', $texte, $matches)) {
$jugeCommissaire=preg_replace('/(,|LIQUIDATEUR|MANDATAIRE).*/','',strtr(strtoupper($matches[1]),array('TITULAIRE'=>'',':'=>'')));
}
$adm=$mand=$liq='';
if (preg_match('/ADMINISTRATEUR(.*)MANDATAIRE(.*)$/Uis', $texte, $matches)) {
preg_match('/^(.*\d{5,5}.*,)/Uis', $matches[1], $matches);
$adm=strtr(strtoupper($matches[1]),array('JUDICIAIRE'=>'',':'=>'',','=>''));
preg_match('/^(.*\d{5,5}.*,)/Uis', $matches[2], $matches);
$mand=preg_replace('/(,|LIQUIDATEUR|MANDATAIRE).*/','',strtr(strtoupper($matches[1]),array('JUDICIAIRE'=>'','*'=>'',':'=>'')));
} elseif (preg_match('/ADMINISTRATEUR(.*)$/Uis', $texte, $matches)) {
$adm=preg_replace('/(,|LIQUIDATEUR|MANDATAIRE).*/','',strtr(strtoupper($matches[1]),array('JUDICIAIRE'=>'','*'=>'',':'=>'')));
}
if (preg_match('/MANDATAIRE(.*)$/Uis', $texte, $matches)) {
preg_match('/^(.*\d{5,5}.*(,|)$)/Uis', $matches[1], $matches);
$mand=preg_replace('/(,|LIQUIDATEUR|ADMINISTRATEUR).*/','',strtr(strtoupper($matches[1]),array('JUDICIAIRE'=>'','*'=>'',':'=>'')));
}
if (preg_match('/LIQUIDATEUR(.*)$/Uis', $texte, $matches)) {
preg_match('/^(.*\d{5,5}.*(,|)$)/Uis', $matches[1], $matches);
$liq=preg_replace('/(,|MANDATAIRE|ADMINISTRATEUR).*/','',strtr(strtoupper($matches[1]),array('JUDICIAIRE'=>'','*'=>'',':'=>'')));
}
$numero='';
if (preg_match('/NUM(?:E|é|è)RO\s+([A-Z0-9\.\/,-]{8,20})\s+/Uis', $texte, $matches)) {
$tabAnn['numero']=trim(strtoupper($matches[1]));
}
/*
OUVERTURE PERIODE D'OBSERVATION DE SIX MOIS
OUVRE UNE PÉRIODE D'OBSERVATION EXPIRANT LE 28/07/2010
DATE D'EFFET : 27/01/2010
MET FIN À LA MISSION DE L'ADMINISTRATEUR ME AVEZOU 5 BD DE L'EUROPE 91050 EVRY CEDEX
DÉSIGNE LIQUIDATEUR LA SCP YVES COUDRAY-CHRISTOPHE ANCEL, EN LA PERSONNE DE MAÎTRE ANCEL, MANDATAIRE JUDICIAIRE ASSOCIÉ 9 BOULEVARD DE L'EUROPE 91050 ÉVRY CEDEX ,
SUIVANT ORDONNANCE RENDUE LE 15 JANVIER 2010 PAR LE TRIBUNAL DE COMMERCE DE NANTES, MR LE JUGE-COMMISSAIRE A MIS FIN A LA MISSION DE ME A. DOLLEY, MANDATAIRE JUDICIAIRE.
*/
$iMand=1;
if (trim($adm)<>'') {
$tabAnn['inter'.$iMand.'type']='A';
//$tabAnn['inter'.$iMand.'id']=?;
$tabAnn['inter'.$iMand.'nom']=trim($adm);
$iMand++;
}
if (trim($mand)<>'') {
$tabAnn['inter'.$iMand.'type']='M';
//$tabAnn['inter'.$iMand.'id']=?;
$tabAnn['inter'.$iMand.'nom']=trim($mand);
$iMand++;
}
if (trim($liq)<>'') {
$tabAnn['inter'.$iMand.'type']='L';
//$tabAnn['inter'.$iMand.'id']=?;
$tabAnn['inter'.$iMand.'nom']=trim($liq);
$iMand++;
}
if (trim($jugeCommissaire)<>'') {
$tabAnn['inter'.$iMand.'type']='J';
//$tabAnn['inter'.$iMand.'id']=?;
$tabAnn['inter'.$iMand.'nom']=trim($jugeCommissaire);
$iMand++;
}
if (trim($jugeCommissaireSup)<>'') {
$tabAnn['inter'.$iMand.'type']='K';
//$tabAnn['inter'.$iMand.'id']=?;
$tabAnn['inter'.$iMand.'nom']=trim($jugeCommissaireSup);
$iMand++;
}
if ($iMand==1)
$tabAnn['annonce']=strtolower($texte);
else
$tabAnn['infosBrutes']=strtoupper($texte);
/*
JUGE COMMISSAIRE : MONSIEUR SWIDERSKI,
JUGE COMMISSAIRE : MONSIEUR NOEL,
ADMINISTRATEUR : SCP THEVENOT PERDEREAU EN LA PERSONNE DE ME THEVENOT 131 BD MALESHERBES 75017 PARIS, AVEC POUR MISSION : d'assister,
MANDATAIRE JUDICIAIRE : MAITRE COURTOUX DIDIER 62 BD DE SÉBASTOPOL 75003 PARIS,
PERIODE D'OBSERVATION EXPIRANT LE 26/03/2010,
Juge Commissaire Mme Lefebvre H. ,
Juge Commissaire suppléant M. Bejui F. ,
Administrateur Me Bleriot Philippe 26 Chemin de la Madeleine 93000 Bobigny avec pour mission de : d'assister le débiteur dans ses actes de gestion ,
Mandataire judiciaire SCP Moyrand - Bally en la personne de Maître Pascal Bally 14/16 Rue de Lorraine 93000 Bobigny
période d'observation expirant le 26/07/2010 .
*/
//if ($tabAnn['complement']<>'') $tabAnn['complement']='Mandataire : '.$tabAnn['complement'];
}
//$tabAnn['dateInsert']=$dateInsert;
if (isset($tabAnn['tribunal']) && strlen($tabAnn['tribunal'])<3) $tabAnn['tribunal']='INCONU';
if (isset($tabAnn['inter5id']) || isset($tabAnn['inter5type']) || isset($tabAnn['inter5nom'])) {
unset($tabAnn['inter5type']);
unset($tabAnn['inter5id']);
unset($tabAnn['inter5nom']);
}
$tabTmp=$iDb->select($table, 'id, siren, sirenValide, strEven, raisonSociale, adresse, codePostal, ville, dateSource, dateJugement, typeEven, tribunal, source, complement',"siren='".$tabAnn['siren']."' AND dateJugement='".$tabAnn['dateJugement'] ."' AND typeEven =".$tabAnn['typeEven'], false, MYSQL_ASSOC);
if (count($tabTmp)==0) {
$iDb->insert($table, array_merge($tabAnn,array('dateInsert'=>date('YmdHis'))));
if (mysql_errno()>0) {
echo date ('Y/m/d - H:i:s') ." - A l'insertion sur $table :".EOL;
print_r($tabAnn);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
if ($modeDebug) $line = trim(fgets(STDIN));
else die("ERREUR SQL".EOL);
}
$nbInsert++;
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Insertion du jugement ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .'!'.EOL;
} else {
$tabAnnEnBase=$tabTmp[0];
$even=$tabAnnEnBase['typeEven'];
$trib=trim($tabAnnEnBase['tribunal']);
$comp=trim($tabAnnEnBase['complement']);
if ($tabAnn['typeEven']<>$even) {
print_r($tabAnn);
echo(date ('Y/m/d - H:i:s') . " - Jugement différent $even par rapport à ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .' !'.EOL);
}
if (strlen($trib)>1 && $trib<>'INCONU' && $tabAnn['tribunal']<>$trib) {
echo (date ('Y/m/d - H:i:s') . " - Nouveau tribunal différent ".$tabAnn['tribunal']." par rapport à $trib pour l'annonce ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .' !'.EOL);
unset($tabAnn['tribunal']);
}
if (strlen($comp)==0 && @$tabAnn['complement']<>'') {
//$tabAnn['complement']=$tabAnn['complement'];
echo (date ('Y/m/d - H:i:s') . " - Ajout du complément ".$tabAnn['complement'].' pour '. $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .' !'.EOL);
} elseif (strlen($comp)>1 && $tabAnn['complement']<>$comp) {
echo date ('Y/m/d - H:i:s') . " - Complément différent ".$tabAnn['complement'].EOL;
echo "par rapport à $comp ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .' !'.EOL;
$sortie=false;
if ($questions) {
while($sortie==false) {
echo 'Voulez vous conserver l\'ancien mandataire ? (Oui/Ajout/Non)';
$line = trim(fgets(STDIN));
if ($line=='O' || $line=='o') { $sortie=true; unset($tabAnn['complement']); }
elseif ($line=='N' || $line=='n' || $line=='') { $sortie=true; }
elseif ($line=='A' || $line=='a') { $sortie=true; $tabAnn['complement']="$comp, ".$tabAnn['complement'];}
}
}
}
echo date ('Y/m/d - H:i:s') . " - MAJ du jugement ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .'!'.EOL;
if (count($tabTmp)>1) {
print_r($tabAnn);
echo date ('Y/m/d - H:i:s') . " - ERREUR : Jugement ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .' présent plusieurs fois !'.EOL;
//die();
}
$iDb->update($table,$tabAnn,'id='.$tabAnnEnBase['id']);
if (mysql_errno()>0) {
echo date ('Y/m/d - H:i:s') ." - A la mise à jour sur $table :".EOL;
print_r($tabAnn);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
if ($modeDebug) $line = trim(fgets(STDIN));
else die("ERREUR SQL 2".EOL);
}
/*echo mysql_error().EOL."En base:".EOL;
print_r($tabAnnEnBase);
echo mysql_error().EOL."A mettre à jour :".EOL;
print_r($tabAnn);
echo "?";
$sdfqsd=trim(fgets(STDIN));*/
$nbUpdate++;
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Ligne $ligne : MAJ du jugement ". $tabAnn['typeEven'] .' en date du '. $tabAnn['dateJugement'].", siren=".$tabAnn['siren'] .'!'.EOL;
}
}
//if ($modeDebug) echo "Ligne $ligne Fin: '$a'".EOL;
}
fclose ($fp);
echo date ('Y/m/d - H:i:s')." - Le fichier n°$i, $nomFichier vient d'être chargé : $nbInsert ajouts et $nbUpdate MAJ !".EOL;
if ($table=='annonces2') {
echo date ('Y/m/d - H:i:s')." - Chargement en test. Arrêt du traitement...".EOL;
die("TABLE ANNONCE 2".EOL);
}
if (bzip2(CSF_FTP_DIR.$nomFichier, CSF_BACKUP_DIR.$nomFichier)) {
unlink(CSF_FTP_DIR.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
}
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siren/siret invalides et $nbSiretRetraitement annonces à retraiter !".EOL;
$message.="Le fichier n°$i, $nomFichier vient d'être chargé :\r\n";
$message.=" $nbInsert ajouts et $nbUpdate mises à jours sur $nbLignes lignes ($nbSiretInvalides siren/siret invalides et $nbSiretRetraitement annonces à retraiter).".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des défaillances.".EOL;
}
else {
$message.="Aucun fichier CSF à traiter !\r\n";
echo date ('Y/m/d - H:i:s') . " - Aucun fichier CSF à traiter !".EOL;
}
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement annonces Greffes', $message);
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement annonces Greffes', $message);
echo date ('Y/m/d - H:i:s') . " - Fin du traitement.".EOL;
die();
?>

View File

@ -1,6 +1,144 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$modeDebug=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des tribunaux compétents pour les codes insee des communes depuis le site du ministère de la justice.
/**@todo : Il faudrait penser à mettre à jour en automatique la liste des communes depuis le site de l'insee !!!**/
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
/** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php
**
** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007
**/
$iDb=new WDB('jo');
$iInsee=new MInsee();
$table='annonces_jal';
$urlBase='http://www.annonces-legales.fr/annonce-legale/';
$tabZones=array(
'jalNum'=>'<div id="al_title"><h1><a href="http://www.annonces-legales.fr/journal/(.*)/',
'jalDept'=>'<div id="al_title"><h1><a href="http://www.annonces-legales.fr/journal/(?:.*)">(?:.*) (\d+|2A|2B)</a></h1></div>',
'jalNom'=>'<div id="al_title"><h1><a href="http://www.annonces-legales.fr/journal/(?:.*)/(.*)">',
'jalLib'=>'<div id="al_title"><h1><a href="http://www.annonces-legales.fr/journal/(?:.*)">(.*)</a></h1></div>',
'jalDateTxt'=>'<div id=\'annonce_legale_date\'><b>(.*)</b></div>',
'annCat'=>'<div id=\'annonce_legale_date\'><b>(?:.*)</b></div><h2><b><a href=\'http://(.*).annonces-legales.fr/publication\'>',
'evenLib'=>'<div id=\'annonce_legale_date\'><b>(?:.*)</b></div><h2><b><a href=\'http://(?:.*).annonces-legales.fr/publication\'>(.*)</b></a></h2>',
'socNom'=>'<div align=\'center\' style=\'font-size: 24pt; line-height: 24pt;\'><strong>(.*)</strong></div>',
'fjCap'=>'<div align=\'center\'><strong>(.*)</strong></div>',
'adr'=>'<div align=\'center\'><strong>(?:.*)</strong></div>(?:.*)<div><center>(.*)\d\d\d\d\d',
'adrSiege'=>'<div>Si.*ge social : (.*)</div>',
'cpVille'=>'<div align=\'center\'><strong>(?:.*)</strong></div>(?:.*)<div><center>(.*)(\d\d\d\d\d\s.*)<br>',
'siren'=>'<br>(?:.*)(\d\d\d\d\d\d\d\d\d) R',
'tribunal'=>'(?:\d\d\d\d\d\d\d\d\d) R.C.S. (.*)</center>',
'tribunalImm'=>'<div>Immatriculation au RCS de (.*)</div>',
'socDuree'=>'<div>Dur.*e : (\d+) ans</div>',
'socObjet'=>'<div>Objet social : (.*)</div>',
'socGerance'=>'<div>G.*rance : (.*)</div>',
'annonce'=>'<div class=.annonce.>(.*)<div class="separator">',
'mention'=>'<div>(Mention en sera faite.*)</div>',
'acteDate'=>'<div>Par acte SSP en date du (.*)\s',
'acteNature'=>'<div>Par acte SSP en date du (?:.*)/\d\d\d\d\s(.*)</div>',
/* <div>Par acte SSP en date du 08/10/2009 il a été constitué la société suivante :</div>
<div>Siège social : 108 rue des Bains, 8 Allée du Douet d'Auge 14103 Pont l'Eveque, 14360 Trouville sur Mer</div>
<div>Capital : </div>
*/
// id socTri uid
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des informations '$table'...".EOL;
$ret=$iDb->select($table, 'MAX(id)', '1', false);
$iDeb=$ret[0][0];
$nbVides=0;
echo date ('Y/m/d - H:i:s')." - Dernier id '$table' = $iDeb".EOL;
//$iDeb=54701;
for($i=$iDeb;;$i++) {
$tabInsert=array('id'=>$i);
/* $ret=$iDb->select($table, 'raiSoc', "id=$i", false);
if (@$ret[0][0]<>'') continue;
*/
$url=$urlBase.$i;
$page=getUrl($url, '', '', '', false);
$referer=$url;
if ($page['code']==301) {
$url=$page['header']['Location'];
$page=getUrl($url, '', '', $referer, false);
$referer=$url;
}
$body=$page['body'];
$tabHtml=html2array($body, $tabZones);
if ($tabHtml['jalNum']=='' || @$tabHtml['annCat']=='') {
$nbVides++;
$i0=$i-10;
if ($nbVides==10) die("Le dernier numéro d'annonces est probablement le '$i0'".EOL);
continue;
}
$nbVides=0;
$tabHtml['jalDateYmd']=WDate::dateT('d M Y','Y-m-d',$tabHtml['jalDateTxt']);
$tabInsert=array_merge($tabInsert,$tabHtml);
$tabInsert['dateInsert']=date('YmdHis');
if (@$iInsee->valideSiren($tabInsert['siren']))
$tabInsert['sirenValide']=1;
else
$tabInsert['sirenValide']=0;
print_r($tabInsert);
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
/**
** Ce script récupère les tribunaux compétents pour les codes insee des communes (site du ministère de la justice)
** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
@ -54,7 +192,33 @@ function html2txt($html) {
//die(print_r($page));
echo date ('Y/m/d - H:i:s') . " - Début de la récupération des annonces sur le site JAL...".EOL;
$urlBase='http://www.journal-annonce-legale.fr';
/*<div id="annonce_legale_item">
<br>
<div id="al_title"><h1><a href="http://www.annonces-legales.fr/journal/338/lecho-de-louest">L'Echo de l'Ouest - Loire-Atlantique 44</a></h1></div>
<div class="separator"></div>
<div id='annonce_legale_date'><b>30 août 2012</b></div><h2><b><a href='http://transfert-de-siege-dans-le-departement.annonces-legales.fr/publication'>Transfert de si&eacute;ge dans le d&eacute;partement</b></a></h2> <div id="annonce_legale_text" style="">
<div class='annonce'>
<div align='center' style='font-size: 24pt; line-height: 24pt;'><strong>SELECTIMMO</strong></div>
<div align='center'><strong>SARL Unipersonnelle au capital de 1500 Euros</strong></div>
<div align='center'>
<center>12 rue de la Chevasnerie,<br>
44000 NANTES<br>
494480759 R.C.S. Nantes</center>
</div>
<div>Par décision du gérant en date du 30 août 2012 il a été décidé de transférer le siège social de la société au 58 boulevard Meusnier de Querlon, 44000 NANTES à compter du 30 août 2012.</div>
<div>Mention en sera faite au Registre du Commerce et des Sociétés de Nantes</div>
</div> </div>
<br><br><div class="separator"></div>
<br><h4>Autres annonces l&eacute;gales</h4><b><a href='/annonce-legale/54627/SOCIETE-CIVILE-DE-BONHERBE-Radiation-Liquidation-de-societe'>Annonce l&eacute;gale - SOCIETE CIVILE DE BONHERBE - Radiation - Liquidation de soci&eacute;t&eacute;</a></b><br><b><a href='/annonce-legale/54436/QIMNET-Transfert-de-siege-dans-le-departement'>Annonce l&eacute;gale - QIMNET - Transfert de si&eacute;ge dans le d&eacute;partement</a></b><br><b><a href='/annonce-legale/54368/SCI-SAINT-JALMES-JOZWICKI-Transfert-de-siege-hors-departement'>Annonce l&eacute;gale - SCI SAINT-JALMES - JOZWICKI - Transfert de si&eacute;ge hors d&eacute;partement</a></b><br></div> </div>
<div class="clear"></div>
<div class="clear"></div>
<div id="footer">
<div id="footer_l">
Regiepress s'est engag&eacute;e &agrave; soutenir :<br>*/
$page=getUrl($urlBase.'/annonces_legales', '', '', $referer);
$size=round(strlen($page['body'])/1024);
echo date ('Y/m/d - H:i:s') . " - Récupération de $size Ko de données. Recherche des annonces...".EOL;

2116
batch/getAnnoncesOctde.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -183,7 +183,7 @@ Options :
$iInsee=new MInsee();
$iBodacc=new MBodacc();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0;
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=$nbIgnore=0;
$modeDebug=false; // Mode débug
$questions=true; // Questions interactives autorisées ?
$tabFichier=$tabFichLigneCmd=array();
@ -338,6 +338,10 @@ for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
$tabAnnonce['nature']=trim($title->item(0)->nodeValue);
$tabAnnonce['tabEven']=array();
$tabAnnonce['tabEven'][]=$tabEvenTessi[$tabAnnonce['nature']];
if ($tabEvenTessi[$tabAnnonce['nature']]*1==0) {
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', "Chargement TESSI : Problème de code Jugement Inconnu '".$tabAnnonce['nature']."'", "Fichier '$nomFichier'".EOL);
die("L'évènement '".$tabAnnonce['nature']."' n'est pas reconnu chez S&D !");
}
@$tabCptAnn[$tabAnnonce['even']][$tabEvenTessi[$tabAnnonce['nature']]]++;
/** Tableau des modifications
@ -458,7 +462,7 @@ for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
$tabAnnonce['newFJur']=$line;
} else {
$message.='Arrêt du traitement, forme juridique inconnue : "'.$tabAnnonce['fj_new'].'"'.EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur Chargement annonces JAL - Forme Jur inconnue', $message);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Erreur Chargement annonces JAL - Forme Jur inconnue', $message);
die();
}
}
@ -900,6 +904,7 @@ SOCIETE ABSORBEE PAR ABTEY CHOCOLATERIE SIREN 946351376 RTE NATIONALE 466 68990
elseif ($tribunal=='TC DE ANNECY') $tabAnnonce['tribunal']='ANNECC';
elseif ($tribunal=='GRAY-VESOUL') $tabAnnonce['tribunal']='GRAYC';
elseif ($tribunal=='SALON') $tabAnnonce['tribunal']='SALONC';
elseif ($tribunal=='VILLEFRANCHE SUR SAONE-TARARE') $tabAnnonce['tribunal']='VILTAC';
else {
echo date ('Y/m/d - H:i:s')." - Tribunal Tessi inconnu '$tribunal' (Dept.=$dep, source=".$tabAnnonce['natureTribunal'].", siren=$siren) !".EOL;
if ($questions) {
@ -911,7 +916,7 @@ SOCIETE ABSORBEE PAR ABTEY CHOCOLATERIE SIREN 946351376 RTE NATIONALE 466 68990
$tabAnnonce['tribunal']=$line;
} else {
$message.="Arrêt du traitement, Tribunal inconnu : '$tribunal'".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur Chargement annonces JAL - Tribunal inconnu', $message);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Erreur Chargement annonces JAL - Tribunal inconnu', $message);
die();
}
// die();
@ -1298,6 +1303,13 @@ SOCIETE ABSORBEE PAR ABTEY CHOCOLATERIE SIREN 946351376 RTE NATIONALE 466 68990
}
// $line = trim(fgets(STDIN));
} else {
if ($tabInsert['typeEven']==5999) { // Ventes et cessions
$nbIgnore++;
echo date ('Y/m/d - H:i:s')." - On ignore la vente pour le siren $siren !".EOL;
echo print_r($tabInsert, 1);
continue;
}
$ret=$iDb->insert($table, $tabInsert);
$nbInsertEven[$typeEven]++;
$nbInsert++;
@ -1339,7 +1351,7 @@ SOCIETE ABSORBEE PAR ABTEY CHOCOLATERIE SIREN 946351376 RTE NATIONALE 466 68990
echo date ('Y/m/d - H:i:s') . " - DETAIL des mises à jours :".EOL;
//print_r($nbUpdateEven);
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement annonces JAL', $message);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Chargement annonces JAL', $message);
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement annonces JAL', $message);
}

View File

@ -179,10 +179,10 @@ while ($dateCour<=$dateF || $lastJO) { // Boucle sur les dates
} elseif ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) {
$message=date('Y/m/d - H:i:s') .' - ERREUR : Il n\'y a que '. $nbAnnDb .' annonces en base sur les '. $nbAnnonces .' annonces présentes au JO BALO du '. $dateDerParution .' !'. EOL;
echo $message;
mail('ylenaour@scores-decisions.com', 'JO BALO', $message);
/* mail('ylenaour@scores-decisions.com', 'JO BALO', $message);
mail('lenaoury@gmail.com', 'JO BALO', $message);
echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL;
die();
die();*/
}
$tabAnnonces=explode('<div class="hr"><hr/></div>', $page['body']);
@ -235,7 +235,24 @@ while ($dateCour<=$dateF || $lastJO) { // Boucle sur les dates
$strIsin="";
echo date('Y/m/d - H:i:s') ." - Annonce n°$i2/$nbAnnonces, Siren $siren $strIsin: ".$infoAnnBalo['Societe_Nom'] .EOL;
$page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
$nbBoucles=0;
while (1) {
$nbBoucles++;
$page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
// [code] => 301
// ['header']['Location'] => http://www.journal
if ($page['code']==301) {
echo date('Y/m/d - H:i:s') ." - On patiente $nbBoucles fois...". EOL;
sleep(3600);
} elseif ($page['code']==200) break;
else {
echo date('Y/m/d - H:i:s') ." - On a patienté $nbBoucles fois avant d'obtenir pour cette URL : ".$infoAnnBalo['Url_Annonce_Html'].EOL;
print_r($page);
}
// echo $infoAnnBalo['Url_Annonce_Html'];
// $page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
}
//echo '<table border="1"><tr><td>'. $page['body'] .'</td></tr></table><hr/>';
$infoAnnBalo['Annonce_Html']=$page['body'];
randsleep($tempsMinEntreRequetes,$tempsMaxEntreRequetes);

238
batch/getBanques.php Normal file
View File

@ -0,0 +1,238 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=$modeSirenBanque=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des listes des sociétés de gestion agrées par l'AMF
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-b Sirenage des codes banques non encore sirenés
-r=13S00000 Traiter ce numéro de RCI
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'b': $modeSirenBanque=true; break;
//case 'r': $modeRCI=trim(substr($argv[$i],3,strlen($argv[$i])-1)); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$iDb=new WDB('insee');
$table='BDF_Etabs';
/*$urlBase='http://www.amf-france.org/bio/rech_SG.aspx';
$referer='http://www.rci.gouv.mc/index.jsp';
$urlRecherche='10088';
*/
$retrait=1;
$urlDetail="https://www.regafi.fr/spip.php?type=advanced&id_secteur=1&lang=fr&denomination=&siren=&bic=&nom=&siren_agent=&num=&cat=0&retrait=$retrait&page=af&id=21&cib=";
$tabZones =array('id'=>"&bic=&nom=&siren_agent=&num=&cat=0&retrait=$retrait&page=af&id=(.*)\">(?:.*)</a></td></tr></table>");
$tabZones2=array( 'nom' => '<strong>D&eacute;nomination sociale : </strong>(.*)</p>',
'denomination' => '<li>D&eacute;nomination sociale : <span>(.*)</span></li>',
'nomCom' => '<li>Nom commercial : <span>(.*)</span></li>',
'fjLib' => '<li>Forme juridique : <span>(.*)</span></li>',
'bdfFibCodeEtab'=> '<li class="pre-espacement">Code banque \(CIB\) : <span>(.*)</span></li>',
'siren' => '</span></li><li>SIREN : <span>(.*)</span></li></ul>',
'typAgentFi' => '</ul><strong class="description">(.*)</strong><ul class="nopuce">',
'natAutor' => '<li>Nature d\'autorisation : <span>(.*)</span></li>',
'natExercice' => '<li>Nature d\'exercice : <span>(.*)</span></li>',
'adresse' => '<li class="pre-espacement post-espacement">Adresse du si&egrave;ge social : <span>(.*)</span></li>',
'CP' => '<li>Code postal : <span>(.*)</span></li>',
'Ville' => '<li>Ville : <span>(.*)</span></li>',
'paysLib' => '<li>Pays : <span>(.*)</span></li>');
//
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
$modeSirenBanque=true;
if ($modeSirenBanque) {
$ret=$iDb->select($table, 'bdfFibCodeEtab, bdfFibDenom40', "1/*siren<1000 AND bdfFibCodeEtab>23585*/ AND preRegafi IS NULL AND idRegafi IS NULL ORDER BY bdfFibCodeEtab", false);
$nbLet=count($ret);
foreach ($ret as $tFiche) {
@$nbDone++;
$id=$tFiche['bdfFibCodeEtab'];
$nom=$tFiche['bdfFibDenom40'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : Code Banque $id - $nom = ";
$referer="https://www.regafi.fr/spip.php?page=advancedsearch&id_secteur=1";
$urlFiche="https://www.regafi.fr/spip.php?page=results&type=advanced&id_secteur=1&lang=fr&denomination=&siren=&cib=$id&bic=&nom=&siren_agent=&num=&cat=0&retrait=$retrait";
$page=getUrl($urlFiche, '', '', $referer, false);
$body=$page['body'];
if (preg_match('/<strong>Nombre de r&eacute;sultats \:<\/strong> 0<\/p>/', $body, $matches)) {
$iDb->update($table, array('preRegafi'=>0), "bdfFibCodeEtab=$id");
echo 'Non trouvé !'.EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(60,120);
continue;
}
//print_r($page);die();
$tabUpdate=@html2array($body, $tabZones);
//print_r($tabUpdate);die();
// Détail
$referer=$urlFiche;
//https://www.regafi.fr/spip.php?type=advanced&id_secteur=1&lang=fr&denomination&siren&cib&bic&nom&siren_agent&num&cat=0&retrait=0&pg=57&page=af&id=7571
$idRegafi=$tabUpdate['id'];
$urlFiche="https://www.regafi.fr/spip.php?type=advanced&id_secteur=1&lang=fr&denomination=&siren=&cib=$id&bic=&nom=&siren_agent=&num=&cat=0&retrait=$retrait&page=af&id=".$idRegafi;
$page=getUrl($urlFiche, '', '', $referer, false);
$body=$page['body'];
//print_r($page);die();
$tabUpdate=@html2array($body, $tabZones2);
//print_r($tabUpdate);die();
echo $tabUpdate['nom'].' - '.@$tabUpdate['siren'].EOL;
unset($tabUpdate['nom']);
$tabUpdate['idRegafi']=$idRegafi;
$tabUpdate['preRegafi']=1;
if (@$tabUpdate['siren']>1000 || $idRegafi>0) {
$tabUpdate['sirenValide']=1;
$tabUpdate['denomination']=strtr($tabUpdate['denomination'],array('&#039;'=>"'"));
$tabUpdate['nomCom']=@strtr($tabUpdate['nomCom'],array('&#039;'=>"'"));
$tabUpdate['adresse']=@strtr($tabUpdate['adresse'],array('&#039;'=>"'"));
$tabTypAgentFi=array();
if (preg_match("/ablissement de cr.{1,10}alis.{1,5}/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='CRS';
elseif (preg_match("/Etablissement de cr.{1,5}t/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='CR';
if (preg_match("/Non prestataire de services d'investissement/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='NSI';
elseif (preg_match("/Prestataire de services d'investissement/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='SI';
if (preg_match("/Banque mutualiste ou coop.{1,5}tive/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='BQM';
elseif (preg_match("/Banque/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='BQ';
if (preg_match("/Caisse de cr.{1,5}t municipal et .{1,5}blissement assimilable/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='CM';
if (preg_match("/Entreprise d'investissement/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='EI';
if (preg_match("/Etablissement de monnaie.{1,5}ctronique/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='EM';
if (preg_match("/Soci.{1,5} de financement/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='SF';
if (preg_match("/Etablissement de paiement/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='EP';
if (preg_match("/Institution financi.{1,5} sp.{1,5}alis/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='IFS';
if (preg_match("/Compagnie financi.{1,5} holding/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='CFH';
if (preg_match("/Changeur manuel/", $tabUpdate['typAgentFi'])) $tabTypAgentFi[]='CHM';
if (count($tabTypAgentFi)==0) die('Je ne connais pas '.$tabUpdate['typAgentFi'].EOL);
$iDb->update($table, $tabUpdate, "bdfFibCodeEtab=$id");
}
if ($modeDebug) randsleep(1,2);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
}
die();
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
die();
echo count($tabLet);
//serialize
print_r($tabLet);
die();
$tabHtml=html2array($body, $tabZones);
print_r($tabHtml);
die();
$ret=$iDb->select($table, 'agrementNum', '1', false);
foreach ($ret as $tAgrNum) {
$agrNum=$tAgrNum['agrementNum'];
echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
}
for($i=$iDeb;;$i++) {
$tabInsert=array('id'=>$i);
$url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15";
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
print_r($page);
die();
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
?>

View File

@ -43,7 +43,8 @@ $iInsee=new MInsee();
foreach ($tabFichier as $i=>$fichier) {
$tabSiren=file($fichier);
foreach ($tabSiren as $iSiren=>$siren) {
$siren=trim($siren);
$siren=explode(',',trim($siren));
$siren=$siren[0];
$tabIdentite=$iInsee->getIdentiteLight($siren);
$rs=$tabIdentite['Nom'];
$strBase="$iSiren,$siren,$rs";
@ -51,6 +52,8 @@ foreach ($tabFichier as $i=>$fichier) {
$tabActes=@$iGreffes->getBilansImages($siren);
$bilan=@$tabActes[0];
$ref=$bilan['ref'];
$type=$bilan['type'];
$dateCloture=$bilan['dateCloture'];
echo $strBase.
$bilan['annee'].','.
$bilan['type'] .','.
@ -58,9 +61,11 @@ foreach ($tabFichier as $i=>$fichier) {
$bilan['depot_num'] .','.
$bilan['vecteurs'] .',';
if ($ref<>'') {
echo "http://extranet.scores-decisions.com/pieces/bilan/siret/$siren/ref/$ref/mode/T";
//echo "http://extranet.scores-decisions.com/pieces/bilan/siren/$siren/ref/$ref/mode/T";
echo "http://extranet.scores-decisions.com/pieces/bilan/siren/$siren/mode/T/type/$type/cloture/$dateCloture";
echo ',';
echo "http://extranet.scores-decisions.com/fichier/pdf/bilan-$siren-$ref.pdf";
echo "http://extranet.scores-decisions.com/fichier/greffe/bilan-$siren-$type-$dateCloture.pdf";
// http://extranet.scores-decisions.com/fichier//bilan-303217368-sociaux-2013-12-31.pdf
}
}
elseif ($type=='S') {

View File

@ -691,6 +691,7 @@ Options :
-h Ne pas charger la notice dans la base des 'historiques'
";*/
$iDb=new WDB();
$iDbH=new WDB('historiques');
global $iInsee;
$iInsee=new MInsee();
$iRncs=new MRncs();
@ -750,7 +751,7 @@ if ($ftpStep) {
$dateDist = ftp_mdtm($conn_id, $server_file);
$server_fileName=basename($server_file);
if (!preg_match('/BILSCOREDEC/i', $server_fileName)) {
if (!preg_match('/BILSCOREDEC/i', $server_fileName) || preg_match('/\.swp/i', $server_fileName)) {
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' n'est pas un flux RNCS/BILANS.".EOL;
continue;
} elseif ($modeDebug)
@ -879,6 +880,7 @@ foreach ($tabFichier as $iFic=>$fichier)
if ($fp) {
$nbLignes=$nbLignes1=$nbLignes2=$nbLignes3=$nbLignes4=0;
$nbUpdate=$nbNotUpdate=$nbInsert=0;
$tabDept=$tabMill=$tabDeptMill=array();
$a = fgets($fp, 4096);
$tailleLigne=strlen($a);
if ($tailleLigne<90 || $tailleLigne>91) {
@ -915,6 +917,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$siren = trim( substr($a, 0, 9)); // SIREN
$nic = trim( substr($a, 9, 5)); // NIC
$dateCloture= trim( substr($a, 14, 8)); // SSAAMMJJ
if (strlen(trim($a))==34) {
// echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, ligne de 34 caractères '$a'...".EOL;
$idFichier = trim( substr($a, 0, 10));
@ -943,7 +946,7 @@ foreach ($tabFichier as $iFic=>$fichier)
}
// echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, ligne de 34 caractères '$a'... RAS".EOL;
}
$tabPages=array();
switch ($codeEnr) {
case '1': // Structure de début de Bilan
$nbLignes1++;
@ -953,6 +956,8 @@ foreach ($tabFichier as $iFic=>$fichier)
$ff) {
// Enregistrer le Bilan précédent si siren différent
$nbBilans++;
@$tabMill[substr($dateCloturePre,0,4)]++;
$strPostes='';
foreach($tabPostes as $poste=>$valeur)
$strPostes.="$poste=$valeur;";
@ -988,19 +993,70 @@ foreach ($tabFichier as $iFic=>$fichier)
}
if (/*$codeSai=='00' || $codeSai=='01'*/strlen($strPostes)>0) {
$ret=$iDb->select('bilans', 'partenaire, siren, typeBilan, dateExercice, dateExercicePre, PERIOD_DIFF(SUBSTRING(dateExercice,1,6),SUBSTRING(dateExercicePre,1,6)) as dureeExerciceCalc, dureeExercice', "siren='$sirenPre' AND typeBilan='$typeBilan' AND dateExercice='$dateCloturePre'", false, MYSQL_ASSOC);
//
$ret=$iDb->select('bilans', 'id, partenaire, siren, typeBilan, dateExercice, dateExercicePre, PERIOD_DIFF(SUBSTRING(dateExercice,1,6),SUBSTRING(dateExercicePre,1,6)) as dureeExerciceCalc, dateProvPartenaire, dureeExercicePre, monnaie, monnaieOrigine, unite, postes, confidentiel, dateInsert, dureeExercice', "siren='$sirenPre' AND typeBilan='$typeBilan' AND dateExercice='$dateCloturePre'", false, MYSQL_ASSOC);
//unset($ret);
if (isset($ret[0])) {
$codeCon=false;
$bilanPre=$ret[0];
$messageLigne=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren-$nic, $dateCloture ($codeEnr) - Bilan INPI déjà saisi le ".$bilanPre['dateProvPartenaire']." (".$bilanPre['partenaire'].") et entré en base S&D le ".$bilanPre['dateInsert'].EOL;
echo $messageLigne;
$message.=$messageLigne;
$idBilanPre=$bilanPre['id'];
$confPre=$bilanPre['confidentiel'];
$dateInsertPre=$bilanPre['dateInsert'];
if ($bilanPre['partenaire']==7 ||
$bilanPre['partenaire']==8 ||
$bilanPre['partenaire']==9) {
/** On n'écrase pas le bilan s'il a été saisit par S&D */
$ret=$iDb->update('bilans', $tabInsert, "siren='$sirenPre' AND typeBilan='$typeBilan' AND dateExercice='$dateCloturePre'", false);
$nbUpdate++;
} else
$nbNotUpdate++;
unset($bilanPre['id']);
unset($bilanPre['dureeExerciceCalc']);
unset($bilanPre['confidentiel']);
unset($bilanPre['dateInsert']);
/*$bilanPre['dateExercicePre']=$bilanPre['dateExercicePre']*1;
$bilanPre['dureeExercice']=$bilanPre['dureeExercice']*1;
$bilanPre['dureeExercicePre']=$bilanPre['dureeExercicePre']*1;
*/
$strPostePre=$bilanPre['postes'];
$strPostePre=explode(';', $strPostePre);
foreach ($strPostePre as $tmpPoste) {
$tmpPoste=explode('=', $tmpPoste);
if (isset($tmpPoste[1]))
$tabPostesPre[$tmpPoste[0]]=$tmpPoste[1];
}
$bilanDiff = array_diff($tabInsert, $bilanPre);
$postesDiff = array_diff($tabPostes, $tabPostesPre);
if (count($bilanDiff)>0 || count($postesDiff)>0) {
$ret=$iDb->update('bilans', $tabInsert, "siren='$sirenPre' AND typeBilan='$typeBilan' AND dateExercice='$dateCloturePre'", false);
$bilanPre['id']=$idBilanPre;
$bilanPre['confidentiel']=$confPre;
$bilanPre['dateInsert']=$dateInsertPre;
$retH=$iDbH->update('bilans', $tabInsert, false);
//print_r($tabInsert);
//print_r($bilanPre);
print_r($bilanDiff);
echo EOL;
//print_r($tabPostes);
//print_r($tabPostesPre);
print_r($postesDiff);
$strPostesDiff='';
foreach($postesDiff as $poste=>$valeur)
$strPostesDiff.="$poste=$valeur;";
if (trim($strPostesDiff)<>'') {
$tabInsertDiff=array('idUtilisateur'=> 0,
'siren' => $sirenPre,
'dateExercice' => $dateCloturePre,
'typeBilan' => $typeBilan,
//dateAction'=>date('YmdHis'),
'postesDiff' => trim($strPostesDiff),
);
$iDb->insert('bilans_user', $tabInsertDiff);
}
//die();
$nbUpdate++;
} else $nbNotUpdate++;
} else $nbNotUpdate++;
} else {
/** Tester sur les nouveaux bilans
* - CA x par 10 - 100
@ -1037,12 +1093,12 @@ foreach ($tabFichier as $iFic=>$fichier)
}
if (!((@$tabPostes[$strCtrl]*1)>=$totalMin && (@$tabPostes[$strCtrl]*1)<=$totalMax)) {
if (!$anoBilan)
$messageLigne="Fichier $fichier : ligne $nbLignes, $sirenPre, $dateCloturePre - Retour Saisie n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
$messageLigne="Fichier $fichier : ligne $nbLignes, bilan n°$nbBilans, $sirenPre, $dateCloturePre - Retour Saisie n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
else
$messageLigne='';
$messageLigne.="$strEcho (saisi ".@$tabPostes[$strCtrl].' <> '.$total." calculé)".EOL;
echo $messageLigne;
$codeCon=2;
$codeCon=5;
$messageErrCtrl.=$messageLigne; //if ($tabPostes[$strCtrl]<>$total) echo "\tdifférents";
if ($codeSai=='00') $anoBilan=true;
}
@ -1075,7 +1131,8 @@ foreach ($tabFichier as $iFic=>$fichier)
$resultat=@$tabPostesCtrl['HN'];
$caTotal=@$tabPostesCtrl['FL'];
$fondsPr=@$tabPostesCtrl['DL'];
$messageAno="Fichier $fichier : ligne $nbLignes, $sirenPre, $dateCloturePre ($duree), N-1=$dateClP ($dureeP), Greffe n°$numGre, fj=$cj capital $capTyp=$capital $capDev DA=$capBil HN=$resultat Immat=$dateIm - ";
$effectif=@$tabPostesCtrl['YP'];
$messageAno="Fichier $fichier : ligne $nbLignes, bilan n°$nbBilans, $sirenPre, $dateCloturePre ($duree), N-1=$dateClP ($dureeP), Greffe n°$numGre, fj=$cj, capital $capTyp=$capital $capDev, DA=$capBil, HN=$resultat, FL=$caTotal, YP=$effectif, Immat=$dateIm - ";
/** Contrôle de cohérence entre le capital Registre et Bilan
**/
@ -1106,6 +1163,45 @@ foreach ($tabFichier as $iFic=>$fichier)
//2319 Poursuite de l'activité malgré la perte de plus de la moitié du capital
}
/** Contrôle de cohérence Effectif
**/
// FY : Salaires et traitements
// FZ : Charges sociales (10)
if ($effectif>4 && ($caTotal/$effectif<1000 || (@$tabPostesCtrl['FY']+@$tabPostesCtrl['FZ'])<10)) {
$messageAno.=' - EFFECTIF INCOHERENT !';
$codeCon=7;
}
$tabTmp=@$iInsee->getIdentiteLight($sirenPre);
$cp=''.$tabTmp['CP'];
$dep=substr($cp,0,2);
if ($dep>96) $dep=substr($cp,0,3);
@$tabDept[$dep]++;
@$tabDeptMill[$dep][substr($dateCloturePre,0,4)]++;
$tefEnId=$tabTmp['EffEnTr'];
$tefEtId=$tabTmp['EffEtTr'];
if ($effectif>10000 && $tefEnId<=52 && $tefEtId<=52) {
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com',
'ATTENTION : Chargement INPI BILANS', "Attention,
L'effectif de $effectif salariés saisi pour la société : ".$tabTmp['Nom']." , ".$tabTmp['CP'].' '.$tabTmp['Ville']."( $sirenPre) semble être abérant pour l'exercice $dateCloturePre ($duree mois).
Merci de procéder au contrôle et à la correction !
-----
Siren : $sirenPre
Raison Sociale : ".$tabTmp['Nom']."
Localité : ".$tabTmp['CP'].' '.$tabTmp['Ville']."
Forme juridique : $cj
Date d'immatriculation : $dateIm
Capital $capTyp : $capBil $capDev
Résultat Net : $resultat
Chiffre d'affaires : $caTotal
Effectif : $effectif salariés
");
// die();
}
/** Contrôle du résultat afin de savoir si perte > 1/2 capital
**/
if ($capBil>0 && $resultat<0) {
@ -1131,7 +1227,6 @@ foreach ($tabFichier as $iFic=>$fichier)
$fondsPr<0 && // Fonds propres négatifs
WDate::nbMoisEntre($dateIm, $dateCloturePre)>=36) { // Et l'entreprise à 3 ans passés
/** @todo Créer l'annonce **/
$tabTmp=@$iInsee->getIdentiteLight($sirenPre);
$tabInsertAnn=array('siren' => $sirenPre,
'sirenValide' => @$iInsee->valideSiren($sirenPre),
'typeEven' => 2319,
@ -1164,10 +1259,10 @@ foreach ($tabFichier as $iFic=>$fichier)
if ($nbMoisCreaN<$duree) {
$messageAno.=' - PREMIER EXERCICE COMPTABLE !';
$tabInsert['dateExercicePre']=0;
} elseif ($nbMoisCreaNp<0) die("Age à N=$nbMoisCreaN mois, Age à N-1=$nbMoisCreaNp mois".EOL);
}// elseif ($nbMoisCreaNp<0) die($messageAno.EOL."Age à N=$nbMoisCreaN mois, Age à N-1=$nbMoisCreaNp mois".EOL);
}
if (strlen($messageAno)>185) {
if (strlen($messageAno)>220) {
echo $messageAno.EOL;
$listeAnomalies.=$messageAno.EOL;
}
@ -1196,7 +1291,7 @@ foreach ($tabFichier as $iFic=>$fichier)
!$totalMin2 && // ... et max
!((@$tabPostesCtrl[$ctrl]*1)>=$totalMin1 && (@$tabPostesCtrl[$ctrl]*1)<=$totalMax1)) {
if (!$anoBilan)
$messageLigne="Fichier $fichier : ligne $nbLignes, $sirenPre, $dateCloturePre - Retour Saisie n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
$messageLigne="Fichier $fichier : ligne $nbLignes, bilan n°$nbBilans, $sirenPre, $dateCloturePre - Retour Saisie n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
else
$messageLigne='';
$codeCon=9;
@ -1207,7 +1302,7 @@ foreach ($tabFichier as $iFic=>$fichier)
}
}
}
$tabInsert['dateInsert']=date('YmdHis'); // $dateInsert;
$ret=$iDb->insert('bilans', $tabInsert, false);
$nbInsert++;
}
@ -1219,6 +1314,12 @@ foreach ($tabFichier as $iFic=>$fichier)
@$tabNbCodeRet['_'.$codeSai]++;
// Insertion des informations relatives à l'acte Bilan
$strPagesPostes='';
foreach($tabPagesPostes as $page=>$nbPostes) {
$strPagesPostes.=str_replace('_','',$page)."=$nbPostes,";
}
$strPagesPostes=substr($strPagesPostes,0,strlen($strPagesPostes)-1);
$tabPagesPostes=array();
$tabInsert=array( 'siren' => $sirenPre,
'numRC' => substr($numGest,2), // char(10)
'numRC2' => $numGest,
@ -1230,10 +1331,14 @@ foreach ($tabFichier as $iFic=>$fichier)
'duree_exercice'=> $duree,
'saisie_date' => $dateEnv,
'saisie_code' => $codeSai,
'pages' => $strPagesPostes,
);
if ($codeCon) $tabInsert['ctrl_code']=$codeCon;
if (!$iDb->insert('greffes_bilans', $tabInsert, false)) {
/** @todo
* 1. Gérer l'état actif du document dans la liste
* 2. Sur la nouvelle machine, requeter Infogreffe pour chaque SIREN et mettre à jour la liste des bilans **/
if (!$iDb->insert('greffes_bilans', array_merge($tabInsert,array('dateInsert'=>date('YmdHis'))), false)) {
if (!$iDb->update('greffes_bilans', $tabInsert, "siren='$sirenPre' AND num_depot='$numDep' AND date_cloture='$dateCloturePre' AND type_comptes='$typeComptes'", false)) {
if (!$iDb->update('greffes_bilans', $tabInsert, "siren='$sirenPre' AND num_depot='$numDep' AND date_cloture='$dateCloturePre' AND type_comptes=''", false)) {
echo "Impossible de mettre à jour la table 'greffes_bilans' pour les éléments suivants :".EOL;
@ -1251,7 +1356,7 @@ foreach ($tabFichier as $iFic=>$fichier)
//print_r($tabInsert);
} elseif ($sirenPre<>0 && $dateCloturePre<>0 && $typeBilanPre<>0) {
$nbDoublons++;
$messageLigne=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, $siren-$nic, $dateCloture ($codeEnr) - Bilan INPI saisit 2 fois !".EOL;
$messageLigne=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren-$nic, $dateCloture ($codeEnr) - Bilan INPI saisit 2 fois !".EOL;
echo $messageLigne;
$message.=$messageLigne;
}
@ -1269,7 +1374,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$codeSai=trim( substr($a, 72, 2)); // code motif de non saisie
if ($codeSai<>'00') {
// echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes - '$a'".EOL;
echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, $siren-$nic, $dateCloture ($codeEnr) - Retour n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren-$nic, $dateCloture ($codeEnr) - Retour n°$codeSai : ".$tabLibCodeSaisie['_'.$codeSai].EOL;
}
$typeBil=trim( substr($a, 74, 1)); // type de bilan
switch (strtoupper($typeBil)) {
@ -1280,7 +1385,7 @@ foreach ($tabFichier as $iFic=>$fichier)
case 'A': $typeBilan='A'; $typeComptes=''; break; // Assurance
break;
default:
$messageErr=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, $siren-$nic, $dateCloture ($codeEnr) - Type Bilan INPI inconnu '$typeBil' !".EOL;
$messageErr=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren-$nic, $dateCloture ($codeEnr) - Type Bilan INPI inconnu '$typeBil' !".EOL;
echo $messageErr;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com',
'ERREUR : Chargement INPI BILANS', $messageErr);
@ -1296,7 +1401,7 @@ foreach ($tabFichier as $iFic=>$fichier)
else
die(date('Y/m/d - H:i:s'). " - Erreur fichier n°$iFic, $fichier : Origine de la devise = '$origDev' !".EOL);
$filler1=trim( substr($a, 79, 11)); // vide
if ($filler1<>'') echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, $siren-$nic, $dateCloture ($codeEnr) - filler1 = '$filler1' !".EOL;
if ($filler1<>'') echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren-$nic, $dateCloture ($codeEnr) - filler1 = '$filler1' !".EOL;
break;
case '2':
$nbLignes2++;
@ -1313,6 +1418,9 @@ foreach ($tabFichier as $iFic=>$fichier)
case '4':
$nbLignes4++;
$pageBilan = trim( substr($a, 23, 2)); // N° de la page du bilan
@$tabPagesPostes['_'.$pageBilan]++;
//print_r($tabPagesBilans);
//echo "$a => $pageBilan".EOL;
if ($typeBilan=='S') $dec=1; // Si bilan simplifié, on décale de 1 caractère !
else $dec=0;
$codeCerfa = trim( substr($a, 25, 2+$dec)); // N° de la page du bilan
@ -1322,7 +1430,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$montant[3] =nbrBilExt2int(substr($a,72+$dec, 15),$a); // N° de la page du bilan
if ($montant[0]===false || $montant[0]===false ||
$montant[2]===false || $montant[3]===false) {
$messageErr=date('Y/m/d - H:i:s'). " - Erreur fichier n°$iFic, $fichier : bilan du $siren au $dateCloture de type '$typeBilan' lors du traitement du code '$codeCerfa', page $pageBilan montant 1,2,3 ou 4 null = ".$montant[0].', '.$montant[1].', '. $montant[2].', '.$montant[3].' !'.EOL;
$messageErr=date('Y/m/d - H:i:s'). " - Erreur fichier n°$iFic, $fichier : bilan $nbBilans du $siren au $dateCloture de type '$typeBilan' lors du traitement du code '$codeCerfa', page $pageBilan montant 1,2,3 ou 4 null = ".$montant[0].', '.$montant[1].', '. $montant[2].', '.$montant[3].' !'.EOL;
echo $messageErr;
if ($stopOnError) {
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com',
@ -1332,7 +1440,7 @@ foreach ($tabFichier as $iFic=>$fichier)
}
$filler4 = trim( substr($a, 87+$dec, 3-$dec)); // vide
if ($filler4<>'') {
$messageErr=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, $siren ($codeEnr) - Erreur filler4 = '$filler4' !".EOL;
$messageErr=date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : ligne $nbLignes, bilan n°$nbBilans, $siren ($codeEnr) - Erreur filler4 = '$filler4' !".EOL;
$messageErr.=date('Y/m/d - H:i:s'). " - Page $pageBilan, Code $codeCerfa - Montant 1,2,3 ou 4 = ".$montant[0].', '.$montant[1].', '. $montant[2].', '.$montant[3].' !'.EOL;
$messageErr.=$aPre;
$messageErr.=$a;
@ -1348,7 +1456,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$listeErreurs.=$msgErreur;
break;
default:
$messageErr=date('Y/m/d - H:i:s') ." - ERREUR ligne $nbLignes : Code Enregistrement '$codeEnr' inconnu pour la ligne :".EOL.trim($a).EOL;
$messageErr=date('Y/m/d - H:i:s') ." - ERREUR ligne $nbLignes, bilan n°$nbBilans : Code Enregistrement '$codeEnr' inconnu pour la ligne :".EOL.trim($a).EOL;
echo $messageErr;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com',
'ERREUR : Chargement INPI BILANS', $messageErr);
@ -1431,11 +1539,20 @@ foreach ($tabFichier as $iFic=>$fichier)
echo mysql_errno();
echo mysql_error();
if (trim($listeErreurs)=='') $listeErreurs='Néant';
ksort($tabDept);
$listeDepts=print_r($tabDept,true);
ksort($tabDeptMill);
$listeDeptsMills=print_r($tabDeptMill,true);
krsort($tabMill);
$listeMills=print_r($tabMill,true);
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com,jm.champeau@recocash.com',
'Chargement INPI BILANS',
$message.EOL."Liste des erreurs de saisie :".EOL.$messageErrCtrl.EOL.
"Liste des erreurs dans le format de fichier :".EOL.$listeErreurs.EOL.
"Liste des anomalies diverses :".EOL.$listeAnomalies.EOL);
"Liste des anomalies diverses :".EOL.$listeAnomalies.EOL.
"Liste des départements traités :".EOL.$listeDepts.EOL.
"Liste des millésimes par départements traités :".EOL.$listeDeptsMills.EOL.
"Liste des millésimes traités :".EOL.$listeMills.EOL );
}
}

File diff suppressed because it is too large Load Diff

View File

@ -11,16 +11,360 @@
**/
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/PHPExcel.php');
$referer='http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/lcfeaf.jsp';
$iDb=new WDB();
$iDbI=new WDB('insee');
$iInsee=new MInsee();
$doCFE=$doAMF=$doBanatic=$modeDebug=false;
/*
$url='http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01000&type=all';
$page=getUrl($url, '', '', $referer, false, 'www.justice.gouv.fr');
die($page['body']);
*/
$lstCom=$iDb->select('villes', 'codeInsee, TRIM(CONCAT(ARTMAJ,NCC)) as LibCom','codeInsee BETWEEN 85068 AND 91000 GROUP BY codeInsee');// "`Code Insee`<'10000'");
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des liens actionnaires et participations.
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-a Traiter les Maires AMF (Noms des maires, tel, fax, web mairies)
-b Traiter la base Banatic (EPCI, Président, tel, fax...)
-c Traiter les CFE
";
$argv=$_SERVER['argv'];
//$tabSiren=array();
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'a': $doAMF=true; break;
case 'b': $doBanatic=true; break;
case 'c': $doCFE=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}// else $tabSiren[]=$argv[$i];
}
if ($doBanatic) {
$urlBase='https://www.banatic.interieur.gouv.fr/V5/fichiers-en-telechargement/';
$url=$urlBase.'fichiers-telech.php';
$page=getUrl($url, '', '', '', false);
$body=$page['body'];
$dateMAJ=false;
//$urlGrpListe=$urlGrpCoord=$urlGrpCompe=$urlGrpPerim='';
$tabRegions=array( 93=>231300021, // REGION PROVENCE-ALPES-COTE D'AZUR
25=>231400011, // REGION DE BASSE NORMANDIE
94=>232000018, // COLLECTIVITE TERRITORIALE DE CORSE
26=>232100016, // REGION DE BOURGOGNE
43=>232500017, // REGION DE FRANCHE-COMTE
73=>233100015, // REGION DE MIDI PYRENEES
72=>233300011, // REGION D'AQUITAINE
91=>233400019, // REGION DU LANGUEDOC-ROUSSILLON
53=>233500016, // REGION BRETAGNE
52=>234400034, // REGION DES PAYS DE LA LOIRE
24=>234500023, // REGION CENTRE
21=>235100013, // REGION CHAMPAGNE-ARDENNE
41=>235700010, // REGION DE LORRAINE
31=>235900016, // REGION NORD PAS DE CALAIS
83=>236300018, // REGION D'AUVERGNE
42=>236700019, // REGION D ALSACE
82=>236900015, // REGION RHONE ALPES
11=>237500079, // REGION ILE DE FRANCE
23=>237600010, // REGION DE HAUTE NORMANDIE
22=>238000038, // REGION PICARDIE
54=>238600019, // REGION POITOU CHARENTES
74=>238708507, // REGION LIMOUSIN
1=>239710015, // CONSEIL REGIONAL DE LA GUADELOUPE
2=>239720014, // REGION DE MARTINIQUE
3=>239730013, // REGION GUYANE
4=>239740012, // REGION REUNION
);
$tabZones=array(
// Toutes les infos de cette table sont dans 'banatic_coord'
'banatic_liste'=> array( "Région siège"=>'region',
"Département siège"=>'dept',
"Arrondissement siège"=>'arrond',
"Commune siège"=>'commune',
"N° SIREN"=>'sirenGrp',
"Nom du groupement"=>'nomGrp',
"Nature juridique"=>'nJur',
"Syndicat à la carte"=>'syndCarte',
"Groupement interdépartemental"=>'grpInterDep',
"Date de création"=>'dateCrea',
"Date d'effet"=>'dateEffet',
"Mode de répartition des sièges"=>'repSieges',
"Autre mode de répartition des sièges"=>'modeRep',
"Nombre de membres"=>'nbMbr',
"Population"=>'popu',
"Nombre de compétences exercées"=>'nbrComp',
"Mode de financement"=>'modeFin',
"Civilité Président"=>'presCiv',
"Prénom Président"=>'presPre',
"Nom Président"=>'presNom',
),
'banatic_comp'=> array( "Région siège"=>'region',
"Département siège"=>'dept',
"Arrondissement siège"=>'arrond',
"Commune siège"=>'commune',
"N° SIREN"=>'sirenGrp',
"Nom du groupement"=>'nomGrp',
"Nature juridique"=>'nJur',
"Syndicat à la carte"=>'syndCarte',
"Groupement interdépartemental"=>'grpInterDep',
"Date de création"=>'dateCrea',
"Date d'effet"=>'dateEffet',
"Mode de répartition des sièges"=>'repSieges',
"Autre mode de répartition des sièges"=>'modeRep',
"Nombre de membres"=>'nbMbr',
"Population"=>'popu',
"Nombre de compétences exercées"=>'nbrComp',
"Mode de financement"=>'modeFin',
"DGF Bonifiée"=>'dgf',
"DSC"=>'dsc',
"REOM"=>'reom',
"Autre redevance"=>'autreRdv',
"TEOM"=>'teom',
"Autre taxe"=>'autreTx',
"Civilité Président"=>'presCiv',
"Prénom Président"=>'presPre',
"Nom Président"=>'presNom',
"Adresse du siège_1"=>'adr1',
"Adresse du siège_2"=>'adr2',
"Adresse du siège_3"=>'adr3',
//"Code postal du siège - Ville du siège"=>'cpVille',
"Code postal du siège Ville du siège"=>'cpVille',
"Téléphone du siège"=>'tel',
"Fax du siège"=>'fax',
"Courriel du siège"=>'mail',
"Site internet"=>'web',
"Adresse annexe_1"=>'annAdr1',
"Adresse annexe_2"=>'annAdr2',
"Adresse annexe_3"=>'annAdr3',
//"Code postal annexe - Ville annexe"=>'annCpVille',
"Code postal annexe Ville annexe"=>'annCpVille',
"Téléphone annexe"=>'annTel',
"Fax annexe"=>'annFax',
),
'banatic_peri'=> array( "Région siège"=>'region',
"Département siège"=>'dept',
"Arrondissement siège"=>'arrond',
"Commune siège"=>'commune',
"N° SIREN"=>'sirenGrp',
"Nom du groupement"=>'nomGrp',
"Nature juridique"=>'nJur',
"Syndicat à la carte"=>'syndCarte',
"Groupement interdépartemental"=>'grpInterDep',
"Date de création"=>'dateCrea',
"Date d'effet"=>'dateEffet',
"Mode de répartition des sièges"=>'repSieges',
"Autre mode de répartition des sièges"=>'modeRep',
"Nombre de membres"=>'nbMbr',
"Population"=>'popu',
"Nombre de compétences exercées"=>'nbrComp',
"Mode de financement"=>'modeFin',
"DGF Bonifiée"=>'dgf',
"DSC"=>'dsc',
"REOM"=>'reom',
"Autre redevance"=>'autreRdv',
"TEOM"=>'teom',
"Autre taxe"=>'autreTx',
"Civilité Président"=>'presCiv',
"Prénom Président"=>'presPre',
"Nom Président"=>'presNom',
"Adresse du siège_1"=>'adr1',
"Adresse du siège_2"=>'adr2',
"Adresse du siège_3"=>'adr3',
"Code postal du siège Ville du siège"=>'cpVille',
"Téléphone du siège"=>'tel',
"Fax du siège"=>'fax',
"Courriel du siège"=>'mail',
"Site internet"=>'web',
"Adresse annexe_1"=>'annAdr1',
"Adresse annexe_2"=>'annAdr2',
"Adresse annexe_3"=>'annAdr3',
"Code postal annexe Ville annexe"=>'annCpVille',
"Téléphone annexe"=>'annTel',
"Fax annexe"=>'annFax',
"Type"=>'typeMbr',
"Siren membre"=>'sirenMbr',
"Nom membre"=>'nomMbr',
"Représentation-substitution"=>'reprMbr',
"Compétence conservée"=>'compConsMbr',
"Population membre"=>'popuMbr',
"Adhésion siren"=>'sirenAdh',
"Adhésion nom"=>'nomAdh',
"Adhésion population"=>'popuAdh',
),
);
$tabBanatic=array(// 1=>array('table'=>'banatic_liste', 'lib'=>'Liste des groupements'),
// 2=>array('table'=>'banatic_coord', 'lib'=>'Coordonnées des groupements'),
3=>array('table'=>'banatic_comp', 'lib'=>'Compétences des groupements'),
4=>array('table'=>'banatic_peri', 'lib'=>'Périmètre des EPCI à fiscalité propre'),
);
if (preg_match('/<p class="s_titre">Donn..?es mises ..? jour le \:&nbsp;<span>(.*)<\/span><\/p>/Uis', $body, $matches))
$dateMAJ=$matches[1];
if (preg_match('/<li><span>France<\/span>\s+<ul>\s+<li class="file">(.*)<\/li>\s+<li class="file">(.*)<\/li>\s+<li class="file">(.*)<\/li>\s+<li class="file">(.*)<\/li>\s+<\/ul>\s+<\/li>/Uis', $body, $matches)) {
//print_r($matches);
foreach($tabBanatic as $iFichier=>$tabFichier) {
if (preg_match('/<a href="(.*)" class="doc">/Uis', $matches[$iFichier], $matches2)) $tabBanatic[$iFichier]['url']=$urlBase.$matches2[1];
echo (date('Y/m/d - H:i:s') .' - Téléchargement de "'. $tabBanatic[$iFichier]['url'] .'"'. EOL);
$page=getUrl($tabBanatic[$iFichier]['url'], '', '', $url, false);
$body=$page['body'];
if(file_put_contents('/tmp/'.$tabBanatic[$iFichier]['table'].'.csv', $body)) {
echo (date('Y/m/d - H:i:s') .' - Ecriture de "'. $tabBanatic[$iFichier]['table'] .'"'. EOL);
// Chargement de la table
$row = 0;
$sirenPre=$deptPre=0;
if (($handle = fopen('/tmp/'.$tabBanatic[$iFichier]['table'].'.csv', 'r')) !== FALSE) {
while (($data = fgetcsv($handle, 2054, "\t")) !== FALSE) {
$num = count($data);
if ($row==0) {
$tabEntetes=$tabEntetesComp=array();
for ($c=0; $c<$num; $c++) {
if (isset($tabZones[$tabBanatic[$iFichier]['table']][trim($data[$c])]))
$tabEntetes[$c]=$tabZones[$tabBanatic[$iFichier]['table']][trim($data[$c])];
elseif ($tabBanatic[$iFichier]['table']=='banatic_comp' && $c>39)
// $tabEntetes[$c]=$data[$c];
$tabEntetesComp[$c]=trim($data[$c]);
elseif ($tabBanatic[$iFichier]['table']=='banatic_peri' && $c>48)
$tabEntetesComp[$c]=trim($data[$c]);
else {
$taille=strlen($data[$c]);
for($z=0; $z<$taille; $z++) {
$car=substr($data[$c],$z,1);
echo "$z:$car=chr(".ord($car).')'.EOL;
}
die(print_r($data,1).$tabBanatic[$iFichier]['table'].EOL.'c='.$c.EOL.$data[$c].EOL.$tabZones['banatic_peri'][$data[$c]].EOL.print_r($tabZones['banatic_peri'],1));
}
}
} else {
$tabInsert=$tabInsertComp=array();
for ($c=0; $c<$num; $c++)
if (isset($tabEntetes[$c]))
$tabInsert[$tabEntetes[$c]]=$data[$c];
elseif (($tabBanatic[$iFichier]['table']=='banatic_comp' && $c>39 && $data[$c]==1) ||
($tabBanatic[$iFichier]['table']=='banatic_peri' && $c>48 && $data[$c]==1))
$tabInsertComp[]=$tabEntetesComp[$c];
//$iDbI->insert($tabBanatic[$iFichier]['table'], $tabInsert, false);
if ($tabBanatic[$iFichier]['table']=='banatic_comp' ||
$tabBanatic[$iFichier]['table']=='banatic_peri') {
$tabInsert['dateInsert']=date('YmdHis');
/** Nettoyage des données **/
switch(trim(str_replace('.','',$tabInsert['presCiv']))) {
case 'Monsieur':
case 'Mr':
case 'M':
$tabInsert['presCiv']='M'; break;
case 'Madame':
case 'Mme':
$tabInsert['presCiv']='Mme'; break;
case 'Mademoiselle':
case 'Melle':
case 'Mlle':
$tabInsert['presCiv']='Mlle'; break;
}
$tabInsert['tel']=strtr($tabInsert['tel'],array('.'=>'',' '=>''));
if (strlen($tabInsert['tel'])<10) unset($tabInsert['tel']);
$tabInsert['fax']=strtr($tabInsert['fax'],array('.'=>'',' '=>''));
if (strlen($tabInsert['fax'])<10) unset($tabInsert['fax']);
$tabInsert['annTel']=strtr($tabInsert['annTel'],array('.'=>'',' '=>''));
if (strlen($tabInsert['annTel'])<10) unset($tabInsert['annTel']);
$tabInsert['annFax']=strtr($tabInsert['annFax'],array('.'=>'',' '=>''));
if (strlen($tabInsert['annFax'])<10) unset($tabInsert['annFax']);
$tmp=explode(' - ', $tabInsert['region']);
$tabInsert['region']=$tmp[0];
$tabInsert['regionLib']=$tmp[1];
$tabInsert['sirenRegion']=$tabRegions[$tmp[0]*1];
$tmp=explode(' - ', $tabInsert['dept']);
$tabInsert['dept']=$tmp[0];
$tabInsert['deptLib']=$tmp[1];
if ($tabInsert['dept']==$deptPre) $tabInsert['sirenDept']=$sirenDeptPre;
else {
$ret2=$iDb->select( 'etablissements_old', 'siren', "source=2 AND siege=1 AND actif=1 AND adr_dep='".$tabInsert['dept']."' AND capital>=0 AND cj=7220 AND siren BETWEEN 200000000 AND 299999999", false, MYSQL_ASSOC);
$tabInsert['sirenDept']=$sirenDeptPre=@$ret2[0]['siren'];
$deptPre=$tabInsert['dept'];
}
$tmp=explode(' - ', $tabInsert['arrond']);
$tabInsert['arrond']=$tmp[0];
$tabInsert['arrondLib']=$tmp[1];
$tmp=explode(' - ', $tabInsert['commune']);
$tabInsert['commune']=$tmp[0];
$tabInsert['communeLib']=$tmp[1];
if (@$tabInsert['sirenGrp']>1000) {
if ($sirenPre==$tabInsert['sirenGrp']) $tabInsert['nicGrp']=$nicPre;
else {
$siren=$tabInsert['sirenGrp'];
$ret2=$iDb->select( 'etablissements_old', 'nic', "source=2 AND siege=1 AND actif=1 AND siren=$siren", false, MYSQL_ASSOC);
$tabInsert['nicGrp']=@$ret2[0]['nic'];
$sirenPre=$siren; $nicPre=$tabInsert['nicGrp'];
}
}
if (@$tabInsert['sirenMbr']>1000) {
$siren=$tabInsert['sirenMbr'];
$ret2=$iDb->select( 'etablissements_old', 'nic, adr_dep, adr_com', "source=2 AND siege=1 AND actif=1 AND siren=$siren", false, MYSQL_ASSOC);
$tabInsert['nicMbr']=@$ret2[0]['nic'];
$dep1=@$ret2[0]['adr_dep']*1;
if ($dep1>96)
$tabInsert['codeInsee']=@substr($ret2[0]['adr_dep'],0,2).$ret2[0]['adr_com'];
elseif($dep1>0 && $dep1<10)
$tabInsert['codeInsee']='0'.$dep1.''.$ret2[0]['adr_com'];
else
$tabInsert['codeInsee']=''.$dep1.''.@$ret2[0]['adr_com'];
}
if (@$tabInsert['sirenAdh']>1000) {
$siren=$tabInsert['sirenAdh'];
$ret2=$iDb->select( 'etablissements_old', 'nic', "source=2 AND siege=1 AND actif=1 AND siren=$siren", false, MYSQL_ASSOC);
$tabInsert['nicAdh']=@$ret2[0]['nic'];
}
if ($tabBanatic[$iFichier]['table']=='banatic_comp')
$iDbI->insert('banatic_coor', $tabInsert, false);
elseif($tabBanatic[$iFichier]['table']=='banatic_peri')
$iDbI->insert('banatic_peri', $tabInsert, false);
// Ajout des compétences
foreach ($tabInsertComp as $iComp=>$cComp) {
$iDbI->insert('banatic_comp', array('sirenGrp'=>$tabInsert['sirenGrp'], 'codComp'=>$cComp, 'dateInsert'=>date('YmdHis')), false);
mysql_error();
}
//$tabInsertComp[]=$tabEntetes[$c];
}
/*print_r($tabInsert);
print_r($tabInsertComp);
die();*/
}
$row++;
}
fclose($handle);
}
}
//convertXLStoCSV('/tmp/'.$tabBanatic[$iFichier]['table'].'.xls','/tmp/'.$tabBanatic[$iFichier]['table'].'.csv');
}
print_r($tabBanatic);
}
//print_r($page);
die($dateMAJ.EOL);
}
//$lstCom=$iDb->select('villes', 'codeInsee, TRIM(CONCAT(ARTMAJ,NCC)) as LibCom','codeInsee BETWEEN 85068 AND 91000 GROUP BY codeInsee');// "`Code Insee`<'10000'");
$lstCom=$iDb->select('villes', 'codeInsee, TRIM(CONCAT(ARTMAJ,NCC)) as LibCom','siren IS NULL ORDER BY codeInsee ASC');// "`Code Insee`<'10000'");
foreach ($lstCom as $i=>$tabCom) {
$numInsee=$tabCom['codeInsee'];
$dep=substr($numInsee,0,2);
@ -29,116 +373,186 @@ foreach ($lstCom as $i=>$tabCom) {
$com=substr($numInsee,3,2);
} else
$com=substr($numInsee,2,3);
$url="http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/Controleur.jsp?ddd=$dep&ccc=$com&service=lcfer&type=NULL&Valider=Valider";
$page=getUrl($url, '', '', $referer, false, 'annuaire-cfe.insee.fr');
$body=$page['body'];
if (strpos($body, "<P>Erreur rencontrée : java.lang.NullPointerException</P>")==0)
{
//print_r($page);
$cookie=$page['header']['Set-Cookie'];
$page=getUrl('http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/lcferf.jsp', $cookie, '', $url, false, 'annuaire-cfe.insee.fr');
$body=$page['body'];
if (preg_match('/<font size="2" face="Arial, Helvetica, sans-serif" color="#D01010">(?:.*)([\d]{2,3})(?:.*)- (.*) \/ (.*)<\/b><\/font><\/td>/Uis', $body, $matches)) {
$depLu=$matches[1];
$depLib=$matches[2];
$comLib=$matches[3];
}
if ($doCFE) {
$url="http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/Controleur.jsp?ddd=$dep&ccc=$com&service=lcfer&type=NULL&Valider=Valider";
$page=getUrl($url, '', '', $referer, false, 'annuaire-cfe.insee.fr');
$body=$page['body'];
if (strpos($body, "<P>Erreur rencontrée : java.lang.NullPointerException</P>")==0)
{
//print_r($page);
$cookie=$page['header']['Set-Cookie'];
$page=getUrl('http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/lcferf.jsp', $cookie, '', $url, false, 'annuaire-cfe.insee.fr');
$body=$page['body'];
if (preg_match('/<font size="2" face="Arial, Helvetica, sans-serif" color="#D01010">(?:.*)([\d]{2,3})(?:.*)- (.*) \/ (.*)<\/b><\/font><\/td>/Uis', $body, $matches)) {
$depLu=$matches[1];
$depLib=$matches[2];
$comLib=$matches[3];
}
/*<b>01
- AIN / L' ABERGEMENT CLEMENCIAT</b></font></td>*/
$tabTmp=explode('<tr bgcolor="#FFFFFF">',$body);
//print_r($tabTmp);die();
$sleep=false;
foreach ($tabTmp as $j=>$tabTrib) {
if ($j<2) continue;
if (preg_match('/<td valign="top" width="48%"> <font face="Arial, Helvetica, sans-serif" size="2">(?:.*)<b>(.*)<\/b><br>(.*)<\/font>/Uis', $tabTrib, $results)) {
$libTri=strip_tags($results[1]);
if (preg_match("/^Chambre de commerce et d'industrie$/i", $libTri)) $typeTri='O';// CCI
elseif (preg_match("/^Chambre de métiers et de l'artisanat/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Chambre de métiers/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Greffe du tribunal de commerce/i", $libTri)) continue;//$typeTri='C';// TC
elseif (preg_match("/^Chambre d'agriculture/i", $libTri)) $typeTri='R';// AGR
elseif (preg_match("/^Chambre nationale de la batellerie artisanale/i", $libTri)) $typeTri='N';// BAR
elseif (preg_match("/^URSSAF/i", $libTri)) $typeTri='U';// URS
elseif (preg_match("/^Centre des impôts/i", $libTri)) $typeTri='Z';// CDI
else die("Libellé CFE '$libTri' inconnu !");
} else die('Erreur fatale');/*</b><br>
1 RUE JOSEPH BERNIER<br>
/*<b>01
- AIN / L' ABERGEMENT CLEMENCIAT</b></font></td>*/
$tabTmp=explode('<tr bgcolor="#FFFFFF">',$body);
//print_r($tabTmp);die();
$sleep=false;
foreach ($tabTmp as $j=>$tabTrib) {
if ($j<2) continue;
if (preg_match('/<td valign="top" width="48%"> <font face="Arial, Helvetica, sans-serif" size="2">(?:.*)<b>(.*)<\/b><br>(.*)<\/font>/Uis', $tabTrib, $results)) {
$libTri=strip_tags($results[1]);
if (preg_match("/^Chambre de commerce et d'industrie$/i", $libTri)) $typeTri='O';// CCI
elseif (preg_match("/^Chambre de métiers et de l'artisanat/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Chambre de métiers/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Greffe du tribunal de commerce/i", $libTri)) continue;//$typeTri='C';// TC
elseif (preg_match("/^Chambre d'agriculture/i", $libTri)) $typeTri='R';// AGR
elseif (preg_match("/^Chambre nationale de la batellerie artisanale/i", $libTri)) $typeTri='N';// BAR
elseif (preg_match("/^URSSAF/i", $libTri)) $typeTri='U';// URS
elseif (preg_match("/^Centre des impôts/i", $libTri)) $typeTri='Z';// CDI
else die("Libellé CFE '$libTri' inconnu !");
} else die('Erreur fatale');/*</b><br>
1 RUE JOSEPH BERNIER<br>
01000 BOURG EN BRESSE<br>
Tél : 04 74 32 13 00<br>
Fax : 04 74 21 42 63<br>
<a href="http://WWW.AIN.CCI.FR" target="_new">WWW.AIN.CCI.FR</a>
</font>*/
if (preg_match_all('/(.*)(?:<br>|<\/a>)/Uis', $results[2], $results)) {
//print_r($results);die();
$results2=$results[1];
$adresse1=trim($results2[0]);
$adresse2=trim($results2[1]);
if (substr($adresse2,0,5)*1>0) {
$adresse2='';
$i=1;
} else $i=2;
$cpVille=trim(@$results2[$i]);
$cp=substr($cpVille,0,5)*1;
$ville=trim(substr($cpVille,5));
$tel=str_replace(' ','',strtr(@$results2[$i+1], 'TélFax :.',' '))*1;
$fax=str_replace(' ','',strtr(@$results2[$i+2], 'TélFax :.',' '))*1;
if (preg_match('/<a href="(.*)"/Ui', trim(@$results2[$i+3]), $results2)) $web=strtolower($results2[1]);
if ($web=='http://') $web='';
01000 BOURG EN BRESSE<br>
Tél : 04 74 32 13 00<br>
Fax : 04 74 21 42 63<br>
<a href="http://WWW.AIN.CCI.FR" target="_new">WWW.AIN.CCI.FR</a>
</font>*/
if (preg_match_all('/(.*)(?:<br>|<\/a>)/Uis', $results[2], $results)) {
//print_r($results);die();
$results2=$results[1];
$adresse1=trim($results2[0]);
$adresse2=trim($results2[1]);
if (substr($adresse2,0,5)*1>0) {
$adresse2='';
$i=1;
} else $i=2;
$cpVille=trim(@$results2[$i]);
$cp=substr($cpVille,0,5)*1;
$ville=trim(substr($cpVille,5));
$tel=str_replace(' ','',strtr(@$results2[$i+1], 'TélFax :.',' '))*1;
$fax=str_replace(' ','',strtr(@$results2[$i+2], 'TélFax :.',' '))*1;
if (preg_match('/<a href="(.*)"/Ui', trim(@$results2[$i+3]), $results2)) $web=strtolower($results2[1]);
if ($web=='http://') $web='';
$id=md5($typeTri.$adresse1.$cp.$ville);
$str=$tabCom['codeInsee'].";1;$depLu;$depLib;$comLib;$id;$typeTri;$adresse1;$adresse2;$cp;$ville;$cpVille;$tel;$fax;$web";
$trib=$iDb->select('tribunaux', 'triId, triCode, triType, triNom, triCP, triTel, triFax', "triType='$typeTri' AND triCommentaire='$id'");
if (isset($trib[0]['triId'])) {
$id=$trib[0]['triId'];
$code=$trib[0]['triCode'];
$nom=$trib[0]['triNom'];
} else {
// Il faut insérer la fiche ID de la compétence
$tabAdr=$iInsee->structureVoie($adresse1);
$tabInsert=array('triType'=>$typeTri,
'triNom'=> $libTri,
'triCP'=>$cp,
'triWeb'=>$web,
'triAdrNum'=>$tabAdr['num'],
'triAdrIndRep'=>@$tabAdr['indRep'],
'triAdrTypeVoie'=>$tabAdr['typeVoie'],
'triAdrVoie'=>$tabAdr['libVoie'],
'triAdrComp'=>$adresse2,
'triVille'=>$ville,
'triTel'=>$tel,
'triFax'=>$fax,
'triCommentaire'=>$id,
);
$id=$iDb->insert('tribunaux', $tabInsert);
$code='';
$nom=$libTri;
print_r($tabInsert);
$sleep=true;
$id=md5($typeTri.$adresse1.$cp.$ville);
$str=$tabCom['codeInsee'].";1;$depLu;$depLib;$comLib;$id;$typeTri;$adresse1;$adresse2;$cp;$ville;$cpVille;$tel;$fax;$web";
$trib=$iDb->select('tribunaux', 'triId, triCode, triType, triNom, triCP, triTel, triFax', "triType='$typeTri' AND triCommentaire='$id'");
if (isset($trib[0]['triId'])) {
$id=$trib[0]['triId'];
$code=$trib[0]['triCode'];
$nom=$trib[0]['triNom'];
} else {
// Il faut insérer la fiche ID de la compétence
$tabAdr=$iInsee->structureVoie($adresse1);
$tabInsert=array('triType'=>$typeTri,
'triNom'=> $libTri,
'triCP'=>$cp,
'triWeb'=>$web,
'triAdrNum'=>$tabAdr['num'],
'triAdrIndRep'=>@$tabAdr['indRep'],
'triAdrTypeVoie'=>$tabAdr['typeVoie'],
'triAdrVoie'=>$tabAdr['libVoie'],
'triAdrComp'=>$adresse2,
'triVille'=>$ville,
'triTel'=>$tel,
'triFax'=>$fax,
'triCommentaire'=>$id,
);
$id=$iDb->insert('tribunaux', $tabInsert);
$code='';
$nom=$libTri;
print_r($tabInsert);
$sleep=true;
}
echo $str;
if ($id>0) {
$ret=$iDb->insert('tribunauxInsee', array('CodeInsee'=>$tabCom['codeInsee'],'triId'=>$id));
if (!$ret) {
echo ' Déjà en base.';
}
else {
echo ' ===> INSERE !!!';
$sleep=true;
}
echo "\n";
}
echo $str;
if ($id>0) {
$ret=$iDb->insert('tribunauxInsee', array('CodeInsee'=>$tabCom['codeInsee'],'triId'=>$id));
if (!$ret) {
echo ' Déjà en base.';
}
else {
echo ' ===> INSERE !!!';
$sleep=true;
}
echo "\n";
}
}
}
} else {
$str=$tabCom['codeInsee'].";0;;;".$tabCom['LibCom']."\n";
echo $str;
}
} else {
$str=$tabCom['codeInsee'].";0;;;".$tabCom['LibCom']."\n";
echo $str;
}
/*if ($sleep) randsleep(5, 15);//7,21);
else randsleep(2, 7);*/
// sleep(2);
if ($doAMF) {
$url="http://www.amf.asso.fr/annuaire/index.asp?refer=commune&dep_n_id=$dep&NUM_INSEE=$numInsee";
$page=getUrl($url, '', '', $referer, false);
$body=$page['body'];
//print_r($page);
$civ=$nom=$prenom=$tel=$fax=$web='';
$siren=0;
if (preg_match('/T&eacute;l&eacute;phone \: <strong>(.*)<\/strong>/Uis', $body, $matches)) {
//print_r($page);
$tel=$matches[1];
//die($tel);
}
if (preg_match('/Fax \: <strong>(.*)<\/strong>/Uis', $body, $matches))
$fax=$matches[1];
if (preg_match('/<p>Site web : <a href="(.*)" target="_blank">/Uis', $body, $matches))
$web=$matches[1];
//http://www.yeun-elez.com/brasparts.php" target="_blank"><span style="color:#"><strong>www.yeun-elez.com/brasparts.php</strong>
if (preg_match('/<div style="padding-bottom\:30px; padding-top\:10px;">Nom du Maire \: <strong>(.*)<\/strong><\/div>/Uis', $body, $matches)) {
$tabNom=explode('&nbsp;', $matches[1]);
$civ=$tabNom[0];
$prenom=$tabNom[1];
$nom=$tabNom[2];
if (isset($tabNom[3])) die();
//$depLib=$matches[2];
//$comLib=$matches[3];
}
$ret2=$iDb->select( 'etablissements_old',
'id, siren, nic, cj, raisonSociale, adr_ville, adr_dep, adr_com, dateInsert*1 AS dateInsert, dateUpdate*1 AS dateUpdate',
"source=2 AND siege=1 AND actif=1 AND adr_dep=$dep AND capital>=0 AND cj=7210 AND adr_com=$com AND siren BETWEEN 200000000 AND 299999999", false, MYSQL_ASSOC);
$siren=@$ret2[0]['siren'];
$nic=@$ret2[0]['nic'];
//$rsAct=$ret2[0]['raisonSociale'];
$tabUpdate=array( 'siren' => $siren,
'nic' => $nic,
'tel' => $tel,
'fax' => $fax,
'web' => $web,
'maireCiv' => $civ,
'maireNom' => $nom,
'mairePrenom'=> $prenom,
'dateMajAMF'=>date('Ymd'));
echo $tabCom['codeInsee'].";0;;;".$tabCom['LibCom'].";$siren;$nic;$tel;$fax;$web;$civ $nom $prenom".EOL;
if (!$iDb->update('villes', $tabUpdate, "codeInsee='$numInsee'", false))
die(mysql_error());
//M.&nbsp;Hugues&nbsp;FOURAGE</strong></div>
if (!$modeDebug) randsleep(7, 21);
}
}
function convertXLStoCSV($infile,$outfile)
{
$fileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($infile);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($outfile);
}
die();
?>

294
batch/getCncc.php Normal file
View File

@ -0,0 +1,294 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$tabZones=array(
'nom'=>'<th>Nom :(?:.*)<td>(.*)</td>',
'adresse'=>'<th>Adresse :(?:.*)<td>(.*)<br />',
'adresse2'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(.*)?<br />',
'cp'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(?:.*)?<br />(\d\d\d\d\d) ',
'ville'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(?:.*)?<br />(?:\d\d\d\d\d) (.*)</td>',
'tel'=>'<th>Tél. :(?:.*)<td>(.*)</td>',
'fax'=>'<th>Fax :(?:.*)<td>(.*)</td>',
'annee'=>'<th>Année d\'inscription :(?:.*)<td>(.*)</td>',
'mail'=>'Mail :(?:.*)<td>(?:.*);">(.*)</a></td>',
'web'=>'<th>Site web :(?:.*)<td>(.*)</td>',
'numCRCC'=>'<th>Compagnie régionale :(?:.*)page=fiche_crcc&amp;id=(.*)&amp;parente=',
'fj'=>'<th>Forme juridique :(?:.*)<td>(.*)</td>',
'pays'=>'<th>Agr&eacute;&eacute; par (?:.*)<td>(.*)</td>',
'reseau'=>'<th>R&eacute;seau :(?:.*)<td>(.*)</td>',
'adh[nom,idAdh]'=>'<td style="padding-left:20px;">(?:.*)<strong>(.*)</strong>(?:.*)page=fiche&amp;id=(.*)&amp;r=&amp;parente=',
);
$tabCRC=array( '_03'=>'Agen',
'_06'=>'Aix en Provence - Bastia',
'_09'=>'Amiens',
'_12'=>'Angers',
'_13'=>'Basse-Terre',
'_15'=>'Besançon',
'_18'=>'Bordeaux',
'_21'=>'Bourges',
'_24'=>'Caen',
'_27'=>'Chambéry',
'_30'=>'Colmar',
'_33'=>'Dijon',
'_36'=>'Douai',
'_95'=>'Fort-de-France',
'_39'=>'Grenoble',
'_42'=>'Limoges',
'_45'=>'Lyon',
'_48'=>'Metz',
'_51'=>'Montpellier',
'_54'=>'Nancy',
'_57'=>'Nîmes',
'_60'=>'Nouméa',
'_63'=>'Orléans',
'_66'=>'Paris',
'_67'=>'Paris: "CAC inscrits dans le cadre de l\'art. L822-1-3"',
'_69'=>'Pau',
'_72'=>'Poitiers',
'_75'=>'Reims',
'_78'=>'Rennes',
'_81'=>'Riom',
'_84'=>'Rouen',
'_07'=>'Saint-Denis de la Réunion',
'_87'=>'Toulouse',
'_90'=>'Versailles');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=$modeFiches=false;
$numCRCC=0;
$strCRCC='';
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des tribunaux compétents pour les codes insee des communes depuis le site du ministère de la justice.
/**@todo : Il faudrait penser à mettre à jour en automatique la liste des communes depuis le site de l'insee !!!**/
Options :
-d Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-f Mode fiche
-r:XX Numéro de la CRCC
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'r': $numCRCC=substr($argv[$i],3); break;
case 'f': $modeFiches=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$iDb=new WDB('sdv1');
$table='tabCNCC';
$urlBase="http://annuaire.cncc.fr/index.php?page=liste";
$urlFiche="http://annuaire.cncc.fr/index.php?page=fiche&id=";
if ($numCRCC>0 && !@array_key_exists("_$numCRCC", $tabCRC))
die("Numéro de CRCC inexistant : $numCRCC".EOL);
elseif (!$modeFiches)
$strCRCC=" de la CRCC '".$tabCRC["_$numCRCC"]."'";
elseif ($modeFiches) {
$ret=$iDb->select('tabCNCC', 'id, type, numCRCC, nom', "dateUpdate=0", false, MYSQL_ASSOC);
$nb=count($ret);
foreach($ret as $i=>$tabCAC) {
$id=$tabCAC['id'];
$url=$urlFiche.$id;
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
//print_r($page);
$tabHtml=@html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$id;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$id AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} elseif ($zone=='mail')
$tabInsert[$zone]=str_replace('[arrobase]','@',$data);
else
$tabInsert[$zone]=$data;
}
$iDb->update($table, $tabInsert, "id=$id", false);
echo date ('Y/m/d - H:i:s')." - $i/$nb : Mise à jour du CAC n°$id, ".$tabCAC['nom'].'...'.EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
}
$tabZones=array('type'=>'<td align="center"><img src="_img/picto_type_(PM|PP).gif"',
'id'=>'page=fiche&amp;id=(.*)&amp;r=',
'nom'=>'page=fiche&amp;id=(?:.*)&amp;r=(?:.*)">(.*)</a></td>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des CAC".$strCRCC.'...'.EOL;
$listeCAC=array();
$post=array('recherche'=>1,
'nature_fiche'=>'toutes',
'nom_societe'=>'',
'cp_ville'=>'',
'crcc'=>$numCRCC,
'x'=>0,
'y'=>10);
$page=getUrl($urlBase, '', $post, '', false);
$referer=$urlBase;
$body=$page['body'];
if (preg_match('/<span class="float-left">Nombre de résultats \:(.*)<\/span>/Uis', $body, $matches)) {
$nbCAC=trim($matches[1]);
$nbPages=ceil($nbCAC/15);
}
echo date ('Y/m/d - H:i:s')." - Liste de $nbCAC CAC sur $nbPages pages.".EOL;
echo date ('Y/m/d - H:i:s')." - Page ";
$cookie=$page['header']['Set-Cookie'];
$pageCour=1;
while(1) {
echo "$pageCour/$nbPages, ";
$tmpListe=explode('<tr class="ligne_', $body);
foreach ($tmpListe as $i=>$tmpCAC) {
if ($i==0) continue;
$tmpCAC=preg_replace('/<\/table>.*$/Uis', '', $tmpCAC);
//echo $i.EOL.$tmpCAC;
$tabHtml=@html2array($tmpCAC, $tabZones);
$listeCAC[]=$tabHtml;
}
$pageCour++;
if ($pageCour>$nbPages) break;
//if ($pageCour>100) break;
$url=$urlBase.'&p='.$pageCour;
$page=getUrl($url, $cookie, '', $referer, false);
$referer=$url;
$body=$page['body'];
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
foreach ($listeCAC as $i=>$tabCAC) {
echo $tabCAC['type']."\t".$tabCAC['id']."\t".$tabCAC['nom'].EOL;
//$tabCAC['nom']=utf8_decode($tabCAC['nom']);
if ($numCRCC>0) $tabCAC['numCRCC']=$numCRCC;
//else $tabCAC['numCRCC']=NULL;
$tabCAC['dateInsert']=date('YmdHis');
$iDb->insert($table, $tabCAC, false);
if (mysql_errno()<>0 && mysql_errno()<>1062) echo mysql_error().EOL;
}
die();
/*
$iDeb=$ret[0][0];
$nbVides=0;
echo date ('Y/m/d - H:i:s')." - Dernier id entreprise '$table' = $iDeb".EOL;
µ/
for($i=$iDeb;;$i++) {
//http://www.qualifelec.fr/recherche/fiche.php?idadh=8148&PHPSESSID=i1jgdorhdighojasq5otfpc1v67drkqi
$tabInsert=array('id'=>$i);
$ret=$iDb->select($table, 'raiSoc', "id=$i", false);
if (@$ret[0][0]<>'') continue;
$url=$urlBase.$i;
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
*/
?>

View File

@ -36,7 +36,7 @@ Options :
$iRncs=new MRncs();
$iGreffe=new MGreffes();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0;
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=$nbSiretRetraitement=0;
$modeDebug=false; // Mode débug
$questions=true; // Questions interactives autorisées
$loadInpiLocal=true; // Charger d'abord les derniers jugements INPI IMR locaux
@ -177,7 +177,7 @@ Options :
$tabInsert['inter'.$iInsert.'nom']=$tabMandSav[$typeMand]['nom'];
$iInsert++;
if ($iInsert==6) {
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, plus de 4 intervenants dans la procédure pour $siren".EOL.print_r($tabMandSav, true).EOL.
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, plus de 4 intervenants dans la procédure pour $siren".EOL.print_r($tabMandSav, true).EOL.
"Annonce en base :".EOL.
print_r($tabEnbase, true).EOL.
"Informations à mettre à jour :".EOL.
@ -203,6 +203,21 @@ print_r($tabInsert, true).EOL);
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
} else {
if (// Pour les Procol suivantes, on redemande le sirenage et surtout l'affectation du code Even !!!
$tabInsert['typeEven']*1==1505 || // Appel de jugement
$tabInsert['typeEven']*1==1506 || // Infirmation Jugement
$tabInsert['typeEven']*1==1507 || // Extrait d'arrêt de la cour d'appel
$tabInsert['typeEven']*1==1515 || // Arrêt divers
$tabInsert['typeEven']*1==1517 || // Rectification d'une erreur matérielle
$tabInsert['typeEven']*1==1520 || // Ordonnance
$tabInsert['typeEven']*1==1525 || // Appel du ministère public
$tabInsert['typeEven']*1==1999) { // Autre procol)
$tabInsert['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $i : Annonce INPI à retraiter manuellement ". $tabInsert['siren'] .' !'.EOL;
$nbSiretRetraitement++;
}
if (!$iDb->insert($table, array_merge($tabInsert,array('dateInsert'=>date('YmdHis'))))) {
echo date ('Y/m/d - H:i:s') ." - A l'insertion sur $table :".EOL;
print_r($tabInsert);
@ -223,7 +238,7 @@ print_r($tabInsert, true).EOL);
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Ajout du jugement $typeEven en date du $dateJugement pour $siren...".EOL;
}
}
$message.=" $nbAnnInsertJ ajouts et $nbAnnUpdateJ mises à jours sur $nbAnnonces annonces.\r\n\r\n".EOL;
$message.=" $nbAnnInsertJ ajouts et $nbAnnUpdateJ mises à jours sur $nbAnnonces annonces et $nbSiretRetraitement annonces à retraiter !\r\n\r\n".EOL;
} else
echo date('Y/m/d - H:i:s') ." - On ignore le chargement des annonce(s) jugements INPI IMR !".EOL;
@ -258,6 +273,8 @@ print_r($tabInsert, true).EOL);
'JEP' => 1502, // Extinction du passif
'JIG' => 1601, // Interdiction de gérer
'LB' => 1603, // Liquidation de biens
'OSA' => 1110, // Ouverture Sauvegarde Financière Accelérée
'PSA' => 1115, // Plan de sauvegarde financière accélérée
'PC' => 1411, // Plan de cession
'PCL' => 1411, // Plan de cession avec location-gérance
'PCM' => 1408, // Jugement lié au plan de cession
@ -406,10 +423,13 @@ print_r($tabInsert, true).EOL);
else
$dateJugeKbis=Wdate::dateT('Y-m-d', 'Ymd', $dateJugeKbis);
$codeJugementCSF = $tab[7];
$codeJugementCSF = trim($tab[7]);
$tabAnn['typeEven'] = getCodeEven($codeJugementCSF)*1;
if ($tabAnn['typeEven']==0) {
if ($tabAnn['typeEven']==0 && $codeJugementCSF<>'') {
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Champs CCJ_CSFR (Code Jugement CSF) inconnu '$codeJugementCSF' !".EOL;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', "Chargement CSF : Problème de code Jugement Inconnu '$codeJugementCSF'", "Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
//PROCéDURE DE SAUVEGARDE FINANCIèRE ACCéLéRéE
}
$source= trim($tab[11]);
@ -491,7 +511,7 @@ print_r($tabInsert, true).EOL);
$tabAnn['tribunal']=$tribunal.'*';
if ($source<>'P' && $source<>'I') { /* On insert le jugement uniquement si on l'a pas déjà en base ! */
echo date ('Y/m/d - H:i:s')." - Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren']." : '$a' - Problème de tribunal".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement CSF : Problème de tribunal', "Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Chargement CSF : Problème de tribunal', "Ligne $ligne/$nbLignes, source $source, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
}
}
}
@ -506,7 +526,7 @@ print_r($tabInsert, true).EOL);
if ($tabAnn['typeEven']<>1445) {
// L'entreprise n'est pas connue comme en Procol et le jugement à mois de 6 mois !
echo date ('Y/m/d - H:i:s')." - Ligne $ligne/$nbLignes, source JC, siren=".$tabAnn['siren']." : '$a'".EOL;
sendMail('production@scores-decisions.com', 'prod@scores-decisions.com', 'Chargement CSF : Procol inconnue', "Ligne $ligne/$nbLignes, source Kairos via CSF, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Chargement CSF : Procol inconnue', "Ligne $ligne/$nbLignes, source Kairos via CSF, siren=".$tabAnn['siren'].EOL."$a".EOL.print_r($tabAnn, true).EOL);
} else continue;
} else continue;
} else {
@ -566,7 +586,7 @@ Ordonnance de Monsieur le Pr
410946008 : Jugement kbis du 20100413. DATE TEXTE !
*/
echo "$siren : Jugement kbis du $dateJugeKbis. DATE TEXTE NON TROUVEE !!!".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, date texte non trouvée pour le siren $siren :
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Erreur : Chargement annonces Greffes', "Attention, date texte non trouvée pour le siren $siren :
$texte
Jugement kbis du ".$tabAnn['dateJugement'].EOL);
echo $texte.EOL;
@ -595,6 +615,28 @@ Ordonnance de Monsieur le Pr
echo $texte.EOL;
//if ($modeDebug) $line = trim(fgets(STDIN));
if (preg_match('/Arr.t.{1,15}Cour.{1,15}Appel.{1,75}INFIRM/is', $texte, $matches)) {
if (preg_match('INFIRM/is', $texte, $matches))
$tabAnn['typeEven']=1506; // Rétractation de jugement => Infirmation Jugement
else
$tabAnn['typeEven']=1507; // Arret de la cours d'appel
$tabAnn['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Annonce à retraiter manuellement ". $tabAnn['siren'] .' !'.EOL;
$nbSiretRetraitement++;
} elseif (// Pour les Procol suivantes, on redemande le sirenage et surtout l'affectation du code Even !!!
$tabAnn['typeEven']*1==1505 || // Appel de jugement
$tabAnn['typeEven']*1==1506 || // Infirmation Jugement
$tabAnn['typeEven']*1==1507 || // Extrait d'arrêt de la cour d'appel
$tabAnn['typeEven']*1==1515 || // Arrêt divers
$tabAnn['typeEven']*1==1517 || // Rectification d'une erreur matérielle
$tabAnn['typeEven']*1==1520 || // Ordonnance
$tabAnn['typeEven']*1==1525 || // Appel du ministère public
$tabAnn['typeEven']*1==1999) { // Autre procol)
$tabAnn['sirenValide']=0;
echo date ('Y/m/d - H:i:s')." - Ligne $ligne : Annonce à retraiter manuellement ". $tabAnn['siren'] .' !'.EOL;
$nbSiretRetraitement++;
}
if (preg_match('/CESSATION.{1,35}PAIEMENTS(.*)/is', $texte, $matches)) {
if (preg_match("/FIXE AU\s+$regExDate.{1,15}CESSATION.{1,35}PAIEMENTS/is", $texte, $matches2))
$tabAnn['dateCessationPaiement']=Wdate::dateT('d/m/Y', 'Ymd',trim(strtr($matches2[1], array('.'=>'/','-'=>'/'))));
@ -704,7 +746,7 @@ Ordonnance de Monsieur le Pr
}
//$tabAnn['dateInsert']=$dateInsert;
if (isset($tabAnn['tribunal']) && strlen($tabAnn['tribunal'])<3) $tabAnn['tribunal']='INCONU';
if (!isset($tabAnn['tribunal']) || strlen($tabAnn['tribunal'])<3) $tabAnn['tribunal']='INCONU';
if (isset($tabAnn['inter5id']) || isset($tabAnn['inter5type']) || isset($tabAnn['inter5nom'])) {
unset($tabAnn['inter5type']);
unset($tabAnn['inter5id']);
@ -794,9 +836,9 @@ Ordonnance de Monsieur le Pr
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
}
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siren/siret invalides !".EOL;
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siren/siret invalides et $nbSiretRetraitement annonces à retraiter !".EOL;
$message.="Le fichier n°$i, $nomFichier vient d'être chargé :\r\n";
$message.=" $nbInsert ajouts et $nbUpdate mises à jours sur $nbLignes lignes ($nbSiretInvalides siren/siret invalides).".EOL;
$message.=" $nbInsert ajouts et $nbUpdate mises à jours sur $nbLignes lignes ($nbSiretInvalides siren/siret invalides et $nbSiretRetraitement annonces à retraiter).".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des défaillances.".EOL;
}
@ -805,7 +847,7 @@ Ordonnance de Monsieur le Pr
echo date ('Y/m/d - H:i:s') . " - Aucun fichier CSF à traiter !".EOL;
}
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement annonces Greffes', $message);
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Chargement annonces Greffes', $message);
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement annonces Greffes', $message);
echo date ('Y/m/d - H:i:s') . " - Fin du traitement.".EOL;
die();

View File

@ -7,6 +7,450 @@ include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(FWK_PATH.'mail/sendMail.php');
/*
00150 Taux de change DGI
00151 Taux de change BCE
00152 Taux de change Douanes
00153 Taux de change Banque Mondiale
00159 Taux de change S&D Taux de change du site http://fxtop.com
*/
/** Taux de change DGI (Source 150)
**/
// Données relatives aux taux (Fichier txt - 272,0 Ko)
$urlListeTauxDGI='http://www.economie.gouv.fr/dgfip/fichiers_taux_chancellerie/tauxtxt';
// Données relatives aux monnaies (Fichier txt - 18,2 Ko)
$urlListeDevDGI='http://www.economie.gouv.fr/dgfip/fichiers_taux_chancellerie/monnaietxt';
// Données relatives aux pays (Fichier txt - 29,0 Ko)
//http://www.economie.gouv.fr/dgfip/fichiers_taux_chancellerie/paystxt
// Données relatives aux barèmes des frais de mission des personnels civils de l'État (Fichier txt - 64,5 Ko)
//http://www.economie.gouv.fr/dgfip/fichiers_taux_chancellerie/missiontxt
/** Taux de change BCE (Source 151)
**/
$urlListeTauxBCE='https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip';
// Histo http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip
/** Taux de change des Douanes (Source 152)
**/
$urlListeTauxDouanes='https://pro.douane.gouv.fr/download/downloadurl.asp?file=dropbo/drop.zip';
//$urlListeTauxDouanesIni='https://pro.douane.gouv.fr/debweb/cf.srv?etape=initTelechargementTauxTaux';
//$urlListeTauxDouanesBase='https://pro.douane.gouv.fr/debweb/';
/** Taux de change de la Banque Mondiale (Source 153)
**/
$urlListeTauxBqMonde='http://api.worldbank.org/v2/fr/indicator/pa.nus.fcrf?downloadformat=csv';
//http://fxtop.com/dev/submithisto.php?FORMAT=CSV&MA=0&YA=1&C1=EUR&C2=USD&A=1&DD1=01&MM1=01&YYYY1=2004&DD2=31&MM2=03&YYYY2=2014&LANG=fr
$modeDebug=$listeTaux=false;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère l'historique des cours des devises par rapport à l'euro sur différents serveurs.
options :
-v Mode verbose
-l Liste les derniers taux
";/*
Sans aucun paramètre, récupère le dernier cours pour chaque devise par rapport à l'euro.
Sinon:
-d:JJ/MM/AAAA Date de début de période (*)
-f:JJ/MM/AAAA Date de fin de période (*)
-n:X Intervalle MIN en secondes entre les requêtes (défaut=$tmin)
-i:X \" MAX \" \" \" \" \" (défaut=$tmax)
-p Récupération de la dernière liste des pays (par défaut, une fois par mois, le 1er du mois)
-h Récupération de l'historique complet
-c=DEV Récupération limité à la devise passée en paramètre
* : par défaut, le programme récupère le dernier cour pour le jour précédent !
";*/
//$tabCurrency=array();
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'l': $listeTaux=true; break;
case '-': die($strInfoProg); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
}/* else {
$tabCurrency[]=$argv[$i];
}*/
}
$iDb=new WDb('sdv1');
$iDb2=new WDb();
if ($listeTaux) {
$ret=$iDb2->select('tabDevises', 'devIso', "devNewIso='' ORDER BY devIso ASC", false, MYSQL_ASSOC);
$tabDevises=array();
foreach ($ret as $i=>$tmp) {
$tabDevises[$tmp['devIso']]=array();
}
$ret=$iDb->select('devise_cours', 'devise, source, `date`*1 AS dateJour, valeur, DATE(dateInsert) as jourInsert', '`date`>=20100101 GROUP BY devise, `date`, source', false, MYSQL_ASSOC);
foreach ($ret as $i=>$tmp) {
switch($tmp['source']*1) {
// Taux de change DGI
case 150: $tabDevises[$tmp['devise']][$tmp['dateJour']]['DGI']=$tmp['valeur']; break;
// Taux de change BCE
case 151: $tabDevises[$tmp['devise']][$tmp['dateJour']]['BCE']=$tmp['valeur']; break;
// Taux de change Douanes
case 152: $tabDevises[$tmp['devise']][$tmp['dateJour']]['DOU']=$tmp['valeur']; break;
// Taux de change BQM
case 153: $tabDevises[$tmp['devise']][$tmp['dateJour']]['BQM']=$tmp['valeur']; break;
default; continue; break;
}
}
//print_r($tabDevises);
$dateDeb='20040101';
$dateDeb='20100101';
$dateFin=date('Ymd');
echo "Devise\tDateCour\tTxDGI\tTxBCE\tTxDouane\tTxBanqueMondiale".EOL;
foreach ($tabDevises as $devise=>$tabDates) {
$dateCour=$dateDeb;
$txDGI_pre=$txBCE_pre=$txDOU_pre=$txBQM_pre='-';
while ($dateCour<$dateFin) {
echo "$devise\t$dateCour\t";
if (isset($tabDevises[$devise][$dateCour]['DGI'])) echo $tabDevises[$devise][$dateCour]['DGI']; else echo $txDGI_pre;
echo "\t";
if (isset($tabDevises[$devise][$dateCour]['BCE'])) echo $tabDevises[$devise][$dateCour]['BCE']; else echo $txBCE_pre;
echo "\t";
if (isset($tabDevises[$devise][$dateCour]['DOU'])) echo $tabDevises[$devise][$dateCour]['DOU']; else echo $txDOU_pre;
echo "\t";
if (isset($tabDevises[$devise][$dateCour]['BQM'])) echo $tabDevises[$devise][$dateCour]['BQM']; else echo $txBQM_pre;
echo EOL;
if (isset($tabDevises[$devise][$dateCour]['DGI'])) $txDGI_pre=$tabDevises[$devise][$dateCour]['DGI'];
if (isset($tabDevises[$devise][$dateCour]['BCE'])) $txBCE_pre=$tabDevises[$devise][$dateCour]['BCE'];
if (isset($tabDevises[$devise][$dateCour]['DOU'])) $txDOU_pre=$tabDevises[$devise][$dateCour]['DOU'];
if (isset($tabDevises[$devise][$dateCour]['BQM'])) $txBQM_pre=$tabDevises[$devise][$dateCour]['BQM'];
$dateCour=getNextDate($dateCour,1);
}
}
die();
}
$strMailInfo='Résultat des téléchargements et de la consolidation des différents taux de change en date du '.date('d/m/Y').' :'.EOL;
$nbInsertDGI=$nbInsertBCE=$nbInsertDouanes=$nbInsertBqMonde=0;
$nbUpdateDGI=$nbUpdateBCE=$nbUpdateDouanes=$nbUpdateBqMonde=0;
$dateDevDGI =$dateDevBCE =$dateDevDouanes =$dateDevBqMonde =0;
/** Chargement des Taux Historiques de la DGI
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour des devises de la DGI...'. EOL);
$page=getUrl($urlListeTauxDGI, '', '', '', false);
if ($page['code']==200) {
if ($modeDebug) echo (date('Y/m/d - H:i:s') .' - Lecture des devises de la DGI...'. EOL);
$tabTmp=explode(EOL, utf8_decode($page['body']));
foreach($tabTmp as $iL=>$tL) {
$tC=explode("\t", $tL);
if (count($tC)<3) break;
// print_r($tC);
$devIso=substr($tC[0],-3);
$dateDev=WDate::DateT('d/m/Y','Ymd',$tC[1]);
$taux=1.0*(substr($tC[2],0,3).'.'.substr($tC[2],3,10));
//echo "$iL:$devIso".EOL;
if ($dateDev>$dateDevDGI) $dateDevDGI=$dateDev;
$tabInsert=array( 'devise'=>$devIso,
'source'=>150,
'date' =>$dateDev,
'valeur'=>$taux,
);
//print_r($tabInsert);die();
if ($iDb->insert('devise_cours', array_merge($tabInsert, array('dateInsert'=>date('YmdHis'))), false))
$nbInsertDGI++;
elseif ($iDb->update('devise_cours', $tabInsert, "devise='$devIso' AND source=150 AND `date`='$dateDev'", false))
$nbUpdateDGI++;
//die(print_r($tabInsert, 1));
}
$dateDevDGI=WDate::DateT('Ymd','d/m/Y',$dateDevDGI);
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des devises de la DGI : $nbInsertDGI taux ajoutés et $nbUpdateDGI validations.". EOL);
$strMailInfo.=" - ajout de $nbInsertDGI taux pour les devises DGI ($nbUpdateDGI taux déjà en base, derniers taux du $dateDevDGI),".EOL;
} else
$strMailInfo.=" - ERREUR lors de la récupération du flux DGI !".EOL;
/** Chargement des Taux Historiques de la BCE
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour des devises de la BCE...'. EOL);
$page=getUrl($urlListeTauxBCE, '', '', '', false);
if ($page['code']==200) {
if (file_put_contents('/tmp/urlListeTauxBCE.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open('/tmp/urlListeTauxBCE.zip');
//echo "Nombre de fichiers : " . $zip->numFiles . "\n";
for ($i=0; $i<$zip->numFiles;$i++) {
//echo "index : $i\n";
$filename = $zip->getNameIndex($i);
//print_r($zip->statIndex($i));
if ($zip->extractTo('/tmp/', $filename)) {
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Lecture des devises de la BCE (Extraction réussie de $filename)...".EOL;
$tabTmp=file("/tmp/$filename");
foreach($tabTmp as $iL=>$tL) {
$tC=explode(',', $tL);
if ($iL==0) {//print_r($tC);
// Gestion de l'entête (Noms des Devises)
$tabNomDev=array();
foreach($tC as $iC=>$iDev) {
if ($iC==0) continue;
if (trim($iDev)<>'') $tabNomDev[$iC]=trim($iDev);
}
} else {
foreach($tC as $iC=>$iDev) {
if ($iC==0) {
$dateDev=$iDev;
continue;
}
if (isset($tabNomDev[$iC])) {
if ($iDev<>0) $taux=1/$iDev;
else $taux=null;
if (str_replace('-','',$dateDev)>$dateDevBCE) $dateDevBCE=str_replace('-','',$dateDev);
$tabInsert=array( 'devise'=>$tabNomDev[$iC],
'source'=>151,
'date' =>$dateDev,
'valeur'=>$taux,
);
if ($iDb->insert('devise_cours', array_merge($tabInsert, array('dateInsert'=>date('YmdHis'))), false))
$nbInsertBCE++;
elseif ($iDb->update('devise_cours', $tabInsert, "devise='$devIso' AND source=151 AND `date`='$dateDev'", false))
$nbUpdateBCE++;
}
}
}
}
}
}
}
$dateDevBCE=WDate::DateT('Ymd','d/m/Y',$dateDevBCE);
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des devises de la BCE : $nbInsertBCE taux ajoutés et $nbUpdateBCE validations.". EOL);
$strMailInfo.=" - ajout de $nbInsertBCE taux pour les devises BCE ($nbUpdateBCE taux déjà en base, derniers taux du $dateDevBCE),".EOL;
} else
$strMailInfo.=" - ERREUR lors de la récupération du flux BCE !".EOL;
/** Chargement des Taux Historiques de la Douane
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour des devises de la Douane...'. EOL);
$page=getUrl($urlListeTauxDouanes, '', '', '', false);
if ($page['code']==200) {
if (file_put_contents('/tmp/urlListeTauxDouanes.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open('/tmp/urlListeTauxDouanes.zip');
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour des devises de la Douane : ".$zip->numFiles." fichiers à traiter.".EOL;
for ($i=0; $i<$zip->numFiles;$i++) {
//echo "index : $i\n";
$filename = $zip->getNameIndex($i);
//print_r($zip->statIndex($i));
if ($zip->extractTo('/tmp/', $filename)) {
// if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour des devises de la Douane : Extraction réussie de $filename".EOL;
if ($filename=='DEVISE.xml') {
$strXml=file_get_contents("/tmp/$filename");
if (preg_match_all('/<ligne><CHAMP1>(.*)<\/CHAMP1><CHAMP2>(.*)<\/CHAMP2><CHAMP3>(.*)<\/CHAMP3><CHAMP4>(.*)<\/CHAMP4><CHAMP5>(.*)<\/CHAMP5><\/ligne>/Uis',$strXml, $matches)) {
foreach ($matches[1] as $iX=>$iDevise) {
$devIso=$matches[2][$iX];
$libDevise=utf8_decode($matches[3][$iX]);
$tabUpdate=array( 'devIdDouane' => $iDevise,
'devLibDouane' => $libDevise,
'devDateDebDouane' => @WDate::DateT('d/m/Y','Y-m-d',$matches[4][$iX]),
'devDateFinDouane' => @WDate::DateT('d/m/Y','Y-m-d',$matches[5][$iX]));
$ret=$iDb2->select('tabDevises', 'count(*) as nb', "devIso='$devIso'", false);
if (@$ret[0]['nb']*1==0) {
$iDb2->insert('tabDevises', array_merge($tabUpdate, array('devIso'=>$devIso, 'dateInsert'=>date('YmdHis'))), false);
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour des devises de la Douane : Ajout d'une devise ($devIso - $libDevise)".EOL;
$strMailInfo.=" - INFORMATION lors de la mise à jour des devises de la Douane, ajout d'une devise ($devIso - $libDevise),".EOL;
}
else
$iDb2->update('tabDevises', $tabUpdate, "devIso='$devIso'", false);
if (preg_match('/\s\((.*)\)/Ui', $libDevise, $matches2)) {
$tabUpdate=array( 'division' => $matches2[1]);
if (!$iDb2->update('tabDevises', $tabUpdate, "devIso='$devIso' AND division IS NULL", false))
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
}
}
}
} elseif($filename=='COURSDEVISE.xml') {
$strXml=file_get_contents("/tmp/$filename");
if (preg_match_all('/<ligne><CHAMP1>(.*)<\/CHAMP1><CHAMP2>(.*)<\/CHAMP2><CHAMP3>(.*)<\/CHAMP3><CHAMP4>(.*)<\/CHAMP4><\/ligne>/Uis',$strXml, $matches)) {
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Lecture des devises de la Douane (Extraction réussie de $filename)...".EOL;
$ret=$iDb2->select('tabDevises', 'devIdDouane, devIso', 'devIdDouane IS NOT NULL', false);
$tabDevDouanes=array();
foreach ($ret as $tmpRet)
$tabDevDouanes[$tmpRet['devIdDouane']]=$tmpRet['devIso'];
foreach ($matches[1] as $iX=>$iDevise) {
$devIso=$tabDevDouanes[$iDevise];
$dateDev=@WDate::DateT('d/m/Y','Ymd',$matches[3][$iX]);
if ($matches[2][$iX]*1==0) continue;
if ($dateDev>$dateDevDouanes) $dateDevDouanes=$dateDev;
$taux=1/$matches[2][$iX];
$tabInsert=array( 'devise'=>$devIso,
'source'=>152,
'date' =>$dateDev,
'valeur'=>$taux,
);
//print_r($tabInsert);die();
if ($iDb->insert('devise_cours', array_merge($tabInsert, array('dateInsert'=>date('YmdHis'))), false))
$nbInsertDouanes++;
elseif ($iDb->update('devise_cours', $tabInsert, "devise='$devIso' AND source=152 AND `date`='$dateDev'", false))
$nbUpdateDouanes++;
}
$dateDevDouanes=WDate::DateT('Ymd','d/m/Y',$dateDevDouanes);
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des devises de la Douane : $nbInsertDouanes taux et $nbUpdateDouanes validations.". EOL);
$strMailInfo.=" - ajout de $nbInsertDouanes taux pour les devises de la Douane ($nbUpdateDouanes taux déjà en base, derniers taux du $dateDevDouanes),".EOL;
} else
$strMailInfo.=" - ERREUR lors de la récupération du flux Douanes !".EOL;
}
}
}
}
} else
$strMailInfo.=" - ERREUR lors de la récupération du flux Douanes !".EOL;
/** Taux de change de la Banque Mondiale (Source 153)
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour des devises de la Banque Mondiale...'. EOL);
$page=getUrl($urlListeTauxBqMonde, '', '', '', false);
if ($page['code']==200) {
if (file_put_contents('/tmp/urlListeTauxBqMonde.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open('/tmp/urlListeTauxBqMonde.zip');
//echo "Nombre de fichiers : " . $zip->numFiles . "\n";
for ($i=0; $i<$zip->numFiles;$i++) {
//echo "index : $i\n";
$filename = $zip->getNameIndex($i);
//print_r($zip->statIndex($i));
if ($zip->extractTo('/tmp/', $filename)) {
//echo "Extraction réussie de $filename".EOL;
if ($filename=='pa.nus.fcrf_Indicator_fr_csv_v2.csv') {
// Chargement des liens Pays ==> Devise
$ret=$iDb2->select('tabPays', 'codPays3, devise', "codPays3 IS NOT NULL AND devise<>''", false);
$tabPaysDev=array();
foreach ($ret as $tmpRet)
$tabPaysDev[$tmpRet['codPays3']]=$tmpRet['devise'];
//print_r($tabPaysDev);die();
// Lecture des Tx Annuels de la Banque Mondiale
// echo "Extraction réussie de $filename".EOL;
// if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Mise à jour des devises de la : Chargemenet des taux...".EOL;
if ($modeDebug) echo date('Y/m/d - H:i:s') ." - Lecture des devises de la Banque Mondiale (Extraction réussie de $filename)...".EOL;
$tabTmp=file("/tmp/$filename");
$iL2=0;
$tabAnnees=$tabPays=$txUsdEur=array();
foreach($tabTmp as $iL=>$tL) {
$tC=explode('","', '",'.utf8_decode(trim($tL)).'"');
if (count($tC)<4) continue;
foreach($tC as $iC=>$tC) {
if ($iC==2 && $tC<>'Country Code') $pays=$tC;
elseif ($iC>4) {
if ($iL2==0) {
if ($tC<>'') $tabAnnees[$iC]=$tC;
}
elseif (isset($tabAnnees[$iC]) && isset($tabPaysDev[$pays]))
$tabPays[$tabPaysDev[$pays]][$tabAnnees[$iC]]=$tC;
elseif ($pays=='EMU')
@$txUsdEur[$tabAnnees[$iC]]=$tC;
}
}
$iL2++;
}
//print_r($txUsdEur);die();
// Conversion USD / EUR des devises
foreach ($tabPays as $devIso=>$tabAnnees) {
foreach ($tabAnnees as $annee=>$tauxUSD) {
if ($tauxUSD=='' || $txUsdEur[$annee]*1==0) continue;
// echo 'Tx USD.EUR='.$txUsdEur[$annee].EOL;
//if ($txUsdEur[$annee]=='')
//if ($devIso<>'USD') // ?
$taux=1/($tauxUSD/$txUsdEur[$annee]);
$dateDev=$annee.'1231';
if ($dateDev>$dateDevBqMonde) $dateDevBqMonde=$dateDev;
$tabInsert=array( 'devise'=>$devIso,
'source'=>153,
'date' =>$dateDev,
'valeur'=>$taux,
);
//print_r($tabInsert);//die();
if ($iDb->insert('devise_cours', array_merge($tabInsert, array('dateInsert'=>date('YmdHis'))), false))
$nbInsertBqMonde++;
elseif ($iDb->update('devise_cours', $tabInsert, "devise='$devIso' AND source=153 AND `date`='$dateDev'", false))
$nbUpdateBqMonde++;
}
}
}
}
}
}
$dateDevBqMonde=WDate::DateT('Ymd','d/m/Y',$dateDevBqMonde);
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des devises de la Banque Mondiale : $nbInsertBqMonde taux et $nbUpdateBqMonde validations.". EOL);
$strMailInfo.=" - ajout de $nbInsertBqMonde taux pour les devises Banque Mondiale ($nbUpdateBqMonde taux déjà en base, derniers taux du $dateDevBqMonde),".EOL;
} else
$strMailInfo.=" - ERREUR lors de la récupération du flux Banque Mondiale !".EOL;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement des devises', $strMailInfo);
die();
$page=getUrl($urlListeDevDGI, '', '', '', false);
if ($page['code']==200) {
$tabTmp=explode(EOL, utf8_decode($page['body']));
foreach($tabTmp as $iL=>$tL) {
$tC=explode("\t", $tL);
if (count($tC)<6) break;
print_r($tC);
$devIso=substr($tC[0],-3);
echo "$iL:$devIso".EOL;
$tabUpdate=array( 'devNomDGI' => $tC[1],
'devRemDGI' => $tC[3].$tC[4],
'devPrincipale' => $tC[5]);
if (!$iDb2->update('tabDevises', $tabUpdate, "devIso='$devIso'", true)) {
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
}
}
/* if (file_put_contents('/tmp/urlListeDevDGI.txt',$page['body'])) {
$zip = new ZipArchive();
$zip->open('/tmp/urlListeDevDGI.zip');
echo "Nombre de fichiers : " . $zip->numFiles . "\n";
for ($i=0; $i<$zip->numFiles;$i++) {
echo "index : $i\n";
$filename = $zip->getNameIndex($i);
//print_r($zip->statIndex($i));
if ($zip->extractTo('/tmp/', $filename)) {
echo "Extraction réussie de $filename".EOL;
$tabTmp=file("/tmp/$filename");
foreach($tabTmp as $iL=>$tL) {
$tC=explode("\t", $tL);
// print_r($tC);
$devIso=$tC[0];
echo "$iL:$devIso".EOL;
$tabUpdate=array( 'devNomDGI' => $tC[1],
'devDGI' => $tC[2],
'devRemDGI' => $tC[3].$tC[4],
'devActive' => $tC[5]);
if (!$iDb2->update('tabDevises', $tabUpdate, "devIso='$devIso'", true)) {
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
}
}
}
}
}*/
}
die();
print_r($page);
die();
$body=$page['body'];
$repImgDrapeaux='/home/data/logos/drapeaux/';
$tabJour=array(0=>'Dim', 1=>'Lun', 2=>'Mar', 3=>'Mer', 4=>'Jeu', 5=>'Ven', 6=>'Sam');
@ -79,8 +523,8 @@ else {
}
}
$iDb=new WDb('sdv1');
$iDb2=new WDb();
/** Une fois par mois, récupéreation de la liste des pays et de leur devises
**/
@ -162,7 +606,7 @@ if($pays || date('d')*1==1) {
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour de la liste des devise !'. EOL);
$crea=$maj=0;
$tabDevisesSite=array();
$url= 'http://fxtop.com/fr/historates.php3';
$url= 'http://fxtop.com/fr/historique-taux-change.php';
$referer= '';
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
@ -228,8 +672,8 @@ foreach ($tabDevises as $tabDevise) {
echo (date('Y/m/d - H:i:s') ." - Récupération du cour du $devise par rapport à l'euro pour le $DD1/$MM1/$YYYY1...". EOL);
else
echo (date('Y/m/d - H:i:s') ." - Récupération du cour du $devise par rapport à l'euro pour la période du $DD1/$MM1/$YYYY1 au $DD2/$MM2/$YYYY2...". EOL);
$url= "http://fxtop.com/fr/historates.php3?C1=$devise&C2=EUR&DD1=$DD1&MM1=$MM1&YYYY1=$YYYY1&DD2=$DD2&MM2=$MM2&YYYY2=$YYYY2&btnOK=Chercher";
$referer= 'http://fxtop.com/fr/historates.php3';
$url= "http://fxtop.com/fr/historique-taux-change.php?A=1&B=1&P=&I=1&C1=$devise&C2=EUR&DD1=$DD1&MM1=$MM1&YYYY1=$YYYY1&DD2=$DD2&MM2=$MM2&YYYY2=$YYYY2&btnOK=Chercher";
$referer= 'http://fxtop.com/fr/historique-taux-change.php';
randsleep($tmin, $tmax);
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
@ -267,5 +711,11 @@ foreach ($tabDevises as $tabDevise) {
else
echo (date('Y/m/d - H:i:s') ." - Devise $devise : $nbCours valeurs du $dateMin au $dateMax...". EOL);
}
echo date('Y/m/d - H:i:s') .' - FIN du script.'. EOL;
function getNextDate($dateCour, $nbJours=7) {
$nextDate=date('Ymd', mktime(0, 0, 0, WDate::dateT('Ymd','m', $dateCour), WDate::dateT('Ymd','d', $dateCour)+$nbJours, WDate::dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
?>

339
batch/getElus.php Normal file
View File

@ -0,0 +1,339 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=$modeDetail=$modeRCI=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des listes des sociétés de gestion agrées par l'AMF
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-d Remplir les fiches détaillées
-r=13S00000 Traiter ce numéro de RCI
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'd': $modeDetail=true; break;
case 'r': $modeRCI=trim(substr($argv[$i],3,strlen($argv[$i])-1)); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$iDb=new WDB('tmp');
$table='elus';
$urlBase='http://senat.fr/senateur/';
$referer='http://senat.fr/senateurs/sencir.html';
/*$urlRecherche='http://www.rci.gouv.mc/resultatRecherche';
$urlDetailS='http://www.rci.gouv.mc/ficheSGratuit.jsp?rc=';
$urlDetailPP='http://www.rci.gouv.mc/fichePPGratuit.jsp?rc=';
*/
$tabZonesS=array( 'nomPrenom'=>'<div class="title">\s+<h1 class="title-01">(.*)</h1>\s+<h2 class="subtitle-02">Sénateur (.*)(\(.*)\)</h2>',
//'departement'=>'<div class="title">\s+<h1 class="title-01">(?:.*)</h1>\s+<h2 class="subtitle-02">Sénateur (.*)(\(.*)\)</h2>',
//'region'=>'<div class="title">\s+<h1 class="title-01">(?:.*)</h1>\s+<h2 class="subtitle-02">Sénateur(?:.*)(\(.*)\)</h2>',
'partiCode'=>'<li class="last">Apparenté au\s+<a href="/senateurs/(.*).html"',
'partiLib'=>'<li class="last">Apparenté au\s+<a href="/senateurs/(?:.*).html" target="_self">(.*)</a></li>',
'dateElection'=>'<h2 class="title title-02">Election</h2>(?:.*)<li>\s+Elu le (.*)</li>',
'mail'=>'<a href="mailto:(.*)" class="link-color-01">',
'dateNaiss'=>'<dt>Etat Civil</dt>\s+<dd>Né le (.*)</dd>',
'profession'=>'<dt>Profession</dt>\s+<dd>(.*)</dd><dt>Place dans',
);
$tabZonesPP=array('codeRCI'=>'<b>Numéro RCI :</b>(.*)<br>',
'etat'=>'<b>Etat :</b>(.*)<br>',
'forme'=>'<b>Structure :</b>(.*)<br>',
'rs'=>'<b>Commerce exercé sous le nom :</b>(.*)<br>',
'formePP'=>'<h1 class="titre2">Etat-civil du déclarant</h1>(?:.*)<h1 class="titre3">(.*)</h1><br>',
'nom'=>'<b>Nom :</b>(.*)<br>',
'prenom'=>'<b>Prénom :</b>(.*)<br>',
'nomJF'=>'<b>Nom de jeune fille :</b>(.*)<br>',
'activite'=>'<b>Activité de l\'établissement :</b>(.*)<br>(?:\s+)</div>',
'etab'=>'</DIV>(?:.*)<h1 class="titre2">(.*)</h1>(?:.*)<div',
'etabType'=>'<h1 class="titre3">(.*)</h1><br>',
'etabEns'=>'<h1 class="titre4">(.*)</h1>',
'ensAdr1'=>'<td><b>Adresse :</b></td>(?:.*)<td>(.*)<br>(?:.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr2'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr3'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(.*)<br>(?:.*)</td>',
'ensAdr4'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(?:.*)<br>(.*)</td>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
//$letIni=file_get_contents (REP_TEMP.$table);
//$letIni='AVK';
$page=getUrl($referer, '', '', '', false);
$body=$page['body'];
/** Ventilation par départements **/
if (preg_match_all('/title\-05">(.*)<\/h2>(?:.*)<ul class="list\-type\-03">(.*)<\/ul>/Uis', $body, $matches)) {
//print_r($matches);
//die();
foreach($matches[1] as $i=>$libDept) {
$listeSenateursHtm=$matches[2][$i];
//echo "$i\t$libDept".EOL;
/** Ventillation par député du département **/
if (preg_match_all('/<li><A href="\/senateur\/(.*)\.html">(.*)<\/A><\/li>/Uim', $listeSenateursHtm, $matches2)) {
foreach($matches2[1] as $i=>$urlDetail) {
$url=$urlBase.$urlDetail.'.html';
$nomPrenom=$matches2[2][$i];
$tabTmp=explode('&nbsp;', $nomPrenom);
$nom=$tabTmp[0];
$prenom=$tabTmp[1];
echo "$i\t$libDept\t$nomPrenom\t$nom\t$prenom\t$url".EOL;
if (count($tabTmp[1])>2) die('Cas non prévu !!!'.EOL);
$page=getUrl($url, '', '', $referer, false);
$body=$page['body'];
$tabUpdate=html2array($body, $tabZonesS);
$tabUpdate['mandat']='senateur';
$tabUpdate['nom']=$nom;
$tabUpdate['prenom']=$prenom;
$tabUpdate['libDept']=$libDept;
$tabUpdate['url']=$url;
$tabUpdate['dateInsert']=date('YmdHis');
$tabUpdate['dateElection']=WDate::dateT('d M Y','Ymd', $tabUpdate['dateElection']);
$tabUpdate['dateNaiss']=WDate::dateT('d M Y','Ymd', $tabUpdate['dateNaiss']);
@$iDb->insert($table, $tabUpdate);
print_r($tabUpdate);
//die(mysql_error().EOL);
//die();
randsleep(7,21);
}
}
}
}
die();
if (!$modeDetail || $modeRCI) {
if (!$modeRCI) {
$tabSerialised=@file_get_contents(REP_TEMP.$table);
if (!$tabSerialised) {
if (!$nbLet)
//$letIni='AAA';
for ($l1=65; $l1<91; $l1++) {
//if ($letIni) $l1=ord(substr($letIni,0,1));
$L1=chr($l1);
for ($l2=65; $l2<91; $l2++) {
//if ($letIni) $l2=ord(substr($letIni,1,1));
$L2=chr($l2);
for ($l3=65; $l3<91; $l3++) {
//if ($letIni) $l3=ord(substr($letIni,2,1));
$letIni=false;
$L3=chr($l3);
$let=''.$L1.$L2.$L3;
$tabLet[]=$let;
}
}
}
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
} else
$tabLet=unserialize($tabSerialised);
$nbLet=count($tabLet);
echo date ('Y/m/d - H:i:s')." - Il reste $nbLet requêtes à traiter...".EOL;
} else {
$an=substr($modeRCI,0,2);
//if ($an*1<1 || $an>99999) die("Erreur : N° RCI '$modeRCI' incorrect !");
$lettre=strtoupper(substr($modeRCI,2,1));
if ($lettre<>'S' && $lettre<>'P') die("Erreur : N° RCI '$modeRCI' incorrect !");
$numRC=substr($modeRCI,3,5);
if ($numRC<1 || $numRC>99999) die("Erreur : N° RCI '$modeRCI' incorrect !");
$tabLet=array(0=>$modeRCI);
$nbLet=2;
}
$nbDone=0;
foreach ($tabLet as $j=>$let) {
$nbDone++;
if ($modeRCI) $url=$urlRecherche."Gratuit.jsp?mille=$an&fj=$lettre&rc=$numRC";
else $url=$urlRecherche.'RSEGratuit.jsp?rse='.$let;
$page=getUrl($url, '', '', '', false);
$body=$page['body'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RC Monaco '$let' ...";
if (preg_match_all('/<a href="\.\/fiche(PP|S)Gratuit\.jsp\?rc=(.*)">(.*)<\/a>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<\/tr>/Uis', $body, $matches)) {
foreach($matches[2] as $i=>$numRCI) {
$tabEntrep=array('codeRCI'=>trim($numRCI),
'PmPP'=>trim($matches[1][$i]),
'forme'=>trim($matches[4][$i]),
'rs'=>trim($matches[5][$i]),
'etabEns'=>trim($matches[6][$i]),
'etat'=>trim($matches[7][$i]),
'dateInsert'=>date('YmdHis'));
@$iDb->insert($table, $tabEntrep);
//print_r($tabEntrep);
}
$i++;
echo "$i entreprise(s)";
} else
echo "Pas d'entreprise";
echo EOL;
if (!$modeRCI) {
unset($tabLet[$j]);
file_put_contents(REP_TEMP.$table, serialize(array_unique($tabLet)));
if ($modeDebug) randsleep(1,2);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
}
}
if ($modeDetail || $modeRCI) {
if ($modeRCI)
$ret=$iDb->select($table, 'id,codeRCI,PmPP', "codeRCI='$modeRCI'", false);
else
$ret=$iDb->select($table, 'id,codeRCI,PmPP', "activite IS NULL OR etat='' /*AND PmPP='PP'*/ ORDER BY dateInsert DESC", false);
$nbLet=count($ret);
foreach ($ret as $tFiche) {
@$nbDone++;
$id=$tFiche['id'];
$rci=$tFiche['codeRCI'];
$ppS=$tFiche['PmPP'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RCI Monaco '$rci' ($id) - '";
//echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
if ($ppS=='S') $urlFiche=$urlDetailS.$rci;
elseif ($ppS=='PP') $urlFiche=$urlDetailPP.$rci;
else die("Type '$ppS' inconnu !".EOL);
$page=getUrl($urlFiche, '', '', $referer, false);
$body=$page['body'];
if ($ppS=='S') $tabZones=$tabZonesS;
elseif ($ppS=='PP') $tabZones=$tabZonesPP;
$tabUpdate=html2array($body, $tabZones);
if (strpos($tabUpdate['ensAdr4'],'Pour de plus amples informations')>0) $tabUpdate['ensAdr4']='';
$iDb->update($table, $tabUpdate, "id=$id");
echo $tabUpdate['rs']."'".EOL;
if (!$modeRCI) {
if ($modeDebug) randsleep(1,2);//randsleep(7,21);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
}
}
die();
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
die();
echo count($tabLet);
//serialize
print_r($tabLet);
die();
$tabHtml=html2array($body, $tabZones);
print_r($tabHtml);
die();
$ret=$iDb->select($table, 'agrementNum', '1', false);
foreach ($ret as $tAgrNum) {
$agrNum=$tAgrNum['agrementNum'];
echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
}
for($i=$iDeb;;$i++) {
$tabInsert=array('id'=>$i);
$url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15";
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
print_r($page);
die();
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
?>

263
batch/getFantoir.php Normal file
View File

@ -0,0 +1,263 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/dbf_class.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$urlBase='http://www.collectivites-locales.gouv.fr/files/files/gestion_locale_dgfip/national/FANTOIR.zip';
$db_name='insee';
$j=0;
$modeDebug=$finFichier=false;
$getFantoir=true;
$tabFichiers=array();
$separator=',';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [FICHIERS]
Récupération du RECME (Répertoire des Entreprises Contrôlées Majoritairement par l'État).
Options :
-d Récupération du dernier FANTOIR sur le site http://www.collectivites-locales.gouv.fr/
-t Récupération de tous les derniers RECME sur le site de l'INSEE
-v Mode bavard
";
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $getFantoir=false; break;
// case 't': $nbRecme=999; break;
case 'v': $modeDebug=true; break;
default: die('Option '. $argv[$i] . " inconnue !".EOL);
}
} else {
$tabFichiers[$j]=$argv[$i];
$j++;
}
}
if ($getFantoir) {
$filename=REP_TEMP.'FANTOIR.zip';
if (file_exists($filename) && date('Ymd',filemtime($filename))==date('Ymd'))
echo date ('Y/m/d - H:i:s')." - Le dernier fichier FANTOIR a déjà été récupéré.".EOL;
else {
echo date ('Y/m/d - H:i:s')." - Recherche du dernier FANTOIR...".EOL;
$tDeb=microtime(1);
$url=$urlBase;
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
$duree=round(microtime(1)-$tDeb,1);
$tailleMo=round(strlen($body)/(1024*1024),1);
echo date ('Y/m/d - H:i:s')." - Récupération du dernier FANTOIR en $duree s ($tailleMo Mo).".EOL;
file_put_contents($filename, $body);
}
$filename2=REP_TEMP.'FANTOIR.txt';
if (file_exists($filename2) && date('Ymd',filemtime($filename2))==date('Ymd') && filesize($filename2)>filesize($filename)*7) {
echo date ('Y/m/d - H:i:s')." - Le dernier fichier FANTOIR a déjà été décompressé avec succès.".EOL;
$tabFichiers[]=$filename2;
} else {
echo date ('Y/m/d - H:i:s')." - Décompression du fichier à traiter : ". basename($filename) .EOL;
$zip = zip_open($filename);
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
$tDeb = microtime(true);
$filenameGz=zip_entry_name($zip_entry);
$fp = fopen(REP_TEMP.$filenameGz, "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
$tailleGz=zip_entry_compressedsize($zip_entry);
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
} else
die(date ('Y/m/d - H:i:s') . " - ERREUR 1 : Décompression impossible de $filenameGz !".EOL);
$tailleGz=round($tailleGz/1024,1);
$tailleUnz=round(filesize(REP_TEMP.$filenameGz)/1024,1);
$tFin = microtime(true);
$tDur = round($tFin-$tDeb,1);
echo date ('Y/m/d - H:i:s')." - Fichier $filenameGz décompressé : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressés)".EOL;
$fichierZip=$filename;
$tabFichiers[]=REP_TEMP.$filenameGz;
}
zip_close($zip);
} else
die(date ('Y/m/d - H:i:s') . " - ERREUR 2 : Décompression impossible de ". basename($filename).' !'.EOL);
}
}
$iDb=new WDB($db_name);
for ($nbFichiers=0; isset($tabFichiers[$nbFichiers]); $nbFichiers++) {
$finFichier=false;
$nomFichier=$tabFichiers[$nbFichiers];
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $tabFichiers[$nbFichiers] ."...".EOL;
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$nbFichiers à traiter '".$nomFichier."'".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$dateInsert=date('YmdHis');
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 256));
}
echo date ('Y/m/d - H:i:s')." - Fichier n°$nbFichiers, $nomFichier : $nbLignes lignes à traiter...".EOL;
$nbLignes=$nbErreurs=0;
rewind($fp);
$tabDep=$tabCom=array();
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 256));
$codDepartement = trim(substr($a, 0, 2 )); // Code Département
$codDirection = trim(substr($a, 2, 1 )); // Code Direction dans le département
$codCommune = trim(substr($a, 3, 3 )); // Code Commune
$idVoieCommune = trim(substr($a, 6, 4 )); // Identifiant de la voie dans la commune
$cleRivoli = trim(substr($a, 10, 1 )); // Clé Rivoli (Numérique pour les voies, Axxx=Ens. immobiliers, Bxxx à Wxxx pour les lieux-dits, Xxxx=Pseudo Voies, Yxxx ou Zxxx=Voies provisoires à annuler)
$libDirOuCommune= trim(substr($a, 11, 30 )); // Libellé de la Direction/Commune
$voieNature = substr($a, 11, 4 ); // Code nature de la voie
$voieLib = substr($a, 15, 26 ); // Libellé de la voie
$typeCommune = substr($a, 42, 1 ); // Type Commune (N=Rurale, R=recensée)
$carRUR = substr($a, 45, 1 ); // Caractère RUR (3=pseudo-recensée)
$voieCar = substr($a, 48, 1 ); // Caractère de la voie (0=publique, 1=privée)
$popCar = substr($a, 49, 1 ); // Caractère de population (blanc si < 3000hab, * sinon)
$popReel = substr($a, 52, 7 ); // Population Réelle
$popApar = substr($a, 59, 7 ); // Population à part
$popFic = substr($a, 66, 7 ); // Population fictive
$annulationCar = substr($a, 73, 1 ); // Caractère d'annulation (Q=annulation avec transfert)
$annulationDate = substr($a, 74, 7 )*1; // Date d'annulation
if ($annulationDate==0) $annulationDateYmd=0;
else $annulationDateYmd = date('Ymd', mktime(0, 0, 0, 1, substr($a,77,3), substr($a,74,4)));// Date d'annulation
$creationArticle= substr($a, 81, 7 )*1; // Date de création de l'article
if ($creationArticle==0) $creationArticleYmd=0;
else $creationArticleYmd= date('Ymd', mktime(0, 0, 0, 1, substr($a,85,3), substr($a,81,4))); // Date de création de l'article
$codeMajic = substr($a, 103, 5 ); // Code identifiant MAJIC de la voie = FANTOIR = RIVOLI
$typeVoie = substr($a, 108, 1 ); // Type de voie (1=voie, 2=ensemble immobilier, 3=lieu-dit, 4=pseudo-voie, 5=voie provisoire)
$lieuDitCar = substr($a, 109, 1 ); // Caractère du lieu-dit (1=lieu-dit bâti, 0 sinon)
$derMotLibVoie = substr($a, 112, 8 ); // Dernier mot entièrement alphabétique du libellé de la voie
if ($codDepartement=='EN') {
// Entête du fichier
// ENEVERS 2014050120141220000000
$origineFichier=trim(substr($a, 1, 24 )); // L'origine du fichier : caractère et libellé du CSI (Nevers).
$dateTopad =trim(substr($a, 25, 8 )); // Références du fichier origine : (n° de version du fichier TOPO de la base TOPAD).
$dateFantoir =trim(substr($a, 33, 7 ))*1; // La date de production du fichier.
if ($dateFantoir>0)
$dateFantoirYmd=date('Ymd', mktime(0, 0, 0, 1, substr($dateFantoir,4,3), substr($dateFantoir,0,4)));
/* b. ARTICLE FIN (DERNIER ENREGISTREMENT)
IDENTIFIANT : 1,10 A 9999999999
IL ENREGISTRE LE NOMBRE D'ARTICLES ECRITS SUR LE FICHIER.*/
continue;
} elseif($codDepartement=='99') {
// Fin du fichier
//9999999999 7586976109370537549812000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
$finFichier=true;
continue;
}
elseif ($codDepartement=='') break;
elseif ($codCommune=='') {
$tabInsert=array( 'numDep' => $codDepartement,
'numDir' => $codDirection,
'libDep' => $libDirOuCommune,
'dateFantoirYmd'=> $dateFantoirYmd,
'dateTopad' => $dateTopad,
'origineFantoir'=> $origineFichier,
'dateInsert' => $dateInsert,
);
$db_table='fantoirDep';
echo "Ligne $nbLignes, DEP='$codDepartement' Dir='$codDirection:$cleRivoli:$libDirOuCommune'".EOL;
} elseif ($idVoieCommune=='') {
$tabInsert=array( 'numDep' => $codDepartement,
'numDir' => $codDirection,
'codCom' => $codCommune,
'codComInsee' => $codDepartement.''.$codCommune,
'libCom' => $libDirOuCommune,
'typeCom' => $typeCommune,
'carRUR' => $carRUR,
'popReel' => $popReel,
'popApar' => $popApar,
'popFic' => $popFic,
'popCar' => $popCar,
'annulCar' => $annulationCar,
'annulDat' => $annulationDate,
'annulDatYmd' => $annulationDateYmd,
'dateCre' => $creationArticle,
'dateCreYmd' => $creationArticleYmd,
'dateFantoirYmd'=> $dateFantoirYmd,
'dateInsert' => $dateInsert,
);
$db_table='fantoirCom';
echo "Ligne $nbLignes, Commune='$codDepartement $codCommune' : '$libDirOuCommune' ($typeCommune,$carRUR) Population=$popReel/$popApar/$popFic($popCar)".EOL;
} else {
$tabInsert=array( 'numDep' => $codDepartement,
'numDir' => $codDirection,
'codCom' => $codCommune,
'codComInsee' => $codDepartement.''.$codCommune,
'idVoieCom' => $idVoieCommune,
'cleRivoli' => $cleRivoli,
'voieNature' => $voieNature,
'voieLib' => $voieLib,
'voieCar' => $voieCar,
'typeCom' => $typeCommune,
'carRUR' => $carRUR,
'popReel' => $popReel,
'popApar' => $popApar,
'popFic' => $popFic,
'popCar' => $popCar,
'annulCar' => $annulationCar,
'annulDat' => $annulationDate,
'annulDatYmd' => $annulationDateYmd,
'dateCre' => $creationArticle,
'dateCreYmd' => $creationArticleYmd,
'codeMajic' => $codeMajic,
'typeVoie' => $typeVoie,
'lieuDitCar' => $lieuDitCar,
'derMotLibVoie' => $derMotLibVoie,
'dateFantoirYmd'=> $dateFantoirYmd,
'dateInsert' => $dateInsert,
);
$db_table='fantoirVoi';
//echo "Ligne $nbLignes, Commune='$codDepartement $codCommune' : '$libDirOuCommune' ($typeCommune,$carRUR) Population=$popReel/$popApar/$popFic($popCar)".EOL;
}
$ret=$iDb->insert($db_table, $tabInsert);
if ($ret!=1) {
unset($tabInsert['dateInsert']);
$strUpdate="numDep='$codDepartement' AND numDir=$codDirection";
switch($db_table) {
case 'fantoirCom': $strUpdate.=" AND codCom='$codCommune'"; break;
case 'fantoirVoi': $strUpdate.=" AND codCom='$codCommune' AND idVoieCom='$idVoieCommune'"; break;
}
$ret=$iDb->update($db_table, $tabInsert, $strUpdate);
if ($ret!=1) {
echo date ('Y/m/d - H:i:s') . " - ERREUR n°".mysql_errno()." à l'insertion de la ligne n°$nbLignes dans la table '$db_table' :".EOL;
print_r($tabInsert);
die(mysql_error());
}
}
}
fclose ($fp);
}
if ($finFichier)
die(date ('Y/m/d - H:i:s')." - Fin du traitement avec succès.".EOL);
echo date ('Y/m/d - H:i:s')." - Fin du traitement.".EOL;
?>

View File

@ -50,6 +50,7 @@ $tabDep=array( 'CORSE'=>'',
'HAUTES-PYRENEES'=>'65',
'HAUTS-DE-SEINE'=>'92',
'HERAULT'=>'34',
'ILE DE CLIPPERTON'=>'9M',
'ILLE-ET-VILAINE'=>'35',
'INDRE'=>'36',
'INDRE-ET-LOIRE'=>'37',
@ -76,10 +77,12 @@ $tabDep=array( 'CORSE'=>'',
'MOSELLE'=>'57',
'NIEVRE'=>'58',
'NORD'=>'59',
'NOUVELLE CALEDONIE'=>'9L',
'OISE'=>'60',
'ORNE'=>'61',
'PARIS'=>'75',
'PAS-DE-CALAIS'=>'62',
'POLYNESIE FRANCAISE'=>'9K',
'PUY-DE-DOME'=>'63',
'PYRENEES-ATLANTIQUES'=>'64',
'PYRENEES-ORIENTALES'=>'66',
@ -92,6 +95,7 @@ $tabDep=array( 'CORSE'=>'',
'SEINE-MARITIME'=>'76',
'SEINE-SAINT-DENIS'=>'93',
'SOMME'=>'80',
'T.A.A.F.'=>'9I',
'TARN'=>'81',
'TARN-ET-GARONNE'=>'82',
'TERRITOIRE DE BELFORT'=>'90',
@ -102,6 +106,7 @@ $tabDep=array( 'CORSE'=>'',
'VENDEE'=>'85',
'VIENNE'=>'86',
'VOSGES'=>'88',
'WALLIS ET FUTUNA'=>'9J',
'YONNE'=>'89',
'YVELINES'=>'78',
);
@ -140,7 +145,7 @@ function loadCsv($nomFichier, $db, $table='', $create=false, $reload=false) {
}
}
$sql=substr($sql,0,strlen($sql)-1); // Retrait de la dernière virgule
$sql.=") TYPE=MYISAM COMMENT='".basename($nomFichier)." du ".date('d/m/Y H:i', filemtime($nomFichier))." (".round(filesize($nomFichier)/1024)." ko)';";
$sql.=") ENGINE=MYISAM COMMENT='".basename($nomFichier)." du ".date('d/m/Y H:i', filemtime($nomFichier))." (".round(filesize($nomFichier)/1024)." ko)';";
if ($create) {
$sql0="DROP TABLE IF EXISTS `$table`;";
$iDb->query($sql0);
@ -195,6 +200,7 @@ function loadCsv($nomFichier, $db, $table='', $create=false, $reload=false) {
if ($tabTailles[$i]<256) {
$tabTmp=array_unique($tabTypes[$i]);
//print_r($tabTmp);
$strType="VARCHAR(".$tabTailles[$i].")";
if (count($tabTmp)==1) {
reset($tabTmp);
switch (current($tabTmp)) {
@ -215,7 +221,6 @@ function loadCsv($nomFichier, $db, $table='', $create=false, $reload=false) {
return $nbLignes;
}
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
@ -264,7 +269,7 @@ if ($tAll) $tRisks=$tXport=$tPollu=$tSante=true;
echo date('Y/m/d - H:i:s')." - Début du script...".EOL;
/**
** Base GASPAR
** Base FINESS
**/
if ($tSante) {
echo date('Y/m/d - H:i:s')." - Connexion à la base Finess.".EOL;
@ -348,7 +353,7 @@ if ($tSante) {
echo date('Y/m/d - H:i:s')." - ERREUR : Récupération du CSV impossible (pas de cookies) !".EOL;
else
$cookie=$matches[1][0].'; '.$matches[1][1];*/
randsleep(7,21);
if (!$modeDebug) randsleep(7,21);
$referer=$url;
$tdeb=microtime(1);
@ -368,24 +373,26 @@ if ($tSante) {
} else
echo date('Y/m/d - H:i:s')." - Récupération du CSV depuis le cache pour $dep $etab,$publ.".EOL;
$tabTmp=file("/tmp/$table.csv");
$nbLignesCache=count($tabTmp)-1;
if (@$nbResultats*1>0) { // le fichier doit contenir au moins une ligne d'entête
$tabTmp=file("/tmp/$table.csv");
$nbLignesCache=count($tabTmp)-1;
$tabTmp=$iDb->select($table, 'COUNT(*) AS nb', '1', false);
$nbLignesTable=$tabTmp[0]['nb'];
if (mysql_errno()>0 || $nbLignesTable<$nbLignesCache) {
$recreate=true;
$tdeb=microtime(1);
$nbInsert=@loadCsv("/tmp/$table.csv",'sante',$table,$recreate);
$duree=round(microtime(1)-$tdeb,1);
echo date('Y/m/d - H:i:s')." - Chargement du département $dep $etab : $nbInsert lignes en $duree s ($table)".EOL;
$tabTmp=$iDb->select($table, 'COUNT(*) AS nb', '1', false);
$nbLignesTable=$tabTmp[0]['nb'];
if (mysql_errno()>0 || $nbLignesTable<$nbLignesCache) {
$recreate=true;
$tdeb=microtime(1);
$nbInsert=@loadCsv("/tmp/$table.csv",'sante',$table,$recreate);
$duree=round(microtime(1)-$tdeb,1);
echo date('Y/m/d - H:i:s')." - Chargement du département $dep $etab : $nbInsert lignes en $duree s ($table)".EOL;
// die("/tmp/$table.csv".EOL);
} else
echo date('Y/m/d - H:i:s')." - Pas de rechargement du département $dep $etab : $nbLignesTable lignes déjà en base $table.".EOL;
} else
echo date('Y/m/d - H:i:s')." - Pas de rechargement du département $dep $etab : $nbLignesTable lignes déjà en base $table.".EOL;
$tabSelect[]="SELECT NULL AS id, `Numéro FINESS`, REPLACE(`SIRET`,' ','') AS SIRET, APE, `Raison sociale`, `Complément distribution`, `Adresse`, `Lieudit/BP`, `Code postal`, `Libelle routage`, `Tel`, `Fax`, `Date ouvert`, `Code categorie`, `Lib categorie`, `Code statut`, `Lib statut`, `Code tarif`, `Lib tarif`, `Code PSPH`, `Lib PSPH`, `FINESS juridique`, 0 AS recupTel FROM `$table`";
$tabTables[]=$table;
}
$tabSelect[]="SELECT NULL AS id, `Numéro FINESS`, REPLACE(`SIRET`,' ','') AS SIRET, APE, `Raison sociale`, `Complément distribution`, `Adresse`, `Lieudit/BP`, `Code postal`, `Libelle routage`, `Tel`, `Fax`, `Date ouvert`, `Code categorie`, `Lib categorie`, `Code statut`, `Lib statut`, `Code tarif`, `Lib tarif`, `Code PSPH`, `Lib PSPH`, `FINESS juridique`, 0 AS recupTel FROM `$table`";
$tabTables[]=$table;
}
}
}
}
// On supprime l'ancienne table
@ -397,7 +404,7 @@ if ($tSante) {
$sql="RENAME TABLE `finess` TO `finess_old`;";
if (!$iDb->query($sql)) $tabErreur[]='RENAME TABLE '.mysql_errno().':'.mysql_error();
// Création de la nouvelle table
$sql="CREATE TABLE `finess` (
$sql="CREATE TABLE `finessWeb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Numéro FINESS` char(9) NOT NULL,
`SIRET` varchar(14) DEFAULT NULL,
@ -428,7 +435,7 @@ if ($tSante) {
if (!$iDb->query($sql)) $tabErreur[]='CREATE TABLE '.mysql_errno().':'.mysql_error();
// Ecritures des lignes
$sql='INSERT INTO finess '.implode(EOL.' UNION ', $tabSelect).';';
$sql='INSERT INTO finessWeb '.implode(EOL.' UNION ', $tabSelect).';';
if (!$iDb->query($sql)) $tabErreur[]='INSERT INTO '.mysql_errno().':'.mysql_error().EOL.$sql;
if (count($tabErreur)==0) {
@ -532,27 +539,36 @@ if ($tRisks) {
**/
if ($tPollu) {
echo date('Y/m/d - H:i:s')." - Demande de récupération du fichier du Registre français des émissions polluantes.".EOL;
$fichierZipIREP=REP_TEMP.'Base_iREP.zip';
if (!file_exists($fichierZipIREP) || date('Ymd',filemtime($fichierZipIREP))<>date('Ymd')) {
$url='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/XML/dump.php';
$cookie=$post='';
$referer='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/';
$page=getUrl($url, $cookie, $post, $referer);
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Début de récupération du fichier des émissions polluantes...".EOL;
$url='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/XML/dump.php';
$cookie=$post='';
$referer='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/';
$page=getUrl($url, $cookie, $post, $referer);
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Début de récupération du fichier des émissions polluantes...".EOL;
$url='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/downloads/Base_iREP.zip';
$referer='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/generic.php?strType=download';
$page=getUrl($url, $cookie, $post, $referer);
$zip=preg_replace('/(^HTTP.*\r\nPK)/Us','PK', $page['body']);
$fp=fopen('/tmp/Base_iREP.zip', 'w');
fwrite($fp, $zip);
fclose($fp);
echo date('Y/m/d - H:i:s')." - Fichier du Registre français des émissions polluantes téléchargé.".EOL;
$url='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/downloads/Base_iREP.zip';
$referer='http://www.pollutionsindustrielles.ecologie.gouv.fr/IREP/generic.php?strType=download';
$page=getUrl($url, $cookie, $post, $referer);
$zip=preg_replace('/(^HTTP.*\r\nPK)/Us','PK', $page['body']);
$fp=fopen($fichierZipIREP, 'w');
fwrite($fp, $zip);
fclose($fp);
echo date('Y/m/d - H:i:s')." - Fichier du Registre français des émissions polluantes téléchargé.".EOL;
} else {
echo date('Y/m/d - H:i:s')." - Fichier du Registre français des émissions polluantes lu dans le cache.".EOL;
}
$zip = new ZipArchive;
if ($zip->open('/tmp/Base_iREP.zip') === TRUE) {
$tabFichiersConnus=array( 'activite_gidic_etablissements.csv'=> 'activite_gidic_etablissements',
if ($zip->open($fichierZipIREP) === TRUE) {
$tabFichiersConnus=array( 'emissions.csv'=> 'emissions',
'etablissements.csv'=> 'etablissements',
'Prelevements.csv'=> 'Prelevements',
'Prod_dechets_dangereux.csv'=> 'Prod_dechets_dangereux',
'Prod_dechets_non_dangereux.csv'=> 'Prod_dechets_non_dangereux',
'Trait_dechets_dangereux.csv'=> 'Trait_dechets_dangereux',
'Trait_dechets_non_dangereux.csv'=> 'Trait_dechets_non_dangereux',
/*
'activite_gidic_etablissements.csv'=> 'activite_gidic_etablissements',
'activite_ippc_etab.csv'=> 'activite_ippc_etab',
'caracteristique_du_dechet.csv'=> 'caracteristique_du_dechet',
'dechets.csv'=> 'dechets',
@ -562,10 +578,13 @@ if ($tPollu) {
'MCD_iREP.pdf'=> '',
'polluants_liste.csv'=> 'polluants_liste',
'prelevements_en_eau.csv'=> 'prelevements_en_eau',
'proddechetnondang.csv'=> 'proddechetnondang',
'projections.csv'=> 'projections',
'rejets_etablissements.csv'=> 'rejets_etablissements',
'traitedechetdang.csv'=> 'traitedechetdang',
'traitedechetnondang.csv'=> 'traitedechetnondang',);
'traitedechetnondang.csv'=> 'traitedechetnondang',
*/
);
$iDb=new WDB('pollutions');
$tabFichiers=$tabSize=$tabTime=array();
@ -583,7 +602,10 @@ if ($tPollu) {
$zip->extractTo('/tmp/');
$zip->close();
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Décompression des $i fichiers du Registre français des émissions polluantes OK.".EOL;
if (count($tabFichiersConnus)<>$i) {
echo date('Y/m/d - H:i:s')." - ERREUR - Nombre de fichiers décompressés : $i fichiers dans $fichierZipIREP contre ".$tabFichiersConnus.' attendus !'.EOL;
die();
}
foreach ($tabFichiers as $idxF=>$nomFichier) {
if (in_array(basename(str_replace('.csv', '', $nomFichier)),$tabFichiersConnus)) {
$table=str_replace('.csv', '', $tabFichiersConnus[basename($nomFichier)]);
@ -606,7 +628,7 @@ if ($tPollu) {
$champ[$i]=$data[$i];
}
$sql=substr($sql,0,strlen($sql)-1); // Retrait de la dernière virgule
$sql.=") TYPE = MYISAM COMMENT = '".basename($nomFichier)." du ".date('d/m/Y H:i', $tabTime[$idxF])." (".round($tabSize[$idxF]/1024)." ko)'";
$sql.=") ENGINE=MYISAM COMMENT = '".basename($nomFichier)." du ".date('d/m/Y H:i', $tabTime[$idxF])." (".round($tabSize[$idxF]/1024)." ko)'";
if ($iDb->query($sql))
echo date ('Y/m/d - H:i:s')." - Création de la table $table OK...".EOL;
else {
@ -618,13 +640,16 @@ if ($tPollu) {
}
$tabDataToInsert=array();
while (count($data)<$nbColonnes) {
// En cat de saut de ligne mal géré par la source
$data = array_merge($data,fgetcsv($fp, 5000, ';'));
}
for($i=0; $i<$nbColonnes; $i++) {
$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if (strlen($data[$i])>$tabTailles[$i])
$tabTailles[$i]=strlen($data[$i]);
if (gettype($data[$i])=='string') {
if (@gettype($data[$i])=='string') {
if (is_numeric($data[$i])) {
if (round($data[$i]*1)<>($data[$i]*1))
$tabTypes[$i][]='double';
@ -632,12 +657,14 @@ if ($tPollu) {
$tabTypes[$i][]='integer';
} else
$tabTypes[$i][]='string';
} else $tabTypes[$i][]=gettype($data[$i]);
} else $tabTypes[$i][]=@gettype($data[$i]);
}
$ret=$iDb->insert($table, $tabDataToInsert);
if ($ret!=1) {
echo date ('Y/m/d - H:i:s') . " - ERREUR SQL sur la table '$table', SQL no ".mysql_errno().' : '.mysql_error().EOL;
echo date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion de la ligne n°$i : ". implode(';', $data) ." !".EOL;
print_r($tabDataToInsert);
flush();
}
unset($tabDataToInsert);
@ -648,6 +675,7 @@ if ($tPollu) {
if ($tabTailles[$i]<256) {
$tabTmp=array_unique($tabTypes[$i]);
print_r($tabTmp);
$strType="VARCHAR(".$tabTailles[$i].")";
if (count($tabTmp)==1) {
reset($tabTmp);
switch (current($tabTmp)) {
@ -745,9 +773,15 @@ if ($tXport) {
);
randsleep(7,21);
$page=getUrl($url, $cookie, $post, $referer);
$zip=preg_replace('/(^HTTP.*\r\nPK)/Us','PK', $page['body']);
if (preg_match('/^HTTP.*filename=(.*)\r\n/Us', $page['body'], $matches)) {
$nomFichier=$matches[1];
//$zip=/*preg_replace('/(^HTTP.*\r\nPK)/Us','PK', */$page['body'];//);
//print_r($page);
//die();
if ($page['code']==200 && @trim($page['header']['Content-Type'])=='application/zip') {
$zip=/*preg_replace('/(^HTTP.*\r\nPK)/Us','PK', */$page['body'];//);
$zipSizeSrv=@$page['header']['Content-Length'];
$nomFichier=@str_replace('filename=','',@trim($page['header']['Content-Disposition']));
//preg_match('/\[Content-Disposition\] => filename=\r\n/Us', $page['body'], $matches)) {
//$nomFichier=$matches[1];
$fp=fopen('/tmp/importExport.zip', 'w');
fwrite($fp, $zip);
fclose($fp);
@ -766,7 +800,8 @@ if ($tXport) {
'annee'=>$annee,
'siren'=>$data[0],
'raisonSociale'=>$data[1],
'naf'=>$data[2],
'naf'=>trim(substr($data[2],0,5)),
'nafLib'=>trim(substr($data[2],5,strlen($data[2])-5)),
'categorie'=>$data[3],
'adresse'=>$data[4],
'rangNational'=>$data[5],

View File

@ -11,7 +11,7 @@ include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMFacto.php');
define('GE_FTP_DIR', '/mnt/sftp/gefacto/send/');
define('GE_FTP_DIR', '/mnt/data/clients/gefacto/send/');
define('GE_BACKUP_DIR', '/home/data/gefacto/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
@ -35,7 +35,7 @@ Options :
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0;
$modeDebug=false; // Mode débug
$tabFichier=$tabFichLigneCmd=array();
$tabFichier=$tabFichLigneCmd=$tabFichierFin=array();
$message=''; // Initialisation du mail d'exécution du traitement
$argv=$_SERVER['argv'];
@ -54,27 +54,38 @@ Options :
if (count($tabFichLigneCmd)==0) {
$dh = opendir(GE_FTP_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, 0, 5)=='GESCD')
$tabFichier[] = $filename;
if ($filename<>'.' && $filename<>'..' && substr($filename, 0, 5)=='GESCD') {
if (substr($filename, -4)=='.fin')
$tabFichierFin[] = substr($filename, 0, 17);
else
$tabFichier[] = $filename;
}
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)>0 || count($tabFichLigneCmd)>0) {
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des infos GE".EOL;
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des Informations de Paiement".EOL;
for ($i=0; isset($tabFichier[$i]); $i++)
{
$nomFichier=$tabFichier[$i];
$dateFichier=date('YmdHis',filemtime(GE_FTP_DIR.$nomFichier));
/*if (!in_array(substr($nomFichier, 0, 17), $tabFichierFin)) {
$message.=date ('Y/m/d - H:i:s')." - Erreur : Impossible de charger le fichier n°$i à traiter (".$nomFichier.") car le transfert n'est pas fini !".EOL;
echo $message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'ERREUR lors du chargement des Informations de Paiement', $message);
die();
}*/
$fp=fopen(GE_FTP_DIR.$nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter (".$nomFichier.")".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$message.=date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter (".$nomFichier.")".EOL;
echo $message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'ERREUR lors du chargement des Informations de Paiement', $message);
die();
}
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
@ -97,8 +108,8 @@ Options :
$table='ge_cs2';
$iDb->update($table, array('indTrt'=>0),'1');
//UPDATE ge_cs2 SET =0
}elseif ($taille==118){ $iFacto->setTypeFic(0); $table='ge_acheteurs'; }
elseif ($taille==72) { $iFacto->setTypeFic(2); $table='ge_paiements'; }
}elseif ($taille==119){ $iFacto->setTypeFic(0); $table='ge_acheteurs'; } // GESCDACH_20131204164846
elseif ($taille==73) { $iFacto->setTypeFic(2); $table='ge_paiements'; }
else {
echo date ('Y/m/d - H:i:s') . " - Erreur : Première ligne de taille $taille non gérée \"$ligne\" !".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
@ -167,6 +178,7 @@ Options :
$iDb->update($table, array('dateSuppr'=>$dateInsert), 'indTrt=0');
if (bzip2(GE_FTP_DIR.$nomFichier, GE_BACKUP_DIR.$nomFichier.'-'.date('Ym'))) {
$iDb->update('flux_filein', array('dateExecute'=>date('YmdHis')), "name='GEFACTO' AND depotFile='$nomFichier'", false);
unlink(GE_FTP_DIR.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
@ -175,14 +187,14 @@ Options :
$message.="Le fichier n°$i, $nomFichier vient d'être chargé :\r\n";
$message.=" $nbInsert ajouts et $nbUpdate mises à jours sur $nbLignes lignes ($nbSiretInvalides siren/siret invalides).".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des défaillances.".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des Informations de Paiement.".EOL;
}
else {
$message.="Aucun fichier GE à traiter !\r\n";
echo date ('Y/m/d - H:i:s') . " - Aucun fichier GE à traiter !".EOL;
$message.="Aucun fichier Informations de Paiement à traiter !\r\n";
echo date ('Y/m/d - H:i:s') . " - Aucun fichier Informations de Paiement à traiter !".EOL;
}
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement des infos GE', $message);
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement des Informations de Paiement', $message);
die();
?>

View File

@ -1,6 +1,44 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/*
ALTER TABLE `tourisme2`
CHANGE `DATE DE CLASSEMENT` `dateClasse` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `DATE DE PUBLICATION DE L'ETABLISSEMENT` `datePublication` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `TYPOLOGIE ÉTABLISSEMENT` `typeClasse` VARCHAR(30) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `CLASSEMENT` `nbEtoiles` TINYINT(1) NOT NULL,
CHANGE `CATÉGORIE` `categorie` VARCHAR(80) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `MENTION` `mention` VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `NOM COMMERCIAL` `nom` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `ADRESSE` `adresse` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `CODE POSTAL` `adrCp` MEDIUMINT( 5 ) NOT NULL,
CHANGE `COMMUNE` `adrVille` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `TÉLÉPHONE` `tel` VARCHAR( 21 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `COURRIEL` `mail` VARCHAR( 80 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `SITE INTERNET` `web` VARCHAR( 200 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `TYPE DE SÉJOUR` `typeSejour` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL;
CHANGE `CAPACITÉ D'ACCUEIL (PERSONNES)` `capacite` VARCHAR(4) NULL DEFAULT NULL,
CHANGE `NOMBRE DE CHAMBRES` `nbChambres` VARCHAR(4) NULL DEFAULT NULL,
CHANGE `NOMBRE D'EMPLACEMENTS` `nbEmplacements` VARCHAR(4) NULL DEFAULT NULL,
CHANGE `NOMBRE D'UNITES D'HABITATION` `nbHabitations` VARCHAR(4) NULL DEFAULT NULL,
CHANGE `NOMBRE DE LOGEMENTS` `nbLogements` VARCHAR(4) NULL DEFAULT NULL;
UPDATE tourisme2 SET categorie='' WHERE categorie='-';
UPDATE tourisme2 SET mention='' WHERE mention='-';
UPDATE tourisme2 SET typeSejour='' WHERE typeSejour='-';
UPDATE tourisme2 SET capacite=NULL WHERE capacite='-';
UPDATE tourisme2 SET nbChambres=NULL WHERE nbChambres='-';
UPDATE tourisme2 SET nbEmplacements=NULL WHERE nbEmplacements='-';
UPDATE tourisme2 SET nbHabitations=NULL WHERE nbHabitations='-';
UPDATE tourisme2 SET nbLogements=NULL WHERE nbLogements='-';
UPDATE tourisme2 SET dateClasse=CONCAT(SUBSTRING(dateClasse,7,4),'-',SUBSTRING(dateClasse,4,2),'-',SUBSTRING(dateClasse,1,2));
UPDATE tourisme2 SET datePublication=CONCAT(SUBSTRING(datePublication,7,4),'-',SUBSTRING(datePublication,4,2),'-',SUBSTRING(datePublication,1,2));
INSERT IGNORE INTO tourisme SELECT NULL AS id, nom, UCASE(adresse) AS adresse, adrCp, adrVille, NULL AS actif, 0 AS siren, 0 AS sirenValide, 0 AS idSirenage,
0 AS nic, 0 AS nicValide, '' AS nafEn, '' AS nafEt, nbEtoiles, typeClasse, categorie, mention, dateClasse, tel, NULL AS fax, mail, web, typeSejour, '' AS typeChambres, capacite, nbChambres, nbEmplacements, nbHabitations, nbLogements, NOW( ) AS dateInsert, 0 AS recupTel, 0 AS dateUpdate
FROM `tourisme2`;
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');

View File

@ -5,202 +5,268 @@
** ALTER TABLE `articles` CHANGE `source` `source` ENUM( 'A', 'B', 'D', 'E', 'H' ) NOT NULL DEFAULT 'A';
**/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iDb=new WDB('presse');
$nbHugin=$nbActus=$nbDiRel=$nbEchos=$nbBusin=0;
$doHugin=$doActus=$doEchos=$doBusin=$doAll=false;
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Hugin...".EOL;
$ret=ftp_mget(HUGIN_FTP_URL, HUGIN_FTP_USER, HUGIN_FTP_PASS, '*.xml', HUGIN_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux Hugin en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Hugin en FTP ($ret fichiers récupérés).".EOL;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Intégration des derniers communiqués boursier.
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux ActusNews...".EOL;
$ret=ftp_mget(ACTUSNEWS_FTP_URL, ACTUSNEWS_FTP_USER, ACTUSNEWS_FTP_PASS, '*.xml', ACTUSNEWS_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux ActusNews en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux ActusNews en FTP ($ret fichiers récupérés).".EOL;
Sans aucun paramètre, récupère les derniers communiqués.
Sinon:
-v Mode bavard
-h Traite uniquement le diffuseur Hugin
-a idem ActuNews
-e idem Les Echos
-b idem BusinessWire
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $doAll=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'h': $doHugin=true; break;
case 'a': $doActus=true; break;
case 'e': $doEchos=true; break;
case 'b': $doBusin=true; break;
case 'v': $modeDebug=true; break;
case '-': die($strInfoProg); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
}
}
}
if (!$doHugin && !$doActus && !$doEchos && !$doBusin) $doAll=true;
$strMessage=date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux relatifs aux informations règlementées...".EOL;
/*
if ($doHugin || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Hugin...".EOL;
$ret=ftp_mget(HUGIN_FTP_URL, HUGIN_FTP_USER, HUGIN_FTP_PASS, '*.xml', HUGIN_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux Hugin en FTP incorrecte !".EOL);
else {
$message=date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Hugin en FTP ($ret fichiers récupérés).".EOL;
echo $message;
$strMessage.=$message;
}
}
*/
if ($doActus || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux ActusNews...".EOL;
$ret=ftp_mget(ACTUSNEWS_FTP_URL, ACTUSNEWS_FTP_USER, ACTUSNEWS_FTP_PASS, '*.xml', ACTUSNEWS_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux ActusNews en FTP incorrecte !".EOL);
else {
$message=date ('Y/m/d - H:i:s')." - FIN de la récupération des flux ActusNews en FTP ($ret fichiers récupérés).".EOL;
echo $message;
$strMessage.=$message;
}
}
/*
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Di Release...".EOL;
$ret=ftp_mget(DIRELEASE_FTP_URL, DIRELEASE_FTP_USER, DIRELEASE_FTP_PASS, '*.xml', DIRELEASE_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux Di Release en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Di Release en FTP ($ret fichiers récupérés).".EOL;
else {
$message=date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Di Release en FTP ($ret fichiers récupérés).".EOL;
echo $message;
$strMessage.=$message;
}*/
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux BusinessWire...".EOL;
$dh = opendir(BUSINESSWIRE_LOCAL_DIR_INCOMING);
$ret=0;
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
if (!file_exists(BUSINESSWIRE_LOCAL_DIR . $filename) && filesize(BUSINESSWIRE_LOCAL_DIR_INCOMING . $filename)>0) {
copy(BUSINESSWIRE_LOCAL_DIR_INCOMING . $filename,BUSINESSWIRE_LOCAL_DIR . $filename);
$ret++;
if ($doBusin || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux BusinessWire...".EOL;
$dh = opendir(BUSINESSWIRE_LOCAL_DIR_INCOMING);
$ret=0;
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
if (!file_exists(BUSINESSWIRE_LOCAL_DIR . $filename) && filesize(BUSINESSWIRE_LOCAL_DIR_INCOMING . $filename)>0) {
copy(BUSINESSWIRE_LOCAL_DIR_INCOMING . $filename,BUSINESSWIRE_LOCAL_DIR . $filename);
$ret++;
}
}
$message=date ('Y/m/d - H:i:s')." - FIN de la récupération des flux BusinessWire ($ret fichiers copiés).".EOL;
echo $message;
$strMessage.=$message;
}
if ($doEchos || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Les Echos...".EOL;
$ret=ftp_mget(LESECHOS_FTP_URL, LESECHOS_FTP_USER, LESECHOS_FTP_PASS, 'syndication/*.xml', LESECHOS_LOCAL_DIR, true);
if ($ret===false)
echo (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux Les Echos en FTP incorrecte !".EOL);
else {
$message=date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Les Echos en FTP ($ret fichiers récupérés).".EOL;
echo $message;
$strMessage.=$message;
}
}
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux BusinessWire ($ret fichiers copiés).".EOL;
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Les Echos...".EOL;
$ret=ftp_mget(LESECHOS_FTP_URL, LESECHOS_FTP_USER, LESECHOS_FTP_PASS, 'syndication/*.xml', LESECHOS_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux Les Echos en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux Les Echos en FTP ($ret fichiers récupérés).".EOL;
/**
** INTEGRATION DES COMMUNIQUES "HUGIN"
**/
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux Hugin...".EOL;
$tabFichier=array();
$dh = opendir(HUGIN_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(HUGIN_LOCAL_DIR.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
$dom = @new DomDocument2();
@$dom->load(HUGIN_LOCAL_DIR.$nomFichier);
$pressReleaseId=@$dom->getValueFromTag('PRESS_RELEASE_ID');
$tabInsert=array( 'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('COMPANY_NAME'),
'companyIsin'=>$dom->getValueFromTag('COMPANY_ISIN'),
'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
'companyLogoUrl'=>$dom->getValueFromTag('URL1'),
'companyWebSite'=>$dom->getValueFromTag('URL2'),
'companyProfile'=>$dom->getValueFromTag('URL3'),
'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>$dom->getValueFromTag('PRESS_RELEASE_DATE_TIME'),
'pressReleaseTitle'=>$dom->getValueFromTag('PRESS_RELEASE_TITLE'),
'pressReleaseText'=>$dom->getValueFromTag('TEXT_FORMAT'),
'pressReleaseHtml'=>$dom->getValueFromTag('HTML_FORMAT'),
'pressReleaseAttachments'=>$dom->getValueFromTag('ATTACHMENTS_URL1'),
'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('INDEX_THEME'),
'indexSector'=>$dom->getValueFromTag('INDEX_SECTOR'),
'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$dom->getValueFromTag('INDEX_LANGUAGE'),
'indexMarketPlace'=>$dom->getValueFromTag('INDEX_MARKET_PLACE'),
'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),
'source'=>'H',
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
if ($doHugin || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux Hugin...".EOL;
$tabFichier=array();
$dh = opendir(HUGIN_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
unset($dom);
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(HUGIN_LOCAL_DIR.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
$dom = @new DomDocument2();
@$dom->load(HUGIN_LOCAL_DIR.$nomFichier);
$pressReleaseId=@$dom->getValueFromTag('PRESS_RELEASE_ID');
$tabInsert=array( 'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('COMPANY_NAME'),
'companyIsin'=>$dom->getValueFromTag('COMPANY_ISIN'),
'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
'companyLogoUrl'=>$dom->getValueFromTag('URL1'),
'companyWebSite'=>$dom->getValueFromTag('URL2'),
'companyProfile'=>$dom->getValueFromTag('URL3'),
'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>$dom->getValueFromTag('PRESS_RELEASE_DATE_TIME'),
'pressReleaseTitle'=>$dom->getValueFromTag('PRESS_RELEASE_TITLE'),
'pressReleaseText'=>$dom->getValueFromTag('TEXT_FORMAT'),
'pressReleaseHtml'=>$dom->getValueFromTag('HTML_FORMAT'),
'pressReleaseAttachments'=>$dom->getValueFromTag('ATTACHMENTS_URL1'),
'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('INDEX_THEME'),
'indexSector'=>$dom->getValueFromTag('INDEX_SECTOR'),
'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$dom->getValueFromTag('INDEX_LANGUAGE'),
'indexMarketPlace'=>$dom->getValueFromTag('INDEX_MARKET_PLACE'),
'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),
'source'=>'H',
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
$nbHugin++;
}
unset($dom);
}
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbHugin communiqués Hugin.".EOL;
echo $message;
$strMessage.=$message;
}
echo date('Y/m/d - H:i:s') ." - FIN de l'intégration des flux Hugin.".EOL;
/**
** INTEGRATION DES COMMUNIQUES "ACTUSNEWS"
**/
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux ActusNews...".EOL;
$tabFichier=array();
$dh = opendir(ACTUSNEWS_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
if ($doActus || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux ActusNews...".EOL;
$tabFichier=array();
$dh = opendir(ACTUSNEWS_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(ACTUSNEWS_LOCAL_DIR.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(ACTUSNEWS_LOCAL_DIR.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
foreach ($tabTmp as $i_ligne => $ligne) {
if (stripos($ligne, '<communique ')!== false) {//<communique
//echo date ('Y/m/d - H:i:s')." - Première ligne du communiqué...".EOL;
if (stripos($ligne, 'langue="FR"')>0) {
//echo date ('Y/m/d - H:i:s')." - Communiqué en français ($ligne).".EOL;
$french=true;
} else {
//echo date ('Y/m/d - H:i:s')." - Langue non intégrée en base ($ligne) !".EOL;
$french=false;
foreach ($tabTmp as $i_ligne => $ligne) {
if (stripos($ligne, '<communique ')!== false) {//<communique
//echo date ('Y/m/d - H:i:s')." - Première ligne du communiqué...".EOL;
if (stripos($ligne, 'langue="FR"')>0) {
//echo date ('Y/m/d - H:i:s')." - Communiqué en français ($ligne).".EOL;
$french=true;
} else {
//echo date ('Y/m/d - H:i:s')." - Langue non intégrée en base ($ligne) !".EOL;
$french=false;
break;
}
break;
}
break;
}
if ($french) {
//echo date ('Y/m/d - H:i:s')." - Chargement du communiqué ...".EOL;
$dom = @new DomDocument2();
$dom->load(ACTUSNEWS_LOCAL_DIR.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('id');
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>trim($dom->getValueFromTag('raisonsociale')),
'companyIsin'=>trim($dom->getValueFromTag('codeisin')),
//'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>trim($dom->getValueFromTag('code_reuters')),
'companyLogoUrl'=>trim($dom->getValueFromTag('logo')),
'companyWebSite'=>trim($dom->getValueFromTag('site')),
//'companyProfile'=>$dom->getValueFromTag('URL3'),
//'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>trim($dom->getValueFromTag('site_investisseur')),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>trim($dom->getValueFromTag('miseajour')),
'pressReleaseTitle'=>trim($dom->getValueFromTag('titre')),
'pressReleaseText'=>trim(strtr(html_entity_decode(strip_tags($dom->getValueFromTag('contenu'))),array('&rsquo;'=>''))),
'pressReleaseHtml'=>trim($dom->getValueFromTag('contenu')),
'pressReleaseAttachments'=>trim($dom->getValueFromTag('pdf')),
//'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
/*'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('INDEX_THEME'),
'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$dom->getValueFromTag('INDEX_LANGUAGE'),
*/
'indexQuoteInd'=>trim($dom->getValueFromTag('indice')),
'indexSector'=>trim($dom->getValueFromTag('secteur')),
'indexMarketPlace'=>trim($dom->getValueFromTag('marche_cotation')),
'source'=>'A',
'companyBloomberg'=>trim($dom->getValueFromTag('code_bloomberg')),
'companyMnemo'=>trim($dom->getValueFromTag('mnemo')),
'companyNbTitles'=>trim($dom->getValueFromTag('nb_de_titres')),
'companyFootsie'=>trim($dom->getValueFromTag('footsie')),
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
$nbActus++;
}
unset($dom);
}
}
if ($french) {
//echo date ('Y/m/d - H:i:s')." - Chargement du communiqué ...".EOL;
$dom = @new DomDocument2();
$dom->load(ACTUSNEWS_LOCAL_DIR.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('id');
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>trim($dom->getValueFromTag('raisonsociale')),
'companyIsin'=>trim($dom->getValueFromTag('codeisin')),
//'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>trim($dom->getValueFromTag('code_reuters')),
'companyLogoUrl'=>trim($dom->getValueFromTag('logo')),
'companyWebSite'=>trim($dom->getValueFromTag('site')),
//'companyProfile'=>$dom->getValueFromTag('URL3'),
//'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>trim($dom->getValueFromTag('site_investisseur')),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>trim($dom->getValueFromTag('miseajour')),
'pressReleaseTitle'=>trim($dom->getValueFromTag('titre')),
'pressReleaseText'=>trim(strtr(html_entity_decode(strip_tags($dom->getValueFromTag('contenu'))),array('&rsquo;'=>''))),
'pressReleaseHtml'=>trim($dom->getValueFromTag('contenu')),
'pressReleaseAttachments'=>trim($dom->getValueFromTag('pdf')),
//'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
/*'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('INDEX_THEME'),
'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$dom->getValueFromTag('INDEX_LANGUAGE'),
*/
'indexQuoteInd'=>trim($dom->getValueFromTag('indice')),
'indexSector'=>trim($dom->getValueFromTag('secteur')),
'indexMarketPlace'=>trim($dom->getValueFromTag('marche_cotation')),
'source'=>'A',
'companyBloomberg'=>trim($dom->getValueFromTag('code_bloomberg')),
'companyMnemo'=>trim($dom->getValueFromTag('mnemo')),
'companyNbTitles'=>trim($dom->getValueFromTag('nb_de_titres')),
'companyFootsie'=>trim($dom->getValueFromTag('footsie')),
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
}
unset($dom);
}
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbActus communiqués ActusNews.".EOL;
echo $message;
$strMessage.=$message;
}
echo date('Y/m/d - H:i:s') ." - FIN de l'intégration des flux ActusNews...".EOL;
/**
** INTEGRATION DES COMMUNIQUES "DIRELEASE"
**/
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux DiRelease...".EOL;
/*echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux DiRelease...".EOL;
$tabFichier=array();
$dh = opendir(DIRELEASE_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
@ -210,17 +276,10 @@ while (false !== ($filename = readdir($dh))) {
/** @todo Pour DiRelease, Ne pas utiliser le parser XML mais uniquement des expr. régulière car XML de merde.
** Prendre tous les ISIN et rechercher le SIREN.
**/
**
foreach ($tabFichier as $k => $nomFichier) {
$strTmp=file_get_contents(DIRELEASE_LOCAL_DIR.$nomFichier);
/*$strTmp=preg_replace('/\s+/is',' ', $strTmp);
$fp=fopen(DIRELEASE_LOCAL_DIR.'new_'.$nomFichier, 'w');
fwrite($fp, $strTmp);
fclose($fp);
$tabTmp=file(DIRELEASE_LOCAL_DIR.'new_'.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
*/
if (stripos($strTmp, 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($strTmp, 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding non géré !".EOL);
@ -282,13 +341,6 @@ foreach ($tabFichier as $k => $nomFichier) {
'pressReleaseText'=>trim(strtr(html_entity_decode(strip_tags($contenu)),array('&rsquo;'=>''))),
'pressReleaseHtml'=>$contenu,
'pressReleaseAttachments'=>$pdf,
/*
'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('INDEX_THEME'),
'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$dom->getValueFromTag('INDEX_LANGUAGE'),
*/
'indexQuoteInd'=>$indice,
'indexSector'=>$secteur,
'indexMarketPlace'=>$marche_cotation,
@ -305,215 +357,156 @@ foreach ($tabFichier as $k => $nomFichier) {
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
$nbDiRel++;
}
unset($dom);
}
}
echo date('Y/m/d - H:i:s') ." - FIN de l'intégration des flux DiRelease...".EOL;
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbDiRel communiqués DiRelease.".EOL;
echo $message;
$strMessage.=$message;
*/
/**
** INTEGRATION DES COMMUNIQUES "BUSINESSWIRE"
**/
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux BusinessWire...".EOL;
$tabFichier=array();
$dh = opendir(BUSINESSWIRE_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(BUSINESSWIRE_LOCAL_DIR.$nomFichier);
$strTmp=implode("\n", $tabTmp);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local ".BUSINESSWIRE_LOCAL_DIR."$nomFichier inexistant !".EOL);
/*if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
elseif (stripos($tabTmp[0], '<?xml version = \'1.0\'?>')) $encoding='?';
// <?xml version = '1.0'?>
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré pour le fichier ".BUSINESSWIRE_LOCAL_DIR."$nomFichier !".EOL);*/
/*<DateAndTime>20070906T190800+0000</DateAndTime>
<NewsService FormalName="Business Wire"/>
<NewsProduct FormalName="BUSINESS WIRE"/>
</NewsEnvelope>
<NewsItem>
<Identification>
<NewsIdentifier>
<ProviderId>businesswire.com</ProviderId>
<DateId>20010714</DateId>
<>20070906006073</NewsItemId>
<RevisionId PreviousRevision="0" Update="N">1</RevisionId>
<PublicIdentifier>urn:newsml:businesswire.com:20010714:20070906006073:1</PublicIdentifier>
</NewsIdentifier>
</Identification>
<NewsManagement>
<NewsItemType FormalName="News"/>
<FirstCreated>20070906T190800+0000</FirstCreated>
<ThisRevisionCreated>20070906T190800+0000</ThisRevisionCreated>
<Status FormalName="Usable"/>
<AssociatedWith NewsItem="businesswire.com:20010714:242009"/>
</NewsManagement>
<NewsComponent>
<BasisForChoice Rank="1">./NewsComponent/DescriptiveMetadata/Language</BasisForChoice>
<NewsLines>
<CopyrightLine>Copyright Business Wire 2007</CopyrightLine>
</NewsLines>
<AdministrativeMetadata>
<Source>
<Party FormalName="CIT Group Inc."/>
</Source>
<Contributor>
<Comment FormalName="BWoffices">NY</Comment>
<Party FormalName="DB" Scheme="BWEditor"/>
</Contributor>
</AdministrativeMetadata>
<DescriptiveMetadata>
<Language FormalName="fr"/>
<Genre FormalName="Release"/>
</DescriptiveMetadata>
<Metadata>
<MetadataType FormalName="BWKeywords"/>
<Property FormalName="BWCountryKeywords" Value="United States"/>
<Property FormalName="BWRegionKeywords" Value="Europe"/>
<Property FormalName="BWRegionKeywords" Value="North America"/>
<Property FormalName="BWIndustryKeywords" Value="Manufacturing"/>
<Property FormalName="BWIndustryKeywords" Value="Aerospace"/>
<Property FormalName="BWCategoryKeywords" Value="Product/Service"/>
<Property FormalName="BWIndustryKeywords" Value="Professional Services"/>
<Property FormalName="BWIndustryKeywords" Value="Finance"/>
<Property FormalName="BWStateKeywords" Value="New York"/>
<Property FormalName="BWCountryKeywords" Value="Ireland"/>
</Metadata>
<Metadata>
<MetadataType FormalName="Securities Identifier"/>
<Property FormalName="" Value="CIT"/>
<Property FormalName="Exchange" Value="NYSE"/>
<Property FormalName="ISIN" Value="US1255811085"/>
<Property FormalName="SlugLine Display Order" Value="1"/>
</Metadata>
<NewsComponent>
<BasisForChoice Rank="1">./NewsComponent/Role</BasisForChoice>
<NewsLines>
<>CIT consolide son engagement envers l'économie irlandaise et agrandit son centre opérationnel de Dublin</HeadLine>*/
$dom = @new DomDocument2();
$dom->load(BUSINESSWIRE_LOCAL_DIR.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('NewsItemId');
preg_match('/<Property FormalName="ISIN" Value="(.*)"\/>/i',$strTmp,$matches);
$isin=@$matches[1];
preg_match('/<Property FormalName="Exchange" Value="(.*)"\/>/i',$strTmp,$matches);
$exchange=@$matches[1];
preg_match('/<Property FormalName="Ticker Symbol" Value="(.*)"\/>/i',$strTmp,$matches);
$mnemo=@$matches[1];
preg_match('/<NewsLineType FormalName="ClickThru URL"(?:.*)<NewsLineText>(.*)<\/NewsLineText>/isU',$strTmp,$matches);
$siteWeb=@$matches[1];
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Logo"\/>(?:.*)<ContentItem Duid="(?:.*)" Href="(.*)">(?:.*)<\/NewsComponent>/isU',$strTmp,$matches);
$logo=urldecode(@$matches[1]);
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Body"\/>(?:.*)<ContentItem (?:.*)<Format FormalName="XHTML"\/>(?:.*)<DataContent>(.*)<\/DataContent>/isU',$strTmp,$matches);
$bodyHtml=utf8_decode(@$matches[1]);
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Body"\/>(?:.*)<ContentItem (?:.*)<Format FormalName="BW-Text"\/>(?:.*)<DataContent>(.*)<\/DataContent>/isU',$strTmp,$matches);
$bodyTxt=utf8_decode(@$matches[1]);
preg_match_all('/<Property FormalName="BWIndustryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$industry=@implode(';',@$matches[1]);
preg_match_all('/<Property FormalName="BWCategoryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$category=@implode(';',@$matches[1]);
preg_match_all('/<Property FormalName="BWCountryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$country=@implode(';',@$matches[1]);
preg_match('/<Language FormalName="(.*)"\/>/i',$strTmp,$matches);
$language=@$matches[1];
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('SlugLine'),
'companyIsin'=>$isin,
'companyMnemo'=>$mnemo,
'companyWebSite'=>$siteWeb,
'companyLogoUrl'=>$logo,
/*'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
'companyProfile'=>$dom->getValueFromTag('URL3'),
'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),*/
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>substr(str_replace('T','',$dom->getValueFromTag('DateAndTime')),0,14),// 20070906T190800+0000
'pressReleaseTitle'=>$dom->getValueFromTag('HeadLine'),
'pressReleaseText'=>$bodyTxt,
'pressReleaseHtml'=>$bodyHtml,
'indexMarketPlace'=>$exchange,
'indexTheme'=>$category,
'indexSector'=>$industry,
'indexCountry'=>$country,
'indexLanguage'=>$language,
/*
'pressReleaseAttachments'=>$dom->getValueFromTag('ATTACHMENTS_URL1'),
'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),*/
'source'=>'B',
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
if ($doBusin || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux BusinessWire...".EOL;
$tabFichier=array();
$dh = opendir(BUSINESSWIRE_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
unset($dom);
}
echo date('Y/m/d - H:i:s') ." - FIN de l'intégration des flux BusinessWire.".EOL;
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(BUSINESSWIRE_LOCAL_DIR.$nomFichier);
$strTmp=implode("\n", $tabTmp);
if (!$tabTmp) echo date ('Y/m/d - H:i:s')." - ERREUR : Fichier local ".BUSINESSWIRE_LOCAL_DIR."$nomFichier inexistant ou vide !".EOL;
/**
** INTEGRATION DES COMMUNIQUES "LES ECHOS"
**/
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux Les Echos...".EOL;
$tabFichier=array();
$dh = opendir(LESECHOS_LOCAL_DIR.'syndication/');
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
/*if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
elseif (stripos($tabTmp[0], '<?xml version = \'1.0\'?>')) $encoding='?';
// <?xml version = '1.0'?>
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré pour le fichier ".BUSINESSWIRE_LOCAL_DIR."$nomFichier !".EOL);*/
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(LESECHOS_LOCAL_DIR.'syndication/'.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
/*<DateAndTime>20070906T190800+0000</DateAndTime>
<NewsService FormalName="Business Wire"/>
<NewsProduct FormalName="BUSINESS WIRE"/>
</NewsEnvelope>
<NewsItem>
<Identification>
<NewsIdentifier>
<ProviderId>businesswire.com</ProviderId>
<DateId>20010714</DateId>
<>20070906006073</NewsItemId>
<RevisionId PreviousRevision="0" Update="N">1</RevisionId>
<PublicIdentifier>urn:newsml:businesswire.com:20010714:20070906006073:1</PublicIdentifier>
</NewsIdentifier>
</Identification>
<NewsManagement>
<NewsItemType FormalName="News"/>
<FirstCreated>20070906T190800+0000</FirstCreated>
<ThisRevisionCreated>20070906T190800+0000</ThisRevisionCreated>
<Status FormalName="Usable"/>
<AssociatedWith NewsItem="businesswire.com:20010714:242009"/>
</NewsManagement>
<NewsComponent>
<BasisForChoice Rank="1">./NewsComponent/DescriptiveMetadata/Language</BasisForChoice>
<NewsLines>
<CopyrightLine>Copyright Business Wire 2007</CopyrightLine>
</NewsLines>
<AdministrativeMetadata>
<Source>
<Party FormalName="CIT Group Inc."/>
</Source>
<Contributor>
<Comment FormalName="BWoffices">NY</Comment>
<Party FormalName="DB" Scheme="BWEditor"/>
</Contributor>
</AdministrativeMetadata>
<DescriptiveMetadata>
<Language FormalName="fr"/>
<Genre FormalName="Release"/>
</DescriptiveMetadata>
<Metadata>
<MetadataType FormalName="BWKeywords"/>
<Property FormalName="BWCountryKeywords" Value="United States"/>
<Property FormalName="BWRegionKeywords" Value="Europe"/>
<Property FormalName="BWRegionKeywords" Value="North America"/>
<Property FormalName="BWIndustryKeywords" Value="Manufacturing"/>
<Property FormalName="BWIndustryKeywords" Value="Aerospace"/>
<Property FormalName="BWCategoryKeywords" Value="Product/Service"/>
<Property FormalName="BWIndustryKeywords" Value="Professional Services"/>
<Property FormalName="BWIndustryKeywords" Value="Finance"/>
<Property FormalName="BWStateKeywords" Value="New York"/>
<Property FormalName="BWCountryKeywords" Value="Ireland"/>
</Metadata>
<Metadata>
<MetadataType FormalName="Securities Identifier"/>
<Property FormalName="" Value="CIT"/>
<Property FormalName="Exchange" Value="NYSE"/>
<Property FormalName="ISIN" Value="US1255811085"/>
<Property FormalName="SlugLine Display Order" Value="1"/>
</Metadata>
<NewsComponent>
<BasisForChoice Rank="1">./NewsComponent/Role</BasisForChoice>
<NewsLines>
<>CIT consolide son engagement envers l'économie irlandaise et agrandit son centre opérationnel de Dublin</HeadLine>*/
$dom = @new DomDocument2();
$dom->load(BUSINESSWIRE_LOCAL_DIR.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('NewsItemId');
preg_match('/<Property FormalName="ISIN" Value="(.*)"\/>/i',$strTmp,$matches);
$isin=@$matches[1];
preg_match('/<Property FormalName="Exchange" Value="(.*)"\/>/i',$strTmp,$matches);
$exchange=@$matches[1];
preg_match('/<Property FormalName="Ticker Symbol" Value="(.*)"\/>/i',$strTmp,$matches);
$mnemo=@$matches[1];
preg_match('/<NewsLineType FormalName="ClickThru URL"(?:.*)<NewsLineText>(.*)<\/NewsLineText>/isU',$strTmp,$matches);
$siteWeb=@$matches[1];
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Logo"\/>(?:.*)<ContentItem Duid="(?:.*)" Href="(.*)">(?:.*)<\/NewsComponent>/isU',$strTmp,$matches);
$logo=urldecode(@$matches[1]);
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Body"\/>(?:.*)<ContentItem (?:.*)<Format FormalName="XHTML"\/>(?:.*)<DataContent>(.*)<\/DataContent>/isU',$strTmp,$matches);
$bodyHtml=utf8_decode(@$matches[1]);
preg_match('/<NewsComponent>(?:.*)<Role FormalName="Body"\/>(?:.*)<ContentItem (?:.*)<Format FormalName="BW-Text"\/>(?:.*)<DataContent>(.*)<\/DataContent>/isU',$strTmp,$matches);
$bodyTxt=utf8_decode(@$matches[1]);
preg_match_all('/<Property FormalName="BWIndustryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$industry=@implode(';',@$matches[1]);
preg_match_all('/<Property FormalName="BWCategoryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$category=@implode(';',@$matches[1]);
preg_match_all('/<Property FormalName="BWCountryKeywords" Value="(.*)"\/>/iU',$strTmp,$matches);
$country=@implode(';',@$matches[1]);
preg_match('/<Language FormalName="(.*)"\/>/i',$strTmp,$matches);
$language=@$matches[1];
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
$dom = @new DomDocument2();
$dom->load(LESECHOS_LOCAL_DIR.'syndication/'.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('CODE');
$language=strtoupper($dom->getValueFromTag('PRESS_RELEASE_LANGUAGE'));
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('COMPANY_NAME'),
'companyIsin'=>$dom->getValueFromTag('COMPANY_ISIN'),
//'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
//'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
//'companyLogoUrl'=>$dom->getValueFromTag('URL1'),
//'companyWebSite'=>$dom->getValueFromTag('URL2'),
//'companyProfile'=>$dom->getValueFromTag('URL3'),
//'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
//'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>WDate::dateT('d/m/Y', 'Y-m-d', $dom->getValueFromTag('PRESS_RELEASE_PUBDATE')).' '.
$dom->getValueFromTag('PRESS_RELEASE_PUBTIME'),
'pressReleaseTitle'=>$dom->getValueFromTag('PRESS_RELEASE_TITLE'),
'pressReleaseText'=>$dom->getValueFromTag('TEXT_FORMAT'),
'pressReleaseHtml'=>$dom->getValueFromTag('HTML_FORMAT'),
'pressReleaseAttachments'=>$dom->getValueFromTag('LINK_ORIGINAL'),
'pressReleaseUrl'=>$dom->getValueFromTag('LINK'),
//'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('PRESS_RELEASE_THEME'),
//'indexSector'=>$dom->getValueFromTag('INDEX_SECTOR'),
//'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$language,
//'indexMarketPlace'=>$dom->getValueFromTag('INDEX_MARKET_PLACE'),
//'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),
'source'=>'E',
);
if ($language=='FR') {
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('SlugLine'),
'companyIsin'=>$isin,
'companyMnemo'=>$mnemo,
'companyWebSite'=>$siteWeb,
'companyLogoUrl'=>$logo,
/*'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
'companyProfile'=>$dom->getValueFromTag('URL3'),
'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),*/
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>substr(str_replace('T','',$dom->getValueFromTag('DateAndTime')),0,14),// 20070906T190800+0000
'pressReleaseTitle'=>$dom->getValueFromTag('HeadLine'),
'pressReleaseText'=>$bodyTxt,
'pressReleaseHtml'=>$bodyHtml,
'indexMarketPlace'=>$exchange,
'indexTheme'=>$category,
'indexSector'=>$industry,
'indexCountry'=>$country,
'indexLanguage'=>$language,
/*
'pressReleaseAttachments'=>$dom->getValueFromTag('ATTACHMENTS_URL1'),
'pressReleaseUrl'=>$dom->getValueFromTag('PRESS_RELEASE_URL_CNG'),
'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),*/
'source'=>'B',
);
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
@ -521,12 +514,86 @@ foreach ($tabFichier as $k => $nomFichier) {
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
$nbBusin++;
}
} else
echo date ('Y/m/d - H:i:s')." - Langue du communiqué non intégrée en base ($language).".EOL;
unset($dom);
unset($dom);
}
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbBusin communiqués BusinessWire.".EOL;
echo $message;
$strMessage.=$message;
}
echo date('Y/m/d - H:i:s') ." - FIN de l'intégration des flux Les Echos.".EOL;
/**
** INTEGRATION DES COMMUNIQUES "LES ECHOS"
**/
if ($doEchos || $doAll) {
echo date('Y/m/d - H:i:s') ." - DEBUT de l'intégration des flux Les Echos...".EOL;
$tabFichier=array();
$dh = opendir(LESECHOS_LOCAL_DIR.'syndication/');
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
foreach ($tabFichier as $k => $nomFichier) {
$tabTmp=file(LESECHOS_LOCAL_DIR.'syndication/'.$nomFichier);
if (!$tabTmp) die(date ('Y/m/d - H:i:s')." - ERREUR : Fichier local $nomFichier inexistant !".EOL);
if (stripos($tabTmp[0], 'ISO-8859-1')>0) $encoding='ISO-8859-1';
elseif (stripos($tabTmp[0], 'UTF-8')>0) $encoding='UTF-8';
else die(date ('Y/m/d - H:i:s')." - ERREUR : Encoding ".$tabTmp[0]." non géré !".EOL);
$dom = @new DomDocument2();
$dom->load(LESECHOS_LOCAL_DIR.'syndication/'.$nomFichier);
$pressReleaseId=$dom->getValueFromTag('CODE');
$language=strtoupper($dom->getValueFromTag('PRESS_RELEASE_LANGUAGE'));
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$dom->getValueFromTag('COMPANY_NAME'),
'companyIsin'=>$dom->getValueFromTag('COMPANY_ISIN'),
//'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
//'companyRic'=>$dom->getValueFromTag('COMPANY_RIC'),
//'companyLogoUrl'=>$dom->getValueFromTag('URL1'),
//'companyWebSite'=>$dom->getValueFromTag('URL2'),
//'companyProfile'=>$dom->getValueFromTag('URL3'),
//'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
//'companyInfoActionnaires'=>$dom->getValueFromTag('URL5'),
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>WDate::dateT('d/m/Y', 'Y-m-d', $dom->getValueFromTag('PRESS_RELEASE_PUBDATE')).' '.
$dom->getValueFromTag('PRESS_RELEASE_PUBTIME'),
'pressReleaseTitle'=>$dom->getValueFromTag('PRESS_RELEASE_TITLE'),
'pressReleaseText'=>$dom->getValueFromTag('TEXT_FORMAT'),
'pressReleaseHtml'=>$dom->getValueFromTag('HTML_FORMAT'),
'pressReleaseAttachments'=>$dom->getValueFromTag('LINK_ORIGINAL'),
'pressReleaseUrl'=>$dom->getValueFromTag('LINK'),
//'indexAll'=>$dom->getValueFromTag('INDEX_ALL'),
'indexTheme'=>$dom->getValueFromTag('PRESS_RELEASE_THEME'),
//'indexSector'=>$dom->getValueFromTag('INDEX_SECTOR'),
//'indexCountry'=>$dom->getValueFromTag('INDEX_COUNTRY'),
'indexLanguage'=>$language,
//'indexMarketPlace'=>$dom->getValueFromTag('INDEX_MARKET_PLACE'),
//'indexQuoteInd'=>$dom->getValueFromTag('INDEX_QUOTE_INDICATOR'),
'source'=>'E',
);
if ($language=='FR') {
$ret=$iDb->insert('articles', $tabInsert);
if (!$ret && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - ERREUR ". $iDb->getLastError() . EOL;
print_r($tabInsert);
die();
} elseif ($iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s')." - Communiqué n°$pressReleaseId enregistré avec succès.".EOL;
$nbEchos++;
}
} else
echo date ('Y/m/d - H:i:s')." - Langue du communiqué non intégrée en base ($language).".EOL;
unset($dom);
}
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbEchos communiqués Les Echos.".EOL;
echo $message;
$strMessage.=$message;
}
sendMail('webmaster@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', "Intégration des informations réglementées", $strMessage);
die();

File diff suppressed because it is too large Load Diff

View File

@ -20,12 +20,14 @@ $strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIERS]
Chargement du/des flux en provenance de l'INPI (license RNCS IMR).
Options :
-d Mode debug (Verbosité au maximum)
-v Mode debug (Verbosité au maximum)
-l:XXXX Reprendre à partir de la ligne XXXX
-s:AAAAMMJJ Fichier stock de tous les établissements actifs avec jour de l'extraction du stock
-s Fichier stock de tous les établissements actifs (préciser le jour de l'extraction avec -f)
-f:AAAAMMJJ Forcer la dateFlux de ce chargement
-r Ne pas exécuter en réel
-j Ne pas se connecter au serveur FTP d'Extelia (INPI/IMR via Infogreffe)
-c Continuer en cas d'erreur de fichier
-m Mettre à jour les siren des dirigeants PM
";/*
-p Chargement d'une ancienne notice (pas de modification de la zone ACTIF chargement des zones différentes)
-u Ne pas mettre à jour la table identite de l'insee
@ -38,13 +40,15 @@ $iRncs=new MRncs();
//$iWs=new WsEntreprise();
$nbSiretInvalides=0;
$modeDebug=false; // Par défaut, pas de message de debug
$ftpStep=true; // Par défaut, se connecte au serveur FTP de l'INP
$stock=0; // Stock IMR complet = 1 !
$actifIni=1; // L'état actif est 1 sinon 11 si stock !
$jourStock=0; // Jour du stock SSAMMJJ
$env=''; // Suffix des tables de chargements (en prod '' sinon '2', etc... Vérifier que les tables existes)
$strMailInfo=''; // Initialisation du contenu du message d'information
$modeDebug=false; // Par défaut, pas de message de debug
$ftpStep=true; // Par défaut, se connecte au serveur FTP de l'INP
$stock=0; // Stock IMR complet = 1 !
$actifIni=1; // L'état actif est 1 sinon 11 si stock !
$jourStock=0; // Jour du stock SSAMMJJ
$env=''; // Suffix des tables de chargements (en prod '' sinon '2', etc... Vérifier que les tables existes)
$strMailInfo=''; // Initialisation du contenu du message d'information
$doMajSirenDir=false; // Mettre à jour les siren des dirigeants
$stopSiErreur=true; // Stopper le traitement si erreur de fichier
$tabFichiers=array(); // Tableau des Fichiers téléchargés sur le FTP
$tabFichier=array(); // Fichiers locaux en attente de traitement
@ -58,12 +62,14 @@ $argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'v': $modeDebug=true; break;
case 'j': $ftpStep=false; break;
case 'l': $numReprise=substr($argv[$i],3,strlen($argv[$i])-3); break;
case 's': $stock=1; $actifIni=11;
case 'f': $jourStock=substr($argv[$i],3,8); break;
case 'r': $env='2'; break;
case 'm': $doMajSirenDir=true; break;
case 'c': $stopSiErreur=false; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
@ -89,7 +95,7 @@ if ($ftpStep) {
$dateDist = ftp_mdtm($conn_id, $server_file);
$server_fileName=basename($server_file);
if (!preg_match('/licence/i', $server_fileName)) {
if (!preg_match('/licence/i', $server_fileName) || preg_match('/\.swp/i', $server_fileName)) {
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' n'est pas un flux IMR.".EOL;
continue;
} elseif ($modeDebug)
@ -160,8 +166,11 @@ if (count($tabFichLigneCmd)==0) {
$tDur = round($tFin-$tDeb);
echo date ('Y/m/d - H:i:s')." - Fichier $filename décompressé : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressés)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier $filename décompressé : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressés)".EOL;
} else
die(date ('Y/m/d - H:i:s') . " - ERREUR : Décompression impossible de $filenameGz !".EOL);
} else {
echo date ('Y/m/d - H:i:s') . " - ERREUR : Décompression impossible de $filenameGz !".EOL;
//if (!$stopSiErreur)
die();
}
}
$tabFichier[] = RNCS_IMR_FTP_LOCALDIR.$filename;
}
@ -171,7 +180,7 @@ if (count($tabFichLigneCmd)==0) {
if (count($tabFichier)==0)
$tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0)
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0 && !$doMajSirenDir)
die(date ('Y/m/d - H:i:s') . " - Aucun fichier RNCS IMR de l'INPI à traiter (--help pour plus d'options).".EOL);
elseif (!$ftpStep)
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement du flux INPI".EOL;
@ -210,8 +219,10 @@ foreach ($tabFichier as $iFic=>$fichier)
// fwrite($fpT, date('Ymd-His')."$fichier;$dateInsert;$nbLignes;
$message="Le fichier $fichier est en cours de chargement depuis le $date2Tmp ($nbL2Tmp lignes)...";
echo date('Y/m/d - H:i:s')." - $message".EOL;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR - ERREUR !!!', $message);
die();
//if (!$stopSiErreur) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR - ERREUR !!!', $message);
die();
//}
}
/** Le fichier a-t-il déjà été chargé **/
@ -233,14 +244,15 @@ foreach ($tabFichier as $iFic=>$fichier)
$dateFichierNom=0;*/
$dateFichierNom=substr($fichier,0,8)*1;
if ($jourStock>0 && $stock==0) $dateFlux=$jourStock;
if ($jourStock>0/* && $stock==0*/) $dateFlux=$jourStock;
elseif ($dateFichierMod==$dateFichierNom) $dateFlux=$dateFichierMod;
elseif ($dateFichierMod<>0 && $dateFichierNom==0) $dateFlux=$dateFichierMod;
else {
echo date ('Y/m/d - H:i:s') . " - La date du fichier ($dateFichierMod) ne correspond pas avec le nom '$fichier' !".EOL;
$dateFlux=$dateFichierNom;
if (($dateFlux*1)<20080101 || ($dateFlux*1)>(date('Ymd')*1))
die();
//if (!$stopSiErreur)
die();
}
//die();
@ -250,11 +262,14 @@ foreach ($tabFichier as $iFic=>$fichier)
$nbLignes=$nbLignes00=$nbLignes01=$nbLignes02=$nbLignes02p=$nbLignes03=$nbLignes04=$nbLignes05=$nbLignes06=0;
$tabEntete=array();
for($i=0; $i<7; $i++) $nb[$i]=$nbInsert[$i]=$nbUpdate[$i]=0;
$nb[30]=$nbInsert[30]=$nbUpdate[30]=0;
$nbCreations=$nbModifI=$nbModifF=$nbModifS=$nbFermetures=$nbModifErr=0;
$a = fgets($fp, 4096);
if (strlen($a)<800) {
echo date('Y/m/d - H:i:s') ." - Le fichier RNCS à charger $fichier n'est pas au format IMR Infogreffe/Extelia !".EOL;
die();
//if ($stopSiErreur) die();
//else
continue;
}
$nbLignesTot=0;
@ -320,6 +335,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$siren=0;
$modifDir=$modifJug=false;
$table='';
$tabSirenJugeNT=array();
while (!feof($fp)) {
/** Ajout/Maj des infos du verrou **/
@ -367,7 +383,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_etab'.$env, array('actif'=>0,'dateFermeture'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les établissements du siren $sirenPre non transmis ont été passés à inactifs (".$nbEtab[10]." déjà inactifs et ".$nbEtab[11]." actifs).".EOL;
echo date ('Y/m/d - H:i:s') . " - Les établissements du siren $sirenPre non transmis ont été passés à inactifs (".(@$nbEtab[10]*1)." déjà inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun établissement pour le siren $sirenPre en base précédement !".EOL;
@ -380,32 +396,43 @@ foreach ($tabFichier as $iFic=>$fichier)
$nbEtab[$etab['actif']]=$etab['nb'];
$ret=$iDb->update('rncs_dirigeants'.$env, array('actif'=>0,'dateFin'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $sirenPre non transmis ont été passés à inactifs (".$nbEtab[10]." déjà inactifs et ".$nbEtab[11]." actifs).".EOL;
echo date ('Y/m/d - H:i:s') . " - Les dirigeants du siren $sirenPre non transmis ont été passés à inactifs (".(@$nbEtab[10]*1)." déjà inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun dirigeants pour le siren $sirenPre en base précédement !".EOL;
}
/** Suppressions des jugements non transmis **/
if ($modifJug) {
$ret=$iDb->select('rncs_jugements'.$env, 'actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
// if ($modifJug) {
$ret=$iDb->select('rncs_jugements'.$env, 'siren, actif, count(*) as nb', "siren=$sirenPre GROUP BY actif ORDER BY actif ASC", false, MYSQL_ASSOC);
//print_r($ret);
if (isset($ret[0])) {
$nbEtab=array();
foreach ($ret as $iEtab=>$etab)
$nbEtab[$etab['actif']]=$etab['nb'];
if ($actif<>0)
if ($actif<>0) {
// Si le siren est encore actif et que le jugement n'est pas transmit, il doit s'agir d'une correction de jugement
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>0,'dateSuppr'=>$dateFlux), "actif>9 AND siren=$sirenPre", false, 0, true);
else
if (!$modifJug) $tabSirenJugeNT[]=array('siren' => $sirenPre,
'cj' => $cj,
'capital' => $capital,
'dateImma' => $dateImma,
);
} else
$ret=$iDb->update('rncs_jugements'.$env, array('actif'=>1), "actif>9 AND siren=$sirenPre", false, 0, true);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $sirenPre non transmis ont été passés à inactifs (".$nbEtab[10]." déjà inactifs et ".$nbEtab[11]." actifs).".EOL;
print_r($nbEtab);
}
} elseif ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Aucun jugements pour le siren $sirenPre en base précédement !".EOL;
}
if ($modeDebug)
echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $sirenPre non transmis ont été passés à inactifs (".(@$nbEtab[10]*1)." déjà inactifs et ".(@$nbEtab[11]*1)." actifs).".EOL;
// print_r($nbEtab);
//}
} elseif ($modeDebug)
echo date ('Y/m/d - H:i:s') . " - Aucun jugements pour le siren $sirenPre en base précédement !".EOL;
// //}
}
$modifEtab=$modifDir=$modifJug=false;
/** Marquage des jugements à actif provisoire **/
$ret=$iDb->query("UPDATE LOW_PRIORITY $table SET actif=actif+10 WHERE siren=$siren");
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $siren sont OK pour la mise à jour ($ret).".EOL;
$table='rncs_entrep'.$env;
if (trim( substr($a, 11, 2))=='00') $actif=$actifIni;
elseif (trim( substr($a, 11, 2))=='99') $actif=0;
@ -447,7 +474,9 @@ foreach ($tabFichier as $iFic=>$fichier)
}*/
$nomUsage = trim( substr($a, 267, 80));
$prenom = trim( substr($a, 187, 80));
$numGreffe=trim( substr($a, 13, 4))*1;
$numGreffe = trim( substr($a, 13, 4))*1;
$capital = trim( substr($a, 551, 15))*1;
$dateImma = trim( substr($a, 581, 8))*1;
$tabUpdate=array(
'actif' => $actif,
'numGreffe' => $numGreffe, // Numéro de gestion (code greffe)
@ -467,11 +496,11 @@ foreach ($tabFichier as $iFic=>$fichier)
'pays'=>$iRncs->getPaysInpi(trim( substr($a, 190, 3))*1), // Code nationalité
'naf' => trim( substr($a, 536, 5)), // Code APE de l'entreprise
'cj' => $cj, // Code catégorie juridique
'capitalMontant'=>trim(substr($a, 551, 15))*1, // Capital (en unité)
'capitalMontant'=>$capital, // Capital (en unité)
'capitalCent'=> trim( substr($a, 566, 2)), // Capital (centimes)
'capitalDevise'=>trim(substr($a, 568, 3)), // Code devise du capital
'capitalDevIso'=>$iRncs->getDeviseInpi(trim(substr($a, 568, 3))*1), // Code devise du capital
'dateImma' => trim( substr($a, 581, 8))*1, // Date dimmatriculation SSAAMMJJ
'dateImma' => $dateImma, // Date dimmatriculation SSAAMMJJ
'dateRad' => trim( substr($a, 589, 8))*1, // Date de radiation SSAAMMJJ
'capitalType'=> trim( substr($a, 578, 3)), // Code type de capital SOC ou VAR SOC = Capital social VAR = Capital variable
//'provisoires'=> trim( substr($a, 239, 1)), // Données provisoires P ou blanc = P si données provisoires
@ -489,10 +518,13 @@ foreach ($tabFichier as $iFic=>$fichier)
'valeur'=>$value,
'flux'=>$dateFlux));
}
} elseif ($stock) {
echo date('Y/m/d - H:i:s'). " - Fichier n°$iFic, $fichier : $nbLignes lignes, $siren inconnu, $numGreffe $numRC2 présent dans le stock IMR ($raisonSociale $nom $prenom) !".EOL;
$message.=date ('Y/m/d - H:i:s') . " - Fichier n°$iFic, $fichier : $nbLignes lignes, $siren inconnu, $numGreffe $numRC2 présent dans le stock IMR ($raisonSociale $nom $prenom) !".EOL;
}
/** Ce siren fait parti des demandes de réémission de dossier IMR faites par S&D **/
if (isset($tabDemIMR[$siren])) {
if (isset($tabDemIMR[$siren]) && !$stock) {
$iDb->update('rncs_demandes'.$env, array( 'dateReponse'=>$dateInsert,
'flux'=>$dateFlux), "siren=$siren AND dateReponse IS NULL", false, 0, true);
echo date('Y/m/d - H:i:s'). " - Dossier réémis sur $siren le ".$tabDemIMR[$siren]." reçu dans le flux IMR du $dateFlux.".EOL;
@ -696,6 +728,7 @@ foreach ($tabFichier as $iFic=>$fichier)
print_r($tabInsert);
echo mysql_errno().' : '.mysql_error().EOL;*/
$nbInsert[3]++;
if ($typeDir=='PM') $nbInsert[30]++;
//if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Insertion du dirigeant ". $tabUpdate['nom']." ".$tabUpdate['prenom'].", siren=$siren !".EOL;
} else {
$iDb->update($table, $tabUpdate, "siren=$siren AND ".
@ -706,6 +739,7 @@ foreach ($tabFichier as $iFic=>$fichier)
"naissance_date='". $tabUpdate['naissance_date'] ."' AND ".
"fonction_code=". $iRncs->getCodFctBodaccFctDir($codeFonction), false, 0, true);
$nbUpdate[3]++;
if ($typeDir=='PM') $nbUpdate[30]++;
//if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - MAJ du dirigeant ". $tabUpdate['nom']." ".$tabUpdate['prenom'].", siren=$siren !".EOL;
}
break;
@ -713,10 +747,12 @@ foreach ($tabFichier as $iFic=>$fichier)
$nbLignes04++;
$table='rncs_jugements'.$env;
/** Marquage des jugements à actif provisoire **/
if (!$modifJug) {
/*if (!$modifJug) {
$ret=$iDb->query("UPDATE LOW_PRIORITY $table SET actif=actif+10 WHERE siren=$siren");
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Les jugements du siren $siren sont OK pour la mise à jour ($ret).".EOL;
}
@done Innutile ici car ne fonctionne que si une ligne 04 est transmise alors qu'un retour inbonis fait qu'il n'y a pas de '04'
*/
$modifJug=true;
$type1=$type2='';
@ -735,9 +771,9 @@ foreach ($tabFichier as $iFic=>$fichier)
$adm1adr3=trim( substr($a, 219, 40)); // Admin. 1 : Adresse Ligne 3
$tabAdr1=getAdresse($adm1adr1,$adm1adr2,$adm1adr3);
// Adresse 2
$adm2adr1=trim( substr($a, 139, 40)); // Admin. 2 : Adresse Ligne 1
$adm2adr2=trim( substr($a, 179, 40)); // Admin. 2 : Adresse Ligne 2
$adm2adr3=trim( substr($a, 219, 40)); // Admin. 2 : Adresse Ligne 3
$adm2adr1=trim( substr($a, 404, 40)); // Admin. 2 : Adresse Ligne 1 @ttention @todo depuis la version 2009, tous les adresses2 étaient fausse jusqu'au 29/09/2014
$adm2adr2=trim( substr($a, 444, 40)); // Admin. 2 : Adresse Ligne 2 soit $adm2adr1, $adm2adr2 et $adm2adr3 qui reprenaient les lignes $adm1adr1...
$adm2adr3=trim( substr($a, 484, 40)); // Admin. 2 : Adresse Ligne 3
$tabAdr2=getAdresse($adm2adr1,$adm2adr2,$adm2adr3);
$dateEffet = trim( substr($a, 11, 8));
@ -756,7 +792,8 @@ foreach ($tabFichier as $iFic=>$fichier)
'codeEven' => $iRncs->getCodeEvenJugementInpi($codeJugement),
'adm1codeFct' => $codeFonction1, // Admin. 1 : Code Fonction
'adm1type' => $type1, // Code type Mandataire
'adm1id' => $iRncs->getIdMandataireInpi($adm1nom),
'adm1id' => @$iRncs->getIdMandataireInpi($adm1nom, $adm1adr1.' '.$adm1adr2.' '.$adm1adr3, trim( substr($a, 259, 5)), $adrVille1),
'adm1idPer' => $iRncs->matching,
'adm1nom' => $adm1nom, // Admin. 1 : NOM
'adm1adrNum' => @$tabAdr1['num'], // Admin. 1 : N° dans la voie
'adm1adrInd' => @$tabAdr1['indRep'], // Admin. 1 : BTQ
@ -770,7 +807,8 @@ foreach ($tabFichier as $iFic=>$fichier)
'adm1adrVille'=> $adrVille1, // Admin. 1 : Commune
'adm2codeFct' => $codeFonction2, // Admin. 2 : Code Fonction
'adm2type' => $type2,
'adm2id' => $iRncs->getIdMandataireInpi($adm2nom),
'adm2id' => @$iRncs->getIdMandataireInpi($adm2nom, $adm2adr1.' '.$adm2adr2.' '.$adm2adr3, trim( substr($a, 524, 5)), $adrVille2),
'adm2idPer' => $iRncs->matching,
'adm2nom' => $adm2nom, // Admin. 2 : NOM
'adm2adrNum' => @$tabAdr2['num'], // Admin. 2 : N° dans la voie
'adm2adrInd' => @$tabAdr2['indRep'], // Admin. 2 : BTQ
@ -785,6 +823,10 @@ foreach ($tabFichier as $iFic=>$fichier)
'flux' => $dateFlux,
);
// Ajout du 12/03/2015.
$typeDate=strtoupper(trim( substr($a, 559, 1)));
if ($typeDate<>'') $tabUpdate['typeDate']=$typeDate;
$tabInsert=$tabUpdate;
break;
@ -946,8 +988,11 @@ foreach ($tabFichier as $iFic=>$fichier)
$message.="/".$tabEntete['nbEntrep'];
$message.=" (".$nbInsert[1]." ajouts et ".$nbUpdate[1]." modifs)".EOL;
$nbLignes30=$nbInsert[30]+$nbUpdate[30];
$message.=date('Y/m/d - H:i:s'). " - Lignes 02 : $nbLignes02 établissements actifs dont $nbLignes02p provisoires (".$nbInsert[2]." ajouts et ".$nbUpdate[2]." modifs)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 03 : $nbLignes03 dirigeants actifs (".$nbInsert[3]." ajouts et ".$nbUpdate[3]." modifs)".EOL;
$message.=date('Y/m/d - H:i:s'). " - ...... dont $nbLignes30 dirigeants PM actifs (".$nbInsert[30]." ajouts et ".$nbUpdate[30]." modifs)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 04 : $nbLignes04 jugements (".$nbInsert[4]." ajouts et ".$nbUpdate[4]." déjà en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 05 : $nbLignes05 actes/évènements (".$nbInsert[5]." ajouts et ".$nbUpdate[5]." déjà en base)".EOL;
$message.=date('Y/m/d - H:i:s'). " - Lignes 06 : $nbLignes06 EIRL (".$nbInsert[6]." ajouts et ".$nbUpdate[6]." déjà en base)".EOL;
@ -990,7 +1035,7 @@ foreach ($tabFichier as $iFic=>$fichier)
$ret=$iDb->query("UPDATE LOW_PRIORITY IGNORE rncs_dirigeants$env SET actif=0 WHERE actif>1");
echo mysql_errno();
echo mysql_error();
$ret=$iDb->query("DELETE LOW_PRIORITY FROM rncs_dirigeants$env WHERE actif>1");
$ret=$iDb->query("DELETE LOW_PRIORITY FROM rncs_dirigeants$env WHERE actif>1");
echo mysql_errno();
echo mysql_error();
@ -1008,8 +1053,50 @@ foreach ($tabFichier as $iFic=>$fichier)
unlink(REP_TEMP.basename($fichier).'.lock');
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR', $message);
//die();
/** Traitement des jugements qui ne sont plus transmis **/
$nbJugeNT=count($tabSirenJugeNT);
$txtSirenJugeNT='';
$message.=date('Y/m/d - H:i:s') ." - Il y a $nbJugeNT SIREN qui sont redevenus InBonis :".EOL;
foreach ($tabSirenJugeNT as $iTmp=>$tmpJugeNT) {
$tabId=@$iInsee->getIdentiteEntreprise($tmpJugeNT['siren'], 0, 0, false, false);
$txtSirenJugeNT.=$tmpJugeNT['siren'].', ';
$message.="\t". $iTmp ."\t".
$tmpJugeNT['siren'] ."\t".
$tmpJugeNT['cj'] ."\t".
$tabId['SituationJuridique']."\t".
$tmpJugeNT['capital'] ."\t".
$tmpJugeNT['dateImma'] ."\t".
$tabId['TribunalLib'] ."\t";
if ($tabId['SituationJuridique']=='P' || $tabId['SituationJuridique']=='PL') {
$tabInsertAnn=array('siren'=> $tmpJugeNT['siren'],
'sirenValide'=> 1,
'raisonSociale'=> $tabId['Nom'],
'adresse'=> $tabId['Adresse'],
'codePostal'=> $tabId['CP'],
'ville'=> $tabId['Ville'],
'dateJugement'=> $dateFlux,
'dateEffetFinP'=> $dateFlux,
'tribunal'=> @$tabId['triCode'],
//'complement'=>
'source'=> 'PS',
'dateSource'=> $dateDispo,
'dateInsert'=> date('YmdHis'),
);
if ($tabId['SituationJuridique']=='P') $tabInsertAnn['typeEven']=1800;
elseif ($tabId['SituationJuridique']=='PL') $tabInsertAnn['typeEven']=1801;
if (@$tabId['triCode']=='') $tabInsertAnn['tribunal']='INCONU';
$iDb->insert('annonces', $tabInsertAnn, false);
$message.=mysql_error();
}
$message.=EOL;
}
$message.=EOL;
echo date ('Y/m/d - H:i:s')." - Il y a $nbJugeNT SIREN qui sont redevenus InBonis : $txtSirenJugeNT".EOL;
$doMajSirenDir=true;
}
if ($stock) {
@ -1048,6 +1135,121 @@ if ($stock) {
$iDb->query($sql, true);
}
if ($doMajSirenDir) {
// Mise à jour des Administrations (BOAMP A, B ou MAPA)
echo date ('Y/m/d - H:i:s')." - Mise à jour des SIREN des Dirigeants PM...".EOL;
$nbSirened=0;
$tabDelete=array();
// Tableau RS>Siren
$tabRsSiren=array();
$tmp=$iDb->select('rncs_dirigeants', 'dirRS, adr_dep, dirSiren', "typeDir='PM' AND dirSiren>1000 AND dirRS<>'' GROUP BY dirRS", false, MYSQL_ASSOC);
foreach ($tmp as $nbId=>$tabTmp)
$tabRsSiren[trim($tabTmp['dirRS']).trim($tabTmp['adr_dep'])]=$tabTmp['dirSiren'];
echo date ('Y/m/d - H:i:s')." - La table RS/SIREN dirigeants PM RNCS contient $nbId lignes...".EOL;
$tmp=$iDb->select('rncs_dirigeants', 'id, dirRS, adr_dep, actif, siren, raisonSociale', "typeDir='PM' AND dirSiren<1000 AND dirRS<>'' ORDER BY dirRS, adr_dep", false, MYSQL_ASSOC);
$nbTmp=count($tmp);
foreach ($tmp as $iLot=>$tabTmp) {
$id=$tabTmp['id'];
$rs=trim($tabTmp['dirRS']);
$dep=trim($tabTmp['adr_dep']);
$sirenSte=$tabTmp['siren'];
$rsSte=$tabTmp['raisonSociale'];
$dirAct=$tabTmp['actif'];
if ($dirAct) $strAct='actif';
else $strAct='inactif';
//print_r($tabTmp);
if (isset($tabRsSiren[$rs.$dep])) {
$siren=$tabRsSiren[$rs.$dep];
if ($iDb->update('rncs_dirigeants', array('dirSiren'=>$siren), 'id='.$id, false,0,true)) {
$nbSirened++;
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : Mise à jour de id=$id avec $siren pour $rs ($dep) dirigeant $strAct de $rsSte ($sirenSte)...".EOL;
//$iDb->delete('bodacc_sirenage', "idTable='rncs_dirigeants' AND idAnn=$id",false,true);
$tabDelete[]=$id;
} elseif (mysql_errno()==1062) {
//if ($modeDebug) echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : Mise à jour impossible de id=$id avec $siren pour $rs dirigeant $strAct de $rsSte ($sirenSte)...".EOL;
/** @todo Vérifier pourquoi lent et doublon
$iDb->delete('bodacc_sirenage', "idTable='rncs_dirigeants' AND idAnn=$id",false,true);
*/
}
else
echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : ERREUR SQL ".mysql_errno()." - ".mysql_error().EOL;
}
}
if (count($tabDelete)>0) {
$strIDL=implode(',',$tabDelete);
$iDb->query("DELETE FROM bodacc_sirenage WHERE idTable='rncs_dirigeants' AND idAnn IN($strIDL);");
echo "DELETE FROM bodacc_sirenage WHERE idTable='rncs_dirigeants' AND idAnn IN($strIDL);".EOL.mysql_error();
}
if (@$nbInsert[3]>0 && @$nbUpdate[3]>0) $strInfo=" sur ".$nbInsert[3]." ajouts et ".$nbUpdate[3]." modifs.";
else $strInfo="";
echo date ('Y/m/d - H:i:s')." - Mise à jour de $nbSirened SIREN de dirigeants RNCS".$strInfo.EOL;
if (!isset($message)) $message='';
$message.=date('Y/m/d - H:i:s') ." - Mise à jour de $nbSirened SIREN de dirigeants RNCS".$strInfo.EOL;
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement INPI IMR (après sirenage dirigeants)', $message);
// CAC en provenance du BODACC
echo date ('Y/m/d - H:i:s')." - Mise à jour des SIREN des Dirigeants CAC...".EOL;
$nbSirened=0;
$tabDelete=array();
// Tableau RS>Siren
$strSqlDirRS="TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(UCASE(CONCAT(rs, nom, prenom)),'&',' ET '),'-',' '),'.',''),', ',' '),' ',' '),'PARTANT',''),'ANCIEN',''),'NOMINATION D\'UN',''),'NOMINATION D\'',''),'NOMINATION DU',''))";
$tabRsSiren=array();
$tmp=$iDb->select('bodacc_dirigeants', "$strSqlDirRS AS dirRS, dirSiren", "fonction BETWEEN 300 AND 304 AND dirSiren>1000 AND (rs<>'' OR nom<>'' OR prenom<>'') GROUP BY dirRS", false, MYSQL_ASSOC);
foreach ($tmp as $nbId=>$tabTmp)
$tabRsSiren[trim($tabTmp['dirRS'])]=$tabTmp['dirSiren'];
echo date ('Y/m/d - H:i:s')." - La table RS/SIREN dirigeants CAC contient $nbId lignes...".EOL;
$tmp=$iDb->select('bodacc_dirigeants', "idL, id, num, $strSqlDirRS AS dirRS, siren", "fonction BETWEEN 300 AND 304 AND dirSiren<1000 AND (rs<>'' OR nom<>'' OR prenom<>'') ORDER BY dirRS ASC, siren ASC", false, MYSQL_ASSOC);
$nbTmp=count($tmp);
foreach ($tmp as $iLot=>$tabTmp) {
$id=$tabTmp['id'];
$idL=$tabTmp['idL'];
$num=$tabTmp['num'];
$rs=trim($tabTmp['dirRS']);
$sirenSte=$tabTmp['siren'];
if (isset($tabRsSiren[$rs])) {
$siren=$tabRsSiren[$rs];
$rsSte='';
if ($sirenSte>1000) {
$tabId=@$iInsee->getIdentiteLight($sirenSte);
$rsSte=$tabId['Nom'];
}
if ($iDb->update('bodacc_dirigeants', array('dirSiren'=>$siren), "id=$id AND num=$num", false,0,true)) {
$nbSirened++;
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : Mise à jour de id=$id avec $siren pour $rs dirigeant de $rsSte ($sirenSte)...".EOL;
$tabDelete[]=$idL;
//$iDb->delete('bodacc_sirenage', "idTable='bodacc_dirigeants' AND idAnn=$idL",false,true);
} elseif (mysql_errno()==1062) {
$blazbla=1;
}
else
echo date('Y/m/d - H:i:s'). " - $iLot/$nbTmp : ERREUR SQL ".mysql_errno()." - ".mysql_error().EOL;
}
}
if (count($tabDelete)>0) {
$strIDL=implode(',',$tabDelete);
$iDb->query("DELETE FROM bodacc_sirenage WHERE idTable='bodacc_dirigeants' AND idAnn IN($strIDL);");
echo "DELETE FROM bodacc_sirenage WHERE idTable='bodacc_dirigeants' AND idAnn IN($strIDL);".EOL.mysql_error();
}
// if (@$nbInsert[3]>0 && @$nbUpdate[3]>0) $strInfo=" sur ".$nbInsert[3]." ajouts et ".$nbUpdate[3]." modifs.";
// else $strInfo="";
echo date ('Y/m/d - H:i:s')." - Mise à jour de $nbSirened SIREN de dirigeants CAC".EOL;
$message.=date('Y/m/d - H:i:s') ." - Mise à jour de $nbSirened SIREN de dirigeants CAC".EOL;
if (!$modeDebug) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,mpurcarin@scores-decisions.com,suivi@scores-decisions.com', 'Chargement INPI IMR', $message);
die();
}
}
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Chargement INPI IMR', $message);
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des flux RNCS IMR de l'INPI.".EOL;
die();

View File

@ -183,8 +183,11 @@ if ($loadInpiLocal) {
(l.codEven>0
OR j.acte_decision LIKE '%FUSION%' OR j.acte_decision LIKE '%ABSORPTION%'
OR j.acte_decision LIKE '%TRANSMISSION%UNIVERSELLE%PATRIMOINE%'
OR j.acte_decision LIKE '%TUP%' OR j.acte_decision LIKE '%T.U.P%'
OR j.acte_decision LIKE '%DISSOLUTION%' OR j.acte_nature LIKE '%DISSOLUTION%'
OR j.acte_decision LIKE '%MISE%SOMMEIL%'
OR j.acte_decision LIKE '%APPORT%PARTIEL%ACTIF%'
OR j.acte_decision LIKE '%SCISSION%'
) ",
false, MYSQL_ASSOC);
$nbAnnonces=count($AnnDb);
@ -199,12 +202,20 @@ if ($loadInpiLocal) {
$typeEven=$tabInsert['typeEven']*1;
$strEven='';
if ($typeEven==0) {//projet de fusion par absorption
if (preg_match('/(FUSION|ABSORPTION)/i', $tabInsert['acte_decision'], $matches)) {
if (preg_match('/(FUSION|ABSORPTION)/i', $tabInsert['acte_decision'], $matches)) {
if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2726;
else $typeEven=2725;
} elseif (preg_match('/TRANSMISSION.{1,3}UNIVERSELLE.{1,5}PATRIMOINE/i', $tabInsert['acte_decision'], $matches))
} elseif (preg_match('/SCISSION/i', $tabInsert['acte_decision'], $matches)) {
if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2741;
else $typeEven=2740;
} elseif (preg_match('/TRANSMISSION.{1,3}UNIVERSELLE.{1,5}PATRIMOINE/i', $tabInsert['acte_decision'], $matches) ||
preg_match('/T.U.P/i', $tabInsert['acte_decision'], $matches) ||
preg_match('/\bTUP\b/i', $tabInsert['acte_decision'], $matches))
$typeEven=2620;
elseif (preg_match('/DISSOLUTION/i', $tabInsert['acte_decision'], $matches) ||
elseif (preg_match('/APPORT.{1,3}PARTIEL.{1,5}ACTIF/i', $tabInsert['acte_decision'], $matches)) {
if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2665;
else $typeEven=2661;
} elseif (preg_match('/DISSOLUTION/i', $tabInsert['acte_decision'], $matches) ||
preg_match('/DISSOLUTION/i', $tabInsert['acte_nature'], $matches) )
$typeEven=2203;
elseif (preg_match('/MISE.{1,9}SOMMEIL/i', $tabInsert['acte_decision'], $matches)) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

208
batch/getJalApce.php Normal file
View File

@ -0,0 +1,208 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/**
** Ce script récupère les tribunaux compétents pour les codes insee des communes (site du ministère de la justice)
** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php
**
** Il faudrait penser à mettre à jour en automatique la liste des communes depuis le site de l'insee !!!
** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007
**/
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'common/curl.php');
$referer='http://www.apce.com/pid1642/journaux-d-annonces-legales.html?espace=1&tp=1';
$iDb=new WDB();
$iInsee=new MInsee();
/*
$url='http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01000&type=all';
$page=getUrl($url, '', '', $referer, false, 'www.justice.gouv.fr');
die($page['body']);
*/
/** Initialisation des codes départements **/
$tabDept=array();
for($i=1;$i<96;$i++) {
if ($i<10) $tabDept[]='0'.$i;
elseif ($i==20) { $tabDept[]='2A'; $tabDept[]='2B'; }
else $tabDept[]=$i;
}
$tabDept[]=971; $tabDept[]=972; $tabDept[]=973; $tabDept[]=974;
$tabDept[]=975; $tabDept[]=976; $tabDept[]=987; $tabDept[]=988;
foreach ($tabDept as $i=>$dep) {
/** Mise à jour provisoire de l'agrément **/
$iDb->update('tabJAL', array('agree'=>11), "dep='$dep' AND agree=1", false);
$url="http://www.apce.com/pid1642/journaux-d-annonces-legales.html?departement=$dep";
$page=getUrl($url, '', '', $referer, false);
$body=$page['body'];
if ($dep=='2A' || $dep=='2B') $dep=20;
if (preg_match('/<p>(?:.*)<h4>(.*)<\/h4>(?:.*)<\/p>/Uis', $body, $matches)) $libDep=$matches[1];
if (preg_match('/<div class="data">(?:.*)<ul class="arrow2">(.*)<\/ul>(?:.*)<\/div>/Uis', $body, $matches)) {
$strJal=$matches[1];
if (preg_match_all('/<li>(?:.*)<p>(.*)<strong>(.*)<\/strong>(?:.*)<br \/>(?:.*) -->(.*)<br \/>(.*) (\d\d\d\d\d) (.*)<br \/>(.*)<\/p>(?:.*)<\/li>/Uis', $strJal, $matches)) {
//print_r($matches);
foreach ($matches[2] as $j=>$nomJal) {
$tabJal=array( 'agree'=>1,
'dep' => $dep,
'nomJal' => $nomJal,
//siren int(9) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
'siteWeb' => strtr(trim($matches[1][$j]),array('<a href="'=>'','" target="_blank">'=>'')),
'adresse' => trim($matches[3][$j]),
'adresse2' => trim($matches[4][$j]),
'cp' => trim($matches[5][$j]),
'ville' => trim($matches[6][$j]),
);
if (preg_match('/<br \/>Tel \: (.*)<br \/>/Uis', $matches[7][$j], $matches2))
$tabJal['tel']=trim($matches2[1]);
if (preg_match('/<br \/>Fax \: (.*)<br \/>/Uis', $matches[7][$j], $matches2))
$tabJal['fax']=trim($matches2[1]);
if (preg_match('/<br \/>E-mail \: <a href="mailto\:(.*)">(?:.*)<br \/>/Uis', $matches[7][$j], $matches2))
$tabJal['email']= html_entity_decode(trim($matches2[1]));
if (preg_match('/<br \/>Parution \: (.*)<br \/>/Uis', $matches[7][$j], $matches2))
$tabJal['parution']=trim($matches2[1]);
if (preg_match('/<br \/>Parution \:(?:.*)<br \/>(.*)$/Uis', trim($matches[7][$j]), $matches2))
$tabJal['infos']=trim($matches2[1]);
/* datetime Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
dateUpdate timestamp')
/* parutionJours set('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche') latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
aboAnnuel double Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
aboAnnuelWeb double Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
aboAnnuelDateMaj date Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
editions varchar(255) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
sedDateAbo date Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
sedIdDerJal varchar(80) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
sedTailleDerJal int(11) Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
sedDateDerJal datetime Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
*/
$nomJal2=addslashes($nomJal);
$ret=$iDb->select('tabJAL', 'id, tel, fax, email, siteWeb', "dep='$dep' AND nomJal='$nomJal2'", false, MYSQL_ASSOC);
if (count($ret)==0) {
$tabInsert=array_merge($tabJal, array('dateInsert'=>date('YmdHis')));
$iDb->insert('tabJAL', $tabInsert, false);
echo date('Y/m/d - H:i:s') ." - Dept. $dep : Ajout du JAL '$nomJal'".EOL;
} elseif (count($ret)==1) {
if (@$ret[0]['siteWeb']<>'' && isset($tabJal['siteWeb']) && @$tabJal['siteWeb']=='') unset($tabJal['siteWeb']);
$iDb->update('tabJAL', $tabJal, "dep='$dep' AND nomJal='$nomJal2'", false);
echo date('Y/m/d - H:i:s') ." - Dept. $dep : MAJ du JAL '$nomJal'".EOL;
} else {
echo date('Y/m/d - H:i:s') ." - Dept. $dep : ATTENTION, plusieurs JAL pour '$nomJal'".EOL;
}
//print_r($tabJal);
}
}
}
/** Mise à jour définitive de l'agrément **/
$iDb->update('tabJAL', array('agree'=>0, 'dateFinAgree'=>date('Ymd')), "dep='$dep' AND agree!=1", false);
//die();
/*
if (strpos($body, "<P>Erreur rencontrée : java.lang.NullPointerException</P>")==0)
{
//print_r($page);
$cookie=$page['header']['Set-Cookie'];
$page=getUrl('http://annuaire-cfe.insee.fr/AnnuaireCFE/jsp/lcferf.jsp', $cookie, '', $url, false, 'annuaire-cfe.insee.fr');
$body=$page['body'];
if (preg_match('/<font size="2" face="Arial, Helvetica, sans-serif" color="#D01010">(?:.*)([\d]{2,3})(?:.*)- (.*) \/ (.*)<\/b><\/font><\/td>/Uis', $body, $matches)) {
$depLu=$matches[1];
$depLib=$matches[2];
$comLib=$matches[3];
}
$tabTmp=explode('<tr bgcolor="#FFFFFF">',$body);
//print_r($tabTmp);die();
$sleep=false;
foreach ($tabTmp as $j=>$tabTrib) {
if ($j<2) continue;
if (preg_match('/<td valign="top" width="48%"> <font face="Arial, Helvetica, sans-serif" size="2">(?:.*)<b>(.*)<\/b><br>(.*)<\/font>/Uis', $tabTrib, $results)) {
$libTri=strip_tags($results[1]);
if (preg_match("/^Chambre de commerce et d'industrie$/i", $libTri)) $typeTri='O';// CCI
elseif (preg_match("/^Chambre de métiers et de l'artisanat/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Chambre de métiers/i", $libTri)) $typeTri='T';// CM
elseif (preg_match("/^Greffe du tribunal de commerce/i", $libTri)) continue;//$typeTri='C';// TC
elseif (preg_match("/^Chambre d'agriculture/i", $libTri)) $typeTri='R';// AGR
elseif (preg_match("/^Chambre nationale de la batellerie artisanale/i", $libTri)) $typeTri='N';// BAR
elseif (preg_match("/^URSSAF/i", $libTri)) $typeTri='U';// URS
elseif (preg_match("/^Centre des impôts/i", $libTri)) $typeTri='Z';// CDI
else die("Libellé CFE '$libTri' inconnu !");
} else die('Erreur fatale');
if (preg_match_all('/(.*)(?:<br>|<\/a>)/Uis', $results[2], $results)) {
//print_r($results);die();
$results2=$results[1];
$adresse1=trim($results2[0]);
$adresse2=trim($results2[1]);
if (substr($adresse2,0,5)*1>0) {
$adresse2='';
$i=1;
} else $i=2;
$cpVille=trim(@$results2[$i]);
$cp=substr($cpVille,0,5)*1;
$ville=trim(substr($cpVille,5));
$tel=str_replace(' ','',strtr(@$results2[$i+1], 'TélFax :.',' '))*1;
$fax=str_replace(' ','',strtr(@$results2[$i+2], 'TélFax :.',' '))*1;
if (preg_match('/<a href="(.*)"/Ui', trim(@$results2[$i+3]), $results2)) $web=strtolower($results2[1]);
if ($web=='http://') $web='';
$id=md5($typeTri.$adresse1.$cp.$ville);
$str=$tabCom['codeInsee'].";1;$depLu;$depLib;$comLib;$id;$typeTri;$adresse1;$adresse2;$cp;$ville;$cpVille;$tel;$fax;$web";
$trib=$iDb->select('tribunaux', 'triId, triCode, triType, triNom, triCP, triTel, triFax', "triType='$typeTri' AND triCommentaire='$id'");
if (isset($trib[0]['triId'])) {
$id=$trib[0]['triId'];
$code=$trib[0]['triCode'];
$nom=$trib[0]['triNom'];
} else {
// Il faut insérer la fiche ID de la compétence
$tabAdr=$iInsee->structureVoie($adresse1);
$tabInsert=array('triType'=>$typeTri,
'triNom'=> $libTri,
'triCP'=>$cp,
'triWeb'=>$web,
'triAdrNum'=>$tabAdr['num'],
'triAdrIndRep'=>@$tabAdr['indRep'],
'triAdrTypeVoie'=>$tabAdr['typeVoie'],
'triAdrVoie'=>$tabAdr['libVoie'],
'triAdrComp'=>$adresse2,
'triVille'=>$ville,
'triTel'=>$tel,
'triFax'=>$fax,
'triCommentaire'=>$id,
);
$id=$iDb->insert('tribunaux', $tabInsert);
$code='';
$nom=$libTri;
print_r($tabInsert);
$sleep=true;
}
echo $str;
if ($id>0) {
$ret=$iDb->insert('tribunauxInsee', array('CodeInsee'=>$tabCom['codeInsee'],'triId'=>$id));
if (!$ret) {
echo ' Déjà en base.';
}
else {
echo ' ===> INSERE !!!';
$sleep=true;
}
echo "\n";
}
}
}
} else {
$str=$tabCom['codeInsee'].";0;;;".$tabCom['LibCom']."\n";
echo $str;
}*/
/*if ($sleep) randsleep(5, 15);//7,21);
else randsleep(2, 7);*/
// sleep(2);
}
die();
?>

800
batch/getLEI.php Normal file
View File

@ -0,0 +1,800 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
// ftp://ftp.gmeiutility.org/GMEIPlatform/CombinedLocalOperatingUnits/CommonFormat/GloballyAccepted/Full/
// ftp://ftp.gmeiutility.org/GMEIPlatform/CombinedLocalOperatingUnits/CommonFormat/GloballyAccepted/Delta/
function xml2assoc($xml) {
$assoc = null;
while($xml->read()){
switch ($xml->nodeType) {
case XMLReader::END_ELEMENT: return $assoc;
case XMLReader::ELEMENT:
$assoc[$xml->name][] = array('value' => $xml->isEmptyElement ? '' : xml2assoc($xml));
if($xml->hasAttributes){
$el =& $assoc[$xml->name][count($assoc[$xml->name]) - 1];
while($xml->moveToNextAttribute()) $el['@'.$xml->name] = $xml->value;
}
break;
case XMLReader::TEXT:
case XMLReader::CDATA: $assoc .= $xml->value;
}
}
return $assoc;
}/*
function xml2assoc($xml, array &$target = array()) {
while ($xml->read()) {
switch ($xml->nodeType) {
case XMLReader::END_ELEMENT:
return $target;
case XMLReader::ELEMENT:
$name = $xml->name;
$target[$name] = $xml->hasAttributes ? array() : '';
if (!$xml->isEmptyElement) {
$target[$name] = array();
xml2assoc($xml, $target[$name]);
}
if ($xml->hasAttributes)
while($xml->moveToNextAttribute())
$target[$name]['@'.$xml->name] = $xml->value;
break;
case XMLReader::TEXT:
case XMLReader::CDATA:
$target = $xml->value;
}
}
return $target;
}
*/
function loadCsv($nomFichier, $db, $table='', $create=false, $reload=false) {
$iDb=new WDB($db);
//if ($modeDebug) echo date('Y/m/d - H:i:s')." - Chargement de la table $table...".EOL;
$tabTailles=$tabTypes=$champ=array();
if ($table=='') $table=basename($nomFichier);
$fp = fopen($nomFichier, 'r');
$nbLignes=$nbInsert=0;
while (($data = fgetcsv($fp, 15000, ';')) !== FALSE) {
$nbLignes++;
if ($nbLignes==1) {
// On compte le nombre de colonnes du fichier
$nbColonnes=count($data);
$sql="CREATE TABLE IF NOT EXISTS `$table` (";
for($i=0; $i<$nbColonnes; $i++) {
if ($i==($nbColonnes-1) && trim($data[$i])=='') {
$nbColonnes--;
break;
} else {
$num=0;
while (in_array($data[$i], $champ)) {
$data[$i]=$data[$i].'_'.$i;
}
$sql.='`'.$data[$i].'` LONGTEXT,';
$tabTailles[$i]=0;
$champ[$i]=$data[$i];
}
}
$sql=substr($sql,0,strlen($sql)-1); // Retrait de la dernière virgule
$sql.=") TYPE=MYISAM COMMENT='".basename($nomFichier)." du ".date('d/m/Y H:i', filemtime($nomFichier))." (".round(filesize($nomFichier)/1024)." ko)';";
if ($create) {
$sql0="DROP TABLE IF EXISTS `$table`;";
$iDb->query($sql0);
if ($iDb->query($sql))
'';//echo date ('Y/m/d - H:i:s')." - Création de la table $table OK...".EOL;
else {
echo $iDb->getLastError().EOL;
die(date ('Y/m/d - H:i:s')." - Impossible de créer la table $table !".EOL."Requête SQL = $sql".EOL);
}
}
if ($reload) {
$sql="TRUNCATE TABLE `$table`;";
if ($iDb->query($sql))
'';//echo date ('Y/m/d - H:i:s')." - Création de la table $table OK...".EOL;
else {
echo $iDb->getLastError().EOL;
die(date ('Y/m/d - H:i:s')." - Impossible de créer la table $table !".EOL."Requête SQL = $sql".EOL);
}
}
continue;
}
$tabDataToInsert=array();
for($i=0; $i<$nbColonnes; $i++) {
$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if (strlen($data[$i])>$tabTailles[$i])
$tabTailles[$i]=strlen($data[$i]);
if (gettype($data[$i])=='string') {
if (is_numeric($data[$i])) {
if (round($data[$i]*1)<>($data[$i]*1))
$tabTypes[$i][]='double';
else
$tabTypes[$i][]='integer';
} else
$tabTypes[$i][]='string';
} else $tabTypes[$i][]=gettype($data[$i]);
}
$ret=$iDb->insert($table, $tabDataToInsert);
if ($ret!=1) {
echo date ('Y/m/d - H:i:s') . ' - ERREUR n°'.mysql_errno()." à l'insertion de la ligne n°$i : ". implode(';', $data) ." !".EOL;
echo date ('Y/m/d - H:i:s') . ' - '.mysql_error() .EOL;
}
unset($tabDataToInsert);
}
fclose($fp);
if ($create) {
// On réduit la taille des colonnes au max de chaque champ
for($i=0; $i<$nbColonnes; $i++) {
if ($tabTailles[$i]<256) {
$tabTmp=array_unique($tabTypes[$i]);
//print_r($tabTmp);
if (count($tabTmp)==1) {
reset($tabTmp);
switch (current($tabTmp)) {
case 'boolean': $strType='BOOL'; break;
case 'integer': $strType="BIGINT(".$tabTailles[$i].")"; break;
case 'double': $strType='DOUBLE'; break;
default: $strType="VARCHAR(".$tabTailles[$i].")";break;
}
}
$sql="ALTER TABLE `$table` CHANGE `".$champ[$i]."` `".$champ[$i]."` $strType NULL DEFAULT NULL ";
if ($iDb->query($sql))
echo '';//date ('Y/m/d - H:i:s')." - Taille du champ $i (". $champ[$i] .") passée à ". $tabTailles[$i] ."...".EOL;
else
echo '';//date ('Y/m/d - H:i:s')." - Impossible de modifier la taille du champ $i (". $champ[$i] .") à ". $tabTailles[$i] ." !".EOL;
}
}
}
return $nbLignes;
}
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS]
Téléchargement et mise à jour d'informations en provenance de Bases Internet.
Options:
-d Mode debug
-t Traiter tous les fichiers à mettre à jour (*)
-r Traiter les fichiers Risques (prim.net)
-x Traiter les fichiers Imports/Exports des Douanes
-p Traiter les fichiers du Registre français des émissions polluantes
-f Traiter le fichier Finess (Etablissements de Santé)
(*): Valeur par défaut !
";
$modeDebug=false;
$tAll=true;
$tRisks=$tXport=$tPollu=$tSante=false;
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 't': $tAll=true; break;
case 'r': $tAll=false; $tRisks=true; break;
case 'x': $tAll=false; $tXport=true; break;
case 'p': $tAll=false; $tPollu=true; break;
case 'f': $tAll=false; $tSante=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabFichier[$j]=$argv[$i];
$j++;
}
}
}
if ($tAll) $tRisks=$tXport=$tPollu=$tSante=true;
$iDb=new WDB('sdv1');
echo date('Y/m/d - H:i:s')." - Début du script...".EOL;
$tabSrcLei=array(
/* 'lu'=>array( //'https://www.gmeiutility.org/actions/DailyFileDownload/?termsAndConditions=true&fileName=20150119T064922.zip&downloadFile=Envoyer'
//'urlBase'=>'https://www.geiportal.org/customer',
'urlListe'=>'https://www.gmeiutility.org/actions/DailyFileDownload/',
'listeReg'=>'/<td><a href="\.(.*)">(LEI_Full_(?:.*))<\/a>/Uim',
'listeUrl'=>1,
),
'de'=>array( 'urlBase'=>'https://www.geiportal.org/customer',
'urlListe'=>'https://www.geiportal.org/customer/index.php?a=sea&act=downloadcff&lang=en',
'listeReg'=>'/<td><a href="\.(.*)">(LEI_Full_(?:.*))<\/a>/Uim',
'listeUrl'=>1,
),*/
'fr'=>array( 'urlBase'=>'https://lei-france.insee.fr',
'urlListe'=>'https://lei-france.insee.fr/telechargement',
'listeReg'=>'/<td headers="dateFichier">\s+(.*)<\/td>\s+<td headers="dateNom">\s+<a href="(.*)">(.*)<\/a>/Uis',
'listeUrl'=>2,
),
);
$tabFichier=array();
foreach ($tabSrcLei as $pays=>$tabSrc) {
$url=$tabSrc['urlListe'];
$regex=$tabSrc['listeReg'];
$fichier=REP_TEMP.'lei_'.$pays.'_'.date('Ymd').'.zip';
if (!(file_exists($fichier) && date('Ymd',filemtime($fichier))==date('Ymd'))) {
$page=getUrl($url);
if ($page['code']<>200) die('Code retour finess différent de 200 !'.EOL);
$cookie=$page['header']['Set-Cookie'];
$referer=$url;
$body=$page['body'];
// print_r($page);
// die();
if (preg_match($regex, $body, $matches)) {
$url=$tabSrc['urlBase'].$matches[$tabSrc['listeUrl']];
$tdeb=microtime(1);
// $url='http://finess.sante.gouv.fr/finess/jsp/liste.do?order=CSVEQUIP&noFiness=&export=complet';
echo date('Y/m/d - H:i:s')." - Début de récupération de l'URL : $url".EOL;
$page=getUrl($url, $cookie, '', $referer);
$tfin=microtime(1);
$duree=round($tfin-$tdeb,1);
$tailleKo=round(strlen($page['body'])/1024,1);
$debit=round((strlen($page['body'])/($tfin-$tdeb))/1024,1);
$strXml=$page['body'];
file_put_contents($fichier, $strXml);
unset($strXml);
echo date('Y/m/d - H:i:s')." - Fin de la récupération du fichier $fichier de $tailleKo Ko en $duree s ($debit Ko/s).".EOL;
}
} else {
$tailleKo=round(filesize($fichier)/1024,1);
echo date('Y/m/d - H:i:s')." - Fichier $fichier de $tailleKo Ko déjà téléchargé.".EOL;
}
$zip = new ZipArchive;
if ($zip->open($fichier) === TRUE) {
for ($i=0; $i<$zip->numFiles;$i++) {
$tabIndex[$i]=$zip->statIndex($i);
/* if ($modeDebug){
echo date('Y/m/d - H:i:s')." - Fichier ".basename($tabIndex['name'])."en cache datant du ".date('d/m/Y H:i:s', filectime('/tmp/'.$tabIndex['name']))." (".round(filesize('/tmp/'.$tabIndex['name'])/1024,1)." ko)".EOL;
echo date('Y/m/d - H:i:s')." - Fichier dans l'archive téléchargée datant du ".date('d/m/Y H:i:s', $tabIndex['mtime'])." (".round($tabIndex['size']/1024,1)." ko)".EOL;
}*/
}
//print_r($tabIndex);die();
$zip->extractTo(REP_TEMP);
$zip->close();
$fichierXml=$tabIndex[0]['name'];
}
//ini_set('memory_limit', -1);
echo memory_get_usage ().' octets'.EOL;
echo date('Y/m/d - H:i:s')." - Fin de la décompression du fichier $fichierXml.".EOL;
/*
$xml_string=file_get_contents(REP_TEMP.$fichierXml);
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);
die();
*/
/*
$racine = simplexml_load_file(REP_TEMP.$fichierXml);
$header = $racine->{'lei:LEIData'}->{'lei:LEIHeader>'}->{'lei:ContentDate'};
echo $header.EOL;
die();
/*
<lei:ContentDate>2015-01-18T20:30:11.854+01:00</lei:ContentDate>
<lei:Originator>969500Q2MA9VBQ8BG884</lei:Originator>
<lei:FileContent>LOU_FULL_PUBLISHED</lei:FileContent>
<lei:DeltaStart>2015-01-17T08:30:11.000+01:00</lei:DeltaStart>
<lei:RecordCount>20828</lei:RecordCount>
</lei:LEIHeader>
<lei:LEIRecords>
<lei:LEIRecord>
*
$count = count($node->children());
$liste = $header->children();
$first = $liste[0]; // Premier élément fils
// Lecture de tous les paragraphe
foreach($liste as $nom => $element){
echo "Le nom $nom contient \"".$element."\"<br/>";
}
die();
*/
$reader = new XMLReader();
if (!$reader->open(REP_TEMP.$fichierXml))
die("Failed to open : $fichierXml".EOL);
$assoc = xml2assoc($reader);
$reader->close();
unset($reader);
$header=$assoc['lei:LEIData'][0]['value']['lei:LEIHeader'][0]['value'];
$tabInsertFichier=array(
'LEIDataFile'=> $fichierXml,
'OriginIso2'=> $pays,
'ContentDate'=> $header['lei:ContentDate'][0]['value'],
'Originator'=> $header['lei:Originator'][0]['value'],
'FileContent'=> $header['lei:FileContent'][0]['value'],
'DeltaStart'=> @$header['lei:DeltaStart'][0]['value'],
'RecordCount'=> @$header['lei:RecordCount'][0]['value'],
'NextVersion'=> @$header['lei:NextVersion'][0]['value'],
'Extension'=> @$header['lei:Extension'][0]['value'],
);
unset($header);
$records=$assoc['lei:LEIData'][0]['value']['lei:LEIRecords'][0]['value']['lei:LEIRecord'];
$nbNode=count($records);
unset($assoc);
echo memory_get_usage ().' octets'.EOL;
print_r($tabInsertFichier);
echo date('Y/m/d - H:i:s')." - Fin de la lecture 1 du fichier $fichierXml : $nbNode noeuds.".EOL;
foreach ($records as $i=>$record) {
$record=$record['value'];
$lei=$record['lei:LEI'][0]['value'];
$entity=$record['lei:Entity'][0]['value'];
$legalName=utf8_decode($entity['lei:LegalName'][0]['value']);
$registration=$record['lei:Registration'][0]['value'];
$extension=@$record['lei:Extension'][0]['value'];
$tabInsert=array( 'LEI'=> $lei,
'LegalName'=> $legalName,
'OtherName'=> @utf8_decode($entity['lei:OtherEntityNames'][0]['value']['lei:OtherEntityName'][0]['value']),
'OtherNameType'=> @$entity['lei:OtherEntityNames'][0]['value']['lei:OtherEntityName'][0]['@type'],
'LegalAddress1'=> utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Line1'][0]['value']),
'LegalAddress2'=> @utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Line2'][0]['value']),
'LegalAddress3'=> @utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Line3'][0]['value']),
'LegalAddress4'=> @utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Line4'][0]['value']),
'LegalAddressCity'=> utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:City'][0]['value']),
'LegalAddressRegion'=> @utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Region'][0]['value']),
'LegalAddressCountry'=> utf8_decode($entity['lei:LegalAddress'][0]['value']['lei:Country'][0]['value']),
'LegalAddressPostalCode'=> @$entity['lei:LegalAddress'][0]['value']['lei:PostalCode'][0]['value'],
'HeadAddress1'=> utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Line1'][0]['value']),
'HeadAddress2'=> @utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Line2'][0]['value']),
'HeadAddress3'=> @utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Line3'][0]['value']),
'HeadAddress4'=> @utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Line4'][0]['value']),
'HeadAddressCity'=> utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:City'][0]['value']),
'HeadAddressRegion'=> @utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Region'][0]['value']),
'HeadAddressCountry'=> utf8_decode($entity['lei:HeadquartersAddress'][0]['value']['lei:Country'][0]['value']),
'HeadAddressPostalCode'=> @$entity['lei:HeadquartersAddress'][0]['value']['lei:PostalCode'][0]['value'],
'BusinessRegisterEntityID'=> @$entity['lei:BusinessRegisterEntityID'][0]['value'],
'LegalJurisdiction'=> @$entity['lei:LegalJurisdiction'][0]['value'],
'LegalForm'=> @utf8_decode($entity['lei:LegalForm'][0]['value']),
'AssociatedEntityName'=> @$entity['lei:AssociatedEntity'][0]['value']['lei:AssociatedEntityName'][0]['value'],
'AssociatedEntityLEI'=> @$entity['lei:AssociatedEntity'][0]['value']['lei:AssociatedLEI'][0]['value'],
'AssociatedEntityType'=> @$entity['lei:AssociatedEntity'][0]['value']['@type'],
'EntityStatus'=> $entity['lei:EntityStatus'][0]['value'],
'EntityExpirationDate'=> @$entity['EntityExpirationDate'][0]['value'],
'EntityExpirationReason'=> @$entity['EntityExpirationReason'][0]['value'],
'SuccessorEntityName'=> @$entity['lei:SuccessorEntity'][0]['value']['lei:SuccessorEntityName'][0]['value'],
'SuccessorEntityLEI'=> @$entity['lei:SuccessorEntity'][0]['value']['lei:SuccessorLEI'][0]['value'],
'SuccessorEntityType'=> @$entity['lei:SuccessorEntity'][0]['value']['@type'],
'EntityNextVersion'=> @$entity['lei:NextVersion'][0]['value'],
'InitialRegistrationDate'=> $registration['lei:InitialRegistrationDate'][0]['value'],
'LastUpdateDate'=> $registration['lei:LastUpdateDate'][0]['value'],
'RegistrationStatus'=> $registration['lei:RegistrationStatus'][0]['value'],
'NextRenewalDate'=> $registration['lei:NextRenewalDate'][0]['value'],
'ManagingLOU'=> $registration['lei:ManagingLOU'][0]['value'],
'ValidationSources'=> @$registration['lei:ValidationSources'][0]['value'],
'RegistrationNextVersion'=> @$registration['lei:NextVersion'][0]['value'],
'NextVersion'=> @$record['lei:NextVersion'][0]['value'],
'FundNumber'=> @$extension['leifr:FundNumber'][0]['value'],
'FundManagerBusinessRegisterID'=> @$extension['leifr:FundManagerBusinessRegisterID'][0]['value'],
'siren'=> @$extension['leifr:SIREN'][0]['value'],
'NACEClassCode'=> @$extension['leifr:EconomicActivity'][0]['value']['leifr:NACEClassCode'][0]['value'],
'SousClasseNAF'=> @$extension['leifr:EconomicActivity'][0]['value']['leifr:SousClasseNAF'][0]['value'],
'LegalFormCodification'=> @$extension['leifr:LegalFormCodification'][0]['value'],
'dateInsert'=> $tabInsertFichier['ContentDate'],
);
$ret=$iDb->insert('bourse_lei', $tabInsert, false);
//echo mysql_error().EOL;
if (!$ret) {
//echo mysql_errno().' : '.mysql_error().EOL;
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update('bourse_lei', $tabInsert, "LEI='$lei'", false);
echo date('Y/m/d - H:i:s')." - $i/$nbNode : Update $lei\t$legalName".EOL;
}
} else
date('Y/m/d - H:i:s')." - $i/$nbNode : INSERT $lei\t$legalName".EOL;
}
die();
/*
$xml_string=file_get_contents(REP_TEMP.$fichierXml);
$xml = simplexml_load_string($xml_string);
//$sxml = simplexml_load_file(REP_TEMP.$fichierXml);
print_r($xml);
die();
foreach($sxml as $node) {
$lei = htmlspecialchars((string)$node->{'lei:LEI'}, ENT_QUOTES);
$leiEnt= htmlspecialchars((string)$node->{'lei:Entity'} , ENT_QUOTES);
echo "$lei\t$leiEnt".EOL;
}
die();
$assoc = xml2assoc($reader);
$reader->close();
unset($reader);
$nbNode=count($assoc[0]['val'][1]['val']);
echo memory_get_usage ().' octets'.EOL;
echo date('Y/m/d - H:i:s')." - Fin de la lecture 1 du fichier $fichierXml : $nbNode noeuds.".EOL;
foreach($assoc[0]['val'][1]['val'] as $i=>$record) {
//print_r($record);
$newRecord=convertArray($record);
print_r($newRecord);
}
//print_r($assoc);
die();
// create a new object
$parser = new SimpleLargeXMLParser();
// load the XML
$parser->loadXML(REP_TEMP.$fichierXml);
//$array = $parser->parseXML("//myFirstNode/color-palettes/color[@type='hex']"); // get all colors in hex format
//$array = $parser->parseXML("//myFirstNode/first-100-numbers/number[@n>'50']"); // get all numbers bigger then 50
//$array = $parser->parseXML("//myFirstNode/searchengines"); // get all search engines
//$array = $parser->parseXML("//myFirstNode"); // get all XML file
$array = $parser->parseXML(); // get all XML file - faster if you specify the first node
// in case you also need the attibutes (with values) you need to pass the 2rd parameter as true
// the array structure will change in this case
//$array = $parser->parseXML("//myFirstNode/color-palettes/color[@type='hex']", true); // get all colors in hex format
//$array = $parser->parseXML("//myFirstNode/first-100-numbers/number[@n>'50']", true); // get all numbers bigger then 50
//$array = $parser->parseXML("//myFirstNode/searchengines", true); // get all search engines
//$array = $parser->parseXML("//myFirstNode", true); // get all XML file
// in case you have special XML files (like RSS or Atom feeds) you need to register the namespaces
//$parser->registerNamespace("atom", "http://www.w3.org/2005/Atom"); // register the namespace
//$array = $parser->parseXML("//atom:feed/atom:entry"); //
echo memory_get_usage ().' octets'.EOL;
echo date('Y/m/d - H:i:s')." - Fin de la lecture 2 du fichier $fichierXml : $nbNode noeuds.".EOL;
//print "<pre>";
print_r($array);
//print "</pre>";
die();
foreach ($assoc[0]['childs'][1]['childs'] as $i=>$record) {
print_r($record);
}
//print_r($assoc);
die();
/*
while($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'lei:LEIHeader') {
$address = $reader->getAttribute('address');
$lattitude = $reader->getAttribute('lat');
$longitude = $reader->getAttribute('lng');
}
$reader->close();
*/
$nbNode=0;
$tabNode=array();
while($reader->read())
{
if ($reader->name === 'lei:LEIHeader') {
//parse column node to into $columns array
echo "Header".EOL;
}
if($reader->nodeType == XMLReader::ELEMENT) $nodeName = $reader->name;
if($reader->nodeType == XMLReader::TEXT || $reader->nodeType == XMLReader::CDATA)
{
/*
<lei:LEIHeader>
<lei:ContentDate>2015-01-15T20:30:13.455+01:00</lei:ContentDate>
<lei:Originator>969500Q2MA9VBQ8BG884</lei:Originator>
<lei:FileContent>LOU_FULL_PUBLISHED</lei:FileContent>
<lei:DeltaStart>2015-01-14T08:30:13.000+01:00</lei:DeltaStart>
<lei:RecordCount>20801</lei:RecordCount>
</lei:LEIHeader>
*/
$tabNode[$nodeName]=array(
'value'=>$reader->value,
'nbAttribute'=>$reader->attributeCount,
);
$attributeCount ;
/* if ($nodeName == 'LEI') {
$id = $reader->value;
echo $reader->readString().EOL;
die();
}
if ($nodeName == 'LegalName') $tab =
if ($nodeName == 'AssociatedEntityName') $title = $reader->value;
/* if ($nodeName == 'author') $author = $reader->value;
if ($nodeName == 'isbn') $isbn = $reader->value;
if ($nodeName == 'image') $image = $reader->value;
if ($nodeName == 'ean') $ean = $reader->value;
if ($nodeName == 'published') $published = $reader->value;
if ($nodeName == 'publisher') $publisher = $reader->value;
if ($nodeName == 'pages') $pages = $reader->value;
if ($nodeName == 'price') $price = $reader->value;
if ($nodeName == 'description') $description = $reader->value;
if ($nodeName == 'status') $status = $reader->value;*
$ean = '';*/
}
//echo "$id\t$url\t$title".EOL;
if($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == 'lei:LEIRecord')
{
//echo "Node $nbNode:".EOL;
$tabNodes[$nbNode]=$tabNode;
$nbNode++;
$tabNode=array();
}
}
$reader->close();
echo date('Y/m/d - H:i:s')." - Fin de la lecture du fichier $fichierXml : $nbNode noeuds.".EOL;
print_r($tabNodes);
//$nbNode
die();
$xmLei = simplexml_load_file(REP_TEMP.$fichierXml);
echo file_get_contents(REP_TEMP.$fichierXml);
die();
//echo memory_get_peak_usage();
print_r($xmLei);
echo memory_get_usage ().' octets'.EOL;
die();
}
die();
echo date('Y/m/d - H:i:s')." - Fin du script...".EOL;
function xml2array($xml, $name)
{
print "<NOEUD>".EOL;
$tree = null;
print("I'm inside " . $name . EOL);
while($xml->read())
{
if($xml->nodeType == XMLReader::END_ELEMENT)
{
print "</NOEUD 2>".EOL;
return $tree;
}
else if($xml->nodeType == XMLReader::ELEMENT)
{
$node = array();
print("Adding " . $xml->name .EOL);
//$node['tag'] = $xml->name;
//$node[$xml->name]='';
if($xml->hasAttributes) {
$attributes = array();
while($xml->moveToNextAttribute())
{
print("Adding attr " . $xml->name ." = " . $xml->value . EOL);
$attributes[$xml->name] = $xml->value;
}
$node['attr'] = $attributes;
}
if(!$xml->isEmptyElement)
{
$childs = xml2array($xml, $xml->name);
if (count($childs)<=1)// && !is_array($childs[0]))
$node[$xml->name] = $childs[0];
else
$node[$xml->name] = $childs;
}
print($node[$xml->name]. " added".EOL);
$tree[] = $node;
}
else if($xml->nodeType == XMLReader::TEXT)
{
$tree[]= $xml->value;
/*
$node = array();
$node['text'] = $xml->value;
$tree[] = $node;*/
print "text added = " . $xml->value .EOL;
}
}
print "returning " . count($tree) . " childs".EOL;
print "</NOEUD 1>".EOL;
return $tree;
}
/*
function xml2assoc(&$xml) {
$assoc = NULL;
$n = 0;
while($xml->read()){
if($xml->nodeType == XMLReader::END_ELEMENT) break;
if($xml->nodeType == XMLReader::ELEMENT and !$xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = xml2assoc($xml);
$n++;
}
else if($xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = "";
$n++;
}
else if($xml->nodeType == XMLReader::TEXT) $assoc = $xml->value;
}
return $assoc;
}
*/
class SimpleLargeXMLParser {
/**
* DOMDocument
*
* @var DOMDocument
*/
protected $XMLDoc;
/**
* DOMXPath
*
* @var DOMXPath
*/
protected $XPath;
/**
* Namespaces to register for XPath
*
* @var array
*/
protected $namespaces = array();
public function __construct() {
$this->XMLDoc = new DOMDocument();
$this->XMLDoc->xmlStandalone = true;
$this->XMLDoc->preserveWhiteSpace = false;
}
public function registerNamespace ($prefix, $namspaceURI) {
$this->XPath->registerNamespace($prefix, $namspaceURI);
}
public function loadXML ($source) {
$load = $this->XMLDoc->Load($source);
$this->XPath = new DOMXPath($this->XMLDoc);
return $load;
}
/**
* Parse an XML
*
* @param string $source
* @param string $query
* @param bool $getAttributes
* @return array
*/
public function parseXML ($query = false, $getAttributes = false) {
$return = array();
if ($query == false || $query == "//") { // no query defined - get the root
$query = "*";
}
$components = $this->XPath->query($query);
if ($components instanceof DOMNodeList) {
foreach ($components as $component) {
if ($component instanceof DOMElement) {
$return[] = self::getChildern($component, $getAttributes);
}
}
}
return $return;
}
/**
* Get the childrens of a DOM node as array or as a string if the node does not have childrens
*
* @param DOMElement $node
* @param bool $getAttributes
* @return array / string
*/
protected static function getChildern (DOMElement $node, $getAttributes) {
$getAttributes = (bool)$getAttributes;
if ($node->hasChildNodes()) {
$return = array();
foreach ($node->childNodes as $n) {
if ($n instanceof DOMText) {
if ($getAttributes === true) {
$value = $node->nodeValue;
$attributes = array();
foreach ($node->attributes as $attrNode) {
$attributes[$attrNode->name] = $attrNode->value;
}
$return[$node->nodeName] = array('value'=>$value, 'attributes'=>$attributes);
} else {
$return = $node->nodeValue;
}
} elseif ($n instanceof DOMElement) {
if ($getAttributes === true) {
$value = self::getChildern($n, $getAttributes);
$attributes = array();
foreach ($n->attributes as $attrNode) {
$attributes[$attrNode->name] = $attrNode->value;
}
$return[$n->nodeName][] = array('value'=>$value, 'attributes'=>$attributes);
} else {
$return[$n->nodeName][] = self::getChildern($n, false);
}
}
}
return $return;
} else {
return $node->nodeValue;
}
}
}
?>

View File

@ -209,6 +209,8 @@ for($i=0; $i<1000; $i++) {
while (true) {
$url="http://api.bing.net/json.aspx?AppId=$appId&Version=2.2&Market=$cultureInfo&Query=$query&Sources=$source&Image.Count=$numResults&Image.Offset=$offset&JsonType=raw";//&Adult=On";
$page=getUrl($url, '', '', $referer, false);
print_r($page);
die();//Mentions légales Lannonceur est léditeur de ce site. PagesJaunes est le prestataire technique.
$json=$page['body'];
$tabJson=json_decode($json, true);
$tabJson=$tabJson['SearchResponse'];

View File

@ -22,13 +22,14 @@ Options:
-b Mise à jour des marques issues des PDF
-s Mise à jour intelligente des siren
-a Découpage des adresses postales non encore découpées
-t Decoupage des fichiers images
(*): Valeur par défaut !
";
$iMarque=new MMarques();
$iInsee=new MInsee();
$modeDebug=$force=$max=$annee=$majNum=$majNom=$majObj=$getPdf=$getMBopi=$majSiren=$majAdresses=$majDate=false;
$modeDebug=$force=$max=$annee=$majNum=$majNom=$majObj=$getPdf=$getMBopi=$majSiren=$majAdresses=$majDate=$majImages=false;
$nbMajSiren=$nbMajSiren2=$nbMajAdr=0;
$tabMarques=array();
@ -55,6 +56,7 @@ if ($_SERVER['argc']>1)
case 'b': $getMBopi=true; break;
case 's': $majSiren=true; break;
case 'a': $majAdresses=true; break;
case 't': $majImages=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
@ -94,7 +96,7 @@ if ($getPdf) {
//$lastAnnee=2011;
for ($annee=$lastAnnee; $annee<=date('Y'); $annee++) {
if ($annee==date('Y')) {
$numDeb=1;//$lastMois;
$numDeb=$numFin;
$numFin=date('W');
//echo 'A'.EOL;
} elseif ($numFin==52 && $annee+1==date('Y')) {
@ -248,6 +250,62 @@ if ($majAdresses) {
echo date ('Y/m/d - H:i:s')." - $nbMajAdr adresses ont été mis à jour sur $nbLots.".EOL;
}
if ($majImages) {
$nbLots=$iDb->select('marques', "id, nomMarque, numeroMarque, dateDepot, YEAR(dateDepot) AS annee, dateDepot*1 AS dateDepotYMD, dateUpdate",
"urlImage<>'' AND fileName=''", false, MYSQL_ASSOC, true);
$iDb2=new WDb('bopi');
$tabExt=array('gif','png','jpg','jpeg','bmp','pcx');
$i=0;
while ($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$id=$tabTmp['id'];
$nom=$tabTmp['nomMarque'];
$dateDepot=$tabTmp['dateDepot'];
$dateDepotYMD=$tabTmp['dateDepotYMD'];
$annee=$tabTmp['annee'];
$num=$tabTmp['numeroMarque'];
$dateUpdate=$tabTmp['dateUpdate'];
$filename=DOC_WEB_LOCAL."marques/$num";
$dossierCible=DOC_WEB_LOCAL."marques/$annee/$dateDepotYMD/";
$ext='';
echo "$i/$nbLots : $id, $num, $nom, $dateDepot";
$tabUpdate=array();
foreach ($tabExt as $ext) {
$fileNameLong=$filename.".$ext";
if (file_exists($fileNameLong)) {
$fileName=basename($fileNameLong);
$tabUpdate=array('fileName'=>$fileName, 'dateUpdate'=>$dateUpdate);
break;
}
}
if(count($tabUpdate)>0) {
@mkdir(DOC_WEB_LOCAL."marques/$annee");
@mkdir($dossierCible);
@copy($fileNameLong,$dossierCible.$fileName);
echo ", $fileName";
//@mkdir(DOC_WEB_LOCAL."marques/old");
@move($fileNameLong,DOC_WEB_LOCAL."marques/old/$fileName");
if (!@$iDb2->update('marques', $tabUpdate, "id=$id", false))
echo "\tERREUR SQL !!!".EOL;
else {
$nbMajAdr++;
echo "\tok".EOL;
}
} else {
$res=$iMarque->getListeMarques($num, '', '', '', true);
echo "\tFICHIER INEXISTANT $res !!!".EOL;
//die();
}
$i++;
}
echo date ('Y/m/d - H:i:s')." - $nbMajAdr adresses ont été mis à jour sur $nbLots.".EOL;
}
die();
$repriseIdTxt=false;

151
batch/getQualigaz.php Normal file
View File

@ -0,0 +1,151 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des tribunaux compétents pour les codes insee des communes depuis le site du ministère de la justice.
/**@todo : Il faudrait penser à mettre à jour en automatique la liste des communes depuis le site de l'insee !!!**/
Options :
-d Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
/** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php
**
** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007
**/
$iDb=new WDB('sdv1');
$table='qualigaz';
$urlBase='http://www.qualifelec.fr/recherche/fiche.php?idadh=';
$tabZones=array('codeQE'=>'&nbsp;<b>Code QE n&deg;</b>(?:.*)&nbsp;(\d+)</td>',
//'urlImg'=>'<td align="center" height="133"><img src="(.*)"></td>',
//http://www.qualifelec.fr/recherche/fiche.php?idadh=9011&PHPSESSID=7cqetmc0e54f3th3lhhr4e3e86buikbe
// Traiter logo et catégorie + activité déclaré
'raiSoc'=>'&nbsp;<b>Raison Sociale</b>(?:.*)&nbsp;(.*)</td>',
'adresse'=>'&nbsp;<b>Adresse</b>(?:.*)<tr bordercolor="#2652A0">(?:.*)<td width="50%" height="25">&nbsp;(.*)</td>',
'chef'=>'&nbsp;<b>Chef(?:.*)entreprise</b></font></td>(?:.*)</td>(?:.*)<td width="50%" height="25">&nbsp;(.*)</td>',
'cp'=>'&nbsp;<b>Code(?:.*)Postal</b>(?:.*)<td width="50%" height="25">&nbsp;(\d\d\d\d\d)</td>',
'ville'=>'&nbsp;<b>Ville</b>(?:.*)<td width="50%" height="25">&nbsp;(\D+)</td>',
'tel'=>'&nbsp;<b>T&eacute;l&eacute;phone</b>(?:.*)&nbsp;(\d\d\d\d\d\d\d\d\d\d)</td>',
'fax'=>'&nbsp;<b>Fax</b>(?:.*)&nbsp;(?:\d\d\d\d\d\d\d\d\d\d)</td>(?:.*)&nbsp;(\d\d\d\d\d\d\d\d\d\d)</td>',
'mail'=>'&nbsp;<b>E-mail</b>(?:.*)&nbsp;<a href="mailto:(.*)">',
'web'=>'&nbsp;<b>Site(?:.*)Internet</b>(?:.*)&nbsp;<a href="(.*)" target="blank">',
'fj'=>'&nbsp;<b>Forme(?:.*)juridique</b>(?:.*)<td width="30%" height="25">&nbsp;(.*)</td>',
'siret'=>'&nbsp;<b>SIREN(?:.*)<td width="40%" height="25">&nbsp;(\d+)</td>',
'naf'=>'&nbsp;<b>Code(?:.*)NAF</b>(?:.*)<td width="30%" height="25" bordercolor="#2652A0">&nbsp;(.*)</td>',
'qualifs[qualifUrl,qualifCode,qualifLib]'=>'<tr bordercolor="#2652A0">(?:.*)<td width="20%" height="25"><a href="(.*)" target="parent">&nbsp;(.*)</a></td>(?:.*)<td width="85%" height="25">&nbsp;(.*)</td>(?:.*)</tr>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
$ret=$iDb->select('qualifelec', 'MAX(id)', '1', false);
$iDeb=$ret[0][0];
$nbVides=0;
echo date ('Y/m/d - H:i:s')." - Dernier id entreprise '$table' = $iDeb".EOL;
for($i=$iDeb;;$i++) {
//http://www.qualifelec.fr/recherche/fiche.php?idadh=8148&PHPSESSID=i1jgdorhdighojasq5otfpc1v67drkqi
$tabInsert=array('id'=>$i);
$ret=$iDb->select($table, 'raiSoc', "id=$i", false);
if (@$ret[0][0]<>'') continue;
$url=$urlBase.$i;
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
?>

View File

@ -14,10 +14,41 @@ include_once(FWK_PATH.'common/curl.php');
$iDb=new WDB('presse');
$iDb2=new WDB('sdv1');
$iRss=new atomRss();
$cours=false;
$cours=$doInvestir=$doBoursier=$doPQR=$modeVerbose=$doReprise=false;
$heureExec=date('Hi')*1;
$lstRegex=$iDb->select('pqr_filtres', "id, nomFiltre, motsClefs", '1');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Collecte des flux RSS.
Options :
-b Traiter les flux RSSS Isin de Boursier
-p Traiter la PQR
-v Mode verbeux
";
// -i Traiter les flux RSSS Isin de Investir
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
//case 'i': $doInvestir=true; break;
case 'b': $doBoursier=true; break;
case 'p': $doPQR=true; break;
case 'v': $modeVerbose=true; break;
case 'r': $doReprise=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n"); break;
}
}
}
}
if (!$doInvestir && !$doBoursier) $doPQR=true;
$lstRegex=$iDb->select('pqr_filtres', "id, nomFiltre, motsClefs", 'actif=1 AND dateSuppr=0');
foreach ($lstRegex as $iReg=>$tReg)
$tabRegEx[]=array( 'id' => $tReg['id'],
'nom' => $tReg['nomFiltre'],
@ -25,50 +56,119 @@ foreach ($lstRegex as $iReg=>$tReg)
);
$nbFiltres=count($tabRegEx);
echo date ('Y/m/d - H:i:s')." - Nom de règles de filtrages : ".$nbFiltres.EOL;
/*print_r($tabRegEx);
die();
*/
if ($heureExec>=2000 && $heureExec<2030) {
echo date ('Y/m/d - H:i:s')." - Nombre de règles de filtrages : ".$nbFiltres.EOL;
//print_r($tabRegEx);
//die();
/*if ($doInvestir) { //$heureExec>=2000 && $heureExec<2030) {
$lstRss=$iDb2->select('bourse_isin', "11 as id, CONCAT('http://www.investir.fr/RSS/RSS.php?codeISIN=',code_isin,'&type=infos-conseils') AS url, code_isin, 'horaire' AS frequence", "code_isin<>'' GROUP BY code_isin");
$cours=true;
} elseif ($heureExec>=2100 && $heureExec<2130) {
$lstRss=$iDb2->select('bourse_isin', "18 as id, CONCAT('http://www.boursier.com/syndication/rss/news/',code_isin,'/FR') AS url, code_isin, 'horaire' AS frequence", "code_isin<>'' GROUP BY code_isin");
$typeFlux='ISIN Investir';
} else*/if ($doBoursier) { //heureExec>=2100 && $heureExec<2130) {
$lstRss=$iDb2->select('bourse_isin', "18 as id, CONCAT('http://www.boursier.com/syndication/rss/news/',code_isin,'/',SUBSTRING(code_isin,1,2)) AS url, code_isin, 'quotidien' AS frequence, 0 AS fluxFiltre, TIMESTAMPDIFF(HOUR,dateDwlFluxRss,NOW()) AS nbHeures", "code_isin<>'' GROUP BY code_isin");
$cours=true;
} else
$lstRss=$iDb->select('pqr_rss', "id, url, titreRss, siteWeb, description, dateFluxRss, dateDwl, '' as code_isin, frequence", 'actif=1');
$typeFlux='ISIN Boursier';
} elseif ($doReprise) {
$iNb=10000;
$iAnn=0;
for($iDeb=$iAnn;$iDeb<1467569;$iDeb+=$iNb) {
$nbArticles=$iDb->select( 'pqr_articles_old',
'id, idRss, idArticle, titre, isin, lien, description, dateRss, article, dateInsert',
"id>802425 LIMIT $iDeb, $iNb", false, MYSQL_ASSOC, true);
while($tabArticle=$iDb->fetch(MYSQL_ASSOC)) {
$iAnn++;
$id=$tabArticle['id'];
$inserted=false;
$isin=trim($tabArticle['isin']);
foreach ($tabRegEx as $iReg=>$tReg) {
$regEx=$tReg['mots'];
$regId=$tReg['id'];
$regNom=$tReg['nom'];
$titre=$tabArticle['titre'];
$description=$tabArticle['description'];
$article=$tabArticle['article'];
if (preg_match("/$regEx/Uis", $titre.' '.$description.' '.$article) || $isin<>'') {
$tabInsert=$tabArticle;
$tabInsert['idFiltre']=$regId;
$iDb->insert('pqr_articles',$tabInsert,false);
echo date ('Y/m/d - H:i:s')." - Cycle $iDeb - $iAnn: INSERTION de l'article $id (règle n°$regId - $regNom)...".EOL;
$inserted=true;
break;
}
}
if (!$inserted) echo date ('Y/m/d - H:i:s')." - Cycle $iDeb - $iAnn : On ignore l'article $id !".EOL;
}
}
die();
} else {
$lstRss=$iDb->select('pqr_rss', "id, url, titreRss, siteWeb, description, dateFluxRss, dateDwl, '' as code_isin, frequence, fluxFiltre,
dernierCodeRetour, dateFluxRss, dateUpdate, TIMESTAMPDIFF(HOUR,dateDwl,NOW()) AS nbHeures", 'actif=1');
$typeFlux='PQR';
}
shuffle($lstRss);
$nbFlux=count($lstRss);
echo date ('Y/m/d - H:i:s')." - Nombre de flux '$typeFlux' à traiter : ".$nbFlux.EOL;
foreach ($lstRss as $iFlux=>$tabFlux) {
$urlRss=$tabFlux['url'];
$idRss=$tabFlux['id'];
$isin=$tabFlux['code_isin'];
$horaire=$tabFlux['frequence'];
//echo "Je charge le flux $urlRss\n";
$nbHeures=$tabFlux['nbHeures'];
if ($nbHeures=='') $nbHeures=999;
$fluxFiltre=$tabFlux['fluxFiltre'];
if ($idRss<>11 && $idRss<>18 && $horaire=='quotidien' && $heureExec>800) {
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : $urlRss - Flux QUOTIDIEN ignoré !".EOL;
continue;
}/* else
if ($idRss<>11 && $idRss<>18) {
if ($horaire=='horaire' && $nbHeures<2) { echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Flux HORAIRE déjà traité il y a $nbHeures h !".EOL; continue; }
if ($horaire=='quotidien' && $nbHeures<24) { echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Flux QUOTIDIEN déjà traité il y a $nbHeures h !".EOL; continue; }
if ($horaire=='hebdo' && $nbHeures<168) { echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Flux HEBDO déjà traité il y a $nbHeures h !".EOL; continue; }
if ($horaire=='mensuel' && $nbHeures<720) { echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Flux MENSUEL déjà traité il y a $nbHeures h. !".EOL; continue; }
} elseif ($nbHeures<36) { echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Flux BOURSIER déjà traité il y a $nbHeures h !".EOL; continue; }
/* else
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : $urlRss - $idRss, $horaire,$heureExec".EOL;
*/
if ($idRss==0 || $idRss==18) randsleep(1,2);
*/
if ($idRss==11 || $idRss==18) randsleep(1,2);
$tabFeed=@$iRss->loadRss($urlRss);
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : $urlRss - Code Retour HTTP : ".$iRss->codeErreurHttp.EOL;
$nbArticles=count($tabFeed);
$nbInsert=0;
$dateRssMax=0;
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Code Retour HTTP : ".$iRss->codeErreurHttp.EOL;
if (count($tabFeed)>0) {
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : $urlRss - Nombre d'articles : $nbArticles".EOL;
//print_r($tabFeed);
foreach ($tabFeed as $iFeed=>$tabArticle) {
$dateRss=date("YmdHis",strtotime($tabArticle['updated']));
$dateRss8=substr($dateRss,0,8);
$inserted=false;
if ($dateRss>$dateRssMax) $dateRssMax=$dateRss;
if ($tabArticle['type']==0 && !$cours) {
$tabUpdate=array('titreRss'=>trim(utf8_decode($tabArticle['title'])),
'siteWeb'=>trim($tabArticle['link']),
'description'=>trim(utf8_decode($tabArticle['description'])),
'dateFluxRss'=>$dateRss,
'dateDwl'=>date('YmdHis'));
$tabUpdate=array( 'titreRss'=>trim(utf8_decode($tabArticle['title'])),
'siteWeb'=>trim($tabArticle['link']),
'description'=>trim(utf8_decode($tabArticle['description'])),
'dateFluxRss'=>$dateRss,
'dateDwl'=>date('YmdHis'),
'dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles,);
// echo mysql_error();
if($iDb->update('pqr_rss',$tabUpdate,"id=$idRss"))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : Mise à jour des informations du flux $urlRss".EOL;
else
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : ERREUR lors de la mise à jour des informations du flux $urlRss".EOL;
} elseif ($tabArticle['type']==0 && $cours) {
$tabUpdate=array( 'dateFluxRss'=>$dateRss,
'dateDwlFluxRss'=>date('YmdHis'),
'dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles,);
if($iDb2->update('bourse_isin',$tabUpdate,"code_isin='$isin'"))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : Mise à jour des informations du flux $urlRss".EOL;
else
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : ERREUR lors de la mise à jour des informations du flux $urlRss".EOL;
}
elseif ($tabArticle['type']==1) {
$urlArticle=trim($tabArticle['link']);
@ -85,7 +185,10 @@ foreach ($lstRss as $iFlux=>$tabFlux) {
$page=getUrl($urlArticle);
$article=$page['body'];
if (preg_match("/$regEx/Uis", $titre.' '.$description.' '.$article)) {
if (preg_match("/$regEx/Uis", $titre.' '.$description.' '.$article) // L'article match avec le filtre
|| $fluxFiltre>0 || $idRss==11 || $idRss==18) { // Les articles du flux doivet être stockés dans leur intégralité
if ($fluxFiltre>0) $regId=$fluxFiltre;
elseif ($idRss==11 || $idRss==18) $regId=0;
$tabInsert=array('titre'=>$titre,
'lien'=>trim(utf8_decode($urlArticle)),
'description'=>$description,
@ -93,42 +196,65 @@ foreach ($lstRss as $iFlux=>$tabFlux) {
'dateRss'=>$dateRss,
'idArticle'=>$idArticle,
'isin'=>$isin,
'idRss'=>$idRss);
$id=$iDb->insert('pqr_articles',$tabInsert);
'idRss'=>$idRss,
'idFiltre'=>$regId,);
$id=$iDb->insert('pqr_articles',$tabInsert,false);
if ($id) {
$nbInsert++;
@$tabArtInsert[$regId]++;
//if($iDb->update('pqr_articles',$tabUpdate,'id='.$id))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : Insertion de l'article n°$id".EOL;
} elseif (mysql_errno()<>1062)
die(mysql_errno().': '.mysql_error());
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : AJOUT de l'article $iFeed/$nbArticles en date du $dateRss8 (id=$id, règle n°$regId $regNom) - $titre".EOL;
$inserted=true;
break;
} elseif (mysql_errno()==1062) {
$inserted=true;
if ($modeVerbose) echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Article déjà en base $iFeed/$nbArticles en date du $dateRss8 (id=$id, règle n°$regId $regNom) - $titre".EOL;
break;
}
elseif (mysql_errno()<>1062) {
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : ERREUR lors de l'ajout de l'article $iFeed/$nbArticles en date du $dateRss8 (id=$id, règle n°$regId $regNom) - $titre".EOL;
die(mysql_errno().': '.mysql_error());
}
}
}
if (!$inserted) {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Rejet de l'article $iFeed/$nbArticles en date du $dateRss8 - $titre".EOL;
//die(mysql_errno().': '.mysql_error());
}
}
}
if (!$cours) {
$tabUpdate=array('dernierArticleDate'=>$dateRssMax,
'dernierNbArticlesI'=>$nbInsert);
$iDb->update('pqr_rss',$tabUpdate,"id=$idRss");
} else {
$tabUpdate=array('dernierArticleDate'=>$dateRssMax,);
$iDb2->update('bourse_isin',$tabUpdate,"code_isin='$isin'");
}
echo mysql_error();
} else {
//
echo date ('Y/m/d - H:i:s')." - Feed #$iFlux : $urlRss - Code Retour HTTP : ".$iRss->codeErreurHttp.EOL;
$tabUpdate=array('dernierCodeRetour'=>$iRss->codeErreurHttp);
if($iDb->update('pqr_rss',$tabUpdate,"id=$idRss"))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux : Mise à jour des informations du flux $urlRss".EOL;
if (!$cours) {
$tabUpdate=array('dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles);
if($iDb->update('pqr_rss',$tabUpdate,"id=$idRss"))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Mise à jour des informations du flux $urlRss".EOL;
} else {
$tabUpdate=array('dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles);
if($iDb2->update('bourse_isin',$tabUpdate,"code_isin='$isin'"))
echo date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Mise à jour des informations du flux $urlRss".EOL;
}
echo mysql_error();
}
//<channel><title>Economie - Le Monde.fr</title><link>http://www.lemonde.fr</link><description>Toute l'actualité au moment de la connexion</description><language>en</language><copyright>Copyright Le Monde.fr</copyright><pubDate>Thu, 05 Feb 2009 11:51:14 GMT</pubDate><lastBuildDate>Thu, 05 Feb 2009 11:51:14 GMT</lastBuildDate><ttl>30</ttl><image><title>Economie - Le Monde.fr</title><url>http://medias.lemonde.fr/mmpub/img/lgo/lemondefr_rss.gif</url><link>http://www.lemonde.fr</link></image>
}
print_r($tabArtInsert);
echo date('Y/m/d - H:i:s') ." - FIN du script.".EOL;
die();
/*
INSERT INTO `presse`.`` (
`id` ,
`url` ,
`dateInsert`
)
VALUES (
NULL , 'http://www.lemondeinformatique.fr/flux-rss/ssii/page-1.html', ''
);
*/die();
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux Hugin...".EOL;
$ret=ftp_mget(HUGIN_FTP_URL, HUGIN_FTP_USER, HUGIN_FTP_PASS, '*.xml', HUGIN_LOCAL_DIR, true);

282
batch/getRcLuxembourg.php Normal file
View File

@ -0,0 +1,282 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=$modeDetail=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des listes des sociétés de gestion agrées par l'AMF
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-d Remplir les fiches détaillées
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'd': $modeDetail=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$iDb=new WDB('tmp');
$table='rcMonaco';
$referer='https://www.rcsl.lu/';
$urlBase='https://www.rcsl.lu';
$page=getUrl($urlBase, '', '', '', false);
$referer=$urlBase;
$body=$page['body'];
if (preg_match('/window\.onload=window\.location\.href="(.*)";/', $body, $matches)) {
$url=$urlBase.$matches[1];
$page=getUrl($url, '', '', $referer, false);
print_r($page);
die();
}
print_r($body);
die();
/*$urlDetailS='http://www.rci.gouv.mc/ficheSGratuit.jsp?rc=';
$urlDetailPP='http://www.rci.gouv.mc/fichePPGratuit.jsp?rc=';
*/
$tabZonesS=array('codeRCI'=>'<b>Numéro RCI :</b>(.*)<br>',
'etat'=>'<b>Etat :</b>(.*)<br>',
'forme'=>'<b>Structure :</b>(.*)<br>',
'rs'=>'<b>Raison sociale :</b>(.*)<br>',
'activite'=>'<b>Activité :</b>(.*)<br>(?:\s+)</div>',
'etab'=>'<h1 class="titre2">(.*)</h1>',
'etabType'=>'<h1 class="titre3">(.*)</h1><br>',
'etabEns'=>'<h1 class="titre4">(.*)</h1>',
'ensAdr1'=>'<td><b>Adresse :</b></td>(?:.*)<td>(.*)<br>(?:.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr2'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr3'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(.*)<br>(?:.*)</td>',
'ensAdr4'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(?:.*)<br>(.*)</td>',
);
$tabZonesPP=array('codeRCI'=>'<b>Numéro RCI :</b>(.*)<br>',
'etat'=>'<b>Etat :</b>(.*)<br>',
'forme'=>'<b>Structure :</b>(.*)<br>',
'rs'=>'<b>Commerce exercé sous le nom :</b>(.*)<br>',
'formePP'=>'<h1 class="titre2">Etat-civil du déclarant</h1>(?:.*)<h1 class="titre3">(.*)</h1><br>',
'nom'=>'<b>Nom :</b>(.*)<br>',
'prenom'=>'<b>Prénom :</b>(.*)<br>',
'nomJF'=>'<b>Nom de jeune fille :</b>(.*)<br>',
'activite'=>'<b>Activité de l\'établissement :</b>(.*)<br>(?:\s+)</div>',
'etab'=>'</DIV>(?:.*)<h1 class="titre2">(.*)</h1>(?:.*)<div',
'etabType'=>'<h1 class="titre3">(.*)</h1><br>',
'etabEns'=>'<h1 class="titre4">(.*)</h1>',
'ensAdr1'=>'<td><b>Adresse :</b></td>(?:.*)<td>(.*)<br>(?:.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr2'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(.*)<br>(?:.*)<br>(?:.*)</td>',
'ensAdr3'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(.*)<br>(?:.*)</td>',
'ensAdr4'=>'<td><b>Adresse :</b></td>(?:.*)<td>(?:.*)<br>(?:.*)<br>(?:.*)<br>(.*)</td>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
//$letIni=file_get_contents (REP_TEMP.$table);
//$letIni='AVK';
if ($modeDetail) {
$ret=$iDb->select($table, 'id,codeRCI,PmPP', "activite IS NULL /*AND PmPP='PP'*/ ORDER BY dateInsert DESC", false);
$nbLet=count($ret);
foreach ($ret as $tFiche) {
@$nbDone++;
$id=$tFiche['id'];
$rci=$tFiche['codeRCI'];
$ppS=$tFiche['PmPP'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RCI Monaco '$rci' ($id) - '";
//echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
if ($ppS=='S') $urlFiche=$urlDetailS.$rci;
elseif ($ppS=='PP') $urlFiche=$urlDetailPP.$rci;
else die("Type '$ppS' inconnu !".EOL);
$page=getUrl($urlFiche, '', '', $referer, false);
$body=$page['body'];
if ($ppS=='S') $tabZones=$tabZonesS;
elseif ($ppS=='PP') $tabZones=$tabZonesPP;
$tabUpdate=html2array($body, $tabZones);
if (strpos($tabUpdate['ensAdr4'],'Pour de plus amples informations')>0) $tabUpdate['ensAdr4']='';
$iDb->update($table, $tabUpdate, "id=$id");
echo $tabUpdate['rs']."'".EOL;
if ($modeDebug) randsleep(1,2);//randsleep(7,21);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
die();
}
$tabSerialised=@file_get_contents(REP_TEMP.$table);
if (!$tabSerialised) {
if (!$nbLet)
//$letIni='AAA';
for ($l1=65; $l1<91; $l1++) {
//if ($letIni) $l1=ord(substr($letIni,0,1));
$L1=chr($l1);
for ($l2=65; $l2<91; $l2++) {
//if ($letIni) $l2=ord(substr($letIni,1,1));
$L2=chr($l2);
for ($l3=65; $l3<91; $l3++) {
//if ($letIni) $l3=ord(substr($letIni,2,1));
$letIni=false;
$L3=chr($l3);
$let=''.$L1.$L2.$L3;
$tabLet[]=$let;
}
}
}
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
} else
$tabLet=unserialize($tabSerialised);
$nbLet=count($tabLet);
echo date ('Y/m/d - H:i:s')." - Il reste $nbLet requêtes à traiter...".EOL;
$nbDone=0;
foreach ($tabLet as $j=>$let) {
$nbDone++;
$page=getUrl($urlBase.$let, '', '', '', false);
$body=$page['body'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RC Monaco '$let' ...";
if (preg_match_all('/<a href="\.\/fiche(PP|S)Gratuit\.jsp\?rc=(.*)">(.*)<\/a>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<\/tr>/Uis', $body, $matches)) {
foreach($matches[2] as $i=>$numRCI) {
$tabEntrep=array('codeRCI'=>trim($numRCI),
'PmPP'=>trim($matches[1][$i]),
'forme'=>trim($matches[4][$i]),
'rs'=>trim($matches[5][$i]),
'etabEns'=>trim($matches[6][$i]),
'etat'=>trim($matches[7][$i]),
'dateInsert'=>date('YmdHis'));
@$iDb->insert($table, $tabEntrep);
//print_r($tabEntrep);
}
$i++;
echo "$i entreprise(s)";
} else
echo "Pas d'entreprise";
echo EOL;
unset($tabLet[$j]);
file_put_contents(REP_TEMP.$table, serialize(array_unique($tabLet)));
if ($modeDebug) randsleep(1,2);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
die();
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
die();
echo count($tabLet);
//serialize
print_r($tabLet);
die();
$tabHtml=html2array($body, $tabZones);
print_r($tabHtml);
die();
$ret=$iDb->select($table, 'agrementNum', '1', false);
foreach ($ret as $tAgrNum) {
$agrNum=$tAgrNum['agrementNum'];
echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
}
for($i=$iDeb;;$i++) {
$tabInsert=array('id'=>$i);
$url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15";
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
print_r($page);
die();
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
?>

345
batch/getRcMonaco.php Normal file
View File

@ -0,0 +1,345 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=$modeDetail=$modeRCI=$modeAnnee=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Mise à jour des listes des sociétés de gestion agrées par l'AMF
Options :
-v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
-d Remplir les fiches détaillées
-r=13S00000 Traiter ce numéro de RCI
-a=13S Traiter tous les numéro RCI de type S de l'année 2013
";/* -i:XXXXX Reprendre au code commune Insee XXXXX
";*/
$argv=$_SERVER['argv'];
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'd': $modeDetail=true; break;
case 'r': $modeRCI=trim(substr($argv[$i],3,strlen($argv[$i])-1)); break;
case 'r': $modeAnnee=trim(substr($argv[$i],3,strlen($argv[$i])-1)); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$iDb=new WDB('tmp');
$table='rcMonaco';
//$urlBase='http://www.amf-france.org/bio/rech_SG.aspx';
$referer='http://www.rci.gouv.mc/rc/index.jsp';
$urlRecherche='http://www.rci.gouv.mc/rc/resultatRecherche';
// http://www.rci.gouv.mc/rc/resultatRechercheGratuit.jsp?mille=13&amp;fj=S&amp;rc=06184
$urlDetailS='http://www.rci.gouv.mc/rc/ficheSGratuit.jsp?rc=';
$urlDetailPP='http://www.rci.gouv.mc/rc/fichePPGratuit.jsp?rc=';
$tabZonesS=array('codeRCI'=>'<dt>Num..?ro RCI</dt><dd>(.*)</dd>',
'etat'=>'<dt>..?tat</dt><dd>(.*)</dd>',
'forme'=>'<dt>Structure</dt><dd>(.*)</dd>', //
'rs'=>'<dt>Raison sociale</dt><dd>(.*)</dd>', //
'activite'=>'<dt>Activit..?</dt><dd>(.*)</dd>', //
'etab'=>'<div class="recap">\s+<h3>(.*)</h3>\s+<dl>',
'etabType'=>'<dt>Type d\'..?tablissement</dt><dd>(.*)</dd>',
'etabEns'=>'<dt>Enseigne de l\'..?tablissement</dt><dd>(.*)</dd>',
'ensAdr1'=>'<dt>Adresse</dt><dd>(.*)<br>(?:.*)<br>(?:.*)<br>(?:.*)</dd>',
'ensAdr2'=>'<dt>Adresse</dt><dd>(?:.*)<br>(.*)<br>(?:.*)<br>(?:.*)</dd>',
'ensAdr3'=>'<dt>Adresse</dt><dd>(?:.*)<br>(?:.*)<br>(.*)<br>(?:.*)</dd>',
'ensAdr4'=>'<dt>Adresse</dt><dd>(?:.*)<br>(?:.*)<br>(?:.*)<br>(.*)</dd>',
);
$tabZonesPP=array('codeRCI'=>'<dt>Num..?ro RCI</dt><dd>(.*)</dd>',
'etat'=>'<dt>..?tat</dt><dd>(.*)</dd>',
'forme'=>'<dt>Structure</dt><dd>(.*)</dd>', //
'rs'=>'<dt>Commerce exerc..? sous le nom</dt><dd>(.*)</dd>', //
'formePP'=>'<dt>Fonction</dt><dd>(.*)</dd>', // ??
'nom'=>'<dt>Nom</dt><dd>(.*)</dd>',
'prenom'=>'<dt>Pr..?nom</dt><dd>(.*)</dd>',
'nomJF'=>'<b>Nom de jeune fille :</b>(.*)<br>',
'activite'=>'<dt>Activit..? de l\'..?tablissement</dt><dd>(.*)</dd>',
'etab'=>'<div class="recap">\s+<h3>(.*)</h3>\s+<dl>',
'etabType'=>'<dt>Type d\'..?tablissement</dt><dd>(.*)</dd>',
'etabEns'=>'<dt>Enseigne de l\'..?tablissement</dt><dd>(.*)</dd>',
'ensAdr1'=>'<dt>Adresse</dt><dd>(.*)<br>(?:.*)<br>(?:.*)<br>(?:.*)</dd>',
'ensAdr2'=>'<dt>Adresse</dt><dd>(?:.*)<br>(.*)<br>(?:.*)<br>(?:.*)</dd>',
'ensAdr3'=>'<dt>Adresse</dt><dd>(?:.*)<br>(?:.*)<br>(.*)<br>(?:.*)</dd>',
'ensAdr4'=>'<dt>Adresse</dt><dd>(?:.*)<br>(?:.*)<br>(?:.*)<br>(.*)</dd>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
//$letIni=file_get_contents (REP_TEMP.$table);
//$letIni='AVK';
if (!$modeDetail || $modeRCI) {
if (!$modeRCI) {
$tabSerialised=@file_get_contents(REP_TEMP.$table);
if (!$tabSerialised) {
if (!$nbLet)
//$letIni='AAA';
for ($l1=65; $l1<91; $l1++) {
//if ($letIni) $l1=ord(substr($letIni,0,1));
$L1=chr($l1);
for ($l2=65; $l2<91; $l2++) {
//if ($letIni) $l2=ord(substr($letIni,1,1));
$L2=chr($l2);
for ($l3=65; $l3<91; $l3++) {
//if ($letIni) $l3=ord(substr($letIni,2,1));
$letIni=false;
$L3=chr($l3);
$let=''.$L1.$L2.$L3;
$tabLet[]=$let;
}
}
}
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
} else
$tabLet=unserialize($tabSerialised);
$nbLet=count($tabLet);
echo date ('Y/m/d - H:i:s')." - Il reste $nbLet requêtes à traiter...".EOL;
} elseif ($modeRCI) {
$an=substr($modeRCI,0,2);
//if ($an*1<1 || $an>99999) die("Erreur : N° RCI '$modeRCI' incorrect !");
$lettre=strtoupper(substr($modeRCI,2,1));
if ($lettre<>'S' && $lettre<>'P') die("Erreur : N° RCI '$modeRCI' incorrect !");
$numRC=substr($modeRCI,3,5);
if ($numRC<1 || $numRC>99999) die("Erreur : N° RCI '$modeRCI' incorrect !");
$tabLet=array(0=>$modeRCI);
$nbLet=2;
} /*elseif ($modeAnnee) {
$lettre=strtoupper(substr($modeRCI,2,1));
}
$ret=$iDb->select($table, 'max(numInsRCI) as maxRCI', "SUBSTRING(PmPP,1,1)='$modeAnnee'anneeRcodeRCI='$modeRCI'", false);
)*/
$nbDone=0;
foreach ($tabLet as $j=>$let) {
$nbDone++;
if ($modeRCI) { $url=$urlRecherche."Gratuit.jsp?mille=$an&fj=$lettre&rc=$numRC"; $typeRech='RCI'; }
//else { $url=$urlRecherche.'RSEGratuit.jsp?rse='.$let; $typeRech='RSE'; }
else { $url=$urlRecherche."NomGratuit.jsp?nom=$let&prenom="; $typeRech='NOM'; }
//resultatRechercheNomGratuit
$page=getUrl($url, '', '', '', false);
$body=$page['body'];
//print_r($page);
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RC Monaco '$let' ...";
$nbTrouve=0;
if ($typeRech=='RSE' && preg_match_all('/<a href="\.\/fiche(PP|S)Gratuit\.jsp\?rc=(.*)">(.*)<\/a>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<\/tr>/Uis', $body, $matches)) {
foreach($matches[2] as $i=>$numRCI) {
$tabEntrep=array( 'codeRCI'=>trim($numRCI),
'anneeRCI'=>substr(trim($numRCI),0,2),
'numInsRCI'=>substr(trim($numRCI),3,5),
'PmPP'=>trim($matches[1][$i]),
//'nomPrenom'=>trim($matches[4][$i]),
'forme'=>trim($matches[4][$i]),
'rs'=>trim($matches[5][$i]),
'etabEns'=>trim($matches[6][$i]),
'etat'=>trim($matches[7][$i]),
'dateInsert'=>date('YmdHis'));
if (!$iDb->insert($table, $tabEntrep)) {
unset($tabEntrep['dateInsert']);
$iDb->update($table, $tabEntrep, "codeRCI='$numRCI'");
}
}
$nbTrouve=$i+1;
} elseif ($typeRech=='NOM' && preg_match_all('/<a href="\.\/fiche(PP|S)Gratuit\.jsp\?rc=(.*)">(.*)<\/a>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<td>(.*)<\/td>(?:.*)<\/tr>/Uis', $body, $matches)) {
foreach($matches[2] as $i=>$numRCI) {
$tabEntrep=array( 'codeRCI'=>trim($numRCI),
'anneeRCI'=>substr(trim($numRCI),0,2),
'numInsRCI'=>substr(trim($numRCI),3,5),
'PmPP'=>trim($matches[1][$i]),
'nomPrenom'=>trim($matches[4][$i]),
'nomJF'=>trim($matches[5][$i]),
'forme'=>trim($matches[6][$i]),
'rs'=>trim($matches[7][$i]),
'etabEns'=>trim($matches[8][$i]),
'etat'=>trim($matches[9][$i]),
'dateInsert'=>date('YmdHis'));
// print_r($tabEntrep);
// die();
if (!$iDb->insert($table, $tabEntrep)) {
unset($tabEntrep['dateInsert']);
if (!$iDb->update($table, $tabEntrep, "codeRCI='$numRCI'")) {
echo mysql_error().EOL;
print_r($tabEntrep);
die();
}
}
}
$nbTrouve=$i+1;
}
if ($nbTrouve>0) echo "$nbTrouve entreprise(s)";
else {
echo "Pas d'entreprise";
//if ($modeDebug) print_r($page);
}
echo EOL;
if (!$modeRCI) {
unset($tabLet[$j]);
file_put_contents(REP_TEMP.$table, serialize(array_unique($tabLet)));
if ($modeDebug) randsleep(1,2);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
}
}
if ($modeDetail || $modeRCI || $modeAnnee) {
if ($modeRCI)
$ret=$iDb->select($table, 'id,codeRCI,PmPP', "codeRCI='$modeRCI'", false);
//elseif ($modeAnnee)
// $ret=$iDb->select($table, 'id,codeRCI,PmPP', "anneeRcodeRCI='$modeRCI'", false);
else
$ret=$iDb->select($table, 'id,codeRCI,PmPP', "activite IS NULL OR etat='' /*AND PmPP='PP'*/ ORDER BY dateInsert DESC", false);
$nbLet=count($ret);
foreach ($ret as $tFiche) {
@$nbDone++;
$id=$tFiche['id'];
$rci=$tFiche['codeRCI'];
$ppS=$tFiche['PmPP'];
echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RCI Monaco '$rci' ($id) - '";
//echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
if ($ppS=='S') $urlFiche=$urlDetailS.$rci;
elseif ($ppS=='PP') $urlFiche=$urlDetailPP.$rci;
else die("Type '$ppS' inconnu !".EOL);
$page=getUrl($urlFiche, '', '', $referer, false);
//print_r($page);
$body=$page['body'];
if ($ppS=='S') $tabZones=$tabZonesS;
elseif ($ppS=='PP') $tabZones=$tabZonesPP;
$tabUpdate=html2array($body, $tabZones);
if (@strpos($tabUpdate['ensAdr4'],'Pour de plus amples informations')>0) $tabUpdate['ensAdr4']='';
$tabUpdate['anneeRCI']=substr($rci,0,2);
$tabUpdate['numInsRCI']=substr($rci,3,5);
$iDb->update($table, $tabUpdate, "id=$id");
echo $tabUpdate['rs']."'".EOL;
if (!$modeRCI) {
if ($modeDebug) randsleep(1,2);//randsleep(7,21);
else {
randsleep(60,120);
if (date('H')>19) die();
}
}
}
}
die();
shuffle($tabLet);
file_put_contents (REP_TEMP.$table, serialize($tabLet));
die();
echo count($tabLet);
//serialize
print_r($tabLet);
die();
$tabHtml=html2array($body, $tabZones);
print_r($tabHtml);
die();
$ret=$iDb->select($table, 'agrementNum', '1', false);
foreach ($ret as $tAgrNum) {
$agrNum=$tAgrNum['agrementNum'];
echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL;
}
for($i=$iDeb;;$i++) {
$tabInsert=array('id'=>$i);
$url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15";
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
print_r($page);
die();
$tabHtml=html2array($body, $tabZones);
foreach ($tabHtml as $zone=>$data) {
if (is_array($data)) {
foreach ($data as $j=>$tabInsert2) {
$tabInsert2['id']=$i;
$tabInsert2['num']=$j;
$tabInsert2['dateInsert']=date('YmdHis');
if (!$iDb->insert($table.$zone, $tabInsert2, false)) {
if (mysql_errno()==1062) {
unset($tabInsert2['dateInsert']);
$iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false);
} else {
print_r($tabInsert2);
die(mysql_error());
}
}
}
} else
$tabInsert[$zone]=$data;
}
if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') {
$nbVides++;
if ($nbVides<20) continue;
else {
echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL;
die();
}
}
$nbVides=0;
unset($tabInsert['qualifs']);
if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') {
$urlLogo='http://www.qualifelec.fr/';
die($tabInsert['urlImg']);
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') {
$extension=substr(strrchr($urlLogo,'.'),1);
if (!file_exists("/home/data/logos/$siren.$extension")) {
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlLogo, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
file_put_contents("/home/data/logos/$siren.$extension",$body);
}
}
}
unset($tabInsert['urlImg']);
$tabInsert['dateInsert']=date('YmdHis');
if (!$iDb->insert($table, $tabInsert, false)) {
if (mysql_errno()==1062) {
unset($tabInsert['dateInsert']);
$iDb->update($table, $tabInsert, "id=$i", false);
} else {
print_r($tabInsert);
die(mysql_error());
}
}
//die();
$nb=count($tabInsert);
$nb2=@count($tabInsert2);
echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL;
if ($modeDebug) randsleep(1,2);
else randsleep(7,21);
}
die();
?>

743
batch/getRecme.php Normal file
View File

@ -0,0 +1,743 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
$tabTetesRecme=array(
'2006 187300017',
'2006 187300017',
'2006 301374963',
'2006 302097191',
'2006 302421193',
'2006 302977145',
'2006 306771494',
'2006 313320244',
'2006 313402455',
'2006 313643793',
'2006 315065292',
'2006 318186756',
'2006 321777021',
'2006 326094471',
'2006 326817442',
'2006 326981156',
'2006 329297097',
'2006 330715368',
'2006 331057471',
'2006 331596270',
'2006 332737220',
'2006 349250027',
'2006 352751143',
'2006 352973622',
'2006 356000000',
'2006 381856723',
'2006 381984921',
'2006 385290309',
'2006 388202533',
'2006 390199669',
'2006 391406956',
'2006 391718970',
'2006 412280737',
'2006 421671587',
'2006 428822852',
'2006 432766947',
'2006 440546018',
'2006 441133808',
'2006 451930051',
'2006 483790069',
'2006 485389811',
'2006 488203696',
'2006 490946886',
'2006 491041794',
'2006 542008677',
'2006 542085907',
'2006 542089750',
'2006 542094354',
'2006 542107651',
'2006 552016628',
'2006 552017303',
'2006 552049447',
'2006 552081317',
'2006 572104891',
'2006 582056149',
'2006 582056511',
'2006 588502310',
'2006 602001786',
'2006 602019903',
'2006 642006589',
'2006 642036941',
'2006 662006543',
'2006 662012491',
'2006 662043116',
'2006 672049020',
'2006 692039514',
'2006 692041585',
'2006 712013432',
'2006 712032143',
'2006 775558489',
'2006 775604853',
'2006 775641418',
'2006 775663438',
'2006 775665599',
'2006 775665607',
'2006 775665912',
'2006 775685019',
'2006 775688229',
'2006 775700198',
'2006 775701253',
'2006 775722879',
'2006 776056467',
'2006 781804141',
'2006 783595036',
'2006 784276180',
'2006 784301111',
'2006 784396079',
'2006 784804593',
'2006 788058030',
'2006 946751641',
'2006 962504049',
'2007 180089013',
'2007 187300017',
'2007 301374963',
'2007 302097191',
'2007 302421193',
'2007 302977145',
'2007 304992993',
'2007 306771494',
'2007 313320244',
'2007 313402455',
'2007 313643793',
'2007 315065292',
'2007 318186756',
'2007 321777021',
'2007 326094471',
'2007 326817442',
'2007 326981156',
'2007 329297097',
'2007 330715368',
'2007 331057471',
'2007 331596270',
'2007 332737220',
'2007 349250027',
'2007 352751143',
'2007 352973622',
'2007 356000000',
'2007 381856723',
'2007 381984921',
'2007 385290309',
'2007 388202533',
'2007 390199669',
'2007 391406956',
'2007 391718970',
'2007 412280737',
'2007 421671587',
'2007 428684963',
'2007 428822852',
'2007 432766947',
'2007 440546018',
'2007 441133808',
'2007 451930051',
'2007 483790069',
'2007 485389811',
'2007 488203696',
'2007 490946886',
'2007 491041794',
'2007 542008677',
'2007 542085907',
'2007 542089750',
'2007 542094354',
'2007 542107651',
'2007 552016628',
'2007 552017303',
'2007 552049447',
'2007 552081317',
'2007 572104891',
'2007 582056149',
'2007 582056511',
'2007 588502310',
'2007 602001786',
'2007 602019903',
'2007 642006589',
'2007 642036941',
'2007 662006543',
'2007 662043116',
'2007 672049020',
'2007 692039514',
'2007 692041585',
'2007 712013432',
'2007 712032143',
'2007 775558489',
'2007 775604853',
'2007 775641418',
'2007 775663438',
'2007 775665599',
'2007 775665607',
'2007 775665912',
'2007 775685019',
'2007 775688229',
'2007 775700198',
'2007 775701253',
'2007 775722879',
'2007 776056467',
'2007 781804141',
'2007 783595036',
'2007 784276180',
'2007 784301111',
'2007 784396079',
'2007 784804593',
'2007 788058030',
'2007 946751641',
'2007 962504049',
'2008 187300017',
'2008 301374963',
'2008 302097191',
'2008 302421193',
'2008 302977145',
'2008 304992993',
'2008 306771494',
'2008 313320244',
'2008 313402455',
'2008 313643793',
'2008 315065292',
'2008 318186756',
'2008 321777021',
'2008 326094471',
'2008 326817442',
'2008 326981156',
'2008 329297097',
'2008 330715368',
'2008 331057471',
'2008 331596270',
'2008 332737220',
'2008 349250027',
'2008 352751143',
'2008 352973622',
'2008 356000000',
'2008 381856723',
'2008 381984921',
'2008 385290309',
'2008 388202533',
'2008 390199669',
'2008 391406956',
'2008 391718970',
'2008 412280737',
'2008 421671587',
'2008 428684963',
'2008 428822852',
'2008 432766947',
'2008 440546018',
'2008 441133808',
'2008 451930051',
'2008 483790069',
'2008 485389811',
'2008 488203696',
'2008 490946886',
'2008 491041794',
'2008 493292403',
'2008 493425136',
'2008 501524029',
'2008 542008677',
'2008 542085907',
'2008 542089750',
'2008 542094354',
'2008 552016628',
'2008 552017303',
'2008 552049447',
'2008 552081317',
'2008 572104891',
'2008 582056149',
'2008 582056511',
'2008 588502310',
'2008 602001786',
'2008 642006589',
'2008 642036941',
'2008 662006543',
'2008 662043116',
'2008 672049020',
'2008 692039514',
'2008 692041585',
'2008 712013432',
'2008 712032143',
'2008 775558489',
'2008 775604853',
'2008 775641418',
'2008 775663438',
'2008 775665599',
'2008 775665607',
'2008 775665912',
'2008 775685019',
'2008 775688229',
'2008 775700198',
'2008 775701253',
'2008 775722879',
'2008 776056467',
'2008 781804141',
'2008 783595036',
'2008 784276180',
'2008 784301111',
'2008 784396079',
'2008 784804593',
'2008 788058030',
'2008 946751641',
'2008 962504049',
'2009 160020012',
'2009 180036147',
'2009 187300017',
'2009 301374963',
'2009 302097191',
'2009 302421193',
'2009 302977145',
'2009 304992993',
'2009 313320244',
'2009 313402455',
'2009 315065292',
'2009 318186756',
'2009 321777021',
'2009 326094471',
'2009 326817442',
'2009 330715368',
'2009 331596270',
'2009 332737220',
'2009 349250027',
'2009 352751143',
'2009 352973622',
'2009 356000000',
'2009 381856723',
'2009 381984921',
'2009 385290309',
'2009 388202533',
'2009 390199669',
'2009 391406956',
'2009 391718970',
'2009 412280737',
'2009 421671587',
'2009 428684963',
'2009 428822852',
'2009 432766947',
'2009 440546018',
'2009 441133808',
'2009 451930051',
'2009 483790069',
'2009 485389811',
'2009 487607202',
'2009 493292403',
'2009 493425136',
'2009 493479489',
'2009 501524029',
'2009 507542652',
'2009 542008677',
'2009 542085907',
'2009 542089750',
'2009 542094354',
'2009 552016628',
'2009 552017303',
'2009 552049447',
'2009 552081317',
'2009 572104891',
'2009 582056149',
'2009 582056511',
'2009 588502310',
'2009 602001786',
'2009 642006589',
'2009 642036941',
'2009 662006543',
'2009 662043116',
'2009 672049020',
'2009 692039514',
'2009 692041585',
'2009 712013432',
'2009 712032143',
'2009 775558489',
'2009 775604853',
'2009 775641418',
'2009 775663438',
'2009 775665599',
'2009 775665607',
'2009 775665912',
'2009 775685019',
'2009 775688229',
'2009 775700198',
'2009 775701253',
'2009 775722879',
'2009 776056467',
'2009 781804141',
'2009 783595036',
'2009 784276180',
'2009 784301111',
'2009 784396079',
'2009 784804593',
'2009 788058030',
'2009 946751641',
'2009 962504049',
'2010 160020012',
'2010 180020034',
'2010 180036147',
'2010 301374963',
'2010 302097191',
'2010 302421193',
'2010 302977145',
'2010 303091086',
'2010 304992993',
'2010 313320244',
'2010 313402455',
'2010 315065292',
'2010 318186756',
'2010 326094471',
'2010 326817442',
'2010 330715368',
'2010 331596270',
'2010 332737220',
'2010 349250027',
'2010 352751143',
'2010 352973622',
'2010 356000000',
'2010 381856723',
'2010 381984921',
'2010 385290309',
'2010 388202533',
'2010 390199669',
'2010 391406956',
'2010 391718970',
'2010 391790961',
'2010 412280737',
'2010 421671587',
'2010 428684963',
'2010 428822852',
'2010 432766947',
'2010 440546018',
'2010 441133808',
'2010 451930051',
'2010 483790069',
'2010 484360250',
'2010 485389811',
'2010 487607202',
'2010 493292403',
'2010 493425136',
'2010 493479489',
'2010 501524029',
'2010 507542652',
'2010 508364155',
'2010 542008677',
'2010 542085907',
'2010 542089750',
'2010 542094354',
'2010 552016628',
'2010 552017303',
'2010 552049447',
'2010 552081317',
'2010 572104891',
'2010 582056149',
'2010 582056511',
'2010 588502310',
'2010 602001786',
'2010 642006589',
'2010 642036941',
'2010 662006543',
'2010 662043116',
'2010 672049020',
'2010 692039514',
'2010 692041585',
'2010 712013432',
'2010 712032143',
'2010 775558489',
'2010 775604853',
'2010 775641418',
'2010 775663438',
'2010 775665599',
'2010 775665607',
'2010 775665912',
'2010 775685019',
'2010 775688229',
'2010 775700198',
'2010 775701253',
'2010 775722879',
'2010 775729155',
'2010 776056467',
'2010 781804141',
'2010 783595036',
'2010 784276180',
'2010 784301111',
'2010 784396079',
'2010 784804593',
'2010 788058030',
'2010 946751641',
'2010 962504049',
'2011 160020012',
'2011 180020034',
'2011 180036147',
'2011 301374963',
'2011 302097191',
'2011 302421193',
'2011 302977145',
'2011 304992993',
'2011 313320244',
'2011 313402455',
'2011 315065292',
'2011 318186756',
'2011 326094471',
'2011 326817442',
'2011 330715368',
'2011 331596270',
'2011 349250027',
'2011 352751143',
'2011 352973622',
'2011 356000000',
'2011 381856723',
'2011 381984921',
'2011 385290309',
'2011 388202533',
'2011 390199669',
'2011 391406956',
'2011 391718970',
'2011 391790961',
'2011 412280737',
'2011 421671587',
'2011 428684963',
'2011 428822852',
'2011 432766947',
'2011 440546018',
'2011 441133808',
'2011 451930051',
'2011 483790069',
'2011 485389811',
'2011 487607202',
'2011 493292403',
'2011 493425136',
'2011 493479489',
'2011 501524029',
'2011 507542652',
'2011 508364155',
'2011 519587851',
'2011 527946537',
'2011 542085907',
'2011 542089750',
'2011 542094354',
'2011 552016628',
'2011 552017303',
'2011 552049447',
'2011 552081317',
'2011 572104891',
'2011 582056511',
'2011 588502310',
'2011 642006589',
'2011 642036941',
'2011 662043116',
'2011 672049020',
'2011 692039514',
'2011 692041585',
'2011 712013432',
'2011 712032143',
'2011 775558489',
'2011 775604853',
'2011 775663438',
'2011 775665599',
'2011 775665607',
'2011 775665912',
'2011 775685019',
'2011 775688229',
'2011 775700198',
'2011 775701253',
'2011 775722879',
'2011 775729155',
'2011 776056467',
'2011 781804141',
'2011 783595036',
'2011 784276180',
'2011 784301111',
'2011 784396079',
'2011 784804593',
'2011 788058030',
'2011 946751641',
'2011 962504049',
);
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/dbf_class.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$urlBase='http://www.insee.fr';
$db_name='insee';
$db_table='insee_tabRecme';
$j=0;
$nbRecme=999; // Récupération de tous les RECME
$modeDebug=false;
$fichier_csv=array();
$separator=',';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [FICHIERS]
Récupération du RECME (Répertoire des Entreprises Contrôlées Majoritairement par l'État).
Options :
-d Récupération du dernier RECME sur le site de l'INSEE
-t Récupération de tous les derniers RECME sur le site de l'INSEE
-v Mode bavard
";
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $nbRecme=1; break;
case 't': $nbRecme=999; break;
case 'v': $modeDebug=true; break;
default: die($strInfoScript); break;//'Option '. $argv[$i] . " inconnue !".EOL);
}
} else {
$fichier_csv[$j]=$argv[$i];
$j++;
}
}
if (count($fichier_csv)==0) {
/*$tabZones=array('url1'=>"<ul class=\"liens\"><li><a href=\"(detail.asp?ref_id=ir-recme$annee.*)\">(?:.*)</a></li>",
'url2'=>"<li><a href=\"(detail.asp?ref_id=ir-recme$annee.*)\">Le répertoire des entreprises contrôlées majoritairement par l'État (RECME)</a></li>",
);
*/
echo date ('Y/m/d - H:i:s')." - Recherche du dernier RECME...".EOL;
for($annee=date('Y')-2; $annee>2005; $annee--) {
$url=$urlBase."/fr/themes/detail.asp?ref_id=ir-recme$annee&page=irweb/recme$annee/dd/recme$annee".'_repertoire.htm';
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
if (!preg_match_all('/<tr><td class="num">T(\d\d\d\d)<\/td>\s+<td class=apnum>Le Recme (\d\d\d\d)<\/td>\s+<td class="vm"><a href="(.*\.dbf)" title=\'T&eacute(?:.*)au format dBase \'><img class="tele" alt=\'T&eacute(?:.*)gif"><\/a>/Uim', $body, $matches)) {
echo date ('Y/m/d - H:i:s')." - Pas de RECME pour l'année $annee !".EOL;
randsleep(7,21);
continue;
} else
echo date ('Y/m/d - H:i:s')." - Le dernier RECME disponible est celui de l'année $annee.".EOL;
randsleep(7,21);
foreach($matches[2] as $i=>$millesime)
$tabUrlRecme[$millesime]=$urlBase.$matches[3][$i];
foreach($tabUrlRecme as $millesime=>$url) {
$nbTent=1;
while(1) {
echo date ('Y/m/d - H:i:s')." - Téléchargement du RECME de l'année $millesime...".EOL;
if ($modeDebug && $nbTent<=1) echo date ('Y/m/d - H:i:s')." - URL='$url'".EOL;
$page=getUrl($url, '', '', $referer, false);
if ($page['code']<>404) break;
$nbTent++;
echo date ('Y/m/d - H:i:s')." - Attente avant la prochaine tentative de téléchargement n°$nbTent du RECME de l'année $millesime...".EOL;
randsleep(7,21);
}
if ($nbTent==1) randsleep(7,21);
$body=$page['body'];
$len=strlen($body);
$fichierDbf=REP_TEMP.'RECME_'.$millesime.'.dbf';
$fichierCsv=REP_TEMP.'RECME_'.$millesime.'.csv';
if (file_put_contents($fichierDbf, $body)) {
echo date ('Y/m/d - H:i:s')." - Récupération du RECME $millesime au format DBF : $len octets".EOL;
@unlink($fichierCsv);
@system ('dbf2csv --header '.$fichierDbf.' --outfile='.$fichierCsv);
if (!file_exists($fichierCsv)) die("Erreur lors de la conversion du fichier DBF en CSV".EOL);
$nbLignes=count(file($fichierCsv));
echo date ('Y/m/d - H:i:s')." - Conversion du RECME $millesime au format CSV : $nbLignes lignes".EOL;
$fichier_csv[]=$fichierCsv;
} else
die("Erreur lors de l'écriture du fichier DBF en local".EOL);
}
// print_r($matches);
// print_r($tabUrlRecme);
if (count($tabUrlRecme)>=10) break;
}
}
//die();
$iDb=new WDB($db_name);
for ($nbFichiers=0; isset($fichier_csv[$nbFichiers]); $nbFichiers++) {
$nbLignes=0;
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $fichier_csv[$nbFichiers] ."...".EOL;
$anneeRecme=substr($fichier_csv[$nbFichiers],-8);
$anneeRecme=substr($anneeRecme,0,4)*1;
$fp = fopen($fichier_csv[$nbFichiers], 'r');
while (($data = fgetcsv($fp, 3000, $separator)) !== FALSE) {
$nbLignes++;
if ($nbLignes==1) {
// L'entête contient la structure du fichier
// On compte le nombre de colonnes du fichier
$nbColonnes=count($data);
//$sql="CREATE TABLE IF NOT EXISTS `$nom_table` (";
for($i=0; $i<$nbColonnes; $i++) {
//$sql.='`'.$data[$i].'` LONGTEXT,';
$tabTailles[$i]=0;
$champ[$i]=$data[$i];
}
/* $sql=substr($sql,0,strlen($sql)-1); // Retrait de la dernière virgule
$sql.=") ENGINE = MYISAM COMMENT = '$comment'";
if ($dropBefore)
$iDb->query("DROP TABLE IF EXISTS `$nom_table`");
if ($iDb->query($sql))
echo date ('Y/m/d - H:i:s')." - Création de la table $nom_table OK...".EOL;
else {
echo $iDb->getLastError().EOL;
die(date ('Y/m/d - H:i:s')." - Impossible de créer la table $nom_table !".EOL."Requête SQL = $sql".EOL);
}*/
continue;
}
$tabDataToInsert=array();
for($i=0; $i<$nbColonnes; $i++) {
$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if (strlen($data[$i])>$tabTailles[$i])
$tabTailles[$i]=strlen($data[$i]);
}
$cp=$ville=$dep=$reg=$ape='';
$lienDirect=0;
$siren=@trim($tabDataToInsert['N'])*1;
if ($siren==0) $siren=@trim($tabDataToInsert['SIREN'])*1;
$dep=@trim($tabDataToInsert['D']);
if ($dep=='') $dep=@trim($tabDataToInsert['DEPARTEMEN']);
$reg=@trim($tabDataToInsert['R']);
if ($reg=='') $reg=@trim($tabDataToInsert['REGION']);
$ape=@trim($tabDataToInsert['APE']);
if ($ape=='') $ape=@trim($tabDataToInsert['APE_REV2']);
$cpVille=@trim($tabDataToInsert['COMMUNE']);
if ($cpVille=='') $cpVille=@trim($tabDataToInsert['CODE_POSTA']);
if(preg_match('/^(\d+)\s(.*)$/Ui', $cpVille, $matches)) {
$cp=$matches[1];
$ville=$matches[2];
} else
$ville=$cpVille;
if (in_array("$anneeRecme $siren", $tabTetesRecme)) $lienDirect=1;
$tabInsert=array( 'siren' => $siren,
'raisonSociale' => trim($tabDataToInsert['RAISON_SOC']),
'adresse' => trim($tabDataToInsert['ADRESSE']),
'cp' => $cp,
'commune' => $ville,
'dept' => $dep,
'region' => $reg,
'cj' => trim($tabDataToInsert['CJ']),
'ape' => $ape,
'annee' => $anneeRecme,
'lienDirect' => $lienDirect,
);
/*print_r($tabInsert);
die();
*/
if ($iDb->insert($db_table, $tabInsert, false))
if (!$iDb->update($db_table, $tabInsert, "annee=$anneeRecme AND siren=$siren", false))
echo date ('Y/m/d - H:i:s') . " - ERREUR à la MAJ de la ligne n°$i : ". implode(';', $data) ." !".EOL;
//unset($tabDataToInsert);
}
fclose ($fp);
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement.".EOL;
?>

728
batch/getRefSNA.php Normal file
View File

@ -0,0 +1,728 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/ftp.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
/*
Serveur FTP :
Votre identifiant :
Votre mot de passe : 5h-P,z5(*/
define('AMABIS_FTP_URL', 'ftp.amabis.com');
define('AMABIS_FTP_USER', 'refgeo_pack_H');
define('AMABIS_FTP_PASS', '5h-P,z5(');
define('AMABIS_FTP_REMOTE_DIR', '*.gz');
define('AMABIS_LOCAL_DIR', '/home/data/amabis/');
$strInfoScript='Usage : '.basename($argv[0]). " <option> FICHIERS...
Chargement des fichiers référentiels SNA via Amabis.
Options :
-d Mode debug (Verbosité au maximum)
-j Ne pas récupérer les derniers fichiers sur le FTP de l'Insee
-u Forcer la mise à jour la table identite de l'insee
-s=20080430 Réappliquer les évènements depuis cette date
";
$iDb=new WDB('villes');
//$iInsee=new MInsee();
$modeDebug=$dateReprise=false;
$ftpStep=true;
$updateInsee=false;
$tabFichier=array();
$nomFichierCharges=array();
$nbLignesCharges=$nbSiretInvalidesCharges=0;
//Initialistation des variables
$argv=$_SERVER['argv'];
//if ($_SERVER['argc']==1) die("Non géré pour l'instant : chargera les derniers fichiers EVEN non chargés !".EOL);
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $modeDebug=true; break;
case 'j': $ftpStep=false; break;
case 'u': $updateInsee=true; break;
case 's': $dateReprise=substr($argv[$i],3,8); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichier[]=$argv[$i];
}
/*
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des évènements INSEE".EOL;
$db_table='cedexa';
if ($ftpStep) {
/* Récupération des flux FTP *
echo date('Y/m/d - H:i:s') ." - DEBUT de la récupération des flux FTP de l'INSEE...".EOL;
$ret=ftp_mget(AMABIS_FTP_URL, AMABIS_FTP_USER, AMABIS_FTP_PASS, AMABIS_FTP_REMOTE_DIR, AMABIS_LOCAL_DIR, true);
if ($ret===false)
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des flux INSEE en FTP incorrecte !".EOL);
else
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des flux INSEE en FTP ($ret fichiers récupérés).".EOL;
}
/** Liste des fichiers quotidiens de l'Insee
**
$dh = opendir(AMABIS_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -7)=='.txt.gz')
$tabFichier[] = $filename;
}
*/
//$tabToIdentite=array();
/** Chargement des fichiers si nécessaire
**/
for ($i=0; isset($tabFichier[$i]); $i++)
{
$nomFichier =$tabFichier[$i];
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$i, $nomFichier".EOL;
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter '".$nomFichier."'".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$a = fgets($fp, 1024);
if ($nbLignes==0) {
/*19/02/2012©LA POSTE HEXAPOSTE COMPLET 32
19/02/2012©LA POSTE HEXAPOSTE COMPLET 38
21/07/2014©LA POSTE HEXAVIA MISE A JOUR 38
19/02/2012©LA POSTE HEXACLE COMPLET
P19/02/2012©LA POSTE HEXALIGNE3 COMPLET 38
P19/02/2012©LA POSTE HEXALIGNE3 COMPLET 32
019-02-2012CEDEXA COMPLET 38
019-02-2012CEDEXA COMPLET 32
0000019-02-2012ROUDIS2000 COMPLET 38
0000019-02-2012ROUDIS2000 COMPLET 32
*/
if (strpos($a, 'HEXAPOSTE')) { $produit='HEXAPOSTE'; $dateFlux=WDate::dateT('d/m/Y','Y-m-d', substr($a,0,10)); }
elseif (strpos($a, 'HEXAVIA')) { $produit='HEXAVIA'; $dateFlux=WDate::dateT('d/m/Y','Y-m-d', substr($a,0,10)); }
elseif (strpos($a, 'HEXACLE')) { $produit='HEXACLE'; $dateFlux=WDate::dateT('d/m/Y','Y-m-d', substr($a,0,10)); }
elseif (strpos($a, 'HEXALIGNE3')) { $produit='HEXALIGNE3'; $dateFlux=WDate::dateT('d/m/Y','Y-m-d', substr($a,1,10)); }
elseif (strpos($a, 'CEDEXA')) { $produit='CEDEXA'; $dateFlux=WDate::dateT('d-m-Y','Y-m-d', substr($a,1,10)); }
elseif (strpos($a, 'ROUDIS2000')) { $produit='ROUDIS'; $dateFlux=WDate::dateT('d-m-Y','Y-m-d', substr($a,5,10)); }
if (strpos($a, 'COMPLET')) { $stock=1; $libStock='STOCK';}
elseif (strpos($a, 'MISE A JOUR')) {$stock=0; $libStock='Mise à jour';}
if (strpos($a, ' 32 ')) $norme=32;
elseif (strpos($a, ' 38 ')) $norme=38;
}
$nbLignes++;
}
echo date ('Y/m/d - H:i:s')." - $libStock $produit en norme $norme en date du $dateFlux ($nbLignes lignes à traiter)".EOL;
$nbLignesTot=$nbLignes++;
$nbLignes=0;
$nbInsert=$nbUpdate=$nbErreurs=array();
rewind($fp);
// On ignore la ligne 1
$a = fgets($fp, 1024);
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 1024));
if ($produit=='HEXAVIA') {
$codeLigne = strtoupper(substr($a, 0, 1));
@$nbInput[$codeLigne]++;
$k1=$k2=false;
if ($norme==32) $tabUpdate=array('dateMaj32'=>$dateFlux);
else $tabUpdate=array('dateMaj38'=>$dateFlux);
if ($codeLigne=='L') {
$table='hexaviaVilles';
$tabUpdate['idAdr56'] =$k1=trim(substr($a, 1, 6));
$tabUpdate['codeInseeCom'] =trim(substr($a, 7, 5));
$strWhere="idAdr56='$k1'";
if ($norme==32) {
$tabUpdate['libCom32'] =trim(substr($a, 28,32));
$tabUpdate['codeInseeGlobal'] =trim(substr($a, 60, 5));
$tabUpdate['indPluridis'] =trim(substr($a, 65, 1));
$tabUpdate['libLigne5n32'] =trim(substr($a, 66,32));
$tabUpdate['indRoudis'] =trim(substr($a, 98, 1));
$tabUpdate['codePostal'] =trim(substr($a, 99, 5));
$tabUpdate['libLigne6n32'] =trim(substr($a,104,26));
$tabUpdate['codeInseePre'] =trim(substr($a,130, 5));
$tabUpdate['codeMaj32'] =trim(substr($a,135, 1));
} elseif ($norme==38) {
$tabUpdate['libCom38'] =trim(substr($a, 28,38));
$tabUpdate['codeInseeGlobal'] =trim(substr($a, 66, 5));
$tabUpdate['indPluridis'] =trim(substr($a, 71, 1));
$tabUpdate['libLigne5n38'] =trim(substr($a, 72,38));
$tabUpdate['indRoudis'] =trim(substr($a,110, 1));
$tabUpdate['codePostal'] =trim(substr($a,111, 5));
$tabUpdate['libLigne6n38'] =trim(substr($a,116,32));
$tabUpdate['codeInseePre'] =trim(substr($a,148, 5));
$tabUpdate['codeMaj38'] =trim(substr($a,153, 1));
}
} elseif ($codeLigne=='V') {
$table='hexaviaVoies';
$tabUpdate['idAdr56'] =$k1=trim(substr($a, 1, 6));
$tabUpdate['codeInseeCom'] =trim(substr($a, 7, 5));
$tabUpdate['codeVoie'] =$k2=trim(substr($a, 12, 8));
$tabUpdate['derElemVoie'] =trim(substr($a, 40,20));
$strWhere="idAdr56='$k1' AND codeVoie='$k2'";
if ($norme==32) {
$tabUpdate['libVoie32'] =trim(substr($a, 60,27));
$tabUpdate['typeVoie'] =trim(substr($a, 87, 4));
$tabUpdate['descLibVoie'] =trim(substr($a, 91,10));
$tabUpdate['indStand32'] =trim(substr($a,101, 1));
$tabUpdate['indScind'] =trim(substr($a,102, 1));
$tabUpdate['indHomo'] =trim(substr($a,103, 1));
$tabUpdate['codePostal'] =trim(substr($a,104, 5));
$tabUpdate['numImpMin'] =trim(substr($a,109, 4));
$tabUpdate['numImpMinExt'] =trim(substr($a,113, 1));
$tabUpdate['numImpMax'] =trim(substr($a,115, 4));
$tabUpdate['numImpMaxExt'] =trim(substr($a,120, 1));
$tabUpdate['numPairMin'] =trim(substr($a,121, 4));
$tabUpdate['numPairMinExt'] =trim(substr($a,125, 1));
$tabUpdate['numPairMax'] =trim(substr($a,127, 4));
$tabUpdate['numPairMaxExt'] =trim(substr($a,131, 1));
$tabUpdate['codeRoudis'] =trim(substr($a,132, 5));
$tabUpdate['codeMaj32'] =trim(substr($a,142, 1));
} elseif ($norme==38) {
$tabUpdate['libVoie38'] =trim(substr($a, 60,32));
$tabUpdate['typeVoie'] =trim(substr($a, 92, 4));
if ($tabUpdate['typeVoie']=='') unset($tabUpdate['typeVoie']);
$tabUpdate['descLibVoie'] =trim(substr($a, 96,10));
$tabUpdate['indStand38'] =trim(substr($a,106, 1));
$tabUpdate['indScind'] =trim(substr($a,107, 1));
$tabUpdate['indHomo'] =trim(substr($a,108, 1));
$tabUpdate['codePostal'] =trim(substr($a,109, 5));
$tabUpdate['numImpMin'] =trim(substr($a,114, 4));
$tabUpdate['numImpMinExt'] =trim(substr($a,118, 1));
$tabUpdate['numImpMax'] =trim(substr($a,120, 4));
$tabUpdate['numImpMaxExt'] =trim(substr($a,124, 1));
$tabUpdate['numPairMin'] =trim(substr($a,126, 4));
$tabUpdate['numPairMinExt'] =trim(substr($a,130, 1));
$tabUpdate['numPairMax'] =trim(substr($a,132, 4));
$tabUpdate['numPairMaxExt'] =trim(substr($a,136, 1));
$tabUpdate['codeRoudis'] =trim(substr($a,137, 5));
$tabUpdate['codeMaj38'] =trim(substr($a,147, 1));
}
} elseif ($codeLigne=='W') {
$table='hexaviaSyno';
$tabUpdate['codeInseeCom'] =trim(substr($a, 7, 5));
$tabUpdate['codeVoie'] =$k1=trim(substr($a, 12, 8));
$tabUpdate['codeVoieSyno'] =$k2=trim(substr($a, 20, 8));
$tabUpdate['derElemVoie'] =trim(substr($a, 40,20));
$strWhere="codeVoie='$k1' AND codeVoieSyno='$k2'";
if ($norme==32) {
$tabUpdate['libVoieSyn32'] =trim(substr($a, 60,27));
$tabUpdate['typeVoieSyn'] =trim(substr($a, 87, 4));
$tabUpdate['descLibVoieSyn'] =trim(substr($a, 91,10));
$tabUpdate['indStand32'] =trim(substr($a,101, 1));
$tabUpdate['codeMaj32'] =trim(substr($a,107, 1));
$tabUpdate['typeAppel'] =trim(substr($a,108, 1));
} elseif ($norme==38) {
$tabUpdate['libVoieSyn38'] =trim(substr($a, 60,32));
$tabUpdate['typeVoieSyn'] =trim(substr($a, 92, 4));
if ($tabUpdate['typeVoieSyn']=='') unset($tabUpdate['typeVoieSyn']);
$tabUpdate['descLibVoieSyn'] =trim(substr($a, 96,10));
$tabUpdate['indStand38'] =trim(substr($a,106, 1));
$tabUpdate['codeMaj38'] =trim(substr($a,112, 1));
$tabUpdate['typeAppel'] =trim(substr($a,113, 1));
}
}
$ret=$iDb->select($table, "COUNT(*) AS nbRec", $strWhere, false, MYSQL_ASSOC);
if ($ret[0]['nbRec']>0) {
$ret=$iDb->update($table, $tabUpdate, $strWhere, false);
@$nbUpdate[$table]++;
} else {
$tabUpdate['dateInsert']=date('YmdHis');
$ret=$iDb->insert($table, $tabUpdate, false);
@$nbInsert[$table]++;
if ($ret===false) {
echo date ('Y/m/d - H:i:s') . " - ERREUR n°". mysql_errno()." à l'insertion : ".mysql_error().'!'.EOL;
@$nbErreurs[$table]++;
}
}
}
if ($nbLignes%100000==0) {
//echo date ('Y/m/d - H:i:s')." - Fichier n°$i, $nomFichier ($nbLignes/$nbLignesTot : $nbInsert ajouts, $nbUpdate MAJ et $nbErreurs erreurs).".EOL;
foreach ($nbInsert as $key=>$nb)
echo date ('Y/m/d - H:i:s')." - Fichier n°$i, $nomFichier ($nbLignes/$nbLignesTot : $key $nb ajouts, ".@(1*$nbUpdate[$key]).' MAJ et '.@(1*$nbErreurs[$key]).' erreurs).'.EOL;
}
}
print_r($nbInput[$codeLigne]);
echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier n°$i, $nomFichier ($nbLignes/$nbLignesTot lignes traitées)".EOL;
echo date ('Y/m/d - H:i:s')." - $libStock $produit en norme $norme ($dateFlux)".EOL;
foreach ($nbInsert as $key=>$nb)
echo date ('Y/m/d - H:i:s')." - Fichier n°$i, $nomFichier ($nbLignes/$nbLignesTot : $key : $nb ajouts, ".@(1*$nbUpdate[$key]).' MAJ et '.@(1*$nbErreurs[$key]).' erreurs.'.EOL;
die();
gzclose($fp);
echo date ('Y/m/d - H:i:s')." - Le fichier n°$i, $nomFichier vient d'être chargé.".EOL;
echo date ('Y/m/d - H:i:s') . " - $nbLignes lignes traitées dont $nbSiretInvalides siret invalides !".EOL;
$nomFichierCharges[]=$nomFichier;
$nbLignesCharges=$nbLignes;
$nbSiretInvalidesCharges=$nbSiretInvalides;
}
echo date ('Y/m/d - H:i:s') . " - Au total : $nbLignes lignes traitées dont $nbSiretInvalides siret invalides !".EOL;
echo date ('Y/m/d - H:i:s') . " - Chargement des évènements terminé";
die();
/**********************************************************************************************************************************
* MISE A JOUR DE LA TABLE IDENTITE
**********************************************************************************************************************************/
if ($updateInsee) {
echo ', début de mise à jour de la table identite.'.EOL;
$fieldsR='insSIREN, insNIC, insEVE, insDATEVE, insTYPETAB, insORIGINE, insDESTINAT, insTRAN, insNICTRAN, insL1_NOMEN, insNOMEN, insL2_COMP, insENSEIGNE, insSIGLE, insSIEGE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insLIBCOM, insCODPOS, insL3_CADR, insL5_DISP, insAUXILT, insSAISONAT, insCJ, insCIVILITE, insDCRET, insDCREN, insAPEN700, insAPET700, insNBETEXPL, insTEFEN, insCODEVOIE, insDEPCOM, insTEL, insEFENCENT, insTEFET, insEFETCENT, insL7_ETRG, insAPRM, insACTIVNAT, insORIGINE, insMODET, insEXPLET, insDAPET, insLIEUACT, insACTISURF, insDEFET, insMODEN, insPRODPART, insEXPLEN, insDEFEN, insMONOREG, insREGIMP, insMONOACT, insDAPEN, dirNom, dirNomUsage, dirPrenom, insDATEMAJ';
// on lit R pour mettre à jour W
$fieldsW='SIREN, NIC, IDENTITE_PRE, ACTIF, NOM, NOM2, ENSEIGNE, SIGLE, SIEGE, ADR_NUMVOIE, ADR_BTQ, ADR_TYPVOIE, ADR_LIBVOIE, ADR_LIBCOM, ADR_CP, ADR_COMP, ADR_DISTSP, AUXILT, SAISONAT, CJ, CIVILITE, DCRET, DCREN, APE_ENT, APE_ETAB, NBETAB, TEFF_ENT, TCA, CODEVOIE, ADR_DEP, ADR_COM, TEL, EFF_ENT, TEFF_ET, EFF_ET, PAYS, APRM, ACTIVNAT, ORIGINE, MODET, EXPLET, DAPET, LIEUACT, ACTISURF, DEFET, MODEN, PRODPART, EXPLEN, DEFEN, MONOREG, REGIMP, MONOACT, DAPEN, DIR_FCT, DIR_IDEN, DATE_MAJ';
if (!$dateReprise)//$tabToIdentite
sort($tabToIdentite);
else
$tabToIdentite=array($dateReprise);
foreach ($tabToIdentite as $idFlux) {
//$idFlux='20080114';
if (!$dateReprise) {
echo date ('Y/m/d - H:i:s') . " - Début du chargement du flux $idFlux...".EOL;
$ret=$iDbR->select('insee_even', $fieldsR, "idFlux=$idFlux ORDER BY idFlux ASC, insSIREN ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Chargement du flux $idFlux : $ret lignes à mettre à jour...".EOL;
} else {
echo date ('Y/m/d - H:i:s') . " - Chargement des flux quotidiens depuis $idFlux...".EOL;
$ret=$iDbR->select('insee_even', $fieldsR, "idFlux>=$idFlux ORDER BY idFlux ASC, insSIREN ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
// $ret=$iDbR->select('insee_even', $fieldsR, "idFlux>=$idFlux AND LENGTH(insL2_COMP)>30 ORDER BY idFlux ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);
/* $ret=$iDbR->select('insee_even', $fieldsR, "insSIREN IN (100800002,987310505) AND idFlux IN (20040426, 20080114) ORDER BY idFlux ASC, insDATEMAJ ASC", true, MYSQL_ASSOC, true);*/
echo date ('Y/m/d - H:i:s') . " - $ret lignes à mettre à jour...".EOL;
}
$k=$nbInsert=$nbUpdate=$nbDBl=0;
while($ligne=$iDbR->fetch(MYSQL_ASSOC)) {
$k++;
$siren=$ligne['insSIREN'];
$nic =$ligne['insNIC'];
$ret2=$iDbW->select('identite', $fieldsW, "SIREN=$siren AND NIC=$nic");
$cpt=count($ret2);
if ($cpt>0) $etab=$ret2[0];
else $etab=array('IDENTITE_PRE'=>'',
'NOM'=>'',
'ENSEIGNE'=>'',
'SIGLE'=>'');
$cj1=substr($ligne['insCJ'],0,1)*1;
if ($cj1==1) {
$arrDir=array( 'DIR_FCT'=>'PP',
'DIR_IDEN'=> strtoupper(trim($ligne['dirNom'])).' '.
ucwords(strtolower(trim($ligne['dirPrenom']))));
} else
$arrDir=array();
$even=trim($ligne['insEVE'])*1;
$typEtab=trim($ligne['insTYPETAB'])*1;
if ($even==0) {
switch(''.trim($ligne['insEVE'])) {
case 'MPF':
case 'MNP':
case 'MSA':
case 'MAS':
case 'MAC':
case 'M00':
case '00': $even=780; break;
case 'M0C':
case 'CC': $even=110; break; // Création d'une entreprise
case 'M0F':
case 'FF': $even=410; break; // Fermeture de l'entreprise
case 'OC': $even=130; break; // Création d'un établissement
case 'RC': $even=120; break; // Réactivation d'une entreprise par création d'un établissement
case 'M0R':
case 'RR': $even=120; break; // Réactivation d'une entreprise par réactivation d'un établissement
case 'OA': $even=145; break; // Activation économique d'un étab par adjonction de moyens de production
case 'OD': $even=430; break; // Désactivation économique d'un étab par suppression de moyens de prod.
case 'OF': $even=430; break; // Fermeture d'un établissement
case 'TC': $even=510; $typEtab=11; break; // Création de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert
case 'TR': $even=510; $typEtab=11; break;
case 'T0': $even=510; $typEtab=11; break;
case 'TA': $even=510; $typEtab=11; break;
case 'TF': $even=510; $typEtab=10; break; // Fermeture d'un établissement dans le cadre d'un transfert
case 'TD': $even=510; $typEtab=10; break; // Désactivation économique d'un établissement (ordinaire devient singulier) par suppression de moyens de production dans le cadre d'un transfert
default:
if (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='C') $even=130;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='A') $even=145;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='D') $even=430;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='F') $even=430;
elseif (''.substr(trim($ligne['insEVE']),0,1).''==0 && substr(trim($ligne['insEVE']),1,1)=='R') $even=120;
else echo ("Erreur code sur Siren $siren $nic : code Even=\"".trim($ligne['insEVE']).'"'.EOL);
break;
}
}
//$even=780
$origine=trim($ligne['insORIGINE']);
$destinat=trim($ligne['insDESTINAT']);
$dateFerEN=$dateFerET=-1; // Rar défaut, on n'y touche pas
switch ($even) {
case 110: // Création ou réactivation Création d'une entreprise
case 120: // Réactivation d'une entreprise
case 125: // Réactivation d'une entreprise suite à une mise à jour du répertoire
case 130: // Création d'un établissement
case 145: // Reprise d'activité dans un établissement suite à une mise à jour du répertoire
switch ($typEtab) {
case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique
case 23: // Établissement fermé (hors transfert)
case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation économique
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
default:
$dateFerET=$dateFerEN=0;
$actif=1;
break;
}
break;
case 400: // Suppression d'un double
//$dateFerET=$dateFerEN=0;
$actif=-1;
continue; // On ignore les suppressions de doublons
break;
case 410: // Cessation juridique de l'entreprise
case 420: // Absence d'activité de l'entreprise (cessation économique de l.entreprise)
$dateFerET=$ligne['insDATEVE'];
$dateFerEN=$ligne['insDATEVE'];
$actif=0;
/** @todo, il faudrait fermer tous les étabs **/
break;
case 425: // Absence d'activité d'une entreprise suite à une mise à jour au répertoire
case 430: // Fermeture d'un établissement
case 435: // Fermeture d'un établissement suite à une mise à jour au répertoire
switch ($typEtab) {
case 13: // Siège fermé (hors transfert)
case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique
case 23: // Établissement fermé (hors transfert)
case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation économique
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
case 14: // Siège modifié (hors transfert) : modification de l'activité principale avec activation économique
case 16: // Siège modifié (hors transfert) : modification de l'APE de l'établissement
case 17: // Siège modifié (hors transfert) : modification de l'identification de l'établissement
case 19: // Siège modifié (hors transfert) : autre modification de l'établissement
case 24: // Établissement modifié (hors transfert) : modification de l'activité principale avec activation économique
$dateFerET=$dateFerEN=0;
$actif=1;
break;
default:
$actif=-1;
break;
}
break;
case 510: // Création de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert
case 520: // Création de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert
case 530: // Modification de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert
case 540: // Modification de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert
switch ($typEtab) {
case 9: // Siège après transfert non créé
case 8: // Siège avant transfert non fermé
case 11: // Siège après transfert créé
case 12: // Siège créé (hors transfert)
case 14: // Siège modifié (hors transfert) : modification de l'activité principale avec activation économique
case 21: // Établissement après transfert créé
case 22: // Établissement créé (hors transfert)
case 24: // Établissement modifié (hors transfert) : modification de l'activité principale avec activation économique
case 30: // Établissement avant transfert non fermé
case 31: // Établissement après transfert non créé
//echo "case even=$even, typeEtab=$typEtab\n";
$dateFerET=$dateFerEN=0;
$actif=1;
break;
case 10: // Siège avant transfert fermé
case 13: // Siège fermé (hors transfert)
case 15: // Siège modifié (hors transfert) : modification de l'activité principale avec désactivation économique
case 20: // Établissement avant transfert fermé
case 23: // Établissement fermé (hors transfert)
case 25: // Établissement modifié (hors transfert) : modification de l'activité principale avec désactivation économique
case 32: // Établissement supprimé
//echo "case even=$even, typeEtab=$typEtab\n";
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
default:
$actif=-1;
break;
/*
Que fait on pour ces codes ?
16 Siège modifié (hors transfert) : modification de l'activité principale de l'établissement
17 Siège modifié (hors transfert) : modification de l'identification de l'établissement
19 Siège modifié (hors transfert) : autre modification de l'établissement
26 Établissement modifié (hors transfert) : autre modification de l'activité principale de l'établissement
27 Établissement modifié (hors transfert) : modification de l'identification de l'établissement
29 Établissement modifié (hors transfert) : modification d.une autre variable de l'établissement*/
}
break;
case 610: // Modification d'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production
case 640: // Modification d'activité au niveau de l'établissement associée à une activation économique par adjonction de moyens de production
$actif=1;
break;
case 620: // Modification d'activité au niveau du SIREN associé à une désactivation économique par suppression de moyens de production
case 621: // Modification d'activité du SIREN associé à une désactivation économique par suppression de moyens de production suite à une correction d'erreur
$dateFerET=$ligne['insDATEVE'];
$dateFerEN=$ligne['insDATEVE'];
$actif=0;
break;
case 650: // Modification d'activité au niveau de l'établissement associée à une désactivation économique par suppression de moyens de production
$dateFerET=$ligne['insDATEVE'];
$actif=0;
break;
//case 781:
case 795: // SIREN non diffusible
$actif=1;
break;
default:
$actif=-1;
/*631 Autre modification d'activité du SIREN associé
661 Autre modification d'activité au niveau de l'établissement
710 Modification de l'identification du SIREN
711 Modification de l'identification du SIREN suite à correction d'erreur
720 Modification de l'adresse ou de l'identification de l'établissement
780 Autre modification entraînant la mise à jour d'au moins une variable du répertoire
781 Autre modification entraînant la mise à jour d'au moins une variable du répertoire suite à correction d'erreur*/
}
//echo "$k : [$siren $nic\t$even\t$destinat\t$typEtab\t$origine\t($actif)]".EOL;
/** Si on n'a pas pu déterminé l'état actif ou inactif, on test si la variable DESTINAT est renseignée !
**/
if ($actif==-1 && (trim($ligne['insEVE'])=='MPF' || trim($ligne['insEVE'])=='MNP')) {
// Etablisement présumé fermé mais on laisse actif juridiquement
$actif=-1;
}
elseif ($actif==-1 && ( $destinat*1==3 || // Vendu
$destinat=='B' || // Fermé
$destinat=='C' || // Supprimé
$destinat=='D' || // Mise en location-gérance de la totalité du fonds
$destinat=='F' || // Cessation d'activité (pour les liasses agricoles)
$destinat=='I' || // Transmission au conjoint (pour les liasses agricoles)
$destinat=='J' || // Cession (pour les liasses agricoles)
$destinat=='G' ) ) // Mise en location-gérance de la totalité des terres et des bâtiments agricoles (pour les liasses agricoles)
{
$dateFerET=$ligne['insDATEVE'];
$actif=0;
}
elseif ($actif==-1 && ( $destinat*1==7 || // Maintien d'activité, l'établissement devient siège
$destinat*1==8 || // Maintien d'activité, l'établissement devient principal
$destinat=='A' || // Maintien d'activité, l'établissement devient secondaire
$destinat=='E' || // Mise en location-gérance d'une partie du fonds
$destinat=='VP' || // suppression partielle d'activité par vente
$destinat=='DP' || // suppression partielle d'activité par disparition
$destinat=='RP' || // suppression partielle d'activité par reprise par le propriétaire
$destinat=='H') ) // Mise en location-gérance d'une partie des terres et des bâtiments agricoles (pour les liasses agricoles)
{
$actif=1;
}
else {
if ($modeDebug)
echo "$k : $siren $nic\t$even\t$destinat\t$typEtab\t$origine\t($actif)".EOL;
}
/*
9 Autre
NR Non renseigné
*/
if ($actif==-1) $arrActif=array();
else $arrActif=array('ACTIF'=>$actif);
if ($dateFerET<>-1) $arrActif=array_merge($arrActif, array('dateFerET'=>$dateFerET));
if ($dateFerEN<>-1) $arrActif=array_merge($arrActif, array('dateFerEN'=>$dateFerEN));
/** Zone Identité précédente
** contenant tous les anciens nom, sigle et/ou enseigne concaténés
** n'ai jamais affiché mais sert pour l'indexation au niveau de la recherche
** On ne se sert pas de $tabEve['insMENSEIGNE'] =substr($a,543,1);//Indicateur de mise à jour de l'enseigne de l'établissement
** $tabEve['insMNOMEN']=substr($a,658,1);//Indicateur de mise à jour du nom ou de la raison sociale
** $tabEve['insMSIGLE']=substr($a,659,1);//Indicateur de mise à jour du sigle
**/
$identite_pre=trim($etab['IDENTITE_PRE']);
$nomEntrep=trim(strtr($ligne['insNOMEN'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°')));
$nomEntrepEnBase=substr(trim(strtr($etab['NOM'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°'))),0,38);
if ($nomEntrepEnBase<>$nomEntrep && $nomEntrepEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, établissement $siren $nic - NOM En base : / MAJ : $nomEntrepEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$nomEntrepEnBase;
else
$identite_pre.=','.$nomEntrepEnBase;
}
$nomEtab=trim(strtr($ligne['insENSEIGNE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°')));
$nomEtabEnBase=trim(strtr($etab['ENSEIGNE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°')));
if ($nomEtabEnBase<>$nomEtab && $nomEtabEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, établissement $siren $nic - ENSEIGNE En base : / MAJ : $nomEtabEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$nomEtabEnBase;
else
$identite_pre.=','.$nomEtabEnBase;
}
$sigEntrep=trim(strtr($ligne['insSIGLE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°')));
$sigEntrepEnBase=trim(strtr($etab['SIGLE'],array('*'=>' ','/'=>' ',"\'"=>"'",chr(191)=>'°')));
if ($sigEntrepEnBase<>$sigEntrep && $sigEntrepEnBase<>'') {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Ligne $nbLignes, établissement $siren $nic - SIGLE En base : / MAJ : $sigEntrepEnBase".EOL;
if (strlen($identite_pre)==0)
$identite_pre=$sigEntrepEnBase;
else
$identite_pre.=','.$sigEntrepEnBase;
}
$arrBase=array( 'NOM'=> trim($ligne['insNOMEN']), // Raison Sociale de l'entreprise
'NOM2'=> trim($ligne['insL2_COMP']), // Enseigne de l'établissement ou sigle de l'entreprise ou enfin, nom commercial (Intermarché)
'ENSEIGNE'=> trim($ligne['insENSEIGNE']), // Nom de l'établissement ou enseigne
'SIGLE'=> trim($ligne['insSIGLE']), // Sigle
'SIEGE'=> $ligne['insSIEGE'], // Siège
'IDENTITE_PRE'=>$identite_pre,
'ADR_NUMVOIE'=> trim($ligne['insNUMVOIE']), // N° dans la voie
'ADR_BTQ'=> trim($ligne['insINDREP']), // BTQ
'ADR_TYPVOIE'=> trim($ligne['insTYPVOIE']), // Type de voie
'ADR_LIBVOIE'=> trim($ligne['insLIBVOIE']), // Lib Voie
'ADR_CP'=> trim($ligne['insCODPOS']), // Code Postal
'ADR_LIBCOM'=> trim($ligne['insLIBCOM']), // Commune
'ADR_COMP'=> trim($ligne['insL3_CADR']), // Complément d'adresse
'ADR_DISTSP'=> trim($ligne['insL5_DISP']), // Distribution Spéciale
'AUXILT'=> trim($ligne['insAUXILT']), //
'SAISONAT'=> $ligne['insSAISONAT'], //
'CJ'=> trim($ligne['insCJ']),
'CIVILITE'=> trim($ligne['insCIVILITE']), // Sexe 0=Entrep, 1=Homme, 2=Femme
'DCRET'=> trim($ligne['insDCRET']), // Date de création de l'établissemennt
'DCREN'=> trim($ligne['insDCREN']), // Date de création de l'entreprise
'APE_ENT'=> trim($ligne['insAPEN700']), // Code NAF de l'entreprise (cf. table APE)
'APE_ETAB'=> trim($ligne['insAPET700']), // Code NAF de l'établissement (cf. table APE)
'NBETAB'=> trim($ligne['insNBETEXPL']), // Nombre d'établissement de l'entreprise
'TEFF_ENT'=> trim($ligne['insTEFEN']), // Tr Eff Entrep
// 'TCA'=> trim($ligne['insTCA']), // Tr CA
'CODEVOIE'=> trim($ligne['insCODEVOIE']), // Ce RIVOLI
'ADR_DEP'=> trim(substr($ligne['insDEPCOM'],0,2))*1,
'ADR_COM'=> trim(substr($ligne['insDEPCOM'],2,3))*1,
'EFF_ENT'=> trim($ligne['insEFENCENT']), // Eff Entrep
'TEFF_ET'=> trim($ligne['insTEFET']), // Tr Eff Etablissement
'EFF_ET'=> trim($ligne['insEFETCENT']), // Eff Etablissement
'PAYS'=> trim($ligne['insL7_ETRG']), // Pays si différent de france
'APRM'=> trim($ligne['insAPRM']), // Répertoire Métier
'ACTIVNAT'=> trim($ligne['insACTIVNAT']),
'ORIGINE'=> trim($ligne['insORIGINE']),
'MODET'=> trim($ligne['insMODET']),
'EXPLET'=> trim($ligne['insEXPLET']),
'DAPET'=> trim($ligne['insDAPET']),
'LIEUACT'=> trim($ligne['insLIEUACT']),
'ACTISURF'=> trim($ligne['insACTISURF']),
'DEFET'=> trim($ligne['insDEFET']),
'MODEN'=> trim($ligne['insMODEN']),
'PRODPART'=> trim($ligne['insPRODPART']),
'EXPLEN'=> trim($ligne['insEXPLEN']),
'DEFEN'=> trim($ligne['insDEFEN']),
'MONOREG'=> trim($ligne['insMONOREG']),
'REGIMP'=> trim($ligne['insREGIMP']),
'MONOACT'=> trim($ligne['insMONOACT']),
'DAPEN'=> trim($ligne['insDAPEN']),
'DATE_MAJ'=> substr(''.$ligne['insDATEMAJ'].'',0,8),
);
if ($cpt==0) {
/**
** On ajoute la fiche de l'établissement
**/
$arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // Téléphone de l'établissement
$tabInsert=array( 'SIREN'=> $ligne['insSIREN'],
'NIC'=> $ligne['insNIC'],
);
$tabInsert=array_merge($tabInsert, $arrTel, $arrDir, $arrBase, $arrActif);
// echo date ('Y/m/d - H:i:s')." - Siret $siren $nic en cours d'ajout".EOL;
$retInsert=$iDbW->insert('identite', $tabInsert, true);
if (!$retInsert) die('Erreur Mysql n°'. mysql_errno() .' : '.mysql_error());
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic ajouté".EOL;
$nbInsert++;
} else {
/**
** On modifie la fiche de l'établissement
**/
$tel=trim($ret2[0]['TEL']);
if (trim($ligne['insTEL'])<>'' && $tel=='')
$arrTel=array( 'TEL'=> trim($ligne['insTEL'])); // Téléphone de l'établissement
else
$arrTel=array();
$tabUpdate=array_merge($arrTel, $arrDir, $arrBase, $arrActif);
$retUpdate=$iDbW->update('identite', $tabUpdate, "SIREN=$siren AND NIC=$nic", false);
if (!$retUpdate) die('Erreur lors de MAJ Mysql n°'. mysql_errno() .' : '.mysql_error());
//if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic modifié".EOL;
$nbUpdate++;
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Siret $siren $nic : $cpt fiche(s) modifiée(s)".EOL;
if ($cpt>1) {
//die(date ('Y/m/d - H:i:s')." - Siret $siren $nic : $cpt correspondances".EOL);
$tabSirenDoubles[]=$siren;// RAF
$fp=fopen('doublons.txt', 'a');
fwrite($fp, "$siren $nic : $cpt lignes\n");
fclose($fp);
//print_r($ret2);
echo date ('Y/m/d - H:i:s')." - Doublons sur $siren $nic : $cpt lignes".EOL;
$nbDBl++;
}
}
}
echo date ('Y/m/d - H:i:s') . " - Fin du chargement du flux $idFlux : $k lignes traités ($nbInsert ajouts, $nbUpdate maj et $nbDBl doublons).".EOL;
}
echo date ('Y/m/d - H:i:s') . " - Fin de la mise à jour de la table identité".EOL;
} else echo ', la table identite n\'est pas mise à jour !'.EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des évènements INSEE".EOL;
$message="Fichier évènements '".implode(',', $nomFichierCharges)."' :
- $nbLignesCharges lignes traitées,
- $nbSiretInvalidesCharges siret invalides,
- $nbErreurs erreurs lors des insertions.
";
if ($updateInsee) {
$message.="
Table identité :
- $nbInsert créations,
- $nbUpdate mises à jour
";
}
$message.=EOL;
/** Ajout du fichier info de l'INSEE **/
foreach ($nomFichierCharges as $nomFichier) {
$message.="Informations INSEE pour '$nomFichier' :".EOL;
$message.=file_get_contents(AMABIS_LOCAL_DIR.str_replace('*','', AMABIS_FTP_REMOTE_DIR).str_replace('EVE.DJ','EVE.NJ',$nomFichier)).EOL;
$message.=EOL;
}
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Fin du traitement de chargement INSEE', $message);
die();
?>

55
batch/getSIC.php Normal file
View File

@ -0,0 +1,55 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/curl.php');
/*include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(FWK_PATH.'mail/sendMail.php');
*/
$body=file_get_contents ('/root/sic/sic.txt');
if (preg_match_all('/<p style="(?:.*)">SIC code (.*)\: <b>(.*)<\/b>(?:.*)<td class="d1">Nace<\/td><td class="d2">(.*)<\/td>/Uis',$body,$matches)) {
foreach ($matches[1] as $i=>$sic_code) {
$sic_lib=$matches[2][$i];
$nace_code=$matches[3][$i];
echo "$sic_code\t$sic_lib\t$nace_code".EOL;
}
//print_r($matches);
die();
}
die();
echo simpleWhois('indiscore', 'fr', true);
die();
$tab = array( 'toto.com',
'momo.com',
'yoyo.fr',
'65qs4df56q4qsdqsd.com',
'koko.net',
'zozo.net',
'soso.net',
'qoqo.net',
'qs56d4qs56d4qs65d4qs564.net',
'xoxo.net',
'coco.com',
'hoho.fr',
'nono.net',
'dodo.com',
);
// Récupération des résultats
$output = false;
// Exécution
if($tab){
foreach($tab as $host){
list($domain, $tdl) = split(".", $host, 2); // le 2 permet de s'arreter après le 1er point ce qui permet d'avoir des extenssion du type .com.fr
$output[$host] = simpleWhois($domain, $tdl);
}
}
// Affichage "brut" des données traitées
if($output){
print_r($output);
}
?>

1314
batch/getSem.php Normal file

File diff suppressed because it is too large Load Diff

1314
batch/getSem2.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ include_once(FWK_PATH.'mail/sendMail.php');
include_once(FWK_PATH.'map/ShapeFile.inc.php');
//$shp = new ShapeFile("us.shp"); // along this file the class will use file.shx and file.dbf
$shp = new ShapeFile("cours.shp"); // along this file the class will use file.shx and file.dbf
$shp = new ShapeFile("/var/www/batch/shape/RPG_2012_006.shx"); // along this file the class will use file.shx and file.dbf
// Let's see all the records:
var_dump ($shp) ;

View File

@ -16,7 +16,22 @@ Options :
";
$mInsee=new MInsee();
$tabSrc=array( 'adm'=>array('lib'=>'Administrations',
$tabSrc=array( 'pjms'=>array('lib'=>'PagesJaunesMS',
'db'=>'tmp',
'table'=>'pjms201505',
'zones'=>"seq AS id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, '' AS mail, '' AS web,
20150630 AS dateInsert,
0 AS dateUpdate,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax,
rubrique_pro AS an8",
'where'=>"siret>100000000 AND (tel<>'' OR fax<>'' OR rubrique_pro<>'')",
'go'=>0,
'idSrc'=>118),
/** @todo : Ne charger les données PJMS qu'après avoir mis le fichier sur le serveur,
* /var/www/batch/loadCSV.php -s=/t -d=tmp -t=pjms -e 2014101000948_Scores_et_Decisions.csv
**/
'adm'=>array('lib'=>'Administrations',
'db'=>'jo',
'table'=>'boamp_detail',
'zones'=>"id, siren, nic, poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert, dateUpdate,
@ -41,6 +56,13 @@ $tabSrc=array( 'adm'=>array('lib'=>'Administrations',
'where'=>"siren>1000 AND nic>9 AND recupTel=0 AND (Assoc_Mail<>'' OR Assoc_Web<>'')",
'go'=>1,
'idSrc'=>3),
'assocpt'=>array('lib'=>'Comptes Associations',
'db'=>'jo',
'table'=>'asso_bilans',
'zones'=>"id, siren, NULL AS nic, '' AS poste, siteWeb AS web, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
'where'=>"siren>1000 AND recupTel=0 AND (siteWeb LIKE '%@%' OR siteWeb LIKE '%http%' OR siteWeb LIKE '%www%' OR siteWeb LIKE '%.fr' OR siteWeb LIKE '%.org' OR siteWeb LIKE '%.com')",
'go'=>1,
'idSrc'=>3),
'mand'=>array('lib'=>'Mandataires',
'db'=>'jo',
'table'=>'tabMandataires',
@ -139,11 +161,63 @@ $tabSrc=array( 'adm'=>array('lib'=>'Administrations',
REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"SIRET>1000 AND recupTel=0 AND (Tel<>'' OR Fax<>'')",
'go'=>1,
'go'=>0,
'idSrc'=>210),
'cncc'=>array('lib'=>'CNCC',
'db'=>'sdv1',
'table'=>'tabCNCC',
'zones'=>"id, siren, nic, '' AS poste, mail, web, dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>300),
'amf_mairies'=>array('lib'=>'AMFM',
'db'=>'jo',
'table'=>'villes',
'zones'=>"id, siren, nic, '' AS poste, '' AS mail, web, dateMajAMF AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR web<>'')",
'go'=>1,
'idSrc'=>400),
'banatic'=>array('lib'=>'Banatic',
'db'=>'insee',
'table'=>'banatic_coor',
'zones'=>"id, sirenGrp AS siren, NULL AS nic, '' AS poste, mail, web, dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"sirenGrp>100 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>52),
'infos_entrep'=>array('lib'=>'InfosEntrep',
'db'=>'jo',
'table'=>'infos_entrep',
'zones'=>"id, siren, nic, '' AS poste, mail, web, dateUpdate AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>175),
'crmScores'=>array('lib'=>'CRM Scores',
'db'=>'sugarcrm',
'table'=>'accounts',
'zones'=>"id, ticker_symbol AS siren, NULL AS nic, '' AS poste, email1 AS mail, website AS web, IF(date_modified>date_entered, date_modified, date_entered) AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(phone_office,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(phone_alternate,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"ticker_symbol>1000 AND recupTel=0 AND (phone_office<>'' OR phone_alternate<>'' OR email1<>'' OR website<>'')",
'go'=>1,
'idSrc'=>252),
/*
`id` , `billing_address_street` , `billing_address_city` , `billing_address_state` , `billing_address_postalcode` ,
`phone_office` , `phone_alternate` , `email1` , `email2` , `website` , `ticker_symbol` , `shipping_address_street` ,
`shipping_address_city` , `shipping_address_state` , `shipping_address_postalcode` , `date_entered` , `date_modified` , `modified_user_id` , `deleted`
FROM `accounts`
ORDER BY `accounts`.`date_modified` ASC
*/
);
$tabZones=array('tel', 'fax', 'mob', 'mail', 'web');
$tabZones=array('tel', 'fax', 'mob', 'mail', 'web', 'an8');
$verbose=$noMail=false;
$argv=$_SERVER['argv'];
@ -220,28 +294,48 @@ foreach ($tabSrc as $src=>$tabSrcDet) {
//continue;
if ($iDb2->insert('telephonie', array( 'siren'=>$siren,
'nic'=>$nic,
'dateProvPartenaire'=>$tabTel['dateInsert'],
'dateProvPartenaire'=>str_replace('-','',$tabTel['dateInsert']),
'typeTel'=>$zone,
'actif'=>1,
'infoTel'=>$infoTel,
'telephone'=>$tel,
'partenaire'=>$tabSrcDet['idSrc'])) || $iDb2->getLastErrorNum()==1062) {
if ($iDb2->getLastErrorNum()<>1062) @$nbInsert[$zone]++;
if ($iDb2->getLastErrorNum()<>1062) {
@$nbInsert[$zone]++;
@$nbInsertSrc[$zone][$src]++;
}
elseif ($iDb2->getLastErrorNum()==1062) {
$ret2=$iDb2->select('telephonie', 'nbConf', "siren=$siren AND nic=$nic AND typeTel='$zone' AND infoTel='$infoTel' AND telephone=$tel", false, MYSQL_ASSOC);
$nbConf=($ret2[0]['nbConf']*1)+1;
$iDb2->update('telephonie', array( 'dateConfPartenaire'=>str_replace('-','',$tabTel['dateInsert']),
'partenaireConf'=>$tabSrcDet['idSrc'],
'nbConf'=>$nbConf), "siren=$siren AND nic=$nic AND typeTel='$zone' AND infoTel='$infoTel' AND telephone=$tel", false);
@$nbUpdateSrc[$zone][$src]++;
@$nbUpdate[$zone]++;
}
@$nbTot[$zone]++;
$tabUpdate=array('recupTel'=>1);
if (isset($tabTel['dateUpdate'])) $tabUpdate['dateUpdate']=$tabTel['dateUpdate'];
$iDb->update($tabSrcDet['table'], $tabUpdate, "id=".$tabTel['id']);
$iDb->update($tabSrcDet['table'], $tabUpdate, "id='".$tabTel['id']."'");
} else die($iDb2->getLastError());
}
}
}
print_r($nbInsert);
print_r($nbUpdate);
print_r($nbTot);
if (!$noMail) {
$message=date('Y/m/d - H:i:s') ." - Fin de la récupération des Tel, Fax, Mel et Web issus des différentes sources :".EOL;
foreach ($tabZones as $zone)
$message.=" Nombre de nouveaux '$zone' = ".@$nbInsert[$zone].' ajouts / '.@$nbTot[$zone].' lignes'.EOL;
$message.=" Nombre de nouveaux '$zone' = ".@$nbInsert[$zone].' ajouts et '.@$nbUpdate[$zone].' MAJ / '.@$nbTot[$zone].' lignes'.EOL;
$message.=EOL;
foreach ($tabZones as $zone) {
foreach ($tabSrc as $src=>$tabSrcDet) {
$nbTotTmp=@$nbInsertSrc[$zone][$src]+@$nbUpdateSrc[$zone][$src];
if ($nbTotTmp>0) $message.=" Source '".sprintf("%-20s", $tabSrcDet['lib']."'")." nb. nouveaux '$zone' = ".@$nbInsertSrc[$zone][$src].' ajouts et '.@$nbUpdateSrc[$zone][$src].' MAJ / '.@$nbTotTmp.' lignes'.EOL;
}
}
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,support@scores-decisions.com', "Récupération des Tel, Fax, Mel et Web", $message);
}
@ -327,7 +421,7 @@ foreach ($tabSrc as $src=>$tabSrcDet) {
'telephone'=>$tel,
'partenaire'=>$tabSrcDet['idSrc'])) || $iDb2->getLastErrorNum()==1062) {
@$nbInsert[$zone]++;
$iDb->update($tabSrcDet['table'], array('recupTel'=>1), "id=".$tabTel['id']);
$iDb->update($tabSrcDet['table'], array('recupTel'=>1), "id='".$tabTel['id']."'");
} else die($iDb2->getLastError());
}
}
@ -352,7 +446,7 @@ while ($tabTel=$iDbSel->fetch(MYSQL_ASSOC)) {
if ($telPrev=='' && $tel<>'') $tabUpdate['TEL']=$tel;
if ($faxPrev=='' && $fax<>'') $tabUpdate['FAX']=$fax;
if (count($tabUpdate)>0) {
$iDbMaj->update('identite',$tabUpdate, "id=$id");
$iDbMaj->update('identite',$tabUpdate, "id='$id'");
echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : Mise à jour OK".EOL;
$nbAvecMaj++;
}

1091
batch/giantMonitoring.php Normal file

File diff suppressed because it is too large Load Diff

378
batch/listeFranchises.php Normal file
View File

@ -0,0 +1,378 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
if (!defined('VERSION_FICHIER_IDENTITE'))
define('VERSION_FICHIER_IDENTITE','0106');
/**
* @todo
* 2. Pouvoir faire du multiligne avec : 106 Libell� du P�rim�tre de la vente
* 5. JugesCommissaires � int�grer correctement
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'conversion/bilAltares.php');
include_once(FWK_PATH.'mail/sendMail.php');
$optionEOL=EOL;
$stock=$dateDebut=$idClientTodo=false;
$dateDebutCmd=false;
$iInsee=new MInsee();
$iDb=new WDB('jo');
$iDb2=new WDB('sdv1');
$iBodacc=new MBodacc();
$iRncs=new MRncs();
/*
$tabZonesToCheck=array('Nom','Enseigne','Sigle');
$tabTmp=$iDb->select('sirenage_clients','id, refClient, nom, siren, sirenValide, sirenExiste, nic, nicValide, nicExiste, enseigne, adresse1, adresse2, adresse3, cp, ville',"idClient=173 AND idFlux=46 AND siren>1000 AND sirenValide=0 AND sirenExiste=1", false, MYSQL_ASSOC);
//$tabTmp=$iDb->select('sirenage_clients','id, refClient, nom, siren, sirenValide, sirenExiste, nic, nicValide, nicExiste, enseigne, adresse1, adresse2, adresse3, cp, ville',"idClient=173 AND idFlux=45 AND siren>1000 AND sirenValide=0 AND sirenExiste=1", false, MYSQL_ASSOC);
$nbTotal=count($tabTmp);
foreach($tabTmp as $i=>$tabSirenage) {
//print_r($tabSirenage);
//die();
$siren=$tabSirenage['siren'];
$nic=$tabSirenage['nic'];
$nom=$tabSirenage['nom'];
$id=$tabSirenage['id'];
$cp=$tabSirenage['cp'];
$sirenValide=$nicValide=0;
$sirenExiste=$nicExiste=0;
if ($iInsee->valideSiren($siren, $nic)) {
$sirenValide=1;
$nicValide=1;
if ($siren>1000) $tabIdI=$iInsee->getIdentiteLight($siren, $nic);
} elseif ($iInsee->valideSiren($siren)) {
$sirenValide=1;
if ($siren>1000) $tabIdI=$iInsee->getIdentiteLight($siren);
}
if ($siren>1000 && $siren==$tabIdI['Siren']) $sirenExiste=1;
if ($nic>9 && $nic==$tabIdI['Nic']) $nicExiste=1;
$resirener=false;
if ($sirenExiste /*&& $nicExiste*) {
$raisonSociale =trim(strtoupper(trimAccent(strtr($nom, array('/'=>' ','*'=>' ','('=>'', ')'=>'', '.'=>'', '-'=>'', "Nom d'usage"=>'', 'Pseudonyme'=>'', "'"=>'', ':'=>'',' N� '=>' ',' N�e '=>' ','/ACHE/'=>' ','Pr�c�dent propri�taire'=>' ')))));
$raisonSociale=strtr($raisonSociale, array('SOCIETE EN LIQUIDATION'=>'', 'EN LIQUIDATION'=>'', 'SOCIETE A RESPONSABILITE LIMITEE'=>'SARL','DENOMINATION'=>'', 'SUCCESSION'=>''));
$len =strlen($raisonSociale);
$tabMots=preg_split('/ +/', $raisonSociale);
$mots=count($tabMots);
foreach($tabZonesToCheck as $zone) {
$raisonSocialeI=trim(strtoupper(strtr(trimAccent($tabIdI[$zone]), array('/'=>' ','*'=>' ','('=>'', ')'=>'', '.'=>'', '-'=>'', "Nom d'usage"=>'', "'"=>'', ':'=>''))));
$levI=levenshtein(str_replace(' ','',$raisonSociale),str_replace(' ','',$raisonSocialeI));
$delI=$levI/$len;
$lenI=strlen($raisonSocialeI);
$tabMotsI=preg_split('/ +/', $raisonSocialeI);
$motsI=count(array_diff($tabMots,$tabMotsI));
$diffI=$motsI/$mots;
//die();
if ($delI<0.5 && $diffI<=0.5) {
echo "$zone '".$tabIdI[$zone]."' identique à $raisonSociale".EOL;
break;
}
}
if ($delI<0.5 && $diffI<=0.5 && substr($cp,0,2)==$tabIdI['Dept']) {
$nic=$tabIdI['Nic'];
$nicValide=$nicExiste=1;
$tabUpdate=array( //'siren' => $siren,
'nic' => $nic,
'sirenValide' => $sirenValide,
//'sirenExiste' => $sirenExiste,
'nicValide' => $nicValide,
'nicExiste' => $nicExiste,
);
//print_r($tabUpdate);
//die();
$iDb->update('sirenage_clients', $tabUpdate,"id=$id");
echo mysql_error();
$iDb->delete('bodacc_sirenage', "idTable='sirenage_clients' AND idAnn=$id");
echo mysql_error();
//print_r($tabSirenage);
echo "$i/$nbTotal : siren $siren - AJOUT DU NIC $nic.".EOL;
//print_r($tabUpdate);
//die();
if ($i%1000==0)
echo "$i/$nbTotal : $nbSirenValide siren valides dont $nbSirenExiste existants".EOL;
}
continue;
echo "$delI >=0.5 ? && $diffI >0.5 ?".EOL;
print_r($tabIdI);
die();
if ($delI>=0.5 && $diffI>0.5) {
$tabIdR=$iRncs->getInfosEntrep($siren);
if (@$tabIdR['raisonSociale']=='') {
$resirener=true;
}
else {
$raisonSocialeR=trim(strtoupper(strtr(trimAccent($tabIdR['raisonSociale']), array('/'=>' ','*'=>' ','('=>'', ')'=>'', '.'=>'', '-'=>'', "Nom d'usage"=>'', "'"=>'', ':'=>''))));
$levR=levenshtein(str_replace(' ','',$raisonSociale),str_replace(' ','',$raisonSocialeR));
$delR=$levR/$len;
$tabMotsR=preg_split('/ +/', $raisonSocialeR);
$motsR=count(array_diff($tabMots,$tabMotsR));
$diffR=$motsR/$mots;
if ($delR>0.5 && $diffR>0.5)
$resirener=true;
}
}
if ($resirener) {
$nbSirenAvalider++;
$sirenValide=0;
$nicValide=0;
}
}
if ($sirenValide) $nbSirenValide++;
if ($sirenExiste) $nbSirenExiste++;
if ($nicValide) $nbNicValide++;
if (nicExiste) $nbNicExiste++;
$tabUpdate=array( 'siren' => $siren,
'nic' => $nic,
'sirenValide' => $sirenValide,
'sirenExiste' => $sirenExiste,
'nicValide' => $nicValide,
'nicExiste' => $nicExiste,
);
//print_r($tabInsert);
//die();
$iDb->update('sirenage_clients', $tabUpdate,"id=$id");
//print_r($tabUpdate);
//die();
if ($i%1000==0)
echo "$i/$nbTotal : $nbSirenValide siren valides dont $nbSirenExiste existants".EOL;
}
die();
*/
/**
$len =strlen($raisonSociale);
$tabMots=preg_split('/ +/', $raisonSociale);
$mots=count($tabMots);
$levI=levenshtein(str_replace(' ','',$raisonSociale),str_replace(' ','',$raisonSocialeI));
$delI=$levI/$len;
$lenI=strlen($raisonSocialeI);
$tabMotsI=preg_split('/ +/', $raisonSocialeI);
$motsI=count(array_diff($tabMots,$tabMotsI));
$diffI=$motsI/$mots;
echo "$raisonSociale\t$raisonSocialeI\t$delI >=0.5 ?\t$diffI >0.5?".EOL;
die();
*
*
* SELECT `siren` , `nic` , `codePostal` , `codePostalSiege` , `typeEven`
FROM `bodacc_detail`
WHERE `id` >=18000000
AND `Bodacc_Date_Parution` >= '2013-06-01'
AND `Rubrique` = CONVERT( _utf8 'radiations'
USING latin1 )
COLLATE latin1_swedish_ci
LIMIT 0 , 30
*/
/*
$tabLignes=file('/root/sql/cegedimCPradiations.csv');
foreach($tabLignes as $ligne) {
$tabLigne=explode("\t", $ligne);
$siren=$tabLigne[0];
if ($siren<1000) continue;
$nic=$tabLigne[1];
$cp=$tabLigne[2];
$cpSiege=$tabLigne[3];
$ann=$tabLigne[5];
if (preg_match('/Adresse du si.ge social \:(.*)\s+(\d\d\d\d\d)\s+/Ui', $ann, $matches))
$cpSiege=$matches[2];
echo "$siren\t$nic\t";
if ($cp>$cpSiege) echo $sp.EOL;
else echo $cpSiege.EOL;
/*
print_r($tabLigne);
die();
$siren=$tabLigne[0];
if ($siren<1000) continue;
$ref=$tabLigne[2];
$cp=trim($tabLigne[3]);
$tabId=@$iInsee->getIdentiteLight($siren);
$siege=$tabId['Siege'];
$nic=$tabId['Nic'];
$cpLu=$tabId['CP'];
if ($cp<>$cpLu) $nic=0;
echo "$siren\t$nic\t$ref\t$cp\t$cpLu".EOL;
//if (@$tabId['actif']==0) $typeJuge='';
//print_r($tabId);
//print_r($tabLigne);
//die();
**
$tabLignes=file('/root/sql/SICLIrecherchenic20130924.csv');
$nbLignes=count($tabLignes);
foreach($tabLignes as $iLigne=>$ligne) {
$tabLigne=explode(",", $ligne);
$siren=$tabLigne[0];
if ($siren<1000) continue;
$nic='';
$ref=$tabLigne[2];
$cp=trim($tabLigne[3]);
$dep=substr($cp,0,2);
if ($dep>95) $dep=substr($cp,0,3);
$tabRep=@$iInsee->getEtablissements($siren, $nic, $deb=0, $nbRep=20, $maxRep=200, $dep);
if ($tabRep['nbReponses']==1) {
$tabId=$tabRep['reponses'][0];
$siege=$tabId['Siege'];
$nic=$tabId['Nic'];
$cpLu=$tabId['CP'];
$actif=$tabId['Actif'];
$ok=1;
} elseif ($tabRep['nbReponses']>1) {
$ok=0;
foreach ($tabRep['reponses'] as $iRep=>$tabId) {
$siege=$tabId['Siege'];
$nic=$tabId['Nic'];
$cpLu=$tabId['CP'];
$actif=$tabId['Actif'];
if ($cp==$cpLu) {
$ok=1;
break;
}
}
}
if ($nic*1<>0 && $ok) echo "$iLigne/$nbLignes\t$siren\t$nic\t$ref\t$cp\t$cpLu".EOL;
}
die();
**/
$repIn='/root/franchise/';
$fichierIn=false;
$dh = opendir($repIn);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -5)=='.html') {
$fichierIn = $filename;
$tabTmp=explode('-', $fichierIn);
$idIn=str_replace('.html','',end($tabTmp));
$htmlIn=file_get_contents($repIn.$fichierIn);
//echo $fichierIn.' ('.strlen($htmlIn)." octets pour l'id $idIn)".EOL;
$enseigne=$secteurNom=$secteurLien=$activiteNom=$activiteLien=$rs=$adresse='';
if (preg_match('/<h1>Franchise \: (.*)<\/h1>/Uis', $htmlIn, $matches))
$enseigne=trim(strip_tags($matches[1]));
if (preg_match('/Toute l\'actualité du secteur <a href=\'(.*)\'>(.*)<\/a>/Uis', $htmlIn, $matches)) {
$secteurLien=trim($matches[1]);
$secteurNom =trim($matches[2]);
}
if (preg_match('/Toute l\'actualit� de l\'activit� <a href=\'(.*)\'>(.*)<\/a>/Uis', $htmlIn, $matches)) {
$activiteLien=trim($matches[1]);
$activiteNom =trim($matches[2]);
}
if (preg_match('/Contact<\/a><\/td>(?:.*)<div style="padding\: 14px;"><h1 style=\'color\: #c50c1f;\'>(.*)<\/h1>(.*)<\/p><\/div>/Uis', $htmlIn, $matches)) {
$rs=trim($matches[1]);
$adresse=trim($matches[2]);
if (strlen($rs)>1000 || strlen($adresse)>1000) {
if (preg_match('/<td onclick="location\.href=\'(http\:\/\/www\.franchise\-magazine\.com\/franchise\/(?:.*)\/contact\.html)\'"/Uis', $htmlIn, $matches)) {
$url=$matches[1];
$tabTmp=explode("'", $url);
$url=end($tabTmp);
//die($url);
$page=getUrl($url, '', '', '', false);
$body=$page['body'];
if (preg_match('/Contact<\/a><\/td>(?:.*)<div style="padding\: 14px;"><h1 style=\'color\: #c50c1f;\'>(.*)<\/h1>(.*)<\/p><\/div>/Uis', $body, $matches)) {
$rs=trim($matches[1]);
$adresse=trim($matches[2]);
}
}
}
}
echo "$fichierIn\t$idIn\t$enseigne\t$secteurNom\t";
$tabUpdate=array( 'secteurFmag'=>$secteurNom);
if ($iDb2->update('franchiseurs', $tabUpdate,"idFmag=$idIn", false))
echo 'OK'.EOL;
else
echo 'K.O. !!!'.EOL;
echo mysql_error();
//echo "$fichierIn\t$idIn\t$enseigne\t$secteurNom\t$secteurLien\t$activiteNom\t$activiteLien\t$rs\t$adresse".EOL;
}
}
die();
/*
foreach ($tabLignes as $i=>$ligne) {
$ecrireLignePre=false;
$typeLigne=substr($ligne, 0, 3)*1;
$siren=$ref=$typeJuge=$dateJuge='';
switch ($typeLigne) {
case 100: // Structure Bodacc
/*Identit� du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds *
$ligne100++;
$siren = substr($ligne, 13, 9 ); // Siren de l'entreprise concern�e par l'an
*/
?>

View File

@ -18,7 +18,7 @@ error_reporting(E_ALL ^ E_NOTICE);
$dateJourFormat=substr(DATETIME,0,4).'-'.substr(DATETIME,4,2).'-'.substr(DATETIME,6,2);
$db_name=$db_table='';
$j=0;
$dropBefore=false;
$dropBefore=$utf8_decode=false;
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) die('Usage : '.basename($argv[0]). " [OPTION]... FICHIER
@ -34,6 +34,7 @@ pour les options de formes courtes.
-d=nom_bdd Nom de la base de données
-t=nom_table Nom de la table
-e Détruire la table si elle existe déjà
-8 Conversion UTF8 vers ISO...
(*): Valeurs par défaut !
");
@ -45,6 +46,7 @@ pour les options de formes courtes.
case 'd': $db_name=substr($argv[$i],3); break;
case 't': $db_table=substr($argv[$i],3); break;
case 'e': $dropBefore=true; break;
case '8': $utf8_decode=true; break;
default: die('Option '. $argv[$i] . " inconnue !".EOL);
}
} else {
@ -158,7 +160,12 @@ pour les options de formes courtes.
$usage=$tabM[1];
$tabDataToInsert=array_merge($tabDataToInsert, array('NOM'=>$nom, 'PRENOM'=>$prenom, 'NUSAGE'=>$usage));
} else*/
$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if ($utf8_decode)
$tabInsertTmp=array($champ[$i]=>utf8_decode($data[$i]));
else
$tabInsertTmp=array($champ[$i]=>$data[$i]);
$tabDataToInsert=array_merge($tabDataToInsert, $tabInsertTmp);
//$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if (strlen($data[$i])>$tabTailles[$i])
$tabTailles[$i]=strlen($data[$i]);
}

138
batch/loadDbf.php Normal file
View File

@ -0,0 +1,138 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/dbf_class.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$db_name=$db_table='';
$j=0;
$dropBefore=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] FICHIER
Charge un fichier dbf.
Options :
-d=nom_bdd Nom de la base de données
-t=nom_table Nom de la table
-e Détruire la table si elle existe déjà
(*): Valeurs par défaut !
";
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $db_name=substr($argv[$i],3); break;
case 't': $db_table=substr($argv[$i],3); break;
case 'e': $dropBefore=true; break;
default: die('Option '. $argv[$i] . " inconnue !".EOL);
}
} else {
$fichier_csv[$j]=$argv[$i];
$j++;
}
}
if ($db_name=='') die("Base de données non communiquée !".EOL);
for ($nbFichiers=0; isset($fichier_csv[$nbFichiers]); $nbFichiers++) {
if ($db_table=='')
$nom_table=str_replace('.csv', '', str_replace('.txt', '', basename($fichier_csv[$nbFichiers])));
else
$nom_table=$db_table;
$comment='Chargement de fichier CSV';
/*$fp=fopen($fichier_csv[$nbFichiers], 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier : ".$fichier_csv[$nbFichiers]." !".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
exit();
}
*/
$nbLignes=0;
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $fichier_csv[$nbFichiers] ."...".EOL;
$dbf = @new dbf_class($fichier_csv[$nbFichiers]);
$num_rec=$dbf->dbf_num_rec;
$num_field=$dbf->dbf_num_field;
die("$num_rec $num_field".EOL);
for($i=0; $i<$num_rec; $i++) {
$row = $dbf->getRow($i);
for($j=0; $j<$num_field; $j++) {
echo $row[$j].' ';
}
echo('<br>');
die();
}
die();
while (($data = fgetcsv($fp, 3000, $separator)) !== FALSE) {
$nbLignes++;
if ($nbLignes==1) {
// L'entête contient la structure du fichier
// On compte le nombre de colonnes du fichier
$nbColonnes=count($data);
$sql="CREATE TABLE IF NOT EXISTS `$nom_table` (";
for($i=0; $i<$nbColonnes; $i++) {
$sql.='`'.$data[$i].'` LONGTEXT,';
$tabTailles[$i]=0;
$champ[$i]=$data[$i];
}
$sql=substr($sql,0,strlen($sql)-1); // Retrait de la dernière virgule
$sql.=") ENGINE = MYISAM COMMENT = '$comment'";
if ($dropBefore)
$iDb->query("DROP TABLE IF EXISTS `$nom_table`");
if ($iDb->query($sql))
echo date ('Y/m/d - H:i:s')." - Création de la table $nom_table OK...".EOL;
else {
echo $iDb->getLastError().EOL;
die(date ('Y/m/d - H:i:s')." - Impossible de créer la table $nom_table !".EOL."Requête SQL = $sql".EOL);
}
continue;
}
$tabDataToInsert=array();
for($i=0; $i<$nbColonnes; $i++) {
$tabDataToInsert=array_merge($tabDataToInsert, array($champ[$i]=>$data[$i]));
if (strlen($data[$i])>$tabTailles[$i])
$tabTailles[$i]=strlen($data[$i]);
}
//print_r($tabDataToInsert);
$ret=$iDb->insert($nom_table, $tabDataToInsert);
if ($ret!=1) {
echo date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion de la ligne n°$i : ". implode(';', $data) ." !".EOL;
}
unset($tabDataToInsert);
}
fclose ($fp);
// On réduit la taille des colonnes au max de chaque champ
for($i=0; $i<$nbColonnes; $i++)
{
//$tabTailles[$i]=strlen($data[$i]);
if ($tabTailles[$i]<256) {
$sql="ALTER TABLE `$nom_table` CHANGE `".$champ[$i]."` `".$champ[$i]."` VARCHAR(".$tabTailles[$i].") NULL DEFAULT NULL ";
echo $sql;
if ($iDb->query($sql))
echo date ('Y/m/d - H:i:s')." - Taille du champ $i (". $champ[$i] .") passée à ". $tabTailles[$i] ."...".EOL;
else
echo date ('Y/m/d - H:i:s')." - Impossible de modifier la taille du champ $i (". $champ[$i] .") à ". $tabTailles[$i] ." !".EOL;
flush();
}
}
echo 'Tailles max / champ:'.EOL;
print_r($tabTailles);
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement.".EOL;
?>

View File

@ -9,7 +9,7 @@
$heureDebut=NOW_FORMAT;
$dateJour=TODAY;
$dateJourFormat=TODAY_FORMAT;
$dateMAJ=date('Ymt',mktime(0,0,0,date('m')-1,date('d'),date('Y')));
$dateMAJ=date('Ymd',mktime(0,0,0,date('m')-1,1,date('Y')));
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Chargement du/des fichier(s) DC en provenance de l'INSEE.
@ -32,12 +32,12 @@ Options :
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'v': $modeDebug=true; break;
case 'u': $majDirUniquement=true; break;
case 'n': $pasMajDir=true; break;
case 'm': $dateMAJ = date('Ymt',mktime(0,0,0,substr($argv[$i],5,2),1,substr($argv[$i],3,4))); break;
case 'v': $modeDebug=true; break;
case 'u': $majDirUniquement=true; break;
case 'n': $pasMajDir=true; break;
case 'm': $dateMAJ = substr($argv[$i],3,6); break;
case '-':
case '?': die($strInfoScript); break;
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichier[]=$argv[$i];
@ -55,6 +55,15 @@ Options :
$idFlux=substr($dateMAJ,0,6);
/** @todo Récupérer le fichier sur le site de l'INSEE :
$url='https://echanges.insee.fr/ihm/downloadListeFichiers';
$user='49496793800056-brppc';
$pass='r7z+2867';
**/
if (!$majDirUniquement || $pasMajDir) {
for ($nbFichiers=0; isset($tabFichier[$nbFichiers]); $nbFichiers++)
@ -69,6 +78,7 @@ if (!$majDirUniquement || $pasMajDir) {
}
//$idFlux=basename($nomFichier);
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier $nomFichier ($idFlux)...".EOL;
//die();
flush();
$nbLignes=0;
@ -116,7 +126,7 @@ if (!$majDirUniquement || $pasMajDir) {
);
$ret=$iDb->insert('insee_dc', $tabDataToInsert);
if ($ret!=1 && $iDb->getLastErrorNum()<>1062) {
if ($ret<1 && $iDb->getLastErrorNum()<>1062) {
echo date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion de $nom $prenom !".EOL;
echo date ('Y/m/d - H:i:s') . ' - Message SQL : '. $iDb->getLastError() . EOL;
$nbErr++;
@ -143,6 +153,20 @@ echo date ('Y/m/d - H:i:s') . " - Mise
$iDb2=new WDB();
$iDb3=new WDB();
echo date ('Y/m/d - H:i:s')." - Création des tables temporaires...".EOL;
if (!$iDb->query("DROP TABLE IF EXISTS tmp.tmpDir;"))
die($iDb->getLastError());
if (!$iDb->query("CREATE TABLE IF NOT EXISTS tmp.tmpDir (
siren INT(9) UNSIGNED ZEROFILL NOT NULL,
dateEven DATE NOT NULL,
src ENUM('igfp','procol','dc') NOT NULL,
srcId BIGINT(20) UNSIGNED NOT NULL,
PRIMARY KEY (siren,src)
) ENGINE=MEMORY;"))
die($iDb->getLastError());
for ($nivCinf=15;$nivCinf>10;$nivCinf=$nivCinf-4) {
if ($nivCinf==11)
@ -150,13 +174,33 @@ for ($nivCinf=15;$nivCinf>10;$nivCinf=$nivCinf-4) {
else
echo date ('Y/m/d - H:i:s')." - Recherche des dirigeants en Procol à mettre à jour...".EOL;
if ($nivCinf==11) $strNivCinf=" (typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%') ";
else $strNivCinf=" Rubrique='procol' ";
if ($nivCinf==11) {
$strNivCinf=" (typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%') ";
$nivCinfEnum='igfp';
} else {
$strNivCinf=" Rubrique='procol' ";
$nivCinfEnum='procol';
}
$nbDirDc=$iDb->select('rncs_dirigeants', 'id, siren, civilite, actif, fonction_lib, nom, prenom, naissance_nom, naissance_date, naissance_lieu',
"siren IN (SELECT siren FROM bodacc_detail WHERE siren>1000 AND $strNivCinf )",
if (!$iDb->query("INSERT IGNORE INTO tmp.tmpDir
SELECT siren, IF(dateJugement<>'0000-00-00',IF(dateJugement<=NOW(),IF(dateJugement>'1980-01-01',dateJugement,Bodacc_Date_Parution),Bodacc_Date_Parution),Bodacc_Date_Parution) AS dateEven, '$nivCinfEnum' AS src, id AS srcId FROM jo.bodacc_detail WHERE siren>1000 AND $strNivCinf;"))
die($iDb->getLastError());
echo date ('Y/m/d - H:i:s')." - Données '$nivCinfEnum' temporaires chargées...".EOL;
// On ne traite que les dirigeants actifs
$nbDirDc=$iDb->select('rncs_dirigeants d, rncs_entrep e', 'd.id, d.siren, d.civilite, d.actif, d.fonction_lib, d.nom, d.prenom, d.naissance_nom, d.naissance_date, d.naissance_lieu',
"d.siren IN (SELECT DISTINCT siren FROM tmp.tmpDir WHERE siren>1000 AND src='$nivCinfEnum') AND d.actif=1 AND d.siren=e.siren AND e.actif=1",
false, MYSQL_ASSOC, true);
// Traiter aussi les PP du RNCS
/*
SELECT *
FROM `rncs_entrep`
WHERE siren >1000
AND actif =1
AND nom <> ''
AND prenom <> ''
AND dateNaiss <> '0000-00-00'
*/
if ($nivCinf==11)
echo date ('Y/m/d - H:i:s')." - Il y a $nbDirDc dirigeants en IG/FP à vérifier.".EOL;
else
@ -173,10 +217,10 @@ for ($nivCinf=15;$nivCinf>10;$nivCinf=$nivCinf-4) {
$naissDateIGFP=trim($tabDirDC['naissance_date']);
$naissLieuIGFP=strtoupper($tabDirDC['naissance_lieu']);
$tabTmp=$iDb3->select('bodacc_detail', 'id, dateParution', "siren>1000 AND siren=$sirenIGFP AND $strNivCinf ORDER BY dateParution DESC", false, MYSQL_ASSOC);
$tabTmp=$iDb3->select('bodacc_detail', 'id, Bodacc_Date_Parution', "siren>1000 AND siren=$sirenIGFP AND $strNivCinf ORDER BY dateParution DESC", false, MYSQL_ASSOC);
$tabTmp=$tabTmp[0];
$idAnn=$tabTmp['id'];
$dateParution=$tabTmp['dateParution'];
$dateParution=$tabTmp['Bodacc_Date_Parution'];
if ($modeDebug && $nivCinf==11) echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc IG/FP $sirenIGFP : $nomIGFP $prenomIGFP né(e) le $naissDateIGFP à $naissLieuIGFP".EOL;
elseif ($modeDebug) echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc Procol $sirenIGFP : $nomIGFP $prenomIGFP né(e) le $naissDateIGFP à $naissLieuIGFP".EOL;
@ -199,9 +243,10 @@ for ($nivCinf=15;$nivCinf>10;$nivCinf=$nivCinf-4) {
// On met à jour l'indicateur
if ($idDir==$idDirIGFP) $cinf=$nivCinf;
else $cinf=$nivCinf+1;
if ($modeDebug && $nivCinf==11) echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc IG/FP $sirenIGFP : Dirigeant n°$idDir trouvé $siren, $nom $prenom ($levPrenom) né(e) le $naissDate à $naissLieu ($levLieu)".EOL;
elseif ($modeDebug) echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc Procol $sirenIGFP : Dirigeant n°$idDir trouvé $siren, $nom $prenom ($levPrenom) né(e) le $naissDate à $naissLieu ($levLieu)".EOL;
if($iDb2->update('rncs_dirigeants', array('cinf'=>$cinf/*, 'idInf'=>$idAnn*/), "id=$idDir"))
if ($nivCinf==11) echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc IG/FP $sirenIGFP : Dirigeant n°$idDir trouvé $siren, $nom $prenom ($levPrenom) né(e) le $naissDate à $naissLieu ($levLieu)".EOL;
else echo date ('Y/m/d - H:i:s')." - $numDir/$nbDirDc Procol $sirenIGFP : Dirigeant n°$idDir trouvé $siren, $nom $prenom ($levPrenom) né(e) le $naissDate à $naissLieu ($levLieu)".EOL;
//if($iDb2->update('rncs_dirigeants', array('cinf'=>$cinf, 'idInf'=>$idAnn), "id=$idDir"))
if($iDb2->update('rncs_dirigeants', array('cinf'=>$cinf), "id=$idDir"))
$nbUpdate++;
else
$nbUpdateErr++;
@ -231,7 +276,7 @@ for ($nivCinf=15;$nivCinf>10;$nivCinf=$nivCinf-4) {
$strIdFlux=" AND i.moisMaj='$idFlux' ";
$strIdFlux='';
$nbDirDc=$iDb->select('insee_dc i, rncs_dirigeants d', 'd.id, d.siren, d.civilite, d.actif, d.fonction_lib, i.sexe, d.nom AS nomDir, d.naissance_nom AS nomNaissDir, d.prenom AS prenomDir, i.prenom AS prenomDC, d.naissance_date, i.comInsee, d.naissance_lieu, i.comLib, i.pays, i.moisMaj', "i.dateNaiss = d.naissance_date AND (i.nom = d.nom OR d.naissance_nom = i.nom) $strIdFlux", false, MYSQL_ASSOC, true);
$nbDirDc=$iDb->select('insee_dc i, rncs_dirigeants d, rncs_entrep e', 'd.id, d.siren, d.civilite, d.actif, d.fonction_lib, i.sexe, d.nom AS nomDir, d.naissance_nom AS nomNaissDir, d.prenom AS prenomDir, i.prenom AS prenomDC, d.naissance_date, i.comInsee, d.naissance_lieu, i.comLib, i.pays, i.moisMaj', "i.dateNaiss=d.naissance_date AND (i.nom=d.nom OR d.naissance_nom=i.nom) AND d.actif=1 AND d.siren=e.siren AND e.actif=1 $strIdFlux", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbDirDc dirigeants DC à vérifier/mettre à jour...".EOL;
$nbUpdate=$nbUpdateErr=$nbUpdateNo=0;

View File

@ -8,8 +8,14 @@ include_once(INCLUDE_PATH.'scores/classMSolvabilite.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(FWK_PATH.'mail/sendMail.php');
$dirOnly=$listOnly=false;
$strInfoScript='Usage : '.basename($argv[0]). " <option> <fichier>
Chargement d'un fichier de mise sous surveillance d'un fichier Client (pour l'instant uniquement en annule/remplace).
Options :
-l Liste des dossiers/clients traités
-o=XXX Limiter au dossier/client XXX
";
$argv=$_SERVER['argv'];
@ -18,6 +24,12 @@ if ($_SERVER['argc']>1)
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'o':
$dirOnly=substr($argv[$i],3);
break;
case 'l':
$listOnly=true;
break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !".EOL);
@ -40,12 +52,22 @@ $dh = opendir($ftpDir);
while (false !== ($filename = readdir($dh))) {
/** On scan chaque répertoire FTP client à la recherche d'un fichier send.fmt
**/
if ($filename<>'.' && $filename<>'..' && is_dir($ftpDir.$filename) && file_exists($ftpDir.$filename."/send.fmt"))
if ($filename<>'.' && $filename<>'..' && is_dir($ftpDir.$filename) && ( file_exists($ftpDir.$filename."/send.fmt") || file_exists($ftpDir.$filename."/send1.fmt") ||
file_exists($ftpDir.$filename."/send2.fmt") || file_exists($ftpDir.$filename."/send3.fmt") ||
file_exists($ftpDir.$filename."/send4.fmt") || file_exists($ftpDir.$filename."/send5.fmt") ||
file_exists($ftpDir.$filename."/send6.fmt") || file_exists($ftpDir.$filename."/send7.fmt") ||
file_exists($ftpDir.$filename."/send8.fmt") || file_exists($ftpDir.$filename."/send9.fmt") ))
{
if ($dirOnly && strpos($filename,$dirOnly)===false)
continue;
else
$tabDir[] = $filename;
}
}
sort($tabDir);
echo date ('Y/m/d - H:i:s')." - Liste des répertoires avec un fichier send.fmt : ".implode(', ',$tabDir).EOL;
if ($listOnly) die();
foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque répertoire send des FTP clients à la recherche de nouveaux fichiers **/
{
@ -56,27 +78,39 @@ foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque r
$tabFichier[] = $filename;
echo date ('Y/m/d - H:i:s')." - Le fichier $filename du client $dirToCheck est en cours de chargement !".EOL;
}
//echo $dh.EOL;
}
sort($tabFichier);
if (count($tabFichier)>0) {
/** On lit le fichier send.fmt afin de savoir le traitement courant
**/
$tabFmt=parse_ini_file($ftpDir.$dirToCheck."/send.fmt", true);
for( $iIni=0; $iIni<10; $iIni++) {
if ($iIni==0) $strIni='';
else $strIni=$iIni;
if (!file_exists($ftpDir.$dirToCheck."/send$strIni.fmt"))
// Pas de fichier Ini n° $iIni
continue;
$tabFmt=parse_ini_file($ftpDir.$dirToCheck."/send$strIni.fmt", true);
echo "Fichier INi lu :'send$strIni.fmt'".EOL;
print_r($tabFmt);
//die();
if (!isset($tabFmt['Infos']) || !is_array($tabFmt['Infos']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La section [Infos] est incorrecte pour le client $dirToCheck !".EOL);
$tabInfos=$tabFmt['Infos'];
if (!isset($tabInfos['idClient']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'idClient' n'est pas définie pour le client $dirToCheck !".EOL);
$idClientDef=$tabInfos['idClient'];
$idClientDef='';
if (isset($tabInfos['idClient']))
//die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'idClient' n'est pas définie pour le client $dirToCheck !".EOL);
$idClientDef=$tabInfos['idClient'];
if (!isset($tabInfos['format']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'format' n'est pas définie pour le client $dirToCheck !".EOL);
$format=$tabInfos['format'];
if (strtolower($format)=='csv') {
if (strtolower($format)=='csv')
$format='csv';
die('Format csv non géré !'.EOL);
} elseif (strtolower($format)=='plat')
elseif (strtolower($format)=='plat')
$format='plat';
elseif (strtolower($format)=='sdin')
$format='sdin';
@ -121,10 +155,26 @@ foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque r
if (isset($tabInfos['mailClient']) && $tabInfos['mailClient']<>'')
$mailClient=$tabInfos['mailClient'];
$racineFichier=false;
if (isset($tabInfos['racineFichier']) && $tabInfos['racineFichier']<>'')
$racineFichier=$tabInfos['racineFichier'];
$concatenerRef=false;
if (isset($tabInfos['concatenerRef']) && ($tabInfos['concatenerRef']==true || $tabInfos['concatenerRef']*1==1))
$concatenerRef=true;
// Liste des zones
$tabZones=$tabFmt['Zones'];
foreach ($tabFichier as $numFic=>$fichier_csv) {
if ($racineFichier) {
if (!preg_match('/'.$racineFichier.'.*/Ui', $fichier_csv)) {
echo date ('Y/m/d - H:i:s')." - INFO : Fichier '$fichier_csv' n'ayant pas la racine '$racineFichier' !".EOL;
continue;
}
}
$fp=fopen($ftpDir.$dirToCheck."/send/$fichier_csv", 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible d'ouvrir le fichier : ".$fichier_csv." !".EOL;
@ -149,9 +199,10 @@ foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque r
$numLigne++;
//$ligne, $format='sdin', $tabZones=array(), $idClientDef='') {
$data=getLigneFormat($line, $format, $tabZones, $idClientDef, $dateFlux);
$data=@getLigneFormat($line, $format, $tabZones, $idClientDef, $dateFlux);
//print_r($data); die();
if (!isset($tabInfos['idClient']) && $idClientDef=='')
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'idClient' n'est pas définie pour le client $dirToCheck !".EOL);
$data['indTrt'] = 1;
$idClient=$data['idClient'];
@ -180,6 +231,9 @@ foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque r
if (trim($data['siren'])=='') @$erreurSiren['vide']++;
elseif (trim($data['siren'])*1==0) @$erreurSiren['zero']++;
}
if ($concatenerRef) $data['ref']=$data['ref'].'-'.$data['refInfos'];
/** Ajout ou mise à jour de la référence **/
$res=$iDbSurv->select('surveillances_listes', 'count(*)', "idClient='$idClient' AND ref='".$data['ref']."'");
if (@$res[0][0] > 0) {
@ -220,16 +274,19 @@ foreach ($tabDir as $nbDir=>$dirToCheck) /** On scan chaque r
$mailInfo.="Attention, $nbReact ligne(s) ont été réactivées !".EOL;
}
}
if ($mailClient) {
$mailInfo.="$nbSirenValide SIREN sont valides et $nbSirenErreur invalides dont :".EOL;
$mailInfo.=print_r($erreurSiren,true).EOL;
$mailInfo.=EOL."$nbSirenValide SIREN sont valides et $nbSirenErreur invalides dont :".EOL;
$mailInfo.=print_r($erreurSiren,true).EOL;
//
if ($mailClient)
sendMail('production@scores-decisions.com', $mailClient, "Scores & Décisions - Chargement du stock en surveillance", "Résumé du traitement de chargement du stock pour $idClient,".EOL.EOL."Fichier de type $chargement ($frequence) horodatage $dateFlux contenant $numLigne ligne(s) :".EOL.$mailInfo);
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Scores & Décisions - Chargement du stock en surveillance", "Résumé du traitement de chargement du stock pour $idClient,".EOL.EOL."Fichier de type $chargement ($frequence) horodatage $dateFlux contenant $numLigne ligne(s) :".EOL.$mailInfo);
}
else
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', "Scores & Décisions - Chargement du stock en surveillance", "Résumé du traitement de chargement du stock pour $idClient,".EOL.EOL."Fichier de type $chargement ($frequence) horodatage $dateFlux contenant $numLigne ligne(s) :".EOL.$mailInfo);
if (!move($ftpDir.$dirToCheck."/send/$fichier_csv", "/home/data/clients/$dirToCheck/$fichier_csv"))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fichier_csv dans client/$dirToCheck/ impossible !".EOL;
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fichier_csv dans clients/$dirToCheck/ impossible !".EOL;
}
} // Fin du foreach
} else
echo date ('Y/m/d - H:i:s')." - Aucun fichier a intégrer pour le client $dirToCheck.".EOL;
}
@ -238,6 +295,7 @@ echo date ('Y/m/d - H:i:s') . " - Fin du traitement.".EOL;
function getLigneFormat($line, $format='sdin', $tabZones=array(), $idClientDef='', $dateFluxDef='') {
$data=array();
global $idClientDef;
if ($format=='sdin') {
$data['idClient'] = trim(substr($line, 27, 36)); // Identifiant Client
@ -300,6 +358,61 @@ function getLigneFormat($line, $format='sdin', $tabZones=array(), $idClientDef='
elseif ($dateFluxDef=='')
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'dateFlux' est incorrecte !".EOL);
else $data['dateFlux']=$dateFluxDef;
} elseif ($format=='csv') {
$data['idClient']=trim($idClientDef);
$tabLine=explode(',', $line);
// Zone idClient
if (isset($tabZones['idClient']) && preg_match('/^z(\d*)$/', trim($tabZones['idClient']), $z))
$idClientDef=$data['idClient']=trim($tabLine[$z[1]-1]);
// elseif (!isset($tabZones['idClient']) && $idClientDef=='')
// die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'idClient' est incorrecte !".EOL);
// Zone siren
if (preg_match('/^z(\d*)$/', trim($tabZones['siren']), $z))
$data['siren'] = trim($tabLine[$z[1]-1]);
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'siren' est incorrecte !".EOL);
// Zone ref
if (preg_match('/^z(\d*)$/', trim($tabZones['ref']), $z))
$data['ref'] = trim($tabLine[$z[1]-1]);
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'ref' est incorrecte !".EOL);
// Zone refInfos
if (isset($tabZones['refInfos']) && preg_match('/^z(\d*)$/', trim($tabZones['refInfos']), $z))
$data['refInfos'] = trim($tabLine[$z[1]-1]);
elseif (isset($tabZones['refInfos']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'refInfos' est incorrecte !".EOL);
// Zone rs
if (isset($tabZones['rs']) && preg_match('/^z(\d*)$/', trim($tabZones['rs']), $z))
$data['rs'] = trim($tabLine[$z[1]-1]);
elseif (isset($tabZones['rs']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'rs' est incorrecte !".EOL);
// Zone cp
if (isset($tabZones['cp']) && preg_match('/^z(\d*)$/', trim($tabZones['cp']), $z))
$data['cp'] = trim($tabLine[$z[1]-1]);
elseif (isset($tabZones['cp']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'cp' est incorrecte !".EOL);
// Zone ville
if (isset($tabZones['ville']) && preg_match('/^z(\d*)$/', trim($tabZones['ville']), $z))
$data['ville'] = trim($tabLine[$z[1]-1]);
elseif (isset($tabZones['ville']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'ville' est incorrecte !".EOL);
// Zone dateFlux
if ($dateFluxDef=='' && preg_match('/^z(\d*)$/', trim($tabZones['dateFlux']), $z))
$data['dateFlux']= trim($tabLine[$z[1]-1]);
elseif ($dateFluxDef=='')
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'dateFlux' est incorrecte !".EOL);
else $data['dateFlux']=$dateFluxDef;
}
return $data;
}

132
batch/majAbreviations.php Normal file
View File

@ -0,0 +1,132 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
function exporte($txt, $lon=false, $sep="\t") {
if ($lon===false) $lon=strlen($txt);
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt);
return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep;
}
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'partenaires/classMTel.php');
include_once(INCLUDE_PATH.'partenaires/classMMap.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
include_once(INCLUDE_PATH.'tmp/configMRatios.php');
include_once(INCLUDE_PATH.'insee/classMSirene.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(INCLUDE_PATH.'scores/classMFinancier.php');
include_once(INCLUDE_PATH.'scores/classMSolvabilite.php');
include_once(INCLUDE_PATH.'partenaires/classMTva.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(INCLUDE_PATH.'partenaires/classMRnvp.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iInsee=new MInsee();
$iDbR=new WDb('historiques');
$iDbW=new WDb('villes');
$iRnvp=new MRnvp();
$k=0;
$tabAbbr=array('A','DU','D','DE','DES','L','LE','LES','LA','AU','AUX','UN','UNE','RUE','ST','STE','SUR','SOUS','MAIS','OU','ET','DONC','OR','NI','CAR');
//$ret=$iDbR->select('fichier_france_entiere_201409_D_1', 'SIREN, L1_NOMEN, NOMEN_LONG', "SIEGE=1 AND LENGTH(NOMEN_LONG)>38 /*AND SIREN<300000000*/", false, MYSQL_ASSOC, true);
$ret=$iDbR->select('insee.insee_even', 'insSIREN AS SIREN, insL1_NOMEN AS L1_NOMEN, insNOMEN_LONG AS NOMEN_LONG', "insSIEGE=1 AND LENGTH(insNOMEN_LONG)>38 AND idFlux>='2014-10-01'", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Il y a $ret raisons sociales à tester...".EOL;
$tDeb=microtime(1);
while($ligne=$iDbR->fetch(MYSQL_ASSOC)) {
$k++;
$siren=$ligne['SIREN'];
$nomLongs=$ligne['NOMEN_LONG'];
$nomCourt=$ligne['L1_NOMEN'];
// On ignore les RS juste tronquées
if (substr($nomLongs,0,38)==$nomCourt) continue;
//$nomCourt=preg_replace('/[^A-Z0-9%\'\"\-&\*\/\s]/','',trim(strtoupper($nomLong)));
$tabMotsCourt=split("[^[:alpha:]]+", $nomCourt);
$tabMotsCourt=array_diff($tabMotsCourt, $tabAbbr);
$tabMotsLongs=split("[^[:alpha:]]+", $nomLongs);
$tabMotsLongs=array_diff($tabMotsLongs, $tabAbbr);
echo "$k/$ret - $siren $nomLongs ==> $nomCourt".EOL;
//print_r($tabMotsLongs);
foreach($tabMotsCourt as $iC=>$motC) {
if (!isset($tabMotsCourt[$iC+1])) break; // Le dernier mot peut être tronqué alors on ignore !
$trouve=0;
$lenC=strlen($motC);
if ($lenC<3) continue;
echo "Mot Court : '$motC'";
$tabInserts=array();
foreach ($tabMotsLongs as $iL=>$motL) {
$lenL=strlen($motL);
if ($lenL<=3) continue;
if ($iL>=$iC && $motC<>$motL && $lenL>$lenC && (substr($motC,0,$lenC)==substr($motL,0,$lenC) || substr($motC,0,6)==substr($motL,0,6))) {
$trouve++;
echo "= Mot Long : '$motL'".EOL;
$tabInserts[]=array('abrCode'=>$motC,
'abrLib'=>$motL,
'abrType'=>'N',
'abrOfficiel'=>0,
'siren'=>$siren,
'nomLong'=>$nomLongs,
'nomCourt'=>$nomCourt,
'dateInsert'=>date('YmdHis'),
);
}
}
if ($trouve==0) echo EOL;
elseif ($trouve==1) {
foreach ($tabInserts as $tabInsert) {
if (!$iDbW->insert('tabAbreviations', $tabInsert, false)) {
$abrCode2=addslashes($motC);
$abrLib2 =addslashes($motL);
$ret2=$iDbW->select('tabAbreviations', 'nbOcc', "abrCode='$abrCode2' AND abrLib='$abrLib2'", false);
$tabInsert['nbOcc']=@$ret2[0]['nbOcc']*1+1;
unset($tabInsert['dateInsert']);
$iDbW->update('tabAbreviations', $tabInsert, "abrCode='$abrCode2' AND abrLib='$abrLib2'", false);
}
echo mysql_error();
}
}
}
continue;
$codeCommune=$ligne['ADR_DEP'].$ligne['ADR_COM'];
$adrTypVoie=$ligne['ADR_TYPVOIE'];
$adrLibVoie=$ligne['ADR_LIBVOIE'];
$codeVoieI=$ligne['CODEVOIE'];
// / 4271 1
$libCom=$ligne['ADR_LIBCOM'];
echo date ('Y/m/d - H:i:s') . " - $siren $nic\t$codeCommune\t$libCom\t$adrTypVoie\t$adrLibVoie\t$codeVoieI=";
$tRDeb=microtime(1);
$codeVoieC=$iInsee->getCodeVoieRivoli($codeCommune, $adrTypVoie, $adrLibVoie);
echo $codeVoieC." ?\t";
$tNDeb=microtime(1);
$dureeR+=$tNDeb-$tRDeb;
$tabAdrNorm=$iRnvp->normaliseAdresse($ligne['insL1_NOMEN'], $ligne['insL2_COMP'], $ligne['insL3_CADR'], $ligne['insL4_VOIE'], $ligne['insL5_DISP'], $ligne['insL6_POST'], $ligne['insL7_ETRG'], 38, false);
$dureeN+=microtime(1)-$tNDeb;
//print_r($tabAdrNorm);
echo @$tabAdrNorm['HexaViaMat'].EOL;
}
$tFin=microtime(1);
echo EOL."Durée Rivoli .......... =".round($dureeR,3).' secondes'.EOL;
echo EOL."Durée Normalisation ... =".round($dureeN,3).' secondes'.EOL;
echo EOL."Durée TOTALE .......... =".round($tFin-$tDeb,3).' secondes'.EOL;
// print_r($iInsee->getIdentiteEntreprise(800046823,12));
die();
?>

View File

@ -95,6 +95,4 @@ foreach($tabSiren as $i=>$siren) {
die();
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement des informations Greffes', $message);
die();
?>

2806
batch/majInseeSyracuse.php Normal file

File diff suppressed because it is too large Load Diff

346
batch/majIntervenants.php Normal file
View File

@ -0,0 +1,346 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/*
$raisonSociale="SCORES ET DECISIONS";
$raisonSocialeI="SCORES & DECISIONS";
$tabMots=preg_split('/ +/', $raisonSociale);
$tabMotsI=preg_split('/ +/', $raisonSocialeI);
$lev=levenshtein(str_replace(' ','',$raisonSociale),str_replace(' ','',$raisonSocialeI));
$len =strlen($raisonSociale);
$delT=$lev/$len;
print_r(array_diff($tabMots,$tabMotsI));
die($delT);*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Récupère en FTP les annonces BODACC A, B et C depuis le serveur des JO.
Options :
-t:NOMFICHIER.TLS Nom du fichier local à -intégrer directement
(prévoir l'UPDATE des annonces BODACC déjà en base lorsque nous serons en PROD)
-j Ne se connecte pas au FTP des JO
-A -B -C Chargement des annonces limités au BODACC A, B ou C
".
// -n:XXX Numéro du Bodacc
// -d:JJ/MM/AAAA Rechargement des annonces BODACC depuis cette date
// -f:JJ/MM/AAAA Rechargement des annonces BODACC jusqu'à cette date
" -l Derniers BODACC non intégrés uniquement (*)
-m Force la date d'insertion à celle de la récupération des fichiers Bodacc (cas d'un rechargement complet)
-r (inopérant) Rechargement des annonces déjà en base
-e EFFACEMENT DE TOUTES LES ANNONCES correspondantes déjà en base (et non mise à jour)
-n Continuer au fichier suivant en cas d'erreur
-s Ignorer la validation du Schéma XML
-u Ne pas dézipper l'archive XML (en cas de XML incorrect, erreur du Bodacc)
-w Mettre à jour les SIREN des Associations avec Waldec non sirenées
-p Mettre à jour les SIREN des Marchés Publics non sirenées
-d Retraitement à posteriori des codes évènements du Bodacc
-i Ne pas poser de questions interactives.
-v Mode verbeux
(*) Option par défaut si aucun argument n'est passé.
";
// ==> ATTENTION : faire cette opération en connaissance de cause car les liens entres annonces seront perdus !!!
$lastJO=$dateDebut=$dateFin=$dateDeb=$fichierTLS=$numBodaccIN=false;
$tabBodaccF=array(); // Tableau des Bodacc à recharger
$update=false; // Par défaut, si une annonce est déjà en base, on ne la met pas à jour !!!
$erase=false; // Par déaut, on n'efface pas les annonces
$ftpStep=true; // Par défaut, on se connecte au FTP des JO
$forceDateInsertABodacc=false; // Par défaut, la date d'insertion des annonces n'est pas calée sur celle des fichiers Bodacc (en cas de réinitilaisation)
$forceContinue=false; // Par défaut, on arrête au fichier courant en cas d'erreur
$validateSchema=true; // Par défaut, on Valide le Schéma XML
$unTaz=true; // Par défaut, on dézippe l'archive XML, sinon, on prend le .xml local (en cas de XML incorrect)
$strMailInfo=''; // Coprs du mail d'information
$copieWaldec=false; // Par défaut, on ne recopie pas les SIREN des Associations avec Waldec non sirenées
$copieSirenBoamp=false; // Par défaut, on ne recopie pas les SIREN des LOTS BOAMP
$doMajBodacc=false; // Par défaut, on ne retraite pas les annonces BODACC sauf si Bodacc chargé
$noQuestion=false; // Par défaut, le script peut poser des questions interactives !
$modeDebug=false; // Par défaut, ne pas être trop verbeux
$nbInsertLots=$nbInsertAvis=0; // Nombre de lots et avis insérés BOAMP + MAPA
$nbMtRecup=0; // Nombre de lots avec récupération/retraitement du montant
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true; // Fonctionnement normal du script, càd : on charge les derniers BODACC non encore intégrés
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'A':
case 'a':
$tabBodaccF[]='A';
break;
case 'B':
case 'b':
$tabBodaccF[]='B';
break;
case 'C':
case 'c':
$tabBodaccF[]='C';
break;
/*case 'd':
$dateDebut=substr($argv[$i],3,10);
$dateDeb=WDate::dateT('d/m/Y', 'Ymd', $dateDebut);
break;*/
case 'e':
$erase=true;
break;
case 'w':
$copieWaldec=true;
break;
case 'p':
$copieSirenBoamp=true;
break;
case 'd':
$doMajBodacc=true;
break;
/*case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin);
break;*/
case 'j':
$ftpStep=false;
break;
case 'l':
$lastJO=true;
break;
case 'm':
$forceDateInsertABodacc=true;
break;
case 'n':
//die('$forceContinue');
$forceContinue=true;
break;
case 'r':
$update=true;
break;
case 't':
$fichierTLS=trim(substr($argv[$i],3));
break;
/*case 'n':
$numBodaccIN=trim(substr($argv[$i],3));
break;*/
case 's':
$validateSchema=false;
break;
case 'u':
$unTaz=false;
break;
case 'i':
$noQuestion=true;
break;
case 'v':
$modeDebug=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . ' inconnue !'.EOL);
break;
}
}
}
}
if (count($tabBodaccF)==0) $tabBodaccF=array('A','B','C','ASSO','BOMP A','BOMP B','BOMP C','MAPA','DEFENSE');
$strBodacc=implode(', ', $tabBodaccF);
$strDates='';
if ($lastJO==true) $strLast=' derniers';
else $strLast='';
/*else {
$dateCour=$dateDeb;
$strLast='';
if ($dateDebut==false || $dateFin==false)
die($strInfoScript);
else
$strDates="du $dateDebut au $dateFin";
}*/
$iDb=new WDB();
$iBodacc=new MBodacc();
$iInsee=new MInsee();
echo date ('Y/m/d - H:i:s') . " - Mise à jour des intervenants...".EOL;
$sirMand=$sirGrp=$rechGrpMand=$newMand=false;
$sirGrp=true;
if ($newMand) {
$nbAbsent=0;
$tabTmp=$iDb->select('tabMandataires', "DISTINCT sirenMand", "sirenMand>1000 AND TYPE IN ('A','M')", false, MYSQL_ASSOC);
$nbMand=count($tabTmp);
echo date ('Y/m/d - H:i:s') . " - Il y a $nbMand SIREN d'intervenants de type ADM/MAND connus.".EOL;
$tabMand=array();
foreach ($tabTmp as $iMand=>$mand) {
$tabMand[]=$mand['sirenMand'];
}
$strSiren=implode(',',$tabMand);
$tabTmp2=$iDb->select('etablissements_tmp', "siren,nic,actif,siege,raisonSociale,adr_num,adr_btq,adr_typeVoie,adr_libVoie,adr_comp,adr_cp,adr_ville, tel, fax", "siren IN ($strSiren) AND actif=1 ORDER BY siren ASC, nic ASC", false, MYSQL_ASSOC);
$nbEtab=count($tabTmp2);
echo date ('Y/m/d - H:i:s') . " - Il y a $nbEtab SIRET d'intervenants dans l'INSEE...".EOL;
$tabSirenMand=array();
foreach ($tabTmp2 as $iE=>$etab) {
$siren=$etab['siren'];
$nic=$etab['nic'];
$tabTmp=$iDb->select('tabMandataires', "sirenGrp, sirenMand, nicMand, Nom, Prenom, type, stagiaire, coursAppel, coursAppel2, tribunal, Statut", "sirenMand=$siren", false, MYSQL_ASSOC);
$tM=$tabTmp[0];
$tabSirenMand['_'.$siren]=array('sirenGrp'=>$tM['sirenGrp'],
'Nom'=>$tM['Nom'],
'Prenom'=>$tM['Prenom'],
'type'=>$tM['type'],
'coursAppel'=>$tM['coursAppel'],
'coursAppel2'=>$tM['coursAppel2'],
'tribunal'=>$tM['tribunal'],
'Statut'=>$tM['Statut']);
}
foreach ($tabTmp2 as $iE=>$etab) {
$siren=$etab['siren'];
$nic=$etab['nic'];
$tabTmp=$iDb->select('tabMandataires', "sirenGrp, sirenMand, nicMand, Nom, Prenom, type, stagiaire, coursAppel, coursAppel2, tribunal, Statut", "sirenMand=$siren AND nicMand=$nic", false, MYSQL_ASSOC);
$mandExiste=count($tabTmp);
if ($mandExiste==0) {
$tabId=@$iInsee->getIdentiteEntreprise($siren, $nic);
$tabInsert=array( 'sirenGrp'=> $tabSirenMand['_'.$siren]['sirenGrp'],
'sirenMand'=> $siren,
'nicMand'=> $nic,
'Nom'=> $tabSirenMand['_'.$siren]['Nom'],
'Prenom'=> $tabSirenMand['_'.$siren]['Prenom'],
'type'=> $tabSirenMand['_'.$siren]['type'],
'coursAppel'=> $tabSirenMand['_'.$siren]['coursAppel'],
'coursAppel2'=> $tabSirenMand['_'.$siren]['coursAppel2'],
'tribunal'=> $tabSirenMand['_'.$siren]['tribunal'],
'Statut'=> $tabSirenMand['_'.$siren]['Statut'],
'adresse'=> $tabId['Adresse'],
'adresseComp'=> $etab['adr_comp'],
'cp'=> $etab['adr_cp'],
'ville'=> $etab['adr_ville'],
'tel'=> $tabId['Tel'],
'fax'=> $tabId['Fax'],
'email'=> $tabId['Mail'],
'web'=> $tabId['Web'],
'dateInsert'=> date('YmdHis'));
//print_r($tabId);
print_r($tabInsert);
$iDb->insert('tabMandataires', $tabInsert, false);
echo mysql_error().EOL;
$nbAbsent++;
echo "$siren $nic : Mandataire absent de la base".EOL;
}
}
echo date ('Y/m/d - H:i:s') . " - Il y a $nbAbsent/$nbEtab SIRET d'intervenants absents en base !".EOL;
die();
}
if ($sirMand || $sirGrp || $rechGrpMand) {
if ($sirMand)
$tabTmp=$iDb->select('tabMandataires', "sirenMand, nicMand, id, sirenGrp, nicGrp, Nom, Prenom, type, coursAppel, tribunal, Statut, adresse, adresseComp, cp, ville, tel, fax, email, web, contact",
"sirenMand>100 AND nicMand=0 AND TYPE IN ('A','M') ORDER BY sirenMand ASC", false, MYSQL_ASSOC);
elseif ($sirGrp)
$tabTmp=$iDb->select('tabMandataires', "sirenMand, nicMand, id, sirenGrp, nicGrp, Nom, Prenom, type, coursAppel, tribunal, Statut, adresse, adresseComp, cp, ville, tel, fax, email, web, contact",
"sirenGrp>100 AND nicGrp=0 AND TYPE IN ('A','M') ORDER BY sirenGrp ASC", false, MYSQL_ASSOC);
elseif ($rechGrpMand)
$tabTmp=$iDb->select('tabMandataires', "sirenMand, nicMand, id, sirenGrp, nicGrp, Nom, Prenom, type, coursAppel, tribunal, Statut, adresse, adresseComp, cp, ville, tel, fax, email, web, contact",
"sirenMand>100 AND sirenGrp=0 AND TYPE IN ('A','M') ORDER BY sirenMand ASC", false, MYSQL_ASSOC);
// Rechercher une société civille à l'adresse
$nbMand=count($tabTmp);
foreach ($tabTmp as $iMand=>$mand) {
$sirenMand=$mand['sirenMand'];
$idMand=$mand['id'];
$sirenGrp=$mand['sirenGrp'];
print_r($mand);
$cp1=$mand['cp'];
$dep1=substr($cp1,0,2);
$ville1=$mand['ville'];
$adrNum1=$siren2=-1;
if (preg_match('/\s(\d+)\D+/',' '.$mand['adresse'],$matches)) {
$adrNum1=$matches[1];
}
echo "$iMand/$nbMand: $adrNum1".EOL;
if ($sirMand) $siren2=$sirenMand;
elseif ($sirGrp) $siren2=$sirenGrp;
if ($siren2>-1)
$tabTmp2=$iDb->select('etablissements_tmp', "siren,nic,actif,siege,raisonSociale,/*enseigne,sigle,identite_pre,marques*/adr_num,adr_btq,adr_typeVoie,adr_libVoie,adr_comp,adr_cp,adr_ville", "siren=$siren2 ORDER BY nic ASC", true, MYSQL_ASSOC);
else {
$tabTmp3=@$iInsee->rechercheEtab('', $mand['adresse'], $dep1, $ville1, '', '', 0, 200, 200, true, true);
$tabTmp2=array();
if ($tabTmp3['nbReponses']==0) continue;
foreach (@$tabTmp3['reponses'] as $iR=>$tR) {
if ( ($tR['FJ']>=6500 && $tR['FJ']<6600) ||
$tR['FJ']==5370 ||
$tR['FJ']==5385 ||
$tR['FJ']==5470 ||
$tR['FJ']==5485 ||
$tR['FJ']==5570 ||
$tR['FJ']==5585 ||
$tR['FJ']==5670 ||
$tR['FJ']==5685 ||
$tR['FJ']==5770 ||
$tR['FJ']==5785 ) {
$tabTmp2[]=array( 'siren'=> $tR['Siren'],
'nic'=> $tR['Nic'],
'actif'=> $tR['Actif'],
'siege'=> $tR['Siege'],
'raisonSociale'=> $tR['Nom'],
'adr_num'=> '',
'adr_btq'=> '',
'adr_typeVoie'=> '',
'adr_libVoie'=> $tR['Adresse'],
'adr_comp'=> $tR['Adresse2'],
'adr_cp'=> $tR['CP'],
'adr_ville'=> $tR['Ville'],
);
}
}
// if ($tabTmp3['nbReponses']>0) continue;//die();
}
$tabNic=array();
foreach ($tabTmp2 as $iC=>$choix) {
$siren2=$choix['siren'];
$nic2=$choix['nic'];
$tabNic[]=$nic2;
$actif=$choix['actif'];
$adr2=preg_replace('/s+/',' ', $choix['adr_num'].' '.$choix['adr_btq'].' '.$choix['adr_typeVoie'].' '.$choix['adr_libVoie'].' '.$choix['adr_comp'].', '.$choix['adr_cp'].' '.$choix['adr_ville']);
if ($cp1==$choix['adr_cp'] && $adrNum1==$choix['adr_num'] ||
$dep1=substr($choix['adr_cp'],0,2) && strpos($ville1,$choix['adr_ville'])===true) { $nicTrouve=$nic2; $strNicTrouv='***';}
else $strNicTrouv='';
if ($rechGrpMand) echo "$siren2";
echo "$nic2 $strNicTrouv\t".$choix['raisonSociale']."\t$actif $adr2".EOL;
}
//continue;
while(true){
$iC2=$iC+1;
if ($rechGrpMand) echo "Saisir le SIRET correspondant (0 pour ne rien saisir) parmis les $iC2 résultats ?".EOL;
else echo "Saisir le NIC correspondant (0 pour ne rien saisir) parmis les $iC2 résultats ?".EOL;
$saisie = trim(strtoupper(fgets(STDIN)))*1;
if ($saisie<0) break;
elseif ($saisie>100000000) {
$iDb->update('tabMandataires', array('sirenGrp'=>substr($saisie,0,9), 'nicGrp'=>substr($saisie,9,5)), "id=$idMand", false);
break;
}
elseif ($rechGrpMand) break;
elseif ($saisie>9 || ($saisie==0 && $iC2==1) || ($saisie==0 && $iC2>1 && $nicTrouve>9)) {
if ($saisie==0 && $iC2==1) $saisie=$nic2;
elseif ($saisie==0 && $iC2>1 && $nicTrouve>9) $saisie=$nicTrouve;
if ($sirGrp && in_array($saisie, $tabNic))
$iDb->update('tabMandataires', array('nicGrp'=>$saisie), "id=$idMand", false);
elseif ($sirMand && in_array($saisie, $tabNic))
$iDb->update('tabMandataires', array('nicMand'=>$saisie), "id=$idMand", false);
break;
} elseif ($saisie==0) break;
}
}
}
die();
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,850 +0,0 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
/** @todo Si MAJ en annule et remplace prévoir les manips SQL suivantes :
** A. Création d'une table insee.tmp sans aucun index
** B. A la fin du chargement construire les index
** //ALTER TABLE insee ADD PRIMARY KEY (insSIREN, insNIC);
** ALTER TABLE insee ADD INDEX (insSIREN, insNIC);
** ALTER TABLE insee ADD FULLTEXT (insNOMEN);
** ALTER TABLE insee ADD INDEX (insSIEGE);
** ALTER TABLE insee ADD INDEX (insCODPOS);
** ALTER TABLE insee ADD INDEX (insDEPET);
** ALTER TABLE insee ADD INDEX (insAPET700);
** ALTER TABLE insee ADD INDEX (insAPEN700);
** ALTER TABLE insee ADD INDEX (insCJ);
** --- ?
** ALTER TABLE insee ADD FULLTEXT (insNOMET);
** ALTER TABLE insee ADD FULLTEXT (insSIGLE);
** ALTER TABLE insee ADD INDEX (insNOMEN);
** ALTER TABLE insee ADD INDEX (insNOMET);
** ALTER TABLE insee ADD INDEX (insSIGLE);
** --- ?
**
** Si pas d'erreur :
** 1. detruire insee
** 2. Renommer insee.tmp en insee
**/
global $tabSep;
$tabSep=array('"', '|', '#', '+', '-', '=', '_', '/', '\'', '\\', '&', '.', ';', ',', '!', '?', ':', '*', '°', '(', ')', '[', ']', '{', '}');
global $tabInutils;
$tabInutils=array('', 'la', 'le', 'du', 'les', 'aux', 'au', 'des', 'ma', 'mon', 'ton', 'tes', 'nos', 'vos', 'l', 'de', 'ta', 'a', 'et', 'on', 'en');
function specialCharToSpace($str) {
$str=strtr( strtoupper($str),
'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ',
// strtoupper('aaaaaaaceeeeiiiionooooouuuuyy'));
strtoupper('AAAAAAACEEEEIIIIONOOOOOUUUUYY'));
$ret='';
for ($i=0; $i<strlen($str); $i++) {
if (ord($str[$i])>64 && ord($str[$i])<91)
$ret.=$str[$i];
else
$ret.=' ';
}
return $ret;
}
function getTabWords($str) {
global $tabInutils;
// Découpe du champ NOMEN
$tabMot=array();
$tabRS=explode(' ', specialCharToSpace($str));
$i=0;
foreach($tabRS as $k => $mot) {
// Si le mot courant n'est pas inutil, on le garde !
if (!in_array(trimAccent($mot), $tabInutils))
{
$tabMot[$i]=$mot;
$i++;
}
}
return $tabMot;
}
/*
include_once('/var/www/_includes/timer.php');
include_once('/var/www/_includes/phonex.php');
include_once('/var/www/_includes/soundex.php');
function soundex2($str) {
$soundex2 = new soundex2;
$soundex2 -> build ($str);
return $soundex2 -> sString;
}
*/
// $ret=mysql_query('ALTER TABLE `insee` RENAME `insee_'. date('Y-m-d') .'`;');
// echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne base INSEE\n";
/*
$ret=mysql_query('ALTER TABLE `insee_recherche` RENAME `insee_recherche_'. date('Y-m-d') .'`;');
echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne base de recherche INSEE\n";
$ret=mysql_query("CREATE TABLE IF NOT EXISTS insee_recherche (
insSIREN varchar(9) NOT NULL default '',
insNIC varchar(5) NOT NULL default '',
motNOM varchar(24) default NULL,
shxNOM varchar(4) default NULL,
phxNOM bigint(12) default '0',
motADR varchar(24) default NULL,
shxADR varchar(4) default NULL,
phxADR bigint(12) default '0',
insNUMVOIE int(4) default NULL,
insTYPVOIE char(3) default NULL,
CodeInseeCommune varchar(5) default NULL,
insLIBCOM varchar(26) default NULL,
insSIEGE tinyint(1) NOT NULL default '0',
insAPET700 varchar(4) default NULL,
insAPET31 char(2) default NULL,
insCJ varchar(4) default NULL,
insAPEN700 varchar(4) default NULL,
insAPEN31 char(2) default NULL,
SPEACT char(1) default NULL,
SORLJ_N char(1) default NULL,
SOEVT char(2) default NULL,
SOETEL varchar(10) default NULL,
SOEFAX varchar(10) default NULL,
SODTEN_D varchar(8) default NULL) TYPE=MyISAM COMMENT='Base INSEE de recherche';");
echo date ('Y/m/d - H:i:s')." - Création de la structure de la base de recherche INSEE sans les index\n";
*/
/*,
KEY `insSIREN` (`insSIREN`,`insNIC`),
KEY `insSIEGE` (`insSIEGE`),
KEY `insCODPOS` (`insCODPOS`),
KEY `insDEPET` (`insDEPET`),
KEY `insAPET700` (`insAPET700`),
KEY `insCJ` (`insCJ`),
KEY `insAPEN700` (`insAPEN700`),
KEY `insSIGLE` (`insSIGLE`),
KEY `insNOMEN_2` (`insNOMEN`),
KEY `insNOMET_2` (`insNOMET`),
FULLTEXT KEY `insNOMEN` (`insNOMEN`),
FULLTEXT KEY `insNOMET` (`insNOMET`),
FULLTEXT KEY `insSIGLE_2` (`insSIGLE`)*/
/** On ne prend l'heure qu'une seule fois par script PHP et on initialise des constantes.
*
* DATETIME YmdHis
* DATETIME_LOG Y-m-d H:i:s Date du jour pour les insertions en BDD
* NOW His Heure d'exécution du script
* NOW_FORMAT H:i:s Heure d'exécution du script
* TODAY Ymd Année, Mois, Jour d'exécution du script
* TODAY_FORMAT Y-m-d
* TODAY_AFF d/m/Y
*/
define ('TODAY', substr(DATETIME,0,8));
define ('TODAY_FORMAT', substr(DATETIME,0,4).'-'.substr(DATETIME,4,2).'-'.substr(DATETIME,6,2));
define ('NOW_FORMAT', substr(DATETIME,8,2).':'.substr(DATETIME,10,2).':'.substr(DATETIME,12,2));
set_time_limit(0);
$heureDebut=NOW_FORMAT;
$dateJour=TODAY;
$dateJourFormat=TODAY_FORMAT;
echo date ('Y/m/d - H:i:s') . " - Début du traitement\r\n";
flush();
$db_name=$db_table='';
//Initialistation des variables
$argv=$_SERVER['argv'];
if ($_SERVER['argc']<3) die('Usage : '.basename($argv[0]). " [OPTION]... FICHIER(S)
Charger un fichier au format Notice80 dans une base de données avec création de la table qui aura le nom du fichier chargé..
Options disponibles:
-d=nom_bdd Nom de la base de données
-t=nom_table Nom de la table
(*): Valeurs par défaut !
");
for ($i=1,$j=0; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd': $db_name=substr($argv[$i],3); break;
case 't': $db_table=substr($argv[$i],3); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else {
$fichier_csv[$j]=$argv[$i];
$j++;
}
}
if ($db_name=='') die("Base de données non communiquée !\n");
if ($db_table=='') die("Table non communiquée !\n");
$iDb=new WDB($db_name);
$sql="CREATE TABLE IF NOT EXISTS $db_table (
insSIREN varchar(9) NOT NULL default '',
insNIC varchar(5) NOT NULL default '',
insNOMEN varchar(40) default NULL,
insNOMET varchar(40) default NULL,
insSIGLE varchar(20) default NULL,
insCADR varchar(26) default NULL,
insNUMVOIE varchar(4) default NULL,
`insINDREP` char(1) default NULL,
`insTYPVOIE` char(3) default NULL,
`insLIBVOIE` varchar(26) default NULL,
`insDISTSP` varchar(26) default NULL,
`insACHPOSTE` varchar(32) default NULL,
`insZR` varchar(11) default NULL,
`insRPET` tinyint(2) NOT NULL default '0',
`insDEPET` char(2) default NULL,
`insARRONET` char(2) default NULL,
`insCTONET` char(3) default NULL,
`insCOMET` char(3) default NULL,
`insLIBCOM` varchar(26) default NULL,
`insDU` char(2) default NULL,
`insTU` tinyint(1) NOT NULL default '0',
`insU7U` char(2) default NULL,
`insCODPOS` varchar(5) default NULL,
`insILOT` varchar(8) default NULL,
`insTCD` tinyint(2) NOT NULL default '0',
`insZEMET` char(2) default NULL,
`insCODEVOIE` varchar(5) default NULL,
`insAPET700` varchar(4) default NULL,
`insAPET31` char(2) default NULL,
`insSIEGE` tinyint(1) NOT NULL default '0',
`insTEFET` tinyint(2) NOT NULL default '0',
`insEFETCENT` mediumint(6) default NULL,
`insORIGINE` tinyint(1) NOT NULL default '0',
`insDCRET` varchar(6) default NULL,
`insMMINTRET` tinyint(2) NOT NULL default '0',
`insNATURE` char(2) default NULL,
`insSAISONAT` tinyint(1) NOT NULL default '0',
`insMODET` tinyint(1) NOT NULL default '0',
`insDAPET` varchar(4) default NULL,
`insDEFET` varchar(4) default NULL,
`insSINGT` tinyint(2) NOT NULL default '0',
`insAUXILT` tinyint(1) NOT NULL default '0',
`insEAEANT` varchar(4) default NULL,
`insEAEAPET` varchar(4) default NULL,
`insEAESEC1T` varchar(4) default NULL,
`insEAESEC2T` varchar(4) default NULL,
`insCJ` varchar(4) default NULL,
`insTEFEN` tinyint(2) NOT NULL default '0',
`insEFENCENT` mediumint(6) default NULL,
`insAPEN700` varchar(4) default NULL,
`insAPEN31` char(2) default NULL,
`insAPRM` varchar(5) default NULL,
`insTCA` tinyint(1) NOT NULL default '0',
`insSEXE` enum('M','F','') NOT NULL default 'M',
`insRECME` tinyint(1) NOT NULL default '0',
`insDAPEN` varchar(4) default NULL,
`insDEFEN` varchar(4) default NULL,
`insDCREN` varchar(6) default NULL,
`insMMINTREN` tinyint(2) NOT NULL default '0',
`insMONOACT` tinyint(1) default NULL,
`insMODEN` tinyint(1) NOT NULL default '0',
`insORDIN` tinyint(1) NOT NULL default '0',
`insEAEANN` varchar(4) default NULL,
`insEAEAPEN` varchar(4) default NULL,
`insEAESEC1N` varchar(4) default NULL,
`insEAESEC2N` varchar(4) default NULL,
`insEAESEC3N` varchar(4) default NULL,
`insEAESEC4N` varchar(4) default NULL,
`insNBTOA` SMALLINT(4) UNSIGNED NOT NULL default '0',
`insTCAEXPOR` tinyint(1) NOT NULL default '0',
`insREGIMP` char(2) default NULL,
`insMONOREG` tinyint(1) default NULL,
`insRPEN` tinyint(2) NOT NULL default '0',
`insDEPCOMEN` varchar(5) default NULL,
`insVMAJ` enum('C','E','I','F','S') NOT NULL default 'C',
`insVMAJ1` tinyint(1) NOT NULL default '0',
`insVMAJ2` tinyint(1) NOT NULL default '0',
`insVMAJ3` tinyint(1) NOT NULL default '0',
`SPEACT` char(1) default NULL,
`SORLJ_N` char(1) default NULL,
`SOEVT` char(2) default NULL,
`SOROL` char(1) default NULL,
`SODJL_D` varchar(8) default NULL,
`SOEDRQ` char(3) default NULL,
`SOEDRN_X` varchar(60) default NULL,
`SOEDRD_D` varchar(8) default NULL,
`SOEDRL_N` varchar(35) default NULL,
`SORSNC` char(1) default NULL,
`SORSNO` char(2) default NULL,
`SOETEL` varchar(10) default NULL,
`SOEFAX` varchar(10) default NULL,
`SODTEN_D` varchar(8) default NULL) TYPE=MyISAM COMMENT='Base INSEE courante';";
$ret=$iDb->query($sql, true);
echo date ('Y/m/d - H:i:s')." - Création de la structure de la base '$db_table' sans les index\n";
//echo "$sql\n";
$tabFichDate=$fichier_csv;
$messageInsertion=$messageSuppression='';
for ($nbFichiers=0; isset($tabFichDate[$nbFichiers]); $nbFichiers++)
{
$tab_nom_date =explode('|', $tabFichDate[$nbFichiers]);
$nomFichier =$tab_nom_date[0];
$moisFichier ='200601';//$tab_nom_date[1];
$fp=fopen($nomFichier,"r");
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier n°$nbFichiers à traiter : ".$rep.$nomFichier." !\r\n";
/* $tabDataToUpdate=array( 'NUM'=>$numScript,
'DATE_JOUR'=>$dateJour,
'HEURE_DEBUT'=>$heureDebut,
'HEURE_FIN'=>$heureFin,
'CODE_RETOUR'=>0,
'NB_MAIL'=>1,
'RESUME_EXEC'=>"Impossible d'ouvrir le fichier n°$nbFichiers à traiter : $nomFichier.");*/
echo date ('Y/m/d - H:i:s') . " - Fin du traitement\r\n";
exit();
}
$nbLignes=0;
$vmajC=0;
$vmajE=0;
$vmajI=0;
$vmajF=0;
$vmajS=0;
$totI=0;
$totS=0;
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n";
flush();
while (!feof($fp))
{
$nbLignes++;
$a = fgets($fp, 4096);
unset($tabErreur); $nbErr=0;
$insSIREN =substr($a, 0, 9);
$insNIC =substr($a, 9, 5);
$insVMAJ =substr($a,447, 1);
/* if ( $insVMAJ==' ' )
$insVMAJ ='C';
*/
if (!valideSiret($insSIREN.$insNIC)) {
if (trim($a)=='')
$insVMAJ='EOF';
else
$tabErreur[$nbErr++]="SIRET incorrect : $insSIREN.$insNIC";
}
if ( $insVMAJ!='C' && $insVMAJ!='E' && $insVMAJ!='I' && $insVMAJ!='F' && $insVMAJ!='S' && $insVMAJ!='EOF' ) {
if ( $insVMAJ!=' ' && $insVMAJ!=chr(0) ) {
// echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, forçage du code VMAJ à C car VMAJ='$insVMAJ' (Code ASCII=".ord($insVMAJ).") inexistant pour le siret $insSIREN $insNIC !!!\r\n";
flush();
}
$insVMAJ='C';
}
switch($insVMAJ)
{
case 'C':
case 'F':
case 'S':
// Requêtes de création ou mise à jour
// ***********************************
$insNOMEN = trim( substr($a, 14,40) );
$insNOMET = trim( substr($a, 54,40) );
$insSIGLE = trim( substr($a, 94,20) );
$insCADR = trim( substr($a,114,26) );
$insNUMVOIE = trim( substr($a,140, 4) );
$insINDREP = trim( substr($a,144, 1) );
$insTYPVOIE = trim( substr($a,145, 3) ); // Répertorié dans 1 tableau
// if (!$insee->isTypeVoie($insTYPVOIE))
// $tabErreur[$nbErr++]="TYPVOIE inconnu : '$insTYPVOIE'";
$insLIBVOIE = trim( substr($a,148,26) );
$insDISTSP = trim( substr($a,174,26) );
$insACHPOSTE = trim( substr($a,200,32) );
$insZR = trim( substr($a,232,11) );
$insRPET = (int) substr($a,243, 2); // Répertorié dans 1 tableau
// if ( trim($insee->getLibRegion($insRPET))=='' )
// $tabErreur[$nbErr++]="RPET inconnue : '$insRPET' (Code ASCII=".ord(substr($a,243, 1))." & ".ord(substr($a,244, 1)).")";
$insDEPET = substr($a,245, 2);
$insARRONET = substr($a,247, 2);
$insCTONET = substr($a,249, 3);
$insCOMET = substr($a,252, 3);
$insLIBCOM = trim( substr($a,255,26) );
$insDU = substr($a,281, 2);
$insTU = (int) substr($a,283, 1); // de 0 à 8
// if ($insTU > 8)
// $tabErreur[$nbErr++]="TU non comprise entre 0 et 8 : '$insTU' (Code ASCII=".ord(substr($a,283, 1)).")";
$insU7U = substr($a,284, 2); // Champ UU de l'Insee
$insCODPOS = substr($a,286, 5);
$insILOT = trim( substr($a,291, 8)); // toujours vide car tarif spécial !
$insTCD = (int) substr($a,299, 2);
$insZEMET = substr($a,301, 2);
$insCODEVOIE = substr($a,303, 5);
$insAPET700 = substr($a,308, 4);
$insAPET31 = substr($a,312, 2);
$insSIEGE = (int) substr($a,314, 1);
$insTEFET = (int) substr($a,315, 2);
$insEFETCENT = trim( substr($a,317, 6)); // Numérique
if ( $insEFETCENT=='' )
$insEFETCENT='NULL';
elseif (!is_numeric($insEFETCENT)) {
// if ( $insEFETCENT!='N' )
// $tabErreur[$nbErr++]="EFETCENT non numérique : $insEFETCENT";
$insEFETCENT='NULL';
}
else
$insEFETCENT=(int)$insEFETCENT;
$insORIGINE = (int) substr($a,323, 1); // de 0 à 8
// if ($insORIGINE > 8)
// $tabErreur[$nbErr++]="ORIGINE non comprise entre 0 et 8 : $insORIGINE";
$insDCRET = substr($a,324, 6);
$insMMINTRET = (int) substr($a,330, 2); // de 0 à 12
// if ( $insMMINTRET < 0 || $insMMINTRET > 12 )
// $tabErreur[$nbErr++]="MMINTRET non compris entre 0 et 12 : $insMMINTRET (Code ASCII=".ord(substr($a,330, 1))." & ".ord(substr($a,331, 1)).")";
$insNATURE = (int) substr($a,332, 2); // Numérique définit dans 1 tableau//
// if ( !$insee->isNature($insNATURE) )
// $tabErreur[$nbErr++]="NATURE inconnue : $insNATURE (Code ASCII=".ord(substr($a,332, 1))." & ".ord(substr($a,333, 1)).")";
$insSAISONAT = (int) substr($a,334, 1);
$insMODET = (int) substr($a,335, 1); // de 0 à 3
if ($insMODET > 3)
$tabErreur[$nbErr++]="MODET différent de 0,1,2 ou 3 : $insMODET (Code ASCII=".ord(substr($a,335, 1)).")";
$insDAPET = trim( substr($a,336, 4));
$insDEFET = trim( substr($a,340, 4));
$insSINGT = (int) substr($a,344, 2); // Numérique définit dans 1 tableau
// if ( trim($insee->getLibSingularite($insSINGT))=='' )
// $tabErreur[$nbErr++]="SINGT inconnue : $insSINGT (Code ASCII=".ord(substr($a,344, 1))." & ".ord(substr($a,345, 1)).")";
$insAUXILT = (int) substr($a,346, 1); // 0, 1 ou 9
// if ($insAUXILT > 1 && $insAUXILT < 9)
// $tabErreur[$nbErr++]="AUXILT différent de 0, 1 ou 9 : $insAUXILT (Code ASCII=".ord(substr($a,346, 1)).")";
$insEAEANT = trim( substr($a,347, 4));
$insEAEAPET = trim( substr($a,351, 4));
$insEAESEC1T = trim( substr($a,355, 4));
$insEAESEC2T = trim( substr($a,359, 4));
$insCJ = substr($a,363, 4);
$insTEFEN = (int) substr($a,367, 2);
$insEFENCENT = trim( substr($a,369, 6)); // Numérique
if ( $insEFENCENT=='' )
$insEFENCENT='NULL';
elseif (!is_numeric($insEFENCENT)) {
// if ( $insEFENCENT!='N' )
// $tabErreur[$nbErr++]="EFENCENT non numérique : $insEFENCENT (Code ASCII=".ord($insEFENCENT).")";
$insEFENCENT='NULL';
}
else
$insEFENCENT=(int)$insEFENCENT;
$insAPEN700 = substr($a,375, 4);
$insAPEN31 = substr($a,379, 2);
$insAPRM = trim( substr($a,381, 5));
$insTCA = (int) substr($a,386, 1); // de 0 à 9
$insSEXE = strtoupper( substr($a,387, 1)); // M, F ou blanc
if ( $insSEXE!='M' && $insSEXE!='F' && $insSEXE!=' ' )
// if ( $insSEXE!=chr(0) )
// $tabErreur[$nbErr++]="SEXE inconnu : $insSEXE (Code ASCII=".ord($insVMAJ).")";
// else
$insSEXE=' ';
$insRECME = (int) substr($a,388, 1); // 0 ou 1
// if ( $insRECME > 1 )
// $tabErreur[$nbErr++]="RECME différent de 0 ou 1 : $insRECME (Code ASCII=".ord(substr($a,388, 1)).")";
$insDAPEN = trim( substr($a,389, 4));
$insDEFEN = trim( substr($a,393, 4));
$insDCREN = substr($a,397, 6);
$insMMINTREN = (int) substr($a,403, 2); // de 0 à 12
// if ( $insMMINTREN < 0 || $insMMINTREN > 12 )
// $tabErreur[$nbErr++]="MMINTREN non compris entre 0 et 12 : $insMMINTREN (Code ASCII=".ord(substr($a,403, 1))." & ".ord(substr($a,404, 1)).")";
$insMONOACT = trim( substr($a,405, 1)); // 0,1,2 ou NULL
if ( $insMONOACT == '' )
$insMONOACT = 'NULL';
else {
// if( $insMONOACT != '0' && $insMONOACT != '1' && $insMONOACT != '2' )
// $tabErreur[$nbErr++]="MONOACT différent de 0,1,2 ou NULL : $insMONOACT (Code ASCII=".ord(substr($a,405, 1)).")";
$insMONOACT=(int)$insMONOACT;
}
$insMODEN = (int) substr($a,406, 1); // 0,1,2 ou 3
// if ($insMODEN > 3)
// $tabErreur[$nbErr++]="MODEN différent de 0,1,2 ou 3 : $insMODEN (Code ASCII=".ord(substr($a,406, 1)).")";
$insORDIN = (int) substr($a,407, 1); // 0 ou 1
// if ($insORDIN > 1)
// $tabErreur[$nbErr++]="ORDIN différent de 0 ou 1 : $insORDIN (Code ASCII=".ord(substr($a,407, 1)).")";
$insEAEANN = trim( substr($a,408, 4));
$insEAEAPEN = trim( substr($a,412, 4));
$insEAESEC1N = trim( substr($a,416, 4));
$insEAESEC2N = trim( substr($a,420, 4));
$insEAESEC3N = trim( substr($a,424, 4));
$insEAESEC4N = trim( substr($a,428, 4));
$insNBTOA = (int) substr($a,432, 4); // de 0 à 9999
$insTCAEXPOR = (int) substr($a,436, 1); // 0,1,2,3 ou 4
// if ($insTCAEXPOR > 4)
// $tabErreur[$nbErr++]="TCAEXPOR différent de 0,1,2,3 ou 4 : $insTCAEXPOR (Code ASCII=".ord(substr($a,436, 1)).")";
$insREGIMP = substr($a,437, 2);
$insMONOREG = trim( substr($a,439, 1)); // 0,1,2 ou NULL
if ( $insMONOREG == '' )
$insMONOREG = 'NULL';
else {
// if( $insMONOREG != '0' && $insMONOREG != '1' && $insMONOREG != '2' )
// $tabErreur[$nbErr++]="MONOREG différent de 0,1,2 ou NULL : $insMONOREG (Code ASCII=".ord(substr($a,439, 1)).")";
$insMONOREG=(int)$insMONOREG;
}
$insRPEN = (int) substr($a,440, 2);
$insDEPCOMEN = substr($a,442, 5);
// $insVMAJ = substr($a,447, 1);
$insVMAJ1 = (int) substr($a,448, 1); // 0 ou 1
// if ($insVMAJ1 > 1)
// $tabErreur[$nbErr++]="VMAJ1 différent de 0 ou 1 : $insVMAJ1 (Code ASCII=".ord(substr($a,448, 1)).")";
$insVMAJ2 = (int) substr($a,449, 1); // 0 ou 1
// if ($insVMAJ2 > 1)
// $tabErreur[$nbErr++]="VMAJ2 différent de 0 ou 1 : $insVMAJ2 (Code ASCII=".ord(substr($a,449, 1)).")";
$insVMAJ3 = (int) substr($a,450, 1); // 0 ou 1
// if ($insVMAJ3 > 1)
// $tabErreur[$nbErr++]="VMAJ3 différent de 0 ou 1 : $insVMAJ3 (Code ASCII=".ord(substr($a,450, 1)).")";
$bilSPEACT = trim( substr($a,451, 1)); //
$bilSORLJ_N = trim( substr($a,452, 1));
$bilSOEVT = trim( substr($a,453, 2)); //
$bilSOROL = trim( substr($a,455, 1)); //
$bilSODJL_D = trim( substr($a,456, 8)); //
$bilSOEDRQ = trim( substr($a,464, 3)); //
$bilSOEDRN_X= trim( substr($a,467, 60)); //
$bilSOEDRD_D= trim( substr($a,527, 8)); //
$bilSOEDRL_N= trim( substr($a,535, 35)); //
$bilSORSNC = trim( substr($a,570, 1)); //
$bilSORSNO = trim( substr($a,571, 2)); //
$bilSOETEL = trim( substr($a,573, 10)); //
$bilSOEFAX = trim( substr($a,583, 10)); //
$bilSODTEN_D= trim( substr($a,593, 8)); //
// Traitement du NOM, Enseigne et sigle pour optimiser la recherche
//$tabNOMEN=getTabWords($insNOMEN);
//$tabNOMET=getTabWords($insNOMET);
//$tabSIGLE=getTabWords($insSIGLE);
/*$tabNOM=array_merge($tabNOMEN,
$tabNOMET,
$tabSIGLE);
array_unique($tabNOM);
$nbNOM=count($tabNOM);
$nbLignesRec=$nbNOM;
// Traitement des différents zones d'adresse pour optimiser la recherche
$tabCADR=getTabWords($insCADR);
$tabLIBVOIE=getTabWords($insLIBVOIE);
$tabDISTSP=getTabWords($insDISTSP);
$tabADR=array_merge($tabCADR,
$tabLIBVOIE,
$tabDISTSP);
array_unique($tabADR);
$nbADR=count($tabADR);
if ($nbADR>$nbLignesRec) $nbLignesRec=$nbADR;
$CodeInseeCommune=$insDEPET.$insCOMET;
$insNUMVOIE=(int)$insNUMVOIE;
*/
/*
for ($i_rec=0; $i_rec<$nbLignesRec; $i_rec++) {
$tabDataToInsertR=array('insSIREN' => $insSIREN,
'insNIC' => $insNIC,
'motNOM' => $tabNOM[$i_rec],
'shxNOM' => soundex2($tabNOM[$i_rec]),
'phxNOM' => phonex($tabNOM[$i_rec]),
'motADR' => $tabADR[$i_rec],
'shxADR' => soundex2($tabADR[$i_rec]),
'phxADR' => phonex($tabADR[$i_rec]),
'insNUMVOIE' => $insNUMVOIE,
'insTYPVOIE' => $insTYPVOIE,
'CodeInseeCommune'=> $CodeInseeCommune,
'insLIBCOM' => $insLIBCOM,
'insSIEGE' => $insSIEGE,
'insAPET700' => $insAPET700,
'insAPET31' => $insAPET31,
'insCJ' => $insCJ,
'insAPEN700' => $insAPEN700,
'insAPEN31' => $insAPEN31,
'SPEACT' => $bilSPEACT,
'SORLJ_N' => $bilSORLJ_N,
'SOEVT' => $bilSOEVT,
'SOETEL' => $bilSOETEL,
'SOEFAX' => $bilSOEFAX,
'SODTEN_D' => $bilSODTEN_D );
$ret=mysql_insert('insee_recherche', $tabDataToInsertR);
}
**********/
$tabDataToInsert=array(
'insSIREN' => $insSIREN,
'insNIC' => $insNIC,
'insNOMEN' => $insNOMEN,
'insNOMET' => $insNOMET,
'insSIGLE' => $insSIGLE,
'insCADR' => $insCADR,
'insNUMVOIE' => $insNUMVOIE,
'insINDREP' => $insINDREP,
'insTYPVOIE' => $insTYPVOIE,
'insLIBVOIE' => $insLIBVOIE,
'insDISTSP' => $insDISTSP,
'insACHPOSTE' => $insACHPOSTE,
'insZR' => $insZR,
'insRPET' => $insRPET,
'insDEPET' => $insDEPET,
'insARRONET' => $insARRONET,
'insCTONET' => $insCTONET,
'insCOMET' => $insCOMET,
'insLIBCOM' => $insLIBCOM,
'insDU' => $insDU,
'insTU' => $insTU,
'insU7U' => $insU7U,
'insCODPOS' => $insCODPOS,
'insILOT' => $insILOT,
'insTCD' => $insTCD,
'insZEMET' => $insZEMET,
'insCODEVOIE' => $insCODEVOIE,
'insAPET700' => $insAPET700,
'insAPET31' => $insAPET31,
'insSIEGE' => $insSIEGE,
'insTEFET' => $insTEFET,
'insEFETCENT' => $insEFETCENT,
'insORIGINE' => $insORIGINE,
'insDCRET' => $insDCRET,
'insMMINTRET' => $insMMINTRET,
'insNATURE' => $insNATURE,
'insSAISONAT' => $insSAISONAT,
'insMODET' => $insMODET,
'insDAPET' => $insDAPET,
'insDEFET' => $insDEFET,
'insSINGT' => $insSINGT,
'insAUXILT' => $insAUXILT,
'insEAEANT' => $insEAEANT,
'insEAEAPET' => $insEAEAPET,
'insEAESEC1T' => $insEAESEC1T,
'insEAESEC2T' => $insEAESEC2T,
'insCJ' => $insCJ,
'insTEFEN' => $insTEFEN,
'insEFENCENT' => $insEFENCENT,
'insAPEN700' => $insAPEN700,
'insAPEN31' => $insAPEN31,
'insAPRM' => $insAPRM,
'insTCA' => $insTCA,
'insSEXE' => $insSEXE,
'insRECME' => $insRECME,
'insDAPEN' => $insDAPEN,
'insDEFEN' => $insDEFEN,
'insDCREN' => $insDCREN,
'insMMINTREN' => $insMMINTREN,
'insMONOACT' => $insMONOACT,
'insMODEN' => $insMODEN,
'insORDIN' => $insORDIN,
'insEAEANN' => $insEAEANN,
'insEAEAPEN' => $insEAEAPEN,
'insEAESEC1N' => $insEAESEC1N,
'insEAESEC2N' => $insEAESEC2N,
'insEAESEC3N' => $insEAESEC3N,
'insEAESEC4N' => $insEAESEC4N,
'insNBTOA' => $insNBTOA,
'insTCAEXPOR' => $insTCAEXPOR,
'insREGIMP' => $insREGIMP,
'insMONOREG' => $insMONOREG,
'insRPEN' => $insRPEN,
'insDEPCOMEN' => $insDEPCOMEN,
'insVMAJ' => $insVMAJ,
'insVMAJ1' => $insVMAJ1,
'insVMAJ2' => $insVMAJ2,
'insVMAJ3' => $insVMAJ3,
'SPEACT' => $bilSPEACT,
'SORLJ_N' => $bilSORLJ_N,
'SOEVT' => $bilSOEVT,
'SOROL' => $bilSOROL,
'SODJL_D' => $bilSODJL_D,
'SOEDRQ' => $bilSOEDRQ,
'SOEDRN_X' => $bilSOEDRN_X,
'SOEDRD_D' => $bilSOEDRD_D,
'SOEDRL_N' => $bilSOEDRL_N,
'SORSNC' => $bilSORSNC,
'SORSNO' => $bilSORSNO,
'SOETEL' => $bilSOETEL,
'SOEFAX' => $bilSOEFAX,
'SODTEN_D' => $bilSODTEN_D,
);
$insVMAJ3 = (int) substr($a,450, 1);
switch($insVMAJ)
{
case 'S':
// Annule et remplace le siège précédent
// if ($iinsee->addHisto($insSIREN, $insNIC)) {
// $iinsee->removeInsee($insSIREN, $insNIC);
$vmajS++;
// }
// else {
// echo date ('Y/m/d - H:i:s') . " - ERREUR d'historisation du siret $insSIREN $insNIC !\r\n";
// flush();
// }
break;
case 'C':
// Entrée d'un SIRET - Immatriculation d'un nouvel établissement
$vmajC++;
break;
case 'F':
// Etat final d'un SIRET modifié (après mise à jour)
// if ($iinsee->addHisto($insSIREN, $insNIC)) {
// $iinsee->removeInsee($insSIREN, $insNIC);
// }
$vmajF++;
break;
}
// $resultat=array_merge($resultat, array('Bodacc_Annee_Parution'=>$annee, 'Tri_User_Saisie'=>$_SESSION['user']));
$ret=$iDb->insert($db_table, $tabDataToInsert);
if ($ret!=1) {
echo date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion du siret $insSIREN $insNIC : $ret !\r\n";
flush();
}
break;
case 'E':
case 'I':
// Requête de suppression
// **********************
// if ($iinsee->addHisto($insSIREN, $insNIC))
// $iinsee->removeInsee($insSIREN, $insNIC);
// else {
// echo date ('Y/m/d - H:i:s') . " - ERREUR d'historisation du siret $insSIREN $insNIC !\r\n";
// flush();
// }
switch($insVMAJ)
{
case 'E': // Suppression d'un SIRET - Cessation d'activité d'un établissement
$vmajE++;
break;
case 'I': // Etat initial d'un SIRET modifié (avant mise à jour)
$vmajI++;
break;
}
case 'EOF':
break;
}
/* if ($tabErreur) {
echo date ('Y/m/d - H:i:s') . " - ATTENTION, ligne $nbLignes, problèmes pour le siret $insSIREN $insNIC !!!\r\n";
print_array($tabErreur,0,"txt");
flush();
}
*/
// if ($nbLignes%20==0) sleep(1);
// print_array($tabDataToInsert,0,'txt');
unset($tabDataToInsert);
}
fclose ($fp);
$strUpdate='';
for ($j=$nbFichiers+1; isset($tabFichDate[$j]); $j++)
$strUpdate.=$tabFichDate[$j].';';
$tabDataToUpdate=array( 'VALEUR'=>$strUpdate,
'CLE'=>'INSEE_FICHIERS_MAJ');
// $iparam->setParamValeur($tabDataToUpdate);
$totI=$vmajS+$vmajC+$vmajF;
$totS=$vmajE+$vmajI;
$messageInsertion.="Résumé du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n\r\n";
$messageInsertion.="Nombre de nouvelles insertion: ".$totI."\r\n";
$messageInsertion.=" - dont Changement de siège: ".$vmajS."\r\n";
$messageInsertion.=" - dont Entrée d'un SIRET - Immatriculation d'un nouvel établissement: ".$vmajC."\r\n";
$messageInsertion.=" - dont Etat final d'un SIRET modifié (après mise à jour): ".$vmajF."\r\n";
$messageSuppression.="Nombre de suppression: ".$totS."\r\n";
$messageSuppression.=" - dont Suppression d'un SIRET - Cessation d'activité d'un établissement: ".$vmajE."\r\n";
$messageSuppression.=" - dont Etat initial d'un SIRET modifié (avant mise à jour): ".$vmajI."\r\n\r\n";
echo date ('Y/m/d - H:i:s') ." - Nombre de nouvelles insertion: ".$totI."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Changement de siège: ".$vmajS."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Entrée d'un SIRET ou Immatriculation d'un nouvel établissement: ".$vmajC."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Etat final d'un SIRET modifié (après mise à jour): ".$vmajF."\r\n";
echo date ('Y/m/d - H:i:s') ." - Nombre de suppression: ".$totS."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Suppression d'un SIRET ou Cessation d'activité d'un établissement: ".$vmajE."\r\n";
echo date ('Y/m/d - H:i:s') ." - | dont Etat initial d'un SIRET modifié (avant mise à jour): ".$vmajI."\r\n";
echo date ('Y/m/d - H:i:s') ." - Fin du traitement du fichier n°$nbFichiers=$nomFichier du mois de $moisFichier !\r\n\r\n";
flush();
}
echo date ('Y/m/d - H:i:s')." - Création des index de recherche...\n";
/*
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`motNOM`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`shxNOM`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`phxNOM`);");
echo date ('Y/m/d - H:i:s')." - Création des index de NOM ok\n";
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`motADR`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`shxADR`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`phxADR`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`insNUMVOIE`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`insTYPVOIE`);");
$ret=mysql_query("ALTER TABLE `insee_recherche` ADD INDEX (`CodeInseeCommune`);");
echo date ('Y/m/d - H:i:s')." - Création des index d'ADRESSE ok\n";
*/
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX idxSiret(insSIREN, insNIC);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insSIEGE);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPET700);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPET31);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insCJ);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPEN700);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (insAPEN31);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SPEACT);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SORLJ_N);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOEVT);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOETEL);");
$ret=$iDb->query("ALTER TABLE $db_table ADD INDEX (SOEFAX);");
echo date ('Y/m/d - H:i:s')." - Création des index de recherche terminée !\n";
// Mise à jour de la table PARAM
// -----------------------------
// 3 - pour la fin d'exécution du traitement en cours
$tabDataToUpdate=array('VALEUR'=>0,
'CLE'=>'INSEE_MAJ_ENCOURS');
// $iparam->setParamValeur($tabDataToUpdate);
$heureFin=date('H:i:s');
$tabDataToUpdateTraitement=array('NUM'=>$numScript,
'DATE_JOUR'=>$dateJour,
'HEURE_DEBUT'=>$heureDebut,
'HEURE_FIN'=>$heureFin,
'CODE_RETOUR'=>1,
'NB_MAIL'=>1,
'RESUME_EXEC'=>"traitement achevé correctement");
// $itraitement->setTraitement($tabDataToUpdateTraitement);
$tabDataMail= array('MAIL_OBJET'=>$sujetMail,
'MAIL_CORPS'=>"Traitement correct: \r\n".$messageInsertion."\r\n ".$messageSuppression."\r\n");
// $emailBatch=new EMailBatch($tabDataMail);
// $emailBatch->mailBatica($numScript);
echo date ('Y/m/d - H:i:s') . " - Fin correcte du traitement.\r\n";
exit();
function ecrireFichier($fichier,$texte){
$fp = fopen($fichier, "a");
fwrite($fp, $texte."\r\n");
fclose ($fp);
}
function valideSiret($SIRET) {
if (!is_numeric($SIRET))
return false;
$somme=0;
for ($i=0; $i<=12; $i+=2) { // Traitement PAIR
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
$som_tmp=0;
for($j=0;$j<strlen($var_tmp);$j++)
$som_tmp+=(integer)substr($var_tmp,$j,1);
$somme+=$som_tmp;
}
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
$somme+=(integer)substr($SIRET,$i,1);
if ((integer)($somme/10)!=($somme/10))
return false;
return true;
}
?>

View File

@ -1,259 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
$dossierBocc='/root/download/jo/bocc';
set_time_limit(0);
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$tmin=5;
$tmax=30;
$lastJO=true;
$annee=$numJO=$debug=false;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les annonces des Conventions Collectives sur le site des JO.
Sans aucun paramètre, récupération du dernier JO CC.
Sinon:
-a:YYYY Année entière à récupérer (1ère année possible = 2005)
-j:YYYYNN Année en Numéro de publication dans l'année (1er possible 200501 pour 2005/0001)
-l Dernier JO uniquement (*)
-n:X Intervalle MIN en secondes entre 2 requêtes aux JO (défaut=$tmin)
-i:X \" MAX \" \" \" \" \" \" (défaut=$tmax)
-d Mode débug (Verbosité max et aucun délais entre 2 requêtes)
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a':
$annee=substr($argv[$i],3,4);
$lastJO=false;
break;
case 'j':
$numJO=substr($argv[$i],3,6);
$lastJO=false;
break;
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($tmin<2) $tmin=2;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<2) $tmax=2;
break;
case 'l':
$lastJO=true;
break;
case 'd':
$debug=true;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
echo date('Y/m/d - H:i:s') .' - DEBUT du script'. $eol;
flush();
//randsleep($tmin, $tmax);
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('jo', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
/** Récupération de la dernière année de parution **/
$page_num=0;
while (true) {
$referer='http://www.afdcc.com/fr/asso_annuaire.php?id_menu=1&id_ss_menu=4';
$url='http://www.afdcc.com/fr/asso_annuaire_liste.php?id_menu=1&id_ss_menu=4&caractere=&rnom=&rsociete=&rape=&rdep=&page='.$page_num;
$page=getUrl($url, '', '', $referer, false, 'www.afdcc.com');
$body=$page['body'];
$tabAdh=explode('<td valign="top" class="style_11" width="360"><a class="lien_09" href="', $body);
/** Boucle sur la liste des adhérents de la page
**/
for ($i=1; isset($tabAdh[$i]); $i++) {
//if (!preg_match('/<td colspan="2" class="style_07" align="center">/i', $tabAdh[$i])) {
$pos=strpos($tabAdh[$i], '">');
$urlAdh=substr($tabAdh[$i],0,$pos);
preg_match('/=&amp;NADH=(.*)&PHPSESSID=/i', $urlAdh, $matches);
$numAdh=$matches[1];
$posFin=strpos($tabAdh[$i], '</a></td>');
$nom=trim(substr($tabAdh[$i],$pos+2, $posFin-($pos+2)));
preg_match('/<td valign="top" class="style_11" width="140" align="right">(.*)<\/td>/i', $tabAdh[$i], $matches);
$tel=trim($matches[1]);
preg_match('/<td valign="top" class="style_08" width="360"><a class="lien_07" href="mailto:(.*)">(.*)<\/a><\/td>/i', $tabAdh[$i], $matches);
$mail=trim($matches[1]);
echo date ('Y/m/d - H:i:s') ." - Page $page_num/92, adherent $i ($numAdh), $nom". $eol;
/* Récupération des informations sur l'adhérent */
$url2='http://www.afdcc.com/fr/'.html_entity_decode($urlAdh);
//die('je recherche : '.$url2);
randsleep($tmin, $tmax);
$page=getUrl($url2, '', '', $url, false, 'www.afdcc.com');
$body=$page['body'];
preg_match_all('/<td class="style_08" width="360" valign="top">(.*)<\/td>/Uis', $body, $matches);
$tabTmp=$matches[1];
$tabTmp2=explode('-', $tabTmp[0]);
$naf=trim($tabTmp2[0]);
unset($tabTmp2[0]);
$entrep=trim(implode('-',$tabTmp2));
$tabAdherents=array( //'url'=>$urlAdh,
'num'=>$numAdh,
'nom'=>$nom,
'tel'=>$tel,
'mail'=>$mail,
'naf'=>$naf, // 518M - METTLER TOLEDO
'entrep'=>$entrep,
'fct'=>$tabTmp[1], // CREDIT MANAGER
'adr1'=>$tabTmp[2], // 18/20 Av. de la Pépinière
'adr2'=>$tabTmp[3],
'cp'=>$tabTmp[4], // 78220
'ville'=>$tabTmp[5],// VIROFLAY
//'tel2'=>$tabTmp[6], // TEL: 01 30 97 13 21
'fax'=>trim(str_replace('FAX:','', $tabTmp[7])), // FAX: 01 30 97 16 84
'membre'=>preg_replace('/-(.*)/','', str_replace("\n",'',str_replace("\r",'', $tabTmp[8])))
// MEMBRE ACTIF - 890801
);
$fp=fopen('/root/download/jo/afdcc.csv','a');
fwrite($fp, implode(';', $tabAdherents)."\n");
fclose($fp);
}
$page_num++;
randsleep($tmin, $tmax);
if ($page_num==93) break;
}
print_r($tabAdherents);
die();
//<td colspan="2" class="style_07" align="center">&nbsp;&nbsp;1 - <a href="./asso_annuaire_liste.php?id_menu=13&amp;id_ss_menu=&amp;caractere=&amp;rnom=&amp;rsociete=&amp;rape=&amp;rdep=&amp;page=1&PHPSESSID=81c09a8ac34bcd383fb6be2bb60e9210" class="lien_03">2</a> - <a href="./asso_annuaire_liste.php?id_menu=13&amp;id_ss_menu=&amp;caractere=&amp;rnom=&amp;rsociete=&amp;rape=&amp;rdep=&amp;page=2&PHPSESSID=81c09a8ac34bcd383fb6be2bb60e9210" class="lien_03">3</a>&nbsp;<a href="asso_annuaire_liste.php?id_menu=13&amp;id_ss_menu=&amp;caractere=&amp;rnom=&amp;rsociete=&amp;rape=&amp;rdep=&amp;page=1&PHPSESSID=81c09a8ac34bcd383fb6be2bb60e9210"><img src="images/fleche_apres.jpg" border="0" alt="Suivant" /></a>&nbsp;<a href="asso_annuaire_liste.php?id_menu=13&amp;id_ss_menu=&amp;caractere=&amp;rnom=&amp;rsociete=&amp;rape=&amp;rdep=&amp;page=92&PHPSESSID=81c09a8ac34bcd383fb6be2bb60e9210"><img src="images/fleches_apres.jpg" border="0" alt="Dernière page" /></a></td>
die();
$cookie=$page['header']['Set-Cookie'];
if ($debug) {
echo date('Y/m/d - H:i:s') . ' - Cookie : '. trim($cookie) . $eol;
$tmin=1;
$tmax=2;
}
$derAnneeParution=@getTextInHtml($body, '<a calss="blue" href="#" onclick="submitBoccByYear(\'', 'ByYear(\'', '\')');
if ($debug || $annee) {
echo date('Y/m/d - H:i:s') . ' - Dernière année de parution = '. $derAnneeParution . $eol;
if ($annee) {
$derAnneeParution=$annee;
echo date('Y/m/d - H:i:s') . ' - Année de parution demandée = '. $derAnneeParution . $eol;
}
}
/** Récupération de la liste des JO CC de l'année **/
randsleep($tmin, $tmax);
$postData=array('yearSearch'=>$derAnneeParution, 'idcc'=>'');
$page=getUrl($url, $cookie, $postData, $referer, false, 'www.journal-officiel.gouv.fr');
$bodyL=$page['body'];
$posFin=0;
while(true)
{ // Boucle sur les JO CC de l'année
$strParution=getTextInHtml($bodyL, '<a href="#" class="blue" onclick="submitBoccByBulletin(\'', 'ByBulletin(\'', '</a>',0,0,1,1,&$posFin);
if (!preg_match('/(.*)\'\);">(.*) du (.*)/i', $strParution, $matches)) {
if ($strParution=='') break; // On est arrivée à la fin de la liste des JO CC de l'année
else die (date('Y/m/d - H:i:s') . ' - ERREUR : Expression régulière impossible sur '. $strParution . $eol);
}
$idCC = $matches[1];
$numCC = $matches[2];
$numCC2= substr($numCC,0,4).substr($numCC,7,2); // 2005/0004 ==> 200504
$dateCC= $matches[3];
if ($numJO) if ($numJO<>$numCC2) continue;
$dateCCdb=substr($dateCC,6,4).'-'.substr($dateCC,3,2).'-'.substr($dateCC,0,2);
if ($debug) echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC ($idCC)$eol";
echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC ($idCC)$eol";
randsleep($tmin, $tmax);
$postData=array('yearSearchB'=>$derAnneeParution, 'bulletinSearch'=>$idCC);
$page=getUrl($url, $cookie, $postData, $referer, false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
$ann=array();
$ann['TRA']=@getTextInHtml($body, 'name="TRA">', 'colspan="3"', 'name="AGR">');
$ann['AGR']=@getTextInHtml($body, 'name="AGR">', 'colspan="3"', '</td>');
foreach($ann as $type=>$annonce) {
$tab=explode('<a href="#" class="bleu" onclick="submitBocc', $annonce);
$nbAnn=count($tab)-1;
$AnnDb=mysql_select('conv', 'count(*)', "Date_Parution='$dateCCdb' AND ministere='$type'");
$nbAnnDb=$AnnDb[0][0];
if ($nbAnnDb==$nbAnn) {
echo date('Y/m/d - H:i:s') ." - Toutes les annonces du JOCC $type du $dateCC sont en base$eol";
continue;
}
else echo date('Y/m/d - H:i:s') . " - JO CC $type$numCC du $dateCC : $nbAnn annonce(s)$eol";
for($j=1; isset($tab[$j]); $j++) {
$idAnn=@getTextInHtml($tab[$j], 'ByAnnonce(', "'", "');");
$urlAnn=str_replace('"','',trim(@getTextInHtml($tab[$j], 'href="', '="', 'target="')));
$nomCC=utf8_decode(trim(strtr(html_entity_decode(@getTextInHtml($tab[$j], '<b>', '>', '</b>')), ':'.chr(160), ' ')));
$infoCC=utf8_decode(trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($tab[$j], '</b>', '>', '<br>')))));
randsleep($tmin, $tmax);
$pdf=file_get_contents('http://www.journal-officiel.gouv.fr'.$urlAnn);
if (!$pdf) echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de téléchargement du PDF '. $urlAnn .
" pour le JO CC n°$numCC du $dateCC, Annonce $type $j $idAnn : $nomCC.$eol";
else {
$fp=@fopen($dossierBocc.'/'.basename($urlAnn), 'w');
if (!fwrite($fp, $pdf) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($urlAnn) .
" pour le JO CC n°$numCC du $dateCC, Annonce $type $j $idAnn : $nomCC.$eol";
@fclose($fp);
}
exec('pdftohtml -q -noframes '.$dossierBocc.'/'.basename($urlAnn).' tmp.html');
$html=str_replace('<META name="generator" content="pdftohtml 0.36">', '', file_get_contents('./tmp.html'));
$txt=strip_tags($html);
$numBrochure=trim(substr(str_replace('o','',@getTextInHtml(strtolower($txt), 'brochure', 'n', 'convention')),0,5));
preg_match_all('/IDCC.*:.*([0-9]{1,4})/', $txt, $matches);
$tabIdcc=array(); // IDCC : 1880
foreach($matches[0] as $m=>$idcc) $tabIdcc[]=trim(strtr($idcc, 'IDCC:', ' '));
$tabIdcc=array_unique($tabIdcc);
echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC, Annonce $type$j, Brochure n°$numBrochure ($idAnn) : ". substr($nomCC,0, 20).$eol;
$tabAnn=array( 'annee' =>$derAnneeParution,
'idCC' =>$idCC,
'numCC' =>str_replace('/00','',$numCC),
'numBrochure'=>$numBrochure,
'listeCC'=>implode(';', $tabIdcc),
'Date_Parution'=>$dateCCdb,
'ministere'=>$type, // Remplacer par ministère
'idAnnCC'=>$idAnn,
'urlAnn'=>$urlAnn,
'nomCC' =>$nomCC,
'infoCC'=>$infoCC,
'annonce'=>$html);
if (mysql_insert('conv', $tabAnn))
echo date('Y/m/d - H:i:s') .' - Annonce enregistrée avec succès dans la base !'. $eol;
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
}
if (!$annee) break;
}
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
?>

View File

@ -1,26 +0,0 @@
#!/usr/bin/php -q
<?php
set_time_limit(3600);
/* création d'une nouvelle ressource CURL
$ch = curl_init();
// configuration de l'URL et d'autres options
curl_setopt($ch, CURLOPT_URL, "http://www.otbm.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$str=curl_exec($ch);
curl_close($ch);
*/
for ($i=0; $i<100/*157*/; $i++)
{
if ($i<10) $num='00'.$i;
elseif ($i<100) $num='0' .$i;
else $num=$i;
$balo = 'http://www.journal-officiel.gouv.fr/balo/'.$num.'_monte_final.PDF';
if (!file_exists('/root/download/jo/balo/'.$num.'_monte_final.PDF')) {
exec('cd /root/download/jo/balo ; wget '.$balo);
echo date("Y/m/d - H:i:s") . " - Balo $num téléchargé.\n";
} else echo date("Y/m/d - H:i:s") . " - Balo $num déjà téléchargé !\n";
}
?>

View File

@ -1,198 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
$repBalo='/root/download/jo/balo/'; // Avec slash final SVP !!!
$repBaloComp='/root/download/jo/balo/full/'; // Avec slash final SVP !!!
echo date('Y/m/d - H:i:s') .' - DEBUT du script'. $eol;
flush();
set_time_limit(0);
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
randsleep();
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('jo', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
function getInfosAnnonceBalo($annonceHtml) {
$tabAnnBalo=array();
//Société : <b>ARGAN</b><br/>
$tabAnnBalo['Societe_Nom']=trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'Société : <b>', '<b>', '</b>'))));
//if ($tabAnnBalo['Societe_Nom']=='')
// $tabAnnBalo['Societe_Nom']=str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'<p>BOAMF: <b>', '<b>', '</b>')));
//<p>RCS : <b>393430608 </b>
$tabAnnBalo['Societe_Rcs']=trim(@getTextInHtml($annonceHtml, '<p>RCS : <b>', '<b>', '</b>'));
// Catégorie : <b><i> BULLETIN OFFICIEL DE L'AMF </i></b><br/>
$tabAnnBalo['Categorie']=trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, 'Catégorie : <b><i>', '<i>', '</i>'))));
// N° d'affaire : <b>0712845</b><br />
$tabAnnBalo['Num_Affaire']=@getTextInHtml($annonceHtml, 'N° d\'affaire : <b>', '<b>', '</b>');
// Paru le : <b>08-08-2007</b> (Parution n°<b>95</b>) <br />
$tmp=@getTextInHtml($annonceHtml, 'Paru le : <b>', '<b>', '</b>');
$tabAnnBalo['Date_Parution']=substr($tmp,6,4).'-'.substr($tmp,3,2).'-'.substr($tmp,0,2);
// (Parution n°<b>95</b>) <br />
$tabAnnBalo['Num_Parution']=@getTextInHtml($annonceHtml, '(Parution n°<b>', '<b>', '</b>');
/*<p>Annonce au format
<a class="grisbleu" href="http://balo.journal-officiel.gouv.fr/html/2007/0808/200708080712646.htm" target="_blank"><b>HTML</b></a> ou
<a class="grisbleu" href="https://balo.journal-officiel.gouv.fr/pdf/2007/0808/200708080712646.pdf" target="_blank"><b>PDF</b></a></p>*/
$tabAnnBalo['Url_Annonce_Html']=str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '<p>Annonce au format', 'href="', '" target="_blank"><b>HTML</b></a>')));
$tabAnnBalo['Url_Annonce_Pdf']=str_replace('https://', 'http://', str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, 'target="_blank"><b>HTML</b></a> ou', 'href="', '" target="_blank"><b>PDF</b></a></p>'))));
return $tabAnnBalo;
}
$page=getUrl('http://www.journal-officiel.gouv.fr/balo/', '', '', 'http://www.journal-officiel.gouv.fr/jahia/Jahia/pid/1', false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
$cookie=$page['header']['Set-Cookie'];
echo date('Y/m/d - H:i:s') .' - Cookie = "'. trim($cookie) .'"' . $eol;
$dateDerParution=@getTextInHtml($body, 'Derni&egrave;re parution</A>&nbsp;<span style="font-size:10px">(', '10px">(', ')</span></P>');
randsleep();
//echo date('Y/m/d - H:i:s') . ' - Dernière parution du BALO le '. $dateDerParution . ' !'. $eol;
//print_r($page);
//die();
/*
$page=getUrl('http://www.journal-officiel.gouv.fr/jahia/Jahia/balo', '', '', 'http://www.journal-officiel.gouv.fr/jahia/Jahia/pid/1', false, 'www.journal-officiel.gouv.fr');
//print_r($page);
//die();
$body=$page['body'];
//
//echo $cookie;
//$posFin=0;
//$urlDerParution=getTextInHtml($body, 'appid=1315_38&appparams=http%3A%2F%2Fwww.journal-officiel.gouv.fr%2Fwebclipping_myjahiasite%2Fservlet%2Fwebclip%3Fjahia_url_web_clipping%3Dhttp%3A%2F%2Fbalo.journal-officiel.gouv.fr%2FListeResultBalo.asp', '<a href="', '" class="rouge" >&gt; Derni&egrave;re parution</a>&nbsp;<small>', true,false,true,true,&$posFin);
$dateDerParution=getTextInHtml($body, '" class="rouge" >&gt; Derni&egrave;re parution</a>&nbsp;<small>', '<small>(', ')</small></p></td>');
*/
$url='http://www.journal-officiel.gouv.fr/balo/index.php?ACTION=showLast';
$page=getUrl($url, $cookie, '', 'http://www.journal-officiel.gouv.fr/balo/', false, 'www.journal-officiel.gouv.fr');
$referer=$url;
$body=$page['body'];
$ctx=@getTextInHtml($body, '<a href="index.php?ctx=', 'ctx=', '&page=');
echo date('Y/m/d - H:i:s') .' - Clé Ctx = "'. $ctx .'"' . $eol;
$nbAnnonces=@getTextInHtml($body, '<h1>R&Eacute;SULTAT DE LA RECHERCHE :</h1>', '<strong>', 'annonce(s) correspondent');
//$dateDerParution=@getTextInHtml($body, '<input type="hidden" name="BPA_D_D" value="', ' value="', '">');
$nbPages=ceil($nbAnnonces/10);
echo date('Y/m/d - H:i:s') .' - Derniere parution BALO le '. $dateDerParution .' de '. $nbAnnonces .' annonces ('. $nbPages .' pages)'. $eol;
//die();
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$dateDb=substr($dateDerParution,6,4).'-'.substr($dateDerParution,3,2).'-'.substr($dateDerParution,0,2);
$AnnDb=mysql_select('balo', 'count(*)', "Date_Parution='$dateDb'");
$nbAnnDb=$AnnDb[0][0];
if ($nbAnnDb==$nbAnnonces) {
echo date('Y/m/d - H:i:s') .' - Toutes les annonces du '. $dateDerParution .' sont en base !'. $eol;
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
die(); // Penser à supprimer le commentaire devant ce die() !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
if ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) {
$message=date('Y/m/d - H:i:s') .' - ERREUR : Il n\'y a que '. $nbAnnDb .' annonces en base sur les '. $nbAnnonces .' annonces présentes au JO BALO du '. $dateDerParution .' !'. $eol;
echo $message;
mail('buzuk@free.fr', 'JO BALO', $message);
mail('ylenaour@scores-decisions.com', 'JO BALO', $message);
mail('lenaoury@gmail.com', 'JO BALO', $message);
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
die();
}
//<a href="index.php?ctx=eJyLz2FIK2KIL8tjSErMyWeIL2RQSEksSS1ILCotyczPS8svygVybQ0s9IHIyMDAnEshOb!oIL8IKKpfUpSaaqUUkl!gxAAAWLsXMA__&page=2">
$tabAnnonces=explode('<div class="hr"><hr/></div>', $page['body']);
//print_r($tabAnnonces);
//die();
//$tabTmp =explode('<br clear="all" />', $tabAnnonces[0]);
//$tabAnnonces[0]=$tabTmp[2];
for ($j=1; $j<11 && isset($tabAnnonces[$j]); $j++)
$tabAnnBalo[($j-1)]=$tabAnnonces[$j];
randsleep();
for ($i=2; $i<=$nbPages; $i++)
{
/* $postData=array('original_method'=>'post',
'data'=>1,
'HI_PAGE'=>$i,
'HI_COMPTEUR'=>$nbAnnonces,
'BSA_SOCIETE_L'=>'',
'BSA_RCS_NO'=>'',
'BPA_D_D'=>$dateDerParution,
'BPA_D_F'=>$dateDerParution,
'BAN_BTA_C'=>'',
'CB_SEARCH_MODE'=>0);*/
$url='http://www.journal-officiel.gouv.fr/balo/index.php?ctx='.$ctx.'&page='.$i;
$page=getUrl($url, $cookie, '', $referer, false, 'www.journal-officiel.gouv.fr');
$referer=$url;
//print_r($page);
$tabAnnonces=explode('<div class="hr"><hr/></div>', $page['body']);
//$tabTmp =explode('<br clear="all" />', $tabAnnonces[0]);
//$tabAnnonces[0]=$tabTmp[2];
/*for ($j=0; $j<25; $j++) {
$k=$j+(25*($i-1));
if ($k<$nbAnnonces)
$tabAnnBalo[$k]=$tabAnnonces[$j];
}*/
for ($j=1; $j<11; $j++) {
//$k=$j+(10*($i-1));
$k=10*($i-1)+($j-1);
if ($k<$nbAnnonces)
$tabAnnBalo[$k]=$tabAnnonces[$j];
}
randsleep();
}
//print_r($tabAnnBalo);
//die();
for ($i=0; $i<$nbAnnonces; $i++){
$infoAnnBalo=getInfosAnnonceBalo($tabAnnBalo[$i]);
$anneeParution=substr($infoAnnBalo['Date_Parution'],0,4);
echo date('Y/m/d - H:i:s') .' - Annonce n°'. $i .', Siren = '. $infoAnnBalo['Societe_Rcs'] .$eol;
$page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
//echo '<table border="1"><tr><td>'. $page['body'] .'</td></tr></table><hr/>';
$infoAnnBalo['Annonce_Html']=$page['body'];
randsleep();
$page=getUrl($infoAnnBalo['Url_Annonce_Pdf'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
//echo '<br>Fichier PDF ('. $page['code'] .'): '. $url_pdf . '<br/>';
//print_r($page['header']);
@mkdir($repBalo.$anneeParution);
$fp=@fopen($repBalo.$anneeParution.'/'.basename($infoAnnBalo['Url_Annonce_Pdf']), 'w');
if (!fwrite($fp, $page['body']) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($infoAnnBalo['Url_Annonce_Pdf']) .' pour le SIREN '. $infoAnnBalo['Societe_Rcs'] . $eol;
@fclose($fp);
$infoAnnBalo['Annonce_Pdf']='';//$page['body'];
randsleep();
if (mysql_insert('balo', $infoAnnBalo))
echo date('Y/m/d - H:i:s') .' - Annonce enregistrée avec succès dans la base !'. $eol;
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
$numParution=$infoAnnBalo['Num_Parution'];
}
/** Téléchargement du dernier balo complet en PDF
**/
$url = 'http://www.journal-officiel.gouv.fr/balo/'.sprintf("%03d", $numParution).'_monte_final.PDF';
if (!file_exists($repBaloComp.$anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF')) {
randsleep();
$page=getUrl($url, '', '', 'http://www.journal-officiel.gouv.fr/balo/', false, 'www.journal-officiel.gouv.fr');
@mkdir($repBaloComp.$anneeParution);
$fp=@fopen($repBaloComp.$anneeParution.'/'.$anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF', 'w');
if (!fwrite($fp, $page['body']) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. $anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF' .' du balo complet !' . $eol;
@fclose($fp);
echo date("Y/m/d - H:i:s") . ' - BALO complet n° '.sprintf("%03d", $numParution).'_monte_final.PDF téléchargé.'.$eol;
} else
echo date("Y/m/d - H:i:s") . ' - BALO complet n° '.sprintf("%03d", $numParution).'_monte_final.PDF déjà téléchargé.'.$eol;
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
?>

View File

@ -1,304 +0,0 @@
#!/usr/bin/php -q
<?php
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
function htm2txt($str) {
return trim(strip_tags( str_replace(chr(160), ' ',
str_replace('&#156;', 'oe',
str_replace('&#146;', '\'', html_entity_decode($str, ENT_QUOTES))))));
}
function getNextDate($dateCour) {
$nextDate=date('Ymd', mktime(0, 0, 0, dateT('Ymd','m', $dateCour), dateT('Ymd','d', $dateCour)+7, dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('jo', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
$tabCateg=array('06'=>'EMISSIONS ET COTATIONS - Valeurs françaises - Actions et parts',
'09'=>'EMISSIONS ET COTATIONS - Valeurs françaises - Certificats d\'investissement',
'10'=>'EMISSIONS ET COTATIONS - Valeurs françaises - Titres participatifs',
'11'=>'EMISSIONS ET COTATIONS - Valeurs françaises - Bons, obligations et autres titres',
'12'=>'EMISSIONS ET COTATIONS - Valeurs françaises - Bons d\'options sur titres et sur indices',
'13'=>'EMISSIONS ET COTATIONS - Valeurs de la zone franc - Actions et parts',
'14'=>'EMISSIONS ET COTATIONS - Valeurs de la zone franc - Bons et obligations',
'15'=>'EMISSIONS ET COTATIONS - Valeurs européennes - Actions et parts',
'16'=>'EMISSIONS ET COTATIONS - Organismes internationaux - Actions et parts',
'17'=>'EMISSIONS ET COTATIONS - Organismes internationaux - Bons, obligations et autres titres',
'19'=>'EMISSIONS ET COTATIONS - Valeurs étrangères - Actions et parts',
'20'=>'EMISSIONS ET COTATIONS - Valeurs étrangères - Bons, obligations et autres titres',
'21'=>'EMISSIONS ET COTATIONS - Valeurs étrangères - Bons d\'options sur titres et sur indices',
'24'=>'CONVOCATIONS - Assemblées d\'actionnaires et de porteurs de parts',
'26'=>'CONVOCATIONS - Assemblées de porteurs de certificats d\'investissement',
'28'=>'CONVOCATIONS - Assemblées de porteurs de titres participatifs',
'30'=>'CONVOCATIONS - Assemblées de porteurs de parts de fondateur',
'33'=>'CONVOCATIONS - Assemblées d\'obligataires ou de porteurs de titres d\'emprunt',
'36'=>'AUTRES OPERATIONS - Réduction de capital',
'40'=>'AUTRES OPERATIONS - Regroupement d\'actions',
'43'=>'AUTRES OPERATIONS - Offre de remboursement d\'obligations',
'56'=>'AUTRES OPERATIONS - Décisions prises par des assemblées d\'obligataires et homologation de résolutions',
'59'=>'AUTRES OPERATIONS - Désignation de teneur de comptes de titres nominatifs',
'63'=>'AUTRES OPERATIONS - Fusions et scissions',
'65'=>'AUTRES OPERATIONS - Liquidations',
'74'=>'PUBLICATIONS PERIODIQUES - Sociétés commerciales et industrielles',
'74B'=>'PUBLICATIONS PERIODIQUES - Sociétés commerciales et industrielles (comptes annuels)',
'74C'=>'PUBLICATIONS PERIODIQUES - Sociétés commerciales et industrielles (Chiffres d\'affaires)',
'74T'=>'PUBLICATIONS PERIODIQUES - Sociétés commerciales et industrielles (Tableaux d\'activités et résultats)',
'79'=>'PUBLICATIONS PERIODIQUES - Entreprises d\'assurances et organismes de retraites',
'82'=>'AVIS DIVERS',
'85'=>'BULLETIN OFFICIEL DE L\'AMF');
function getInfosAnnonceBalo($annonceHtml) {
$tabAnnBalo=array();
$tabAnnBalo['Societe_Nom']=trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'<p>Soci&eacute;t&eacute;: <b>', '<b>', '</b>'))));
if ($tabAnnBalo['Societe_Nom']=='')
$tabAnnBalo['Societe_Nom']=str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'<p>BOAMF: <b>', '<b>', '</b>')));
$tabAnnBalo['Societe_Rcs']=@getTextInHtml($annonceHtml, '&nbsp;RCS : <b><b>', '<b><b>', '</b>');
$tabAnnBalo['Categorie']=str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '<p> Cat&eacute;gorie : <b>', '<b>', '</b>')));
$tabAnnBalo['Num_Affaire']=@getTextInHtml($annonceHtml, '<p> N&deg; d\'affaire : <b>', '<b>', '</b>');
$tmp=@getTextInHtml($annonceHtml, '<p>Paru le : <b>', '<b>', '</b>');
$tabAnnBalo['Date_Parution']=substr($tmp,6,4).'-'.substr($tmp,3,2).'-'.substr($tmp,0,2);
$tabAnnBalo['Num_Parution']=@getTextInHtml($annonceHtml, '&nbsp;&nbsp;&nbsp;(parution n&deg;<b>', '<b>', '</b>');
$tabAnnBalo['Url_Annonce_Html']=str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, 'Annonce au format <a href="http://balo.journal-officiel.gouv.fr/Files/', 'href="', '" class="rouge" target="_blank" >HTML</a>')));
$tabAnnBalo['Url_Annonce_Pdf']='http://balo.journal-officiel.gouv.fr'.@getTextInHtml($annonceHtml, ' onclick="ouvrirPDF(\'', 'ouvrirPDF(\'', '\');');
return $tabAnnBalo;
}
$tempsMaxEntreRequetes=30;
set_time_limit(0);
$eol="\n";
$lastJO=$dateDebut=$dateFin=false;
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$dateDebut=substr($argv[$i],3,10);
$dateDeb=dateT('d/m/Y', 'Ymd', $dateDebut);
break;
case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=dateT('d/m/Y', 'Ymd', $dateFin);
break;
case 'i':
$tempsMaxEntreRequetes=trim(substr($argv[$i],3))*1;
if ($tempsMaxEntreRequetes<5) $tempsMaxEntreRequetes=2;
break;
case 'l':
$lastJO=true;
break;
case 's':
$fichierSiren=substr($argv[$i],3);
break;
case 'c':
$categorie=substr($argv[$i],3);
break;
case '-':
die('Usage : '.basename($argv[0]). " [OPTION]
Recupère toutes les annonces BALO en fonction des critères sélectionné.
Sans aucun paramètre, récupération du dernier JO Association.
Sinon:
-d:JJ/MM/AAAA Date de début de publication
-f:JJ/MM/AAAA Date de fin de publication
-l Dernier JO Association uniquement (*)
-i:XX Intervalle de temps entre chaque requête sur le site des JO (*)
-s:SIREN_FILE Fichier de SIREN
-c:XX Catégorie d'annonces
(*) : Par défaut, on récupère le dernier JO avec un intervalle de $tempsMaxEntreRequetes entre chaque requête.
");
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
}
if ($categorie<>'' && !isset($tabCateg[$categorie])) {
echo ('Usage : '.basename($argv[0]). " [OPTION]
Recupère toutes les annonces BALO en fonction des critères sélectionné.");
print_r($tabCateg);
die("\nVeuillez choisir parmi une de ces catégorie !");
}
if ($lastJO==true) $strLast=' dernier';
else {
$dateCour=$dateDeb;
$strLast='';
if ($dateDebut==false || $dateFin==false)
die('Usage : '.basename($argv[0]). " [OPTION]
Recupère toutes les annonces BALO en fonction des critères sélectionné.
Sans aucun paramètre, récupération du dernier JO Association.
Sinon:
-d:JJ/MM/AAAA Date de début de publication
-f:JJ/MM/AAAA Date de fin de publication
-l Dernier JO Association uniquement (*)
-i:XX Intervalle de temps entre chaque requête sur le site des JO (*)
-s:SIREN_FILE Fichier de SIREN
-c:XX Catégorie d'annonces
(*) : Par défaut, on récupère le dernier JO avec un intervalle de $tempsMaxEntreRequetes entre chaque requête.
");
else
$strDates=" du $dateDebut au $dateFin";
}
echo date('Y/m/d - H:i:s') ." - DEBUT du la récupération du$strLast BALO $strDates".$eol;
echo date('Y/m/d - H:i:s') .' - La durée maximum entre chaque requête est de '. $tempsMaxEntreRequetes .' secondes.'. $eol;
flush();
if ($fichierSiren<>'')
$tabSiren=file($fichierSiren);
else
$tabSiren=array(0=>'');
for ($key=0; isset($tabSiren[$key]); $key++) { // DEB Boucle Siren
$ligne=$tabSiren[$key];
$siren=substr(trim($ligne), 0, 9);
$dateDeb=$dateDebut;//'01/01/2004';
$dateFin=$dateFin;//'31/12/2004';
$categorie=$categorie;
$postData=array('original_method'=>'post',
'HI_PAGE'=>0,
'HI_COMPTEUR'=>0,
'BSA_SOCIETE_L'=>'',
'BSA_RCS_NO'=>$siren,
'BPA_D_D'=>$dateDeb, // Date de début
'BPA_D_F'=>$dateFin, // Date de fin
'BAN_BTA_C'=>$categorie, // Catégorie
'CB_SEARCH_MODE'=>0,
'x'=>49,
'y'=>11);
$strCookie='';//array('ASPSESSIONIDGQGQGGBF'=>'IPHFDKIBDIJJGLJOJMJNKLJB');
$page=getUrl('http://www.journal-officiel.gouv.fr/jahia/Jahia/balo/cache/bypass?appid=1315_38&appparams=http%3A%2F%2Fwww.journal-officiel.gouv.fr%2Fwebclipping_myjahiasite%2Fservlet%2Fwebclip%3Fjahia_url_web_clipping%3Dhttp%3A%2F%2Fbalo.journal-officiel.gouv.fr%2FListeResultBalo.asp&resetAppSession=true#field_1315', $strCookie, $postData, 'http://balo.journal-officiel.gouv.fr/FormulaireBalo.asp', false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
if (strpos($body, '<P align="center">L\'accès à la recherche est<BR>momentanément interrompu pour cause de maintenance.</P>')>0) {
echo date('Y/m/d - H:i:s') .' - Le site du BALO est en maintenance !'. $eol;
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
die();
}
$nbAnnonces=@getTextInHtml($body, '<p> R&eacute;sultat de la recherche : <b>', '<b>', 'annonce(s)</b></p>')*1;
if (strpos($body, 'veuillez affiner votre recherche.</font>')>0) {
$nbTotAnnonces=@getTextInHtml($body, 'CLASS="Normale">', '">', 'réponses');
echo date('Y/m/d - H:i:s') .' - Le SIREN '. $siren .' a trop d\'annonces ('. $nbTotAnnonces .') !'. $eol;
randsleep(0,$tempsMaxEntreRequetes);
continue;
}
$nbPages=ceil($nbAnnonces/25);
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$AnnDb=mysql_select('balo', 'count(*)', "Societe_Rcs='$siren'");
$nbAnnDb=$AnnDb[0][0];
if ($nbAnnDb==$nbAnnonces) {
echo date('Y/m/d - H:i:s') .' - Les '. $nbAnnonces .' annonces du SIREN '. $siren.' sont déjà en base !'. $eol;
randsleep(0,$tempsMaxEntreRequetes);
continue;
} elseif ($nbAnnonces==0) {
echo date('Y/m/d - H:i:s') .' - Il n\'y a aucune annonce à récupérer pour le SIREN '. $siren.' !'. $eol;
randsleep(0,$tempsMaxEntreRequetes);
continue;
} else
echo date('Y/m/d - H:i:s') .' - Récupération des '. $nbAnnonces .' annonces du SIREN '. $siren.'...'. $eol;
$tabAnnonces=explode('<div class="hr"><hr /></div>', $page['body']);
$tabTmp =explode('<br clear="all" />', $tabAnnonces[0]);
$tabAnnonces[0]=$tabTmp[2];
for ($j=0; $j<25 && isset($tabAnnonces[$j]); $j++)
$tabAnnBalo[$j]=$tabAnnonces[$j];
randsleep(0, $tempsMaxEntreRequetes);
for ($i=2; $i<=$nbPages; $i++) { // DEBUT Boucle sur toutes les pages disponbiles
$postData=array('original_method'=>'post',
'data'=>'',
'HI_PAGE'=>$i,
'HI_COMPTEUR'=>$nbAnnonces,
'BSA_SOCIETE_L'=>'',
'BSA_RCS_NO'=>$siren,
'BPA_D_D'=>$dateDeb,
'BPA_D_F'=>$dateFin,
'BAN_BTA_C'=>$categorie,
'CB_SEARCH_MODE'=>0);
$page=getUrl('http://www.journal-officiel.gouv.fr/jahia/Jahia/balo/cache/bypass?appid=1315_38&appparams=http%3A%2F%2Fwww.journal-officiel.gouv.fr%2Fwebclipping_myjahiasite%2Fservlet%2Fwebclip%3Fjahia_url_web_clipping%3Dhttp%3A%2F%2Fbalo.journal-officiel.gouv.fr%2FListeResultBalo.asp&resetAppSession=true#field_1315', '', $postData, 'http://balo.journal-officiel.gouv.fr/ListeResultBalo.asp', false, 'www.journal-officiel.gouv.fr');
$tabAnnonces=explode('<div class="hr"><hr /></div>', $page['body']);
$tabTmp =explode('<br clear="all" />', $tabAnnonces[0]);
$tabAnnonces[0]=$tabTmp[2];
for ($j=0; $j<25; $j++) {
$k=$j+(25*($i-1));
if ($k<$nbAnnonces)
$tabAnnBalo[$k]=$tabAnnonces[$j];
}
flush();
if ($i==2)
echo date('Y/m/d - H:i:s') ." - Page $i/$nbPages";
else
echo ", $i/$nbPages";
if ($i==$nbPages)
echo '.'.$eol;
randsleep(2, $tempsMaxEntreRequetes);
} // FIN Boucle sur toutes les pages disponbiles
//print_r($tabAnnBalo);
//die();
for ($i=0; $i<$nbAnnonces; $i++){
$infoAnnBalo=getInfosAnnonceBalo($tabAnnBalo[$i]);
// On recherche si nous n'avons pas déjà cette annonce en base !
$AnnDb=mysql_select('balo', 'count(*)', "Societe_Rcs='".$infoAnnBalo['Societe_Rcs']."' AND Categorie='".addslashes($infoAnnBalo['Categorie'])."' AND Num_Affaire='".$infoAnnBalo['Num_Affaire']."' AND Date_Parution='".$infoAnnBalo['Date_Parution']."' AND Num_Parution='".$infoAnnBalo['Num_Parution']."'");
$nbAnnDb=$AnnDb[0][0];
$i2=$i+1;
//echo date('Y/m/d - H:i:s') .' - Siren '. $infoAnnBalo['Societe_Rcs'] .", Annonce $i2/$nbAnnonces du ". $infoAnnBalo['Date_Parution'] .', Catégorie='.addslashes($infoAnnBalo['Categorie']).", No Affaire=".$infoAnnBalo['Num_Affaire'].", No Parution=".$infoAnnBalo['Num_Parution'].", $nbAnnDb annonce(s)".$eol;
if ($nbAnnDb==1) {
echo date('Y/m/d - H:i:s') .' - Siren '. $infoAnnBalo['Societe_Rcs'] .", Annonce $i2/$nbAnnonces du ". $infoAnnBalo['Date_Parution'] .', déjà en base !'.$eol;
continue;
}
else
echo date('Y/m/d - H:i:s') .' - Siren '. $infoAnnBalo['Societe_Rcs'] .", Annonce $i2/$nbAnnonces du ". $infoAnnBalo['Date_Parution'] .', enregistrement...'.$eol;
if ($infoAnnBalo['Url_Annonce_Html']!='') {
$page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
$infoAnnBalo['Annonce_Html']=$page['body'];
randsleep(0,$tempsMaxEntreRequetes);
} else $infoAnnBalo['Annonce_Html']='';
if ($infoAnnBalo['Url_Annonce_Pdf']!='' && $infoAnnBalo['Url_Annonce_Pdf']!='http://balo.journal-officiel.gouv.fr'){
$page=getUrl($infoAnnBalo['Url_Annonce_Pdf'], '', '', '', false, 'balo.journal-officiel.gouv.fr');
$fp=@fopen('/root/download/jo/balo/'.basename($infoAnnBalo['Url_Annonce_Pdf']), 'w');
if (!fwrite($fp, $page['body']) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($infoAnnBalo['Url_Annonce_Pdf']) .' pour le SIREN '. $infoAnnBalo['Societe_Rcs'] . $eol;
@fclose($fp);
$infoAnnBalo['Annonce_Pdf']='';//$page['body'];
randsleep(0,$tempsMaxEntreRequetes);
}
//$resultat=array_merge($resultat, array('Bodacc_Annee_Parution'=>$annee, 'Tri_User_Saisie'=>$_SESSION['user']));
if (!mysql_insert('balo', $infoAnnBalo))
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
//die();
}
} // FIN Boucle Siren
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
?>

View File

@ -1,385 +0,0 @@
#!/usr/bin/php -q
<?php
$repImgDrapeaux='/var/www/site_extranet/www/img/drapeaux/';
$tabJour=array(0=>'Dim', 1=>'Lun', 2=>'Mar', 3=>'Mer', 4=>'Jeu', 5=>'Ven', 6=>'Sam');
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
function htm2txt($str) {
return trim(strip_tags( str_replace(chr(160), ' ',
str_replace('&#156;', 'oe',
str_replace('&#146;', '\'', html_entity_decode($str, ENT_QUOTES))))));
}
function getPrevDate($dateCour, $nbJours=1) {
$nextDate=date('Ymd', mktime(0, 0, 0, dateT('Ymd','m', $dateCour), dateT('Ymd','d', $dateCour)-$nbJours, dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$tmin=10;
$tmax=60;
set_time_limit(0);
define('EOL', "\n");
$pays=$history=false;
$dateDeb=getPrevDate(date('Ymd'), rand(2,10));
$dateF=getPrevDate(date('Ymd'));
/*
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les cours des devises par rapport à l'euro.
Sans aucun paramètre, récupère le dernier cours pour chaque devise par rapport à l'euro.
Sinon:
-d:JJ/MM/AAAA Date de début de période (*)
-f:JJ/MM/AAAA Date de fin de période (*)
-n:X Intervalle MIN en secondes entre les requêtes (défaut=$tmin)
-i:X \" MAX \" \" \" \" \" (défaut=$tmax)
-p Récupération de la dernière liste des pays (par défaut, une fois par mois, le 1er du mois)
-h Récupération de l'historique complet
-c=DEV Récupération limité à la devise passée en paramètre
* : par défaut, le programme récupère le dernier cour pour le jour précédent !
";
$tabCurrency=array();
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $dernierCour=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$dateDebut=substr($argv[$i],3,10);
$dateDeb=dateT('d/m/Y', 'Ymd', $dateDebut);
break;
case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=dateT('d/m/Y', 'Ymd', $dateFin);
break;
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($min<0) $tmin=0;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<5) $tmax=2;
break;
case 'p':
$pays=true;
break;
case 'h':
$history=true;
break;
case '-':
die($strInfoProg);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabCurrency[]=$argv[$i];
}
}
}
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('sdv1', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . EOL;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). EOL;
*/
$tabSiren=file($argv[1]);
foreach ($tabSiren as $ligne) {
$siren=trim($ligne);
$url= 'http://bilans.lesechos.fr/comptes/resultcontentComptes.php?motcle='.$siren.'&codpos=&to_do=rechBila&T_option=siren&checkdirigeant=undefined';
$referer='http://bilans.lesechos.fr/pcentral.php';
$page=getUrl($url, '', '', $referer, false, 'bilans.lesechos.fr');
$body=$page['body'];
if (preg_match('/"bildates"\:"(.*)"/Ui', $body, $matches)) $strDatesBil=$matches[1];
if (preg_match('/"libcom"\:"(.*)"/Ui', $body, $matches)) $libCom=$matches[1];
if (preg_match('/"siren"\:"(.*)"/Ui', $body, $matches)) $siren2=$matches[1];
if (preg_match('/"nomen"\:"(.*)"/Ui', $body, $matches)) $nomen=$matches[1];
if (preg_match('/"apen700"\:"(.*)"/Ui', $body, $matches)) $apen700=$matches[1];
if (preg_match('/"libapen700"\:"(.*)"/Ui', $body, $matches)) $libapen700=$matches[1];
if (preg_match('/"codpos"\:"(.*)"/Ui', $body, $matches)) $codpos=$matches[1];
if (preg_match('/"siret"\:"(.*)"/Ui', $body, $matches)) $siret=$matches[1];
if (preg_match('/"tefen"\:"(.*)"/Ui', $body, $matches)) $tefen=$matches[1];
if(preg_match_all("/javascript\:montre\('(.*)','(.*)','(.*)'\)/Ui", $body, $matches)) {
//print_r($matches);
$siret=$matches[2][0];
$tabAnnees=$matches[3];
rsort($tabAnnees);
}
//echo "$siren;$siret;$strDatesBil;".implode(' ',$tabAnnees).";$nomen;$codpos;$libCom;$apen700;$libapen700;$tefen\n";
$referer=$url;
sleep(2);
foreach($tabAnnees as $annees) {
//http://bilans.lesechos.fr/comptes/visucontentComptes.php?typcmpt=tous&siren=48398177500016&millesime=2006S
//$url="http://bilans.lesechos.fr/comptes/visucontentComptes.php?typcmpt=compte_annuel&siren=$siret&millesime=$annees";
$url="http://bilans.lesechos.fr/comptes/visucontentComptes.php?typcmpt=tous&siren=$siret&millesime=$annees";
$page=getUrl($url, '', '', $referer, false, 'bilans.lesechos.fr');
$body=$page['body'];
//echo $body;
$tabBilan=array();
$tabBilan['SIREN']=$siren;
$tabBilan['DATE_FRAICHE_BILAN']=date('Ymd');
$tabPostes=array();
switch (substr($annees,-1)) {
case 'S': // Bilans réels simplifiés
$tabBilan['TYPE_BILAN']='S';
/*<td\r\nrowspan=\"1\"\r\ncolspan=\"1\"\r\nwidth=\"1%\"\r\n>120<\/td>
<td\r\nrowspan=\"1\"\r\ncolspan=\"1\"\r\n align=\"center\"\r\n><div align=\"right\"><strong\r\n>3 000<\/strong><\/div>
<td.r.nrowspan=."1.".r.ncolspan=."..".r.n(?:align=."center.".r.n|)width=."(?:.*)".r.n>(.*)<..td>
*/
if(preg_match_all('/<td.r.nrowspan=."1.".r.ncolspan=."..".r.n(?:align=."center.".r.n|)(?:width=."(?:.*)".r.n|)>(.*)<..td>/Ui', $body, $matches)) {
foreach($matches[1] as $ligne) {
$value=trim(str_replace('&nbsp;',' ', strip_tags(str_replace('\r\n','',$ligne))));
if (substr($ligne, 0, 4)=='<div') {
if ($j==0) $indice='';
elseif ($j==1) $indice='a';
else $indice='b';
$value=trim(str_replace(' ', '', $value));
if (substr($value, 0, 1)=='(')
$tabPostes[$poste.$indice]=trim(strtr($value,'()',' '))*-1;
else
$tabPostes[$poste.$indice]=$value*1;
if ($tabPostes[$poste.$indice]=='')
unset($tabPostes[$poste.$indice]);
elseif (!is_numeric($tabPostes[$poste.$indice]))
unset($tabPostes[$poste.$indice]);
$j++;
} else {
if (preg_match('/[A-Z0-9]{2,2}/i', trim(str_replace('&nbsp;',' ', $value)))) {
$poste=$value;
$j=0;
}
}
}
}
break;
case 'C': // Bilans Consolidés
$tabBilan['TYPE_BILAN']='C';
/* rowspan=\"1\" colspan=\"1\" align=\"center\" width=\"1%\"> AB <\/td>\r\n \t\t
<td rowspan=\"1\" colspan=\"1\" align=\"center\" width=\"12%\"><div align=\"right\"><strong><div align='right'>&nbsp;<\/div><\/strong><\/div><\/td>\r\n\t\t
*/
if(preg_match_all('/<td(?: rowspan=."1."| |)(?: colspan=.".."| |)(?: align=."center."| |)(?: width=."(?:.*)"| |)(?: align=."center."| |)>(.*)<..td>/Ui', $body, $matches)) {
foreach($matches[1] as $ligne) {
$value=trim(str_replace('&nbsp;',' ', str_replace('\r\n','', strip_tags($ligne))));
if (substr($ligne, 0, 4)=='<div') {
if ($j==0) $indice='';
elseif ($j==1) $indice=1;
else $indice=2;
$value=trim(str_replace(' ', '', $value));
if (substr($value, 0, 1)=='(')
$tabPostes[$poste.$indice]=trim(strtr($value,'()',' '))*-1;
else
$tabPostes[$poste.$indice]=$value*1;
if ($tabPostes[$poste.$indice]=='')
unset($tabPostes[$poste.$indice]);
elseif (!is_numeric($tabPostes[$poste.$indice]))
unset($tabPostes[$poste.$indice]);
$j++;
} else {
if (preg_match('/([A-Z0-9]{2,2}|064)/i', trim(str_replace('&nbsp;',' ', $value)))) {
if ($value=='064')
$poste='BR';
else
$poste=$value;
$j=0;
}
}
}
}
break;
default: // Bilans réels normaux
$tabBilan['TYPE_BILAN']='N';
if(preg_match_all('/<td (?:width=."2.." |)align=."center.">(.*)<..td>/Ui', $body, $matches)) {
foreach($matches[1] as $ligne) {
$value=trim(str_replace('&nbsp;',' ', str_replace('\r\n','', strip_tags($ligne))));
if (substr($ligne, 0, 4)=='<div') {
if ($j==0) $indice='';
elseif ($j==1) $indice=1;
else $indice=2;
$value=trim(str_replace(' ', '', $value));
if (substr($value, 0, 1)=='(')
$tabPostes[$poste.$indice]=trim(strtr($value,'()',' '))*-1;
else
$tabPostes[$poste.$indice]=$value*1;
if ($tabPostes[$poste.$indice]=='')
unset($tabPostes[$poste.$indice]);
elseif (!is_numeric($tabPostes[$poste.$indice]))
unset($tabPostes[$poste.$indice]);
$j++;
} else {
if (preg_match('/[A-Z0-9]{2,2}/i', trim(str_replace('&nbsp;',' ', $value)))) {
$poste=$value;
$j=0;
}
}
}
}
break;
}
if (preg_match('/<td>Date de cl&ocirc;ture : <b>(.*)<..b>/Ui', $body, $matches))
$tabBilan['DATE_CLOTURE']=str_replace('\\','',$matches[1]);
if (preg_match_all('/<td>Dur&eacute;e de l\'exercice\* \: <b>(.*)mois<..b>/Ui', $body, $matches)) {
foreach($matches[1] as $nbMois) {
$nbMois=trim($nbMois)*1;
if ($nbMois<>0) $tabBilan['DUREE_MOIS']=$nbMois;
}
}
if (preg_match('/<td>Unit&eacute; mon&eacute;taire : <b>(.*)<..b>/Ui', $body, $matches)) {
if ($matches[1]=='euro') {
$tabBilan['MONNAIE']='EUR';
$tabBilan['MONNAIE_ORI']='EUR';
$tabBilan['MONNAIE_LIV_UNITE']='U';
}
}
//<td>Dur&eacute;e de l'exercice* : <b>mois<\/b><\/td>\r\n <\/tr>\r\n
$tabBilan['DATE_CLOTURE_PRE']='';
$tabBilan['DUREE_MOIS_PRE']='';
$tabBilan['POSTES']=$tabPostes;
$strPostes='';
foreach ($tabBilan['POSTES'] as $poste=>$valeur)
$strPostes.="$poste=$valeur;";
$sql ="INSERT INTO bilans VALUES (". $tabBilan['SIREN'].", '".
$tabBilan['DATE_FRAICHE_BILAN']."', '".
dateT('d/m/Y','Ymd', $tabBilan['DATE_CLOTURE'])."', '".
$tabBilan['DATE_CLOTURE_PRE']."', '".
$tabBilan['DUREE_MOIS']."', '".
$tabBilan['DUREE_MOIS_PRE']."', '".
$tabBilan['MONNAIE']."', '".
$tabBilan['TYPE_BILAN']."', '".
$tabBilan['MONNAIE_ORI']."', '".
$tabBilan['MONNAIE_LIV_UNITE']."', '".
$strPostes."', 3, NOW() );\n";
echo $sql;
sleep(2);
}
}
die();
/** Récupération de la liste des devises
**/
echo (date('Y/m/d - H:i:s') .' - Début de la mise à jour de la liste des devise !'. EOL);
$crea=$maj=0;
$tabDevisesSite=array();
$url= 'http://fxtop.com/fr/historates.php3';
$referer= '';
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
$strTmp=@getTextInHtml($body, '<select name=C1 >', 'C1 >', '</select>');
$tabTmp=preg_split('/<option (selected | )value="/i', $strTmp);
foreach ($tabTmp as $i=>$strTmp) {
$tabLigne=explode('">', $strTmp);
if ($i==0) {
if (trim($strTmp)<>'')
die(date('Y/m/d - H:i:s') .' - ERREUR : La première ligne du tableau n\'est pas vide : "'.$strTmp.'" trouvé !'. EOL);
continue;
} else {
$devise =trim($tabLigne[0]);
$libDevPays=trim(strip_tags($tabLigne[1]));
if ($devise<>'' && $devise<>'EUR') $tabDevisesSite[]=$devise;
$tabUpdate=array( 'devIso'=>$devise,
'devNomPays'=>$libDevPays,
);
if (!mysql_update('devise_liste', $tabUpdate, "devIso='$devise'", true)) {
if (!mysql_insert('devise_liste', $tabUpdate)) {
if (mysql_errno()<>1062)
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
} else {
echo (date('Y/m/d - H:i:s') ." - Création de la devise $devise pour $libDevPays !". EOL);
$crea++;
}
} else $maj++;
}
}
echo (date('Y/m/d - H:i:s') ." - Fin de la mise à jour des devises : $crea création(s) / $maj MAJ.". EOL);
/** Récupération d'une devise ou de toutes les devises
**/
if ( !is_array($tabCurrency) || count($tabCurrency)==0 ) {
//$tabDevises=mysql_select('tabPays', 'DISTINCT(devise) as dev', "devise<>'EUR' AND devise<>''");
// AND devise NOT IN ('AED','AFA','XCD','ALL','AMD','ANG','AON')
$tabDevises=array();
shuffle($tabDevisesSite);
foreach ($tabDevisesSite as $i=>$deviseSite)
$tabDevises[]=array(0=>$deviseSite);
unset($tabDevisesSite);
} else {
foreach ($tabCurrency as $currency) {
if (in_array ($currency, $tabDevisesSite))
$tabDevises[]=array(0=>$currency);
else
die(date('Y/m/d - H:i:s') ." - ERREUR : Devise '$currency' non gérée par le site distant !". EOL);
}
}
/** Récupération de l'historique des cours ou du cours précédent
**/
if ($history) $dateDeb='19900101';
$DD1=dateT('Ymd','d', $dateDeb);
$MM1=dateT('Ymd','m', $dateDeb);
$YYYY1=dateT('Ymd','Y', $dateDeb);
$DD2=dateT('Ymd','d', $dateF);
$MM2=dateT('Ymd','m', $dateF);
$YYYY2=dateT('Ymd','Y', $dateF);
foreach ($tabDevises as $tabDevise) {
$devise=$tabDevise[0];
if ($dateDeb==$dateF)
echo (date('Y/m/d - H:i:s') ." - Récupération du cour du $devise par rapport à l'euro pour le $DD1/$MM1/$YYYY1...". EOL);
else
echo (date('Y/m/d - H:i:s') ." - Récupération du cour du $devise par rapport à l'euro pour la période du $DD1/$MM1/$YYYY1 au $DD2/$MM2/$YYYY2...". EOL);
$url= "http://fxtop.com/fr/historates.php3?C1=$devise&C2=EUR&DD1=$DD1&MM1=$MM1&YYYY1=$YYYY1&DD2=$DD2&MM2=$MM2&YYYY2=$YYYY2&btnOK=Chercher";
$referer= 'http://fxtop.com/fr/historates.php3';
randsleep($tmin, $tmax);
$page=getUrl($url, '', '', $referer, false, 'fxtop.com');
$body=$page['body'];
$strTmp=@getTextInHtml($body, '<BR><TABLE border=1><TR><TD><STRONG>Date</STRONG></TD><TD><STRONG>', '<STRONG>', '</TABLE>');
$tabTmp=explode('</TD></TR><TR><TD>', $strTmp);
$nbCours=0;
foreach ($tabTmp as $i=>$strTmp) {
$tabLigne=explode('</TD><TD>', $strTmp);
if ($i==0) {
// On vérifie que les noms de colonnes et les devises attendues sont les bonnes
if (strip_tags($tabLigne[0])<>'Date')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "Date" attendue mais "'.strip_tags($tabLigne[0]).'" trouvé !'. EOL);
if (strip_tags($tabLigne[1])<>$devise.'/EUR')
die(date('Y/m/d - H:i:s') .' - ERREUR : Zone "'.$devise.'/EUR" attendue mais "'.strip_tags($tabLigne[1]).'" trouvé !'. EOL);
} else {
$date=$tabLigne[0];
if ($i==1) $dateMax=$date;
$conv=$tabLigne[1];
//echo "$devise;$date;$conv\n";
$nbCours++;
$tabInsert=array( 'devise'=>$devise,
'date'=>$date,
'valeur'=>$conv,
);
if (!mysql_insert('devise_cours', $tabInsert))
if (mysql_errno()<>1062)
die(date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . EOL);
}
}
$dateMin=$date;
if ($nbCours==1)
echo (date('Y/m/d - H:i:s') ." - Devise $devise : 1 valeur ($conv) du $dateMin au $dateMax...". EOL);
else
echo (date('Y/m/d - H:i:s') ." - Devise $devise : $nbCours valeurs du $dateMin au $dateMax...". EOL);
}
echo date('Y/m/d - H:i:s') .' - FIN du script.'. EOL;
?>

View File

@ -1,192 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
$dossierBocc='/root/download/jo/bocc';
set_time_limit(0);
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$tmin=5;
$tmax=30;
$lastJO=true;
$annee=$numJO=$debug=false;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les annonces des Conventions Collectives sur le site des JO.
Sans aucun paramètre, récupération du dernier JO CC.
Sinon:
-a:YYYY Année entière à récupérer (1ère année possible = 2005)
-j:YYYYNN Année en Numéro de publication dans l'année (1er possible 200501 pour 2005/0001)
-l Dernier JO uniquement (*)
-n:X Intervalle MIN en secondes entre 2 requêtes aux JO (défaut=$tmin)
-i:X \" MAX \" \" \" \" \" \" (défaut=$tmax)
-d Mode débug (Verbosité max et aucun délais entre 2 requêtes)
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'a':
$annee=substr($argv[$i],3,4);
$lastJO=false;
break;
case 'j':
$numJO=substr($argv[$i],3,6);
$lastJO=false;
break;
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($tmin<2) $tmin=2;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<2) $tmax=2;
break;
case 'l':
$lastJO=true;
break;
case 'd':
$debug=true;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
echo date('Y/m/d - H:i:s') .' - DEBUT du script'. $eol;
flush();
randsleep($tmin, $tmax);
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('jo', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
/** Récupération de la dernière année de parution **/
$url=$referer='http://www.journal-officiel.gouv.fr/jahia/Jahia/pid/45';
$page=getUrl($url, '', '', 'http://www.journal-officiel.gouv.fr/jahia/Jahia/pid/1', false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
$cookie=$page['header']['Set-Cookie'];
if ($debug) {
echo date('Y/m/d - H:i:s') . ' - Cookie : '. trim($cookie) . $eol;
$tmin=1;
$tmax=2;
}
$derAnneeParution=@getTextInHtml($body, '<a calss="blue" href="#" onclick="submitBoccByYear(\'', 'ByYear(\'', '\')');
if ($debug || $annee) {
echo date('Y/m/d - H:i:s') . ' - Dernière année de parution = '. $derAnneeParution . $eol;
if ($annee) {
$derAnneeParution=$annee;
echo date('Y/m/d - H:i:s') . ' - Année de parution demandée = '. $derAnneeParution . $eol;
}
}
/** Récupération de la liste des JO CC de l'année **/
randsleep($tmin, $tmax);
$postData=array('yearSearch'=>$derAnneeParution, 'idcc'=>'');
$page=getUrl($url, $cookie, $postData, $referer, false, 'www.journal-officiel.gouv.fr');
$bodyL=$page['body'];
$posFin=0;
while(true)
{ // Boucle sur les JO CC de l'année
$strParution=getTextInHtml($bodyL, '<a href="#" class="blue" onclick="submitBoccByBulletin(\'', 'ByBulletin(\'', '</a>',0,0,1,1,&$posFin);
if (!preg_match('/(.*)\'\);">(.*) du (.*)/i', $strParution, $matches)) {
if ($strParution=='') break; // On est arrivée à la fin de la liste des JO CC de l'année
else die (date('Y/m/d - H:i:s') . ' - ERREUR : Expression régulière impossible sur '. $strParution . $eol);
}
$idCC = $matches[1];
$numCC = $matches[2];
$numCC2= substr($numCC,0,4).substr($numCC,7,2); // 2005/0004 ==> 200504
$dateCC= $matches[3];
if ($numJO) if ($numJO<>$numCC2) continue;
$dateCCdb=substr($dateCC,6,4).'-'.substr($dateCC,3,2).'-'.substr($dateCC,0,2);
if ($debug) echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC ($idCC)$eol";
echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC ($idCC)$eol";
randsleep($tmin, $tmax);
$postData=array('yearSearchB'=>$derAnneeParution, 'bulletinSearch'=>$idCC);
$page=getUrl($url, $cookie, $postData, $referer, false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
$ann=array();
$ann['TRA']=@getTextInHtml($body, 'name="TRA">', 'colspan="3"', 'name="AGR">');
$ann['AGR']=@getTextInHtml($body, 'name="AGR">', 'colspan="3"', '</td>');
foreach($ann as $type=>$annonce) {
$tab=explode('<a href="#" class="bleu" onclick="submitBocc', $annonce);
$nbAnn=count($tab)-1;
$AnnDb=mysql_select('conv', 'count(*)', "Date_Parution='$dateCCdb' AND ministere='$type'");
$nbAnnDb=$AnnDb[0][0];
if ($nbAnnDb==$nbAnn) {
echo date('Y/m/d - H:i:s') ." - Toutes les annonces du JOCC $type du $dateCC sont en base$eol";
continue;
}
else echo date('Y/m/d - H:i:s') . " - JO CC $type$numCC du $dateCC : $nbAnn annonce(s)$eol";
for($j=1; isset($tab[$j]); $j++) {
$idAnn=@getTextInHtml($tab[$j], 'ByAnnonce(', "'", "');");
$urlAnn=str_replace('"','',trim(@getTextInHtml($tab[$j], 'href="', '="', 'target="')));
$nomCC=utf8_decode(trim(strtr(html_entity_decode(@getTextInHtml($tab[$j], '<b>', '>', '</b>')), ':'.chr(160), ' ')));
$infoCC=utf8_decode(trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($tab[$j], '</b>', '>', '<br>')))));
randsleep($tmin, $tmax);
$pdf=file_get_contents('http://www.journal-officiel.gouv.fr'.$urlAnn);
if (!$pdf) echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de téléchargement du PDF '. $urlAnn .
" pour le JO CC n°$numCC du $dateCC, Annonce $type $j $idAnn : $nomCC.$eol";
else {
$fp=@fopen($dossierBocc.'/'.basename($urlAnn), 'w');
if (!fwrite($fp, $pdf) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($urlAnn) .
" pour le JO CC n°$numCC du $dateCC, Annonce $type $j $idAnn : $nomCC.$eol";
@fclose($fp);
}
exec('pdftohtml -q -noframes '.$dossierBocc.'/'.basename($urlAnn).' tmp.html');
$html=str_replace('<META name="generator" content="pdftohtml 0.36">', '', file_get_contents('./tmp.html'));
$txt=strip_tags($html);
$numBrochure=trim(substr(str_replace('o','',@getTextInHtml(strtolower($txt), 'brochure', 'n', 'convention')),0,5));
preg_match_all('/IDCC.*:.*([0-9]{1,4})/', $txt, $matches);
$tabIdcc=array(); // IDCC : 1880
foreach($matches[0] as $m=>$idcc) $tabIdcc[]=trim(strtr($idcc, 'IDCC:', ' '));
$tabIdcc=array_unique($tabIdcc);
echo date('Y/m/d - H:i:s') . " - JO CC n°$numCC du $dateCC, Annonce $type$j, Brochure n°$numBrochure ($idAnn) : ". substr($nomCC,0, 20).$eol;
$tabAnn=array( 'annee' =>$derAnneeParution,
'idCC' =>$idCC,
'numCC' =>str_replace('/00','',$numCC),
'numBrochure'=>$numBrochure,
'listeCC'=>implode(';', $tabIdcc),
'Date_Parution'=>$dateCCdb,
'ministere'=>$type, // Remplacer par ministère
'idAnnCC'=>$idAnn,
'urlAnn'=>$urlAnn,
'nomCC' =>$nomCC,
'infoCC'=>$infoCC,
'annonce'=>$html);
if (mysql_insert('conv', $tabAnn))
echo date('Y/m/d - H:i:s') .' - Annonce enregistrée avec succès dans la base !'. $eol;
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
}
if (!$annee) break;
}
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
?>

View File

@ -1,97 +0,0 @@
#!/usr/bin/php -q
<?php
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$tabInfosGlobal=array();
function htm2txt($str) {
return trim(strip_tags( str_replace(chr(160), ' ',
str_replace('&#156;', 'oe',
str_replace('&#146;', '\'', html_entity_decode($str, ENT_QUOTES))))));
}
function getNextDate($dateCour) {
$nextDate=date('Ymd', mktime(0, 0, 0, dateT('Ymd','m', $dateCour), dateT('Ymd','d', $dateCour)+7, dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$tempsMinEntreRequetes=5;
$tempsMaxEntreRequetes=30;
set_time_limit(0);
$eol="\n";
$lastJO=$dateDebut=$dateFin=$verif=false;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Recupère les annonces Boamp sur le site des JO.
Sans aucun paramètre, récupération du dernier JO Association.
Sinon:
-d:JJ/MM/AAAA Date de début de publication
-f:JJ/MM/AAAA Date de fin de publication
-l Dernier JO Association uniquement (*)
-n:X Intervalle MIN en secondes entre les requêtes sur le site des JO (défaut=$tempsMinEntreRequetes)
-i:X \" MAX \" \" \" \" \" \" \" \" \" \" (défaut=$tempsMaxEntreRequetes)
-v Vérifier que toutes les annonces du JO sont en base !
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) $lastJO=true;
else {
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$dateDebut=substr($argv[$i],3,10);
$dateDeb=dateT('d/m/Y', 'Ymd', $dateDebut);
break;
case 'f':
$dateFin=substr($argv[$i],3,10);
$dateF=dateT('d/m/Y', 'Ymd', $dateFin);
break;
case 'n':
$tempsMinEntreRequetes=trim(substr($argv[$i],3))*1;
if ($tempsMinEntreRequetes<0) $tempsMinEntreRequetes=0;
break;
case 'i':
$tempsMaxEntreRequetes=trim(substr($argv[$i],3))*1;
if ($tempsMaxEntreRequetes<5) $tempsMaxEntreRequetes=2;
break;
case 'l':
$lastJO=true;
break;
case 'v':
$verif=true;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
}
$an='09';
for ($i=1; $i<267000; $i++) {
$referer='';
$url='http://boamp.fr/index.php?action=pdfIdentifiant&dest=1&identifiant='.$an.'-'.$i;
if ( file_exists('./boamp/BOAMP-'.$an.'-'.$i.'.pdf')/* &&
filesize('./boamp/BOAMP-'.$an.'-'.$i.'.pdf')>0*/)
continue;
echo date('Y/m/d - H:i:s') .' - Récupération de BOAMP-'.$an.'-'.$i.'.pdf'. $eol;
$page=getUrl($url, '', '', $referer, false, 'boamp.fr');
$body=$page['body'];
$fp=fopen('./boamp/BOAMP-'.$an.'-'.$i.'.pdf', 'a');
fwrite($fp, $body);
fclose($fp);
echo date('Y/m/d - H:i:s') .' - Fichier récupéré BOAMP-'.$an.'-'.$i.'.pdf ('.round(filesize('./boamp/BOAMP-'.$an.'-'.$i.'.pdf')/1024).' ko)'. $eol;
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
?>

View File

@ -1,137 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
$dossierBopiMarques='/root/download/jo/bopi/marques';
$dossierBopiBrevets='/root/download/jo/bopi/brevets';
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
echo date('Y/m/d - H:i:s') .' - DEBUT du script'. $eol;
echo date('Y/m/d - H:i:s') .' - BOPI MARQUES...'. $eol;
for ($i=1; $i<3; $i++)
{
$url="http://www.inpi.fr/fileadmin/mediatheque/BOPI/marques/2009/2009-11v$i.pdf";
$nomBOPI=basename($url);
$page=getUrl($url, '', '', '', false);
$body=$page['body'];
die(print_r($page));
$fp=fopen($dossierBopiMarques.'/'.$nomBOPI, 'w');
fwrite($fp, $body);
fclose($fp);
die();
$numBopi = $matches[1];
$dateBopi = $matches[2];
$tailleBopi = $matches[3];
echo date('Y/m/d - H:i:s') ." - Volume $i, Numéro $numBopi du $dateBopi, taille = $tailleBopi $eol";
$nomBopiHtm=$numBopi.'v'.$i.'.pdf';
if (file_exists("$dossierBopiMarques/$nomBopiHtm"))
{
$tailleLoc=round(filesize("$dossierBopiMarques/$nomBopiHtm")/(1024*1024), 2);
echo date('Y/m/d - H:i:s') ." - Le BOPI Marques $nomBopiHtm a déjà été récupéré (taille = $tailleLoc) !$eol";
continue;
}
sleep(5);
echo date('Y/m/d - H:i:s') ." - Téléchargement du BOPI Marques $nomBopiHtm...$eol";
$page=getUrl($url, $cookie, '', $referer, false, 'bopi-marque.inpi.fr');
$body=$page['body'];
$strTmp=$page['header']['Content-Disposition'];
$tabTmp=explode('"', $strTmp);
$nomBOPI=$tabTmp[1];
echo date('Y/m/d - H:i:s') ." - BOPI Marques $nomBOPI téléchargé.".$eol;
$fp=fopen($dossierBopiMarques.'/'.$nomBOPI, 'w');
fwrite($fp, $body);
fclose($fp);
}
echo date('Y/m/d - H:i:s') .' - BOPI BREVETS...'. $eol;
$url='http://www.inpi.fr/front/content/ART_457_437.php';
$page=getUrl($url, '', '', '', false, 'www.inpi.fr');
$referer=$url;
$tabTmp=explode(' ', @getTextInHtml($page['body'], '<STRONG>Dernier BOPI "brevets" n°', 'n°', '<BR></STRONG>'));
$tmp=$tabTmp[0];
$tabTmp=explode('/', $tmp);
$annee =$tabTmp[0];
$numBopi=$tabTmp[1];
//die ("Année = $annee, NumBOPI = $numBopi $eol");
if (!preg_match('/\/ressources\/documents\/bopi'.$annee.'\/'.$numBopi.$annee.'\/bopi'.$annee.$numBopi.'complet\.pdf/i', $page['body'], $matches)) {
die (date('Y/m/d - H:i:s') .' - ERREUR2 : Expression régulière impossible sur '. $strTmp . $eol .
date('Y/m/d - H:i:s') .' - FIN du script'.$eol );
}
$url = 'http://www.inpi.fr'.$matches[0];
echo date('Y/m/d - H:i:s') ." - Téléchargement de $url...$eol";
$nomBopi='20'.$annee.'-'.$numBopi.'.pdf';
if (file_exists("$dossierBopiBrevets/$nomBopi"))
{
$tailleLoc=round(filesize("$dossierBopiBrevets/$nomBopi")/(1024*1024), 2);
echo date('Y/m/d - H:i:s') ." - Le BOPI Brevets $nomBopi a déjà été récupéré (taille = $tailleLoc) !$eol";
die();
}
sleep(5);
$page=getUrl($url, '', '', $referer, false, 'www.inpi.fr');
$body=$page['body'];
echo date('Y/m/d - H:i:s') ." - BOPI Brevets $nomBopi téléchargé.".$eol;
$fp=fopen($dossierBopiBrevets.'/'.$nomBopi, 'w');
fwrite($fp, $body);
fclose($fp);
echo date('Y/m/d - H:i:s') .' - FIN du script'. $eol;
die();
/** Récupération d'une année entière
**/
$annee=2007;
for ($s=1; $s<53; $s++) {
if ($s<10) $s='0'.$s;
// On récupère le n° de session
$referer='http://bopi-marque.inpi.fr/index.html';
$page=getUrl($referer, '', '', '', false, 'bopi-marque.inpi.fr');
$cookie=$page['header']['Set-Cookie'];
echo date('Y/m/d - H:i:s') ." - Cookie : ". trim($cookie) . $eol;
randsleep(2,7);
for ($i=1; $i<3; $i++) {
// On initialise la page de récupération des pdf
$post=array('a'=>$annee, 's'=>$s);
$page=getUrl($referer, $cookie, $post, $referer, false, 'bopi-marque.inpi.fr');
$url='http://bopi-marque.inpi.fr/pdf.html?pdf=s'.$i.'&format=bopi.pdf';
$strTmp=@getTextInHtml($page['body'], 'href="pdf.html?pdf=s'.$i.'&format=bopi.pdf " target="_blank">', '_blank">', '</a>');
if (!preg_match('/^BOPI (.*) du (.*) \(Volume '.$i.', taille (.*)\)$/i', $strTmp, $matches))
die (date('Y/m/d - H:i:s') .' - ERREUR3 : Expression régulière impossible sur '. $strTmp . $eol .
date('Y/m/d - H:i:s') .' - FIN du script'.$eol );
$numBopi = $matches[1];
$dateBopi = $matches[2];
$tailleBopi = $matches[3];
echo date('Y/m/d - H:i:s') ." - Volume $i, Numéro $numBopi du $dateBopi, taille = $tailleBopi $eol";
$nomBopiHtm=$numBopi.'v'.$i.'.pdf';
if (file_exists("$dossierBopiMarques/$nomBopiHtm"))
{
$tailleLoc=round(filesize("$dossierBopiMarques/$nomBopiHtm")/(1024*1024), 2);
echo date('Y/m/d - H:i:s') ." - Le BOPI $nomBopiHtm a déjà été récupéré (taille = $tailleLoc) !$eol";
continue;
}
sleep(5);
echo date('Y/m/d - H:i:s') ." - Téléchargement du BOPI $nomBopiHtm...$eol";
$page=getUrl($url, $cookie, '', $referer, false, 'bopi-marque.inpi.fr');
$body=$page['body'];
$strTmp=$page['header']['Content-Disposition'];
$tabTmp=explode('"', $strTmp);
$nomBOPI=$tabTmp[1];
echo date('Y/m/d - H:i:s') ." - BOPI $nomBOPI téléchargé.".$eol;
$fp=fopen($dossierBopiMarques.'/'.$nomBOPI, 'w');
fwrite($fp, $body);
fclose($fp);
}
}
?>

View File

@ -1,184 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
set_time_limit(0);
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$tmin=5;
$tmax=30;
$debug=false;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION] NUMERO_BROCHURE [NUMERO_BROCHURE2 ...]
Recupère la dernière Convention Collective de NUMERO_BROCHURE sur le site www.legifrance.fr.
Si pas de numéro(s) en paramètre, récupèration des dernières conventions modifiées depuis la dernière synchro légifrance !
Liste des options:
-n:X Intervalle MIN en secondes entre 2 requêtes aux JO (défaut=$tmin s)
-i:X \" MAX \" \" \" \" \" \" (défaut=$tmax s)
-d Mode débug (supprime les délais entre 2 requêtes et verbosité maximum)
";
$tabConv=array();
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($tmin<2) $tmin=2;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<2) $tmax=2;
break;
case 'd':
$debug=true;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabConv[]=$argv[$i];
}
}
/** Récupération de la date de synchro de Légifrance avec le JO CC **/
$referer='http://www.legifrance.com/WAspad/RechercheSimpleCoco.jsp';
$page=getUrl('http://www.legifrance.gouv.fr/html/maj/maj_coco.htm', $cookie, '', $referer, false, 'www.legifrance.gouv.fr');
$body=strip_tags($page['body']);
//<b><font face="Arial" size="2">au&nbsp;6 janvier 2007 (BO n° 2006/<span class="937291813-14092006">49</span>)</font></b>
if (preg_match('/BO(?:.*)n(?:.*|)°(?:.*)([\d]{4,4})\/([\d]{2,2})/Uis', $body, $matches)) {
/*<font face="Arial" size="2">au&nbsp; BO
2007/35</font></b> <font face="Arial" size="2">pour le Bulletin officiel des conventions collectives</font>
*/
$lastJOCCannee=$matches[1];
$lastJOCCnum=(int)$matches[2]*1;
if ($lastJOCCnum<10) $lastJOCC=$lastJOCCannee.'0'.$lastJOCCnum;
else $lastJOCC=$lastJOCCannee.$lastJOCCnum;
echo date('Y/m/d - H:i:s') . ' - Dernier JO CC synchronisé avec Légifrance = '. $lastJOCC . $eol;
}
else die($body);
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('jo', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
/** Si pas de numéro de convention collective passée en paramètre, on récupère les dernières conventions à jour depuis la dernière synchro légifrance **/
if (count($tabCon)==0) {//SELECT max(joCCmaj) FROM `conventions`
$AnnDb=mysql_select('conventions', 'max(joCCmaj) as lastJOCCmaj', '1', true);
$lastJOCCdb=$AnnDb[0]['lastJOCCmaj'];
//$lastJOCCdb=200649;
echo date('Y/m/d - H:i:s') . ' - Dernière synchronisation avec Légifrance = '. $lastJOCCdb . $eol;
// On doit récupérer toutes les conventions collectives maj entre les 2 dates
if ($lastJOCCdb<>$lastJOCC) {
$AnnDb=mysql_select('conv', 'DISTINCT numBrochure', "numBrochure<>'' AND numCC BETWEEN $lastJOCCdb AND $lastJOCC", true);
foreach ($AnnDb as $i=>$conv)
$tabConv[$i]=$conv[0];
echo date('Y/m/d - H:i:s') . ' - Il y a '. count($tabConv) .' conventions à mettre à jour !'. $eol;
} else $tabConv=array();
}
/** Boucle sur les conventions demandées
**/
foreach ($tabConv as $iconv=>$convention) {
echo date('Y/m/d - H:i:s') ." - Début de la récupération de la CC n°$convention...$eol";
flush();
/** Recherche de la convention **/
$url='http://www.legifrance.com/WAspad/VisuSommaireCoco.jsp?lenum='.$convention;
$referer='http://www.legifrance.com/WAspad/RechercheSimpleCoco.jsp';
$page=getUrl($referer, '', '', '', false, 'www.legifrance.com');
$body=$page['body'];
$cookie=trim($page['header']['Set-Cookie']);
if ($debug) { echo date('Y/m/d - H:i:s') . ' - Cookie : '. trim($cookie) . $eol;
$tmin=1; $tmax=2;
} else randsleep($tmin, $tmax);
/** On vérifie si en base la convention n'est pas à jour que ce présente sur légifrance **/
$AnnDb=mysql_select('conventions', 'joCCmaj, dateUpdate', "numBrochure=$convention AND joCCmaj>$lastJOCC ORDER BY joCCmaj DESC LIMIT 0,1", true);
$dateDb=$AnnDb[0]['dateUpdate'];
$joCCDb=$AnnDb[0]['joCCmaj'];
if (count($AnnDb)>0) {
echo date('Y/m/d - H:i:s') ." - La convention n°$convention est à jour du JO CC $joCCDb !$eol";
continue;
}
/* Récupération du nom et du périmètre de la convention */
$postData=array('ks_num'=>$convention, 'ks_theme'=>'');
$page=getUrl('http://www.legifrance.com/WAspad/RechercheSimpleCoco', $cookie, $postData, $referer, false, 'www.legifrance.com');
$body=$page['body'];
$strTmp=@getTextInHtml($body, '<a href="VisuSommaireCoco.jsp?lenum='.$convention.'">', '</a></b>', '</i><br>');
$tabTmp=explode('</a><br>', $strTmp);
$nomCC=trim(strip_tags($tabTmp[0]));
$infoCC=trim(strip_tags($tabTmp[1]));
echo date('Y/m/d - H:i:s') . " - Convention Collective $nomCC ($convention)$eol";
die($body);
/** Sommaire de la CC **/
if (!$debug) randsleep($tmin, $tmax);
$urlSommaire='http://www.legifrance.com/WAspad/VisuSommaireCoco.jsp?lenum='.$convention;
$page=getUrl($url, $cookie, '', 'http://www.legifrance.com/WAspad/RechercheSimpleCoco', false, 'www.legifrance.com');
$bodySommaire=$page['body'];
preg_match_all('/<a href="VisuCoco\.jsp\?nod=(.*)">(.*)<\/a>/i', $bodySommaire, $matches);
$tabUrl=$matches[1];
$tabTitre=$matches[2];
$nbPages=count($tabUrl);
$bodySommaire='<b><font color="#336699" face="Arial">Brochure n° '.trim(@getTextInHtml($bodySommaire, '<b><font color="#336699" face="Arial">Brochure n°', 'n°', '<p align="right"><a href="RechercheSimpleCoco?ks_num='));
$htmlConv=preg_replace('/<a href="VisuCoco\.jsp\?nod=/i', '<a href="#titre', $bodySommaire).'<hr/><br/>';
foreach($tabUrl as $i=>$params)
{
if (!$debug) randsleep($tmin, $tmax);
$url='http://www.legifrance.com/WAspad/VisuCoco.jsp?nod='.$params;
$page=getUrl($url, $cookie, '', urlSommaire, false, 'www.legifrance.com');
$body=@getTextInHtml($page['body'], 'nt</a></font> </div>', '</div>', '<div align="right"> <font face="Arial" size="2"><a href="VisuCoco.jsp');
$htmlConv.='<a name="titre'.$params.'" />'. $body;
if ($i==0) echo date('Y/m/d - H:i:s') ." - Téléchargement des pages n°$i/$nbPages";
else echo ", $i/$nbPages";
flush();
}
echo $eol;
$taille=strlen($htmlConv);
echo date('Y/m/d - H:i:s') ." - Convention n°$convention téléchargée : $nbPages pages ($taille)$eol";
$AnnDb=mysql_select('conventions', 'length(texte) as taille, dateInsert, joCCmaj, dateUpdate', "numBrochure=$convention ORDER BY joCCmaj DESC LIMIT 0,1");
$tailleDb=$AnnDb[0]['taille'];
$dateDb=$AnnDb[0]['dateUpdate'];
$joCCDb=$AnnDb[0]['joCCmaj'];
if ($tailleDb==$taille) {
echo date('Y/m/d - H:i:s') ." - Cette version de la convention n°$convention est déjà en base !$eol";
if ($joCCDb<=$lastJOCC) {
echo date('Y/m/d - H:i:s') ." - Mise à jour de la date d'update pour cette convention.$eol";
$tabUpdate=array('joCCmaj'=>$lastJOCC, 'dateUpdate'=>date('YmdHis'));
if (!mysql_update('conventions', $tabUpdate, "numBrochure=$convention AND joCCmaj='$joCCDb'", true))
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . $eol;
}
continue;
}
$tabInsert=array('numBrochure'=>$convention,
'nomCC'=>$nomCC,
'infoCC'=>$infoCC,
'texte'=>$htmlConv,
'joCCmaj'=>$lastJOCC);
if (mysql_insert('conventions', $tabInsert))
echo date('Y/m/d - H:i:s') .' - Convention enregistrée avec succès dans la base !'. $eol;
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() . $eol;
echo date('Y/m/d - H:i:s') ." - Fin de la récupération de la CC n°$convention.$eol";
}
?>

View File

@ -1,70 +0,0 @@
#!/usr/bin/php -q
<?php
set_time_limit(0);
$eol="\n";
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$con = mysql_pconnect('localhost', 'root', 'catsysyo92');
if (!($con === false)) {
if (mysql_select_db('insee', $con) === false)
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
else
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
$tabInfosGlobal=array();
function htm2txt($str) {
return trim(strip_tags( str_replace(chr(160), ' ',
str_replace('&#156;', 'oe',
str_replace('&#146;', '\'', html_entity_decode($str, ENT_QUOTES))))));
}
function getNextDate($dateCour) {
$nextDate=date('Ymd', mktime(0, 0, 0, dateT('Ymd','m', $dateCour), dateT('Ymd','d', $dateCour)+7, dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$referer='';
$fp=fopen('conventionsCollectives.csv', 'w');
fwrite($fp, "naf;trouvé;id Url CC;id CC;nom CC;info CC;editeur CC;nb page CC;isbn CC;date edition CC\n");
$rep=mysql_select('tabNAF', 'codNaf700', "1", true);
shuffle($rep);
foreach($rep as $g=>$tabNaf)
{
$naf=$tabNaf[0];
$postData=array('ape'=>$naf);
$url='http://www.code-du-travail-fr.net/rechercheape.php';
$page=getUrl($url, '', $postData, $referer, false, 'www.code-du-travail-fr.net');
$headers=$page['header'];
$code=$page['code'];// Code réponse Serveur
$body=$page['body'];
$tabTmp =explode('<hr><h5>&nbsp;<a href="./convention.php', $body);
for($i=1; isset($tabTmp[$i]); $i++) {
$strCon=trim(@getTextInHtml($tabTmp[$i], '?id=', '=', '</a></h5>'));
if ($strCon=='') {
echo "$naf;0;\n";
break;
}
$tmp = explode('"', $strCon);
$idUrl = $tmp[0];
$idCC = trim(@getTextInHtml($strCon, '">', '>', '</a>'));
$nomCC = strtr(trim(@getTextInHtml($strCon, ' class="convention">', '">', '<br />')),";\r\n",', ');
$infCC = strtr(trim(@getTextInHtml($strCon, ' <br />[ ', '[', '] </a>')),";\r\n",', ');
$url2='http://www.code-du-travail-fr.net/convention.php?id='.$idUrl;
$page=getUrl($url2, '', '', $url, false, 'www.code-du-travail-fr.net');
$body=$page['body'];
$strCon=trim(@getTextInHtml($body, '<table width="100%" height="201" border="1" cellpadding="0" cellspacing="0" bordercolor="#003366">', '<tr>', '</TABLE>'));
$ediCC = trim(strtr(@getTextInHtml($strCon, 'Editeur ', '</B>', '</div>'), ";\r\n", ', '));
$nbpCC = trim(strtr(@getTextInHtml($strCon, 'Nb de pages :</font></B></div></TD>', '<B></B>', '&nbsp;'),";\r\n", ', '));
$isbnCC = trim(strtr(@getTextInHtml($strCon, 'ISBN ', ':', '&nbsp;'), ";\r\n", ', '));
$dtedCC = trim(strtr(@getTextInHtml($strCon, 'Date d\'édition : </font>', '(', ')'), ";\r\n", ', '));
fwrite($fp, "$naf;1;$idUrl;$idCC;$nomCC;$infCC;$ediCC;$nbpCC;$isbnCC;$dtedCC\n");
echo ("$naf;1;$idUrl;$idCC;$nomCC;$infCC;$ediCC;$nbpCC;$isbnCC;$dtedCC\n");
$idUrl=$idCC=$nomCC=$infCC=$ediCC=$nbpCC=$isbnCC=$dtedCC='';
randsleep(1,5);
}
}
fclose($fp);
?>

View File

@ -1,66 +0,0 @@
#!/usr/bin/php -q
<?php
$eol="\n";
set_time_limit(0);
include '/var/www/default/_includes/curl.php';
include '/var/www/default/_includes/mysql.php';
$tmin=5;
$tmax=30;
$debug=false;
/*
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION] NUMERO_BROCHURE [NUMERO_BROCHURE2 ...]
Recupère la dernière Convention Collective de NUMERO_BROCHURE sur le site www.legifrance.fr.
Si pas de numéro(s) en paramètre, récupèration des dernières conventions modifiées depuis la dernière synchro légifrance !
Liste des options:
-n:X Intervalle MIN en secondes entre 2 requêtes aux JO (défaut=$tmin s)
-i:X \" MAX \" \" \" \" \" \" (défaut=$tmax s)
-d Mode débug (supprime les délais entre 2 requêtes et verbosité maximum)
";
$tabConv=array();
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'n':
$tmin=trim(substr($argv[$i],3))*1;
if ($tmin<2) $tmin=2;
break;
case 'i':
$tmax=trim(substr($argv[$i],3))*1;
if ($tmax<2) $tmax=2;
break;
case 'd':
$debug=true;
break;
case '-':
die($strInfoProg);
break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabConv[]=$argv[$i];
}
}
**/
/** Ligne d'entête **/
echo "No Département;N° JAL;Nom Département;Nom JAL;Site Web;Email;Adresse;CP;Ville;Tel;Fax;Parution;Infos;\n";
for ($i=1; $i<21375; $i++)
{
$referer='http://www.google.fr/';
$url='http://www.annuaire-decideur.com/smdl/2/imp_fiche.adml?SITE=440&S_REPSMDL=/smdl/2&s_f='.$i;
//randsleep(2,7);
$page=getUrl($url, '', '', $referer, false, 'www.annuaire-decideur.com');
$body=$page['body'];
print_r($page);
die();
}
echo date('Y/m/d - H:i:s') ." - Fin du traitement".EOL;
?>

Some files were not shown because too many files have changed in this diff Show More