Created from server, the 2015-09-03

This commit is contained in:
Michael RICOIS 2015-09-04 12:56:16 +00:00
parent d265e5a030
commit 71ff4ff35e
2432 changed files with 724857 additions and 0 deletions

316
bin/calculRatios.php Normal file
View File

@ -0,0 +1,316 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Calcul des ratios de toute la base entreprise S&D.
Options :
-t Calculer tous les ratios (*)
-i:XXX Reprendre à la ligne XXX
-c Mettre à jour le cache
-d:SSAAMMJJhhiiss Forcer la date de dernière MAJ à ...
-m:SSAA Recalculer tous les ratios de l'année SSAA
-r:XXX,YYY,... Limiter le calcul au ratios suivant : séparateur virgule
(*) Option par défaut si aucun argument n'est passé.
";/* -e:X Calculer pour les X derniers exercices (3 par défaut)
-f Calculer les scores financiers
*/
$iDeb=0;
$updateCache=$millesime=$ratio=$modeVerbose=false;
$tabRatiosToCalc=array();
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 't':
break;
case 'i':
$iDeb=substr($argv[$i],3)*1;
break;
case 'd':
$dateDeb=substr($argv[$i],3)*1;
break;
case 'm':
$millesime=substr($argv[$i],3)*1;
break;
case 'r':
$ratio=true;
$tabRatiosToCalc=explode(',',substr($argv[$i],3));
break;
case 'v':
$modeVerbose=true;
break;
case 'c':
$updateCache=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . ' inconnue !'.EOL);
break;
}
}
}
//$iDbI=new WDB('insee');
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iInsee=new MInsee();
if ($updateCache) {
include_once(INCLUDE_PATH.'scores/classMRatios.php');
if (genereCacheRatios())
echo date('Y/m/d - H:i:s') ." - Le cache des ratios a été généré avec succès !".EOL;
else
echo date('Y/m/d - H:i:s') ." - Erreur lors de la génération du cache des ratios !".EOL;
die();
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de calcul des ratios...".EOL;
$tabLast=$iDb->select( 'ratios_formules',
'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert',
'1');
$lastUpdate=$tabLast[0]['lastInsert'];
if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate'];
/** On vérifie la présence du cache de calcul des ratios **/
if (!file_exists(INCLUDE_PATH.'tmp/configMRatios.php'))
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'existe pas !".EOL);
/** On vérifie qu'il n'y a pas de nouvelles formules à mettre dans le cache de calcul des ratios **/
elseif (strtr($lastUpdate, array(':'=>'','-'=>'', ' '=>''))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR FATALE, le cache ratio n'est pas à jour !", date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !");
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !".EOL);
}
/** On vérifie que le programme de MAJ du cache n'a pas été modifié **/
elseif (date('YmdHis',filectime(INCLUDE_PATH.'scores/classMRatios.php'))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) // Le fichier de cache est déprécié
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (programme modifié). Relancer à l'option -c !".EOL);
include_once(INCLUDE_PATH.'tmp/configMRatios.php');
echo date('Y/m/d - H:i:s') ." - Formules de calcul des ratios déjà en cache.".EOL;
/** Recherche de la dernière mise à jour des ratios secteurs **/
$tabLast=$iDb->select( 'ratios_secteurs',
'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert',
'1');
$lastUpdate=$tabLast[0]['lastInsert'];
if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate'];
if ($dateDeb>20000101123000) $lastUpdate=$dateDeb;
$lastDateUpdate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>''));
echo(date('Y/m/d - H:i:s') ." - La dernière mise à jour des ratios secteurs date du $lastUpdate...".EOL);
$nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate', "1", false, MYSQL_ASSOC, true);
if ($nbRows>0) {
$modeSuite=true;
echo date('Y/m/d - H:i:s') ." - Il reste $nbRows entreprises pour lesquels il faut mettre à jour les ratios secteurs...".EOL;
} else {
/** On met en table temporaire les siren en cas de plantage du script **/
$modeSuite=false;
if ($millesime) {
// Liste des derniers Bilans insérés depuis le dernier calcul des ratios
$nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateExercice BETWEEN $milles"."0101 AND $millesime"."1231 AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec des bilans millésimes $millesime pour calcul des ratios secteurs...".EOL;
//die();
} else {
// Date du dernier bilan inseré
$tabLast=$iDb->select( 'bilans',
'MAX(dateInsert) AS lastDateInsert',
"siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC");
$lastDateBilan=strtr($tabLast[0]['lastDateInsert'],array(' '=>'',':'=>'','-'=>''));
echo(date('Y/m/d - H:i:s') ." - Le dernier bilan inséré en base date du $lastDateBilan...".EOL);
// Liste des derniers Bilans insérés depuis le dernier calcul des ratios
$nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL;
}
$iDb2->query('DROP TABLE IF EXISTS ratios_tmp;');
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL;
$strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp (
siren int(9) unsigned zerofill NOT NULL,
lastUpdate bigint(14) unsigned zerofill NOT NULL COMMENT 'Date de dernière mise à jour de la table ratio',
lastBilan bigint(14) unsigned zerofill NOT NULL COMMENT 'Dernier bilan enregistré dans la table bilan',
millesime year(4) unsigned NULL DEFAULT NULL COMMENT 'Paramètre millesime si défini',
PRIMARY KEY(siren)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TEMP - Liste des bilans dont il faut calculer les ratios';";
$iDb2->query($strSQL);
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL;
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
if (!$millesime) $millesimeDb='NULL'; else $millesimeDb=$millesime;
$iDb2->insert('ratios_tmp', array( 'siren' =>$entrep['siren'],
'lastUpdate'=>$lastDateUpdate, // Date de dernière mise à jour de la table ratio
'lastBilan' =>$lastDateBilan, // Dernier bilan enregistré dans la table bilan
'millesime' =>$millesimeDb)); // On enregistre le paramètre millesime
}
echo date('Y/m/d - H:i:s') ." - Les éléments ont été mis en table temporaire en cas de reprise sur erreur !".EOL;
$nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate, lastBilan, millesime', "1", false, MYSQL_ASSOC, true);
}
$k=0; // Compteur d'entreprises
$b=0; // Compteur total de bilans
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
if ($modeSuite && $k==0) $lastDateUpdate=$entrep['lastUpdate'];
$millesime=$entrep['millesime'];
$k++;
if ($k<$iDeb) continue;
$siren=$entrep['siren'];
if ($siren<100) continue;
// else echo "$siren\n";
$naf4=$naf5='';
unset($mBil);
$mBil=new MBilans($siren);
/** Récupération des informations Identitaires **/
$tabIdentite=@$iInsee->getIdentiteLight($siren);
$naf=$tabIdentite['NafEnt'];
$nafLib=$tabIdentite['NafEntLib'];
$efftr=$tabIdentite['Effectif'];
$fj=$tabIdentite['FJ'];
/** On Recherche le dernier Bilan mis à jour **/
$tabBilans=$mBil->listeBilans();
$nbBilansTot=count($tabBilans);
$tabBilans2=array();
foreach ($tabBilans as $mil=>$infosBilan) {
/** On vérifie s'il n'y a pas de Bilan vide **/
if ($infosBilan['dureeExercice']==0) {
if ($modeVerbose) {
print_r($infosBilan);
echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL;
}
$iDb2->delete('ratios_tmp', "siren=$siren");
continue(2);
}
/** On ne garde que les Bilans dont la date de provenance est > à la date de dernière Mise à jour
** car les ratios secteurs des autres bilans on déjà été calculés ! **/
if ($millesime && $infosBilan['millesime']==$millesime)
//echo "APRES ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime'].EOL;
$tabBilans2[$mil]=$infosBilan;
elseif (!$millesime && $infosBilan['dateInsert']>=$lastDateUpdate)
$tabBilans2[$mil]=$infosBilan;
/*else
echo "DALLE ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime']." ### QUE DALLE !!!!".EOL;*/
}
$nbBilans=count($tabBilans2);
$tabBilan=$tabBil=array();
if ($nbBilans==0) {
if ($modeVerbose) {
print_r($tabBilans2);
echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL;
print_r($tabBilans);
}
$iDb2->delete('ratios_tmp', "siren=$siren");
continue;
}
$tabRatios=@calculRatios($tabBilans2, $tabIdentite, false, 999);
if (strlen($naf)>4) $naf5=$naf; else $naf4=$naf;
if ($tabBilan[0]['CONSOLIDE']=='A') $naf4='ASSU';
elseif ($tabBilan[0]['CONSOLIDE']=='B') $naf4='BANQ';
if ($modeVerbose && ($naf4=='ASSU' || $naf4=='BANQ')) {
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de e", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans));
echo "Bilan '$naf4' pour le siren $siren et l'année $annee !".EOL;
}
foreach ($tabFormules as $f=>$formule) {
foreach ($tabRatios as $i=>$R) {
$id=$formule['id'];
// Si on demande seulement le calcul d'un ratio alors on vérifie le numéro du ratio
if ($ratio && !in_array($id, $tabRatiosToCalc)) continue;
if ($f==0) $b++;
// Si on n'est pas une banque/assurance, on ne calcul pas les ratios 700 à 799
if ($naf4<>'ASSU' && $naf4<>'BANQ' && $id>=700 && $id<800)
continue;
$annee=substr($tabBilan[$i]['DATE_CLOTURE'],0,4);
// Si on demande seulement le calcul d'un millésime alors on vérifie la date du bilan
if ($millesime && $annee<>$millesime) continue;
if ($R[$id]==='NS' || $R[$id]===false ) {
if ($modeVebose) echo "Le ratio n°$id est non significatif (".$R[$id].") pour le siren $siren et l'année $annee !".EOL;
continue;
}
/** Si c'est un ratio EUR, on le passe en K€ **/
if ($formule['unite']=='EUR') $mt=$R[$id]/1000;
else $mt=$R[$id];
/** On vérifie les bornes MIN et MAX **/
if ($formule['min']<>'' && $mt<$formule['min']) {
if ($modeVerbose) echo "Ratio n°$id, borne Mini non nulle (".$formule['min'].") et le montant est inférieur : $mt<".$formule['min']." pour le siren $siren et l'année $annee".EOL;
continue;
} elseif ($formule['max']<>'' && $mt>$formule['max']) {
if ($modeVerbose) echo "Ratio n°$id, borne Maxi non nulle (".$formule['max'].") et le montant est supérieur : $mt>".$formule['max']." pour le siren $siren et l'année $annee".EOL;
continue;
} //else
//echo "Ratio n°$id compris entre bornes ".$formule['min']." < $mt < ".$formule['max']." pour le siren $siren et l'année $annee".EOL;
/** Lecture des chiffres existants dans la table ratios_secteurs **/
$tabTmp=$iDb2->select( 'ratios_secteurs',
'montant, nombre, id, naf4, naf5, annee',
"id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee",
false, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$mt2=$mt+$tabTmp[0]['montant'];
$nb2=$tabTmp[0]['nombre'] + 1;
} else {
$mt2=$mt;
$nb2=1;
}
$tabUpdate=array( 'montant' => $mt2,
'nombre' => $nb2,
);
if (!$iDb2->update('ratios_secteurs', $tabUpdate, "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee") || $iDb2->getAffectedRows()==0 ) { // getAffectedRows ajouté le 14 mai 2009
$tabInsert=array_merge($tabUpdate, array( 'id'=>$id,
'naf4'=>$naf4,
'naf5'=>$naf5,
'annee'=>$annee,
'dateInsert'=>$lastDateBilan,
));
if (!$iDb2->insert('ratios_secteurs', $tabInsert) && mysql_errno()<>1062) {
$pct=round(($k/$nbRows)*100,2);
echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL;
echo date('Y/m/d - H:i:s') .' - ERREUR SQL n°'.mysql_errno().' : '.mysql_error().EOL;
die();
}
}
if ($k%1000==0 && $f==0 && $i==0) {
$pct=round(($k/$nbRows)*100,2);
echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL;
}
}
}
$iDb2->delete('ratios_tmp', "siren=$siren");
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la suppression des informations temporaires, n°'.mysql_errno().' : '.mysql_error().EOL;
}
echo date('Y/m/d - H:i:s') ." - Les ratios ont été mis à jour ; suppression des informations temporaires.".EOL;
$iDb2->query('DROP TABLE IF EXISTS jo.ratios_tmp;');
die(date('Y/m/d - H:i:s') ." - Fin du programme.".EOL);
?>

153
bin/calculRedevances.php Normal file
View File

@ -0,0 +1,153 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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.'insee/classMSirene.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.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.'partenaires/classMMap.php');
include_once(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'tmp/configMRatios.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'scores/classMRegression.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Calcul des redevances INSEE pour un mois donné.
Options :
-v Mode debug (Verbosité au maximum)
-m:SSAAMM Forcer le mois de calcul des redevances à SSAAMM (sinon mois précedent)
-c:XXX Limiter au client XXX
-t Table de test
";
$tableRdv='inseeRdv';
$argv=$_SERVER['argv'];
//$iDb=new WDB('jo');
$iDb=new WDB('sdv1');
$iDb2=new WDB('sdv1');
$tabUser=array();
$modeDebug=$idClient=false;
$dateMAJ=date('Ymt',mktime(0,0,0,date('m')-1,date('d'),date('Y')));
$strMailInfo='';
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 'c': $idClient = substr($argv[$i],3)*1; break;
case 'm': $dateMAJ = date('Ymt',mktime(0,0,0,substr($argv[$i],7,2),1,substr($argv[$i],3,4))); break;
case 't': $tableRdv='inseeRdv2'; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
$moisEnCours=substr($dateMAJ,0,6);
$dateDEB=substr($moisEnCours,0,6).'01';
/** Liste des clients **/
if ($idClient) $strClient=" AND id=".$idClient;
else $strClient='';
$tabTmp=$iDb->select('clients', 'id, nom', "1 $strClient", false, MYSQL_ASSOC);
$tabClient=array();
foreach ($tabTmp as $tabTmp2) {
$tabClient[$tabTmp2['id']]=$tabTmp2['nom'];
}
$nbClients=count($tabClient);
/** Liste des utilisateurs **/
if ($idClient) $strClient=" AND idClient=".$idClient;
else $strClient='';
$tabTmp=$iDb->select('utilisateurs', "login, idClient", "1 $strClient", false, MYSQL_ASSOC);
$tabUser=array();
foreach ($tabTmp as $tabTmp2) {
$tabUser['_'.$tabTmp2['login']]=$tabTmp2['idClient'];
}
$nbUsers=count($tabUser);
/** Calcul des redevances en niveau 1 : Navéa (Extranet/WS) **/
$iClient=0;
foreach ($tabClient as $idClient=>$nomClient) {
$iClient++;
echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 1 pour '".$tabClient[$idClient]. "' en $moisEnCours : ";
$tabLogs=$iDb->select( 'logs',
'siren, nic',
"idClient=$idClient AND page='identite' AND test=0 AND actifInsee=1 AND source=2 AND dateHeure BETWEEN $dateDEB AND $dateMAJ GROUP BY siren, nic", false, MYSQL_ASSOC);
$nbSiret=count($tabLogs);
echo "$nbSiret siret".EOL;
$tabInsert=array('idClient'=>$idClient,
'nomClient'=>$tabClient[$idClient],
'mois'=>$moisEnCours,
'produit'=>1,
'nbSiret'=>$nbSiret,
);
if (!$iDb2->insert($tableRdv, $tabInsert, false))
$iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=1", false);
}
/** Calcul des redevances en niveau 2 : Odéa (Ciblage, sortie prévue en 2012) **/
/** Calcul des redevances en niveau 3 : Sirenages Clients et enrichissement (Depuis Aout 2010) **/
$iClient=0;
foreach ($tabClient as $idClient=>$nomClient) {
$iClient++;
echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 3 pour '".$tabClient[$idClient]. "' en $moisEnCours : ";
$tabLogs=$iDb->select( 'jo.sirenage_clients',
'siren, nic',
"idClient=$idClient AND siren>1000 AND nic>9 AND dateUpdate BETWEEN $dateDEB AND $dateMAJ GROUP BY siren, nic", false, MYSQL_ASSOC);
$nbSiret=count($tabLogs);
echo "$nbSiret siret".EOL;
$tabInsert=array('idClient'=>$idClient,
'nomClient'=>$tabClient[$idClient],
'mois'=>$moisEnCours,
'produit'=>3,
'nbSiret'=>$nbSiret,
);
if (!$iDb2->insert($tableRdv, $tabInsert, false))
$iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=3", false);
}
/** Calcul des redevances en niveau 4 : Surveillances Insee (Depuis Janvier 2011) **/
$iClient=0;
foreach ($tabClient as $idClient=>$nomClient) {
$iClient++;
echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 4 pour '".$tabClient[$idClient]. "' en $moisEnCours : ";
$tabLogs=$iDb->select( 'jo.surveillances_site s, sdv1.utilisateurs u, sdv1.clients c',
's.siren, s.nic',
"s.siren>1000 AND s.source='insee' AND s.login=u.login AND u.idClient=$idClient AND u.idClient=c.id and c.test='Non' AND u.typeCompte='PROD' AND s.dateAjout BETWEEN $dateDEB AND $dateMAJ GROUP BY s.siren, s.nic", false, MYSQL_ASSOC);
$nbSiret=count($tabLogs);
echo "$nbSiret siret".EOL;
$tabInsert=array('idClient'=>$idClient,
'nomClient'=>$tabClient[$idClient],
'mois'=>$moisEnCours,
'produit'=>4,
'nbSiret'=>$nbSiret,
);
if (!$iDb2->insert($tableRdv, $tabInsert, false))
$iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=4", false);
}
/** Calcul des redevances en niveau 5 : INEXISTANT **/
die();
?>

477
bin/calculScoresProfils.php Normal file
View File

@ -0,0 +1,477 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
define('NOW', date('YmdHis'));
define('TODAY', substr(NOW, 0, 8));
define('YEAR', substr(TODAY, 0, 4));
define('MONTH', substr(TODAY, 4, 2));
define('DAY', substr(TODAY, 6, 2));
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(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Mise à jour quotidienne des scores secteurs / profils entreprise S&D.
Options :
-d:SSAAMMJJ Initialiser tous les scores secteurs depuis SSAAMMJJ
-f:SSAAMMJJ Initialiser tous les scores secteurs jusqu'au SSAAMMJJ
-p Initialiser les scores profils mensuels (à défaut, seulement le 1er du mois)
-s Initialiser les scores secteurs mensuels (à défaut, seulement le 1er du mois)
-v Mode bavard
";
$dateDeb=$dateFin=0;
$initStatProfil=$initStatSecteur=$modeDebug=false;
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 'd':
$dateDeb=substr($argv[$i],3)*1;
break;
case 'f':
$dateFin=substr($argv[$i],3)*1;
break;
case 'p':
$initStatProfil=true;
break;
case 's':
$initStatSecteur=true;
break;
case 'v':
$modeDebug=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . ' inconnue !'.EOL);
break;
}
}
}
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iDbHisto=new WDB('historiques');
$iInsee=new MInsee();
function getNaf5($naf4ou5) {
$iDb=new WDB('insee');
$tabTmp=$iDb->select( 'naf_conv', 'nafOut', "nafIn='$naf4ou5'");
return $tabTmp[0]['nafOut'];
}
echo date ('Y/m/d - H:i:s')." - Début du traitement.".EOL;
/** Recherche de la dernière date de MAJ
**/
if (!$dateDeb) {
echo date ('Y/m/d - H:i:s')." - Préparation des procédures à vérifier.".EOL;
$tabLast=$iDb->select( 'scores_secteurs',
'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert',
'1');
$lastUpdate=$tabLast[0]['lastInsert'];
if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate'];
echo date('Y/m/d - H:i:s') ." - La dernière vérification des procédures date de $lastUpdate !".EOL;
} else {
$lastUpdate=WDate::dateT('Ymd', 'Y-m-d', $dateDeb).' 00:00:00';
if ($dateFin) {
$strDateFin=" AND (dateInsert<='".WDate::dateT('Ymd', 'Y-m-d', $dateFin)." 23:59:59' OR
dateUpdate<='".WDate::dateT('Ymd', 'Y-m-d', $dateFin)." 23:59:59' ) ";
echo date('Y/m/d - H:i:s') ." - Réinitialisation des stats secteurs du $lastUpdate au $dateFin !".EOL;
} else {
$strDateFin='';
echo date('Y/m/d - H:i:s') ." - Réinitialisation des stats secteurs depuis le $lastUpdate !".EOL;
}
}
/** Traitements mensuels
**/
if (DAY*1==1 || $initStatSecteur) {
echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs mensuelles.".EOL;
$fields='ape_entrep, COUNT(*) AS nbEntrep';
$where="source=2 AND actif=1 AND siege=1 GROUP BY ape_entrep ORDER BY ape_entrep ASC";
/** Initialisation des scores secteurs **/
$tabTmp=$iDb->select('etablissements_old', $fields, $where, false, MYSQL_ASSOC);
if (mysql_errno()==1146)
$tabTmp=$iDb->select('etablissements', $fields, $where, false, MYSQL_ASSOC);
$nbApe=count($tabTmp);
echo date ('Y/m/d - H:i:s')." - Il y a $nbApe stats secteurs mensuelles à initialiser...".EOL;
$annee=YEAR;
$mois=MONTH;
$nbInsert=$nbUpdate=0;
foreach ($tabTmp as $secteur) {
$naf=$secteur['ape_entrep'];
$tabInsert=array('naf5'=> $naf,
'annee'=> YEAR,
'mois'=> MONTH,
'nbEntrep'=> $secteur['nbEntrep'],
'dateInsert'=> NOW,
);
if ($iDb2->insert('scores_secteurs', $tabInsert))
$nbInsert++;
else {
$iDb2->update('scores_secteurs', $tabInsert, "naf5='$naf' AND annee=$annee AND mois=$mois");
$nbUpdate++;
}
}
echo date ('Y/m/d - H:i:s')." - $nbInsert secteurs initialisées et $nbUpdate mis à jour.".EOL;
}
if (DAY*1==1 || $initStatProfil) {
echo date ('Y/m/d - H:i:s')." - Préparation des stats profils mensuelles.".EOL;
/** Initialisation des scores profils **/
//$nbPro=$iDb->select('insee.identite', 'APE_ENT, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS dep, SUBSTRING(CJ,1,2) as FJur, ROUND(if(DCRET>DCREN,DCRET/10000,DCREN/10000)) as anneeCrea, TEFF_ENT, TCA, count(*) as nbEntrep',
$nbPro=$iDb->select('insee.identite', 'APE_ENT, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS dep, CJ as FJur, ROUND(if(DCRET>DCREN,DCRET/10000,DCREN/10000)) as anneeCrea, TEFF_ENT, TCA, count(*) as nbEntrep',
"SIEGE=1 AND ACTIF=1 GROUP BY APE_ENT, dep, FJur, anneeCrea, TCA", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbPro stats profils mensuelles à initialiser...".EOL;
$annee=YEAR;
$mois=MONTH;
$nbInsert=$nbUpdate=0;
while ($secteur=$iDb->fetch(MYSQL_ASSOC)) {
//foreach ($tabTmp as $secteur) {
$naf=$secteur['APE_ENT'];
$dep=$secteur['dep'];
$fj=$secteur['FJur'];
$anneeCrea=$secteur['anneeCrea'];
$trEff=$secteur['TEFF_ENT'];
$trCA=$secteur['TCA'];
$tabInsert=array('annee'=> YEAR,
'mois'=> MONTH,
'naf5'=> $naf,
'depSiege'=> $dep,
'formeJur'=> $fj,
'anneeCrea'=> $anneeCrea,
'trEffectif'=> $trEff,
'trCA'=> $trCA,
'nbEntrep'=> $secteur['nbEntrep'],
'dateInsert'=> NOW,
);
if ($iDb2->insert('scores_profils', $tabInsert))
$nbInsert++;
else {
$iDb2->update('scores_profils', $tabInsert, "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA");
$nbUpdate++;
}
}
echo date ('Y/m/d - H:i:s')." - $nbInsert profils initialisées et $nbUpdate mis à jour.".EOL;
}
if (!$initStatProfil && !$initStatSecteur) {
echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs et profils pour les interdictions quotidiennes.".EOL;
$nbInsertSecteur=$nbUpdateSecteur=$nbInsertProfil=$nbUpdateProfil=0;
/** Mise à jour des Jugements FP IG **/
$nbAnnonces=$iDb->select(
'bodacc_detail',
'siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert, dateUpdate',
"siren>1000 AND (dateInsert>'$lastUpdate' OR dateUpdate>'$lastUpdate') $strDateFin
AND dateJugement>='2005-01-01' AND
(typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%')
ORDER BY dateSource ASC;",
false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces annonces d'interdictions à vérifier...".EOL;
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$annonce['siren'];
$typeEven=$annonce['typeEven'];
$dateJuge=$annonce['dateJugement'];
$dateInsert=$annonce['dateInsert'];
/** Initialisation des scores secteurs **/
$tabTmp=explode('-', $dateJuge);
$annee=$tabTmp[0];
$mois=$tabTmp[1];
$tabIdentite=$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false);
$naf=$tabIdentite['NafEnt'];
if (strlen($naf)<5) $naf=getNaf5($naf);
$fj=$tabIdentite['FJ'];
$dep=$tabIdentite['Dept'];
if ($dep>96 && $dep<99) $dep=''.$dep.substr($tabIdentite['codeCommune'],0,1);
$anneeCrea=$tabIdentite['DateCreaEn'];
if ($anneeCrea>$tabIdentite['DateCreaEt']) $anneeCrea=$tabIdentite['DateCreaEt'];
$trEff=$tabIdentite['EffEnTr'];
$trCA=$tabIdentite['TrancheCA'];
/** Mise à jour des scores secteurs **/
if ($modeDebug) echo "IGFP $siren\t$typeEven\t$dateJuge\t$dateInsert ";
$tabTmp=$iDb2->select( 'scores_secteurs',
'nbInter, nbEntrep, annee, mois',
"naf5='$naf' AND annee=$annee AND mois=$mois",
false, MYSQL_ASSOC);
if (count($tabTmp)>0) $nbInter=$tabTmp[0]['nbInter'] + 1;
else $nbInter=1;
$tabUpdate=array('nbInter'=> $nbInter);
$retTmp=$iDb2->update('scores_secteurs', $tabUpdate, "naf5='$naf' AND annee=$annee AND mois=$mois");
if (!$retTmp || $iDb2->getAffectedRows()==0) {
$tabInsert=array_merge($tabUpdate, array( 'naf5'=>$naf,
'annee'=>$annee,
'mois'=>$mois,
'dateInsert'=>date('YmdHis'),
));
$iDb2->insert('scores_secteurs', $tabInsert);
if ($modeDebug) echo "SECTEURS:INSERT=>$nbProcDB ($naf/$annee-$mois)";
$nbInsertSecteur++;
} else {
if ($modeDebug) echo "SECTEURS:UPDATE=>$nbProcDB ($naf/$annee-$mois)";
$nbUpdateSecteur++;
}
if ($modeDebug) echo EOL;
/** Mise à jour des scores profils **/
if ($modeDebug) echo "IGFP $siren\t$typeEven\t$dateJuge\t$dateInsert ";
$tabTmp=$iDb2->select( 'scores_profils',
'nbInter, nbEntrep, annee, mois',
"annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA",
false, MYSQL_ASSOC);
if (count($tabTmp)>0) $nbInter=$tabTmp[0]['nbInter'] + 1;
else $nbInter=1;
$tabUpdate=array('nbInter'=> $nbInter);
$retTmp=$iDb2->update('scores_profils', $tabUpdate, "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA");
if (!$retTmp || $iDb2->getAffectedRows()==0) {
$tabInsert=array_merge($tabUpdate, array( 'annee'=>$annee,
'mois'=>$mois,
'naf5'=>$naf,
'depSiege'=>$dep,
'formeJur'=>$fj,
'anneeCrea'=>$anneeCrea,
'trEffectif'=>$trEff,
'trCA'=>$trCA,
'dateInsert'=>date('YmdHis'),
));
$iDb2->insert('scores_profils', $tabInsert);
if ($modeDebug) echo "PROFILS:INSERT=>$nbProcDB ($naf/$annee-$mois)";
$nbInsertProfil++;
} else {
if ($modeDebug) echo "PROFILS:UPDATE=>$nbProcDB ($naf/$annee-$mois)";
$nbUpdateProfil++;
}
if ($modeDebug) echo EOL;
}
echo date ('Y/m/d - H:i:s')." - Interdictions : $nbAnnonces annonces vérifiées.".EOL;
echo date ('Y/m/d - H:i:s')." - Stats Secteurs : $nbInsertSecteur ajouts et $nbUpdateSecteur MAJ.".EOL;
echo date ('Y/m/d - H:i:s')." - Stats Profils : $nbInsertProfil ajouts et $nbUpdateProfil MAJ.".EOL;
echo date ('Y/m/d - H:i:s')." - Fin des stats secteurs et profils pour les interdictions quotidiennes.".EOL;
echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs et profils pour les Procédures quotidiennes.".EOL;
$nbDejaProcol=$nbNouvProcol=$nbInsertSecteur=$nbUpdateSecteur=$nbInsertProfil=$nbUpdateProfil=0;
/** Initialisation des scores secteurs **/
$query="(SELECT siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert FROM bodacc_detail WHERE siren>1000 AND dateInsert>'$lastUpdate' $strDateFin AND dateJugement>='2005-01-01' AND ( typeEven LIKE '%1100%' OR typeEven LIKE '%1101%' OR typeEven LIKE '%1200%' OR typeEven LIKE '%1201%' OR typeEven LIKE '%1202%' OR typeEven LIKE '%1207%' OR typeEven LIKE '%1209%' OR typeEven LIKE '%1210%' OR typeEven LIKE '%1211%' OR typeEven LIKE '%1212%' OR typeEven LIKE '%1214%' OR typeEven LIKE '%1216%' OR typeEven LIKE '%1300%' OR typeEven LIKE '%1301%' OR typeEven LIKE '%1302%' OR typeEven LIKE '%1303%' OR typeEven LIKE '%1304%' OR typeEven LIKE '%1305%' OR typeEven LIKE '%1306%' OR typeEven LIKE '%1307%' OR typeEven LIKE '%1308%' OR typeEven LIKE '%1309%' OR typeEven LIKE '%1310%' OR typeEven LIKE '%1311%' OR typeEven LIKE '%1312%' OR typeEven LIKE '%1313%' OR typeEven LIKE '%1410%' OR typeEven LIKE '%1415%' OR typeEven LIKE '%1416%' OR typeEven LIKE '%1417%' OR typeEven LIKE '%1418%' OR typeEven LIKE '%1419%' OR typeEven LIKE '%1507%' OR typeEven LIKE '%1515%' OR typeEven LIKE '%1540%' OR typeEven LIKE '%1541%' OR typeEven LIKE '%1542%' OR typeEven LIKE '%1543%' OR typeEven LIKE '%1544%' OR typeEven LIKE '%1545%' OR typeEven LIKE '%1546%' OR typeEven LIKE '%1550%' OR typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1602%' OR typeEven LIKE '%1603%' OR typeEven LIKE '%1604%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%' OR typeEven LIKE '%1999%' ))
UNION
(SELECT siren, sirenValide, typeEven, dateJugement, dateSource, dateInsert FROM annonces where siren>1000 AND dateInsert>'$lastUpdate' $strDateFin AND dateJugement>='2005-01-01' AND typeEven IN (1100,/*Ouverture sauvegarde*/
1101,/*Jugement arrêtant plan de sauvegarde*/
1200,/*Redressement Judiciaire*/
1201,/*Conversion sauvegarde en Redressement Judiciaire*/
1202,/*Renouvellement de la période d'observation*/
1207,/*Règlements amiables*/
1209,/*Règlement judiciaire*/
1210,/*Production de titres et créances*/
1211,/*Redressement Judiciaire par extension au(x) gérant(s)*/
1212,/*Réforme de Liquidation Judiciaire en Redressement Judiciaire*/
1214,/*Avis de dépôt de l'état des créances (Loi de 1985)*/
1216,/*Autre avis de dépôt*/
1300,/*Conversion Redressement Judiciaire en Liquidation Judiciaire*/
1301,/*Ouverture Liquidation Judiciaire*/
1302,/*Ouverture Liquidation Judiciaire Simplifiée*/
1303,/*Ouverture Liquidation Judiciaire sur résolution du plan*/
1304,/*Réouverture Liquidation Judiciaire*/
1305,/*Liquidation Judiciaire*/
1306,/*Liquidation Judiciaire simplifiée*/
1307,/*Conversion sauvegarde en Liquidation Judiciaire*/
1308,/*Fin du régime de Liquidation Judiciaire Simplifiée*/
1309,/*Conversion Liquidation Judiciaire en Liquidation Judiciaire Simplifiée*/
1310,/*Procédure d'insolvabilité européenne*/
1311,/*Liquidation Judiciaire par extension au(x) gérant(s)*/
1312,/*Liquidation Judiciaire avec continuation d'exploitation*/
1313,/*Liquidation Judiciaire sans remise des accessoires*/
1410,/*Suite règlement/liquidation*/
1415,/*Prolongement du plan cession*/
1416,/*Jugement constatant la bonne exécution du plan*/
1417,/*Jugement d'extension de liquidation judiciaire*/
1418,/*Jugement d'extension d'une procédure de redressement judiciaire*/
1419,/*Jugement d'extension d'une procédure de sauvegarde*/
1507,/*Extrait d'arrêt de la cour d'appel*/
1515,/*Arrêt divers*/
1540,/*Ordonnance statuant sur les contestations du projet de répartition*/
1541,/*Rétractation de prononcé de liquidation judiciaire sur tierce opposition*/
1542,/*Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition*/
1543,/*Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition*/
1544,/*Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition*/
1545,/*Rétractation de jugement d'ouverture sur tierce opposition*/
1546,/*Autre rétractation sur tierce opposition*/
1550,/*Jugement d'homologation de l'accord*/
1600,/*Faillite personnelle*/
1601,/*Interdiction de gérer*/
1602,/*Jugement de réhabilitation*/
1603,/*Liquidation de biens*/
1604,/*Banqueroute
1605,/*Jugement autorisant la reprise des poursuites individuelles*/
1610,/*Faillite personnelle (Loi de 1985)*/
1611,/*Interdiction de gérer (Loi de 1985)*/
1999 /*Autre procédure collective*/ )
) ORDER BY dateSource ASC;";
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - $query".EOL;
$res=$iDb->query($query);
$nbAnnonces=mysql_num_rows($res);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces annonces d'ouverture à vérifier...".EOL;
$sirenPre=false;
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$annonce['siren'];
if ($siren==$sirenPre) continue;
$typeEven=$annonce['typeEven'];
$dateJuge=$annonce['dateJugement'];
$dateInsert=$annonce['dateInsert'];
/** Initialisation des scores secteurs **/
$query="(SELECT siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert FROM bodacc_detail WHERE siren=$siren AND (dateInsert<'$dateInsert' OR dateJugement<'$dateJuge') AND Rubrique='procol')
UNION
(SELECT siren, sirenValide, typeEven, dateJugement, dateSource, dateInsert FROM annonces where siren=$siren AND (dateInsert<'$dateInsert' OR dateJugement<'$dateJuge') AND typeEven BETWEEN 1100 AND 1999) ORDER BY siren;";
//echo date ('Y/m/d - H:i:s')." - $query".EOL;
$res2=$iDb2->query($query);
$nbProcol=mysql_num_rows($res2);
if ($modeDebug) echo "ProCol $siren\t$typeEven\t$dateJuge\t$dateInsert ";
if ($nbProcol>0) {
if ($modeDebug) echo "($nbProcol ProCol)".EOL;
$nbDejaProcol++;
} else {
$strIdAnn=" AND e.CODEVE BETWEEN 50 AND 79 AND e.DATE>=".(YEAR-12).MONTH.DAY;
$res2=$iDbHisto->select(
'entrep e, texte x, tribunaux t',
'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt, t.triNom, t.triSiret',
"e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.CODTRI=t.triCode $strIdAnn AND e.DATE BETWEEN 19960101 AND 20041231 GROUP BY e.ANBASE ORDER BY e.DATE DESC", true, MYSQL_ASSOC);
$nbProcolHisto=count($res2);
if ($nbProcolHisto>0) {
if ($modeDebug) echo "($nbProcolHisto ProCol histo.)".EOL;
$nbDejaProcol++;
} else {
if ($modeDebug) echo "NOUVELLE PROCEDURE ";
$nbNouvProcol++;
// Ajouter dans la table
$tabTmp=explode('-', $dateJuge);
$annee=$tabTmp[0];
// if ($annee<2007) continue;
$mois=$tabTmp[1];
$tabIdentite=$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false);
$naf=$tabIdentite['NafEnt'];
if (strlen($naf)<5) $naf=getNaf5($naf);
$fj=$tabIdentite['FJ'];
$dep=$tabIdentite['Dept'];
if ($dep>96 && $dep<99) $dep=''.$dep.substr($tabIdentite['codeCommune'],0,1);
$anneeCrea=$tabIdentite['DateCreaEn'];
if ($anneeCrea>$tabIdentite['DateCreaEt']) $anneeCrea=$tabIdentite['DateCreaEt'];
$trEff=$tabIdentite['EffEnTr'];
$trCA=$tabIdentite['TrancheCA'];
/** Mise à jour des scores secteurs **/
$tabTmp=$iDb2->select( 'scores_secteurs',
'nbProcol, nbEntrep, annee, mois',
"naf5='$naf' AND annee=$annee AND mois=$mois",
false, MYSQL_ASSOC);
if (count($tabTmp)>0) $nbProcDB=$tabTmp[0]['nbProcol'] + 1;
else $nbProcDB=1;
$tabUpdate=array('nbProcol'=> $nbProcDB);
$retTmp=$iDb2->update('scores_secteurs', $tabUpdate, "naf5='$naf' AND annee=$annee AND mois=$mois");
if (!$retTmp || $iDb2->getAffectedRows()==0) {
$tabInsert=array_merge($tabUpdate, array( 'naf5'=>$naf,
'annee'=>$annee,
'mois'=>$mois,
'dateInsert'=>date('YmdHis'),
));
$iDb2->insert('scores_secteurs', $tabInsert);
if ($modeDebug) echo "SECTEURS:INSERT=>$nbProcDB ($naf/$annee-$mois)";
$nbInsertSecteur++;
} else {
if ($modeDebug) echo "SECTEURS:UPDATE=>$nbProcDB ($naf/$annee-$mois)";
$nbUpdateSecteur++;
}
if ($modeDebug) echo EOL;
/** Mise à jour des scores profils **/
if ($modeDebug) echo "ProCol $siren\t$typeEven\t$dateJuge\t$dateInsert NOUVELLE PROCEDURE ";
$tabTmp=$iDb2->select( 'scores_profils',
'nbProcol, nbEntrep, annee, mois',
"annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND
anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA",
false, MYSQL_ASSOC);
if (count($tabTmp)>0) $nbProcDB=$tabTmp[0]['nbProcol'] + 1;
else $nbProcDB=1;
$tabUpdate=array('nbProcol'=> $nbProcDB);
$retTmp=$iDb2->update('scores_profils', $tabUpdate, "annee=$annee AND mois=$mois AND naf5='$naf' AND
depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA");
if (!$retTmp || $iDb2->getAffectedRows()==0) {
$tabInsert=array_merge($tabUpdate, array( 'annee'=>$annee,
'mois'=>$mois,
'naf5'=>$naf,
'depSiege'=>$dep,
'formeJur'=>$fj,
'anneeCrea'=>$anneeCrea,
'trEffectif'=>$trEff,
'trCA'=>$trCA,
'dateInsert'=>date('YmdHis'),
));
$iDb2->insert('scores_profils', $tabInsert);
if ($modeDebug) echo "PROFILS:INSERT=>$nbProcDB ($naf/$annee-$mois)";
$nbInsertProfil++;
} else {
if ($modeDebug) echo "PROFILS:UPDATE=>$nbProcDB ($naf/$annee-$mois)";
$nbUpdateProfil++;
}
if ($modeDebug) echo EOL;
}
}
$sirenPre=$siren;
}
echo date ('Y/m/d - H:i:s')." - Procédures Collectives : $nbNouvProcol entreprises In Bonis sur $nbAnnonces annonces ($nbDejaProcol déjà en ProCol).".EOL;
echo date ('Y/m/d - H:i:s')." - Stats Secteurs : $nbInsertSecteur ajouts et $nbUpdateSecteur MAJ pour $nbNouvProcol nouv. ProCol ($nbAnnonces annonces vérifiées).".EOL;
echo date ('Y/m/d - H:i:s')." - Stats Profils : $nbInsertProfil ajouts et $nbUpdateProfil MAJ pour $nbNouvProcol nouv. ProCol ($nbAnnonces annonces vérifiées).".EOL;
echo date ('Y/m/d - H:i:s')." - Fin des stats secteurs et profils pour les Procédures quotidiennes.".EOL;
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement.".EOL;
?>

222
bin/checkSphinx.php Normal file
View File

@ -0,0 +1,222 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [0 1 2 ...]
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;
$erreur=false;
$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];
}
}
$nbRepConnues=12;
$raisonSociale='FININFO';
$adresse=$codePostal=$ville=$siege=$actif='';
$deb=0;
$nbRep=$maxRep=200;
$messageMail='';
$tabCtrl=array(
array( 'Source' => '002',
'SourceId' => '19515247',
'Siren' => '509955068',
'Nic' => '00010',
'Nom' => 'FININFO',
),
array( 'Source' => '002',
'SourceId' => '25732397',
'Siren' => '800810517',
'Nic' => '00014',
'Nom' => 'SARL FIN INFORMATIQUE',
),
array( 'Source' => '002',
'SourceId' => '10736579',
'Siren' => '323874289',
'Nic' => '00024',
'Nom' => 'FININFO',
),
array( 'Source' => '002',
'SourceId' => '19328575',
'Siren' => '323874289',
'Nic' => '00057',
'Nom' => 'SIX FINANCIAL INFORMATION FRANCE',
),
array( 'Source' => '002',
'SourceId' => '10802699',
'Siren' => '323874289',
'Nic' => '00040',
'Nom' => 'FININFO',
),
array( 'Source' => '002',
'SourceId' => '12085589',
'Siren' => '303897607',
'Nic' => '00030',
'Nom' => 'GAUDFRIN JEAN PIERRE',
),
array( 'Source' => '002',
'SourceId' => '10034491',
'Siren' => '383133667',
'Nic' => '00014',
'Nom' => 'FININFO',
),
array( 'Source' => '002',
'SourceId' => '392194',
'Siren' => '398781880',
'Nic' => '00016',
'Nom' => 'GOUYET*PATRICK/',
),
array( 'Source' => '002',
'SourceId' => '15211920',
'Siren' => '432148880',
'Nic' => '00011',
'Nom' => 'E FININFO',
),
array( 'Source' => '002',
'SourceId' => '18165321',
'Siren' => '323874289',
'Nic' => '00032',
'Nom' => 'SIX FINANCIAL INFORMATION FRANCE',
),
array( 'Source' => '003',
'SourceId' => '436706',
'Nom' => 'FININFO GOLF',
),
array( 'Source' => '003',
'SourceId' => '1149146',
'Nom' => 'ASSOCIATION SPORTIVE ET CULTURELLE FININFO',
));
foreach ($tabCtrl as $i=>$tabTmp)
$tabCtrlTrouv[$i]=false;
$tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep);
if ($tabTmp['nbReponsesTotal']<>$nbRepConnues) {
$erreur=true;
$message=date('Y/m/d - H:i:s') ." - ERREUR : la recherche Sphinx '$raisonSociale' retourne ".$tabTmp['nbReponsesTotal']." résultats au lieu de $nbRepConnues !".EOL;
echo $message;
$messageMail.=$message;
} elseif ($tabTmp['nbReponsesTotal']==$nbRepConnues) {
$tabEtabTrouve=array();
//print_r(arrayRecursiveDiff($tabCtrl,$tabTmp['reponses']));
//print_r($tabTmp['reponses']);
//die();
//print_r($tabCtrl);die();
foreach ($tabTmp['reponses'] as $i=>$tabEtab) {
foreach ($tabCtrl as $j=>$tabEtabCtrl) {
//echo "$i. Je compare '".$tabEtabCtrl['Nom']."' avec '".$tabEtab['Nom']."'".EOL;
if ($tabEtabCtrl['Source']==$tabEtab['Source'] &&
$tabEtabCtrl['SourceId']==$tabEtab['SourceId'] &&
$tabEtabCtrl['Nom']==$tabEtab['Nom']) {
if ((isset($tabEtabCtrl['Siren']) && $tabEtabCtrl['Siren']<>$tabEtab['Siren']) ||
(isset($tabEtabCtrl['Nic']) && $tabEtabCtrl['Nic']<>$tabEtab['Nic']))
continue;
else {
$tabEtabTrouve[$i]=$j;
$tabCtrlTrouv[$j]=true;
}
}
}
}
//print_r($tabEtabTrouve);
//print_r($tabCtrlTrouv);
foreach ($tabCtrlTrouv as $j=>$trouve) {
if (!$trouve) {
$erreur=true;
$message=date('Y/m/d - H:i:s') ." - ERREUR : la recherche Sphinx '$raisonSociale' ne retourne pas ".$tabCtrl[$j]['Nom']." dans les $nbRepConnues résultats !".EOL;
echo $message;
$messageMail.=$message;
}
}
}
if (!$erreur) {
$message=date('Y/m/d - H:i:s') ." - La recherche Sphinx '$raisonSociale' retourne les ".$tabTmp['nbReponsesTotal']." résultats attendus.".EOL;
echo $message;
} else {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,supportdev@scores-decisions.com,support@scores-decisions.com', "Contrôle Sphinx ERREUR", $messageMail);
}
die();
//echo date('Y/m/d - H:i:s') ." - FIN du programme de SIRENAGE des annonces mal sirenés du BODACC.".EOL;
function arrayRecursiveDiff($array1, $array2) {
$result = array();
foreach($array1 as $key => $val) {
if(isset($array2[$key])){
if(is_array($val) && $array2[$key]){
$result[$key] = arrayRecursiveDiff($val, $array2[$key]);
}
} else {
$result[$key] = $val;
}
}
return $result;
}
die();
?>

180
bin/consolideDiri.php Normal file
View File

@ -0,0 +1,180 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
/**
** @todo
**
**/
echo date ('Y/m/d - H:i:s')." - DEBUT de la consolidation de la base Etablissements".EOL;
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.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$all=true;
$joAsso=$joBodacc=$baseInsee=$baseInpi=$reset=$pageRankOnly=$iGreffe=false;
// Compteurs
$nbInsertAsso=$nbInsertRncs1=$nbInsertRncs2=$nbInsertBod=$nbConjoints=$nbInsertBodNS=$nbInsertGreffes=$nbInsertMarques=$nbUpdateAsso=0;
$table='etablissements_tmp';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Consolide la table des dirigeants d'entreprises à partir des dernières mises à jours des différentes sources.
Sans aucune options, consolide toutes les sources.
Options :
-n Consolider les infos RNCS (Inpi)
-b Consolider le Bodacc
-h Consolider le Bodacc en historique
";
$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 'b':
$all=false;
$baseBodacc=true;
break;
case 'n':
$all=false;
$baseInpi=true;
break;
case 'h':
$all=false;
$baseBodaccHisto=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
if (file_exists(REP_TEMP.'stockInsee.lock')) {
$message='Stock en cours de chargement "'.file_get_contents(REP_TEMP.'stockInsee.lock').'"';
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Consolidation des dirigeants non traitée car trimestriel en cours', $message);
die();
}
/** Par défaut, on consolide toutes les sources **/
if ($all) {
$baseInpi=$baseBodacc=$baseBodaccHisto=true;
}
$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());
if (!$iDb->query("CREATE TABLE jo.dirigeants_tmp (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source` tinyint(3) unsigned zerofill NOT NULL,
`source_id` bigint(20) unsigned NOT NULL,
`siren` int(9) unsigned zerofill NOT NULL,
`adr_dep` smallint(3) unsigned NOT NULL,
`typeDir` enum('PP','PM') NOT NULL,
`dirSiren` int(9) unsigned zerofill NOT NULL,
`dirRS` varchar( 60 ) NOT NULL,
`civilite` enum('M','MME','MLLE') DEFAULT NULL,
`nom` char(60) NOT NULL,
`prenom` char(40) NOT NULL,
`naissance_nom` char(60) NOT NULL,
`naissance_date` date NOT NULL,
`naissance_lieu` char(35) NOT NULL,
`fonction_code` smallint(4) unsigned zerofill NOT NULL,
`actif` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `source` (`source`,`source_id`),
UNIQUE KEY `idxUnique` (`siren`,`typeDir`,`dirSiren`,`dirRS`,`nom`,`prenom`,`naissance_nom`,`naissance_date`,`naissance_lieu`,`fonction_code`),
KEY `idxSiren` (`siren`),
KEY `idxDirSiren` (`dirSiren`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Index des Dirigeants';", true))
die($iDb->getLastError());
$strMailInfo=date ('Y/m/d - H:i:s')." - Consolidation des dirigeants.".EOL;
if ($baseInpi) {
echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table dirigeants depuis le RNCS.".EOL;
$retTmp=$iDb->select('jo.rncs_dirigeants', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le RNCS...".EOL;
if(!$iDb->query("INSERT IGNORE INTO jo.dirigeants_tmp SELECT 0 AS id, 5 AS source, id AS source_id, siren, adr_dep,
typeDir, dirSiren, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu,
fonction_code, actif%10 as actif
FROM jo.rncs_dirigeants"))
die($iDb->getLastError());
$retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants RNCS consolidés.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants RNCS consolidés.".EOL;
}
if ($baseBodacc) {
$retTmp=$iDb->select('jo.bodacc_dirigeants', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le Bodacc...".EOL;
if(!$iDb->query("INSERT IGNORE INTO dirigeants_tmp
SELECT NULL AS id, 1 AS source, id AS source_id, siren, NULL AS dep, IF(prenom<>'','PP','PM') AS typeDir, 0 AS dirSiren, rs AS dirRS, NULL AS civilite, nom, prenom, nomUsage AS naissance_nom, 0 AS naissance_date, NULL AS naissance_lieu, fonction AS fonction_code, IF(depart=1,0,1) AS actif
FROM bodacc_dirigeants;"))
die($iDb->getLastError());
$retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', 'source=1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC consolidés.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC consolidés.".EOL;
}
if ($baseBodaccHisto) {
$retTmp=$iDb->select('jo.bodacc_dirigeants_histo', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le Bodacc Histo...".EOL;
if(!$iDb->query("INSERT IGNORE INTO dirigeants_tmp
SELECT NULL AS id, 6 AS source, id AS source_id, siren, NULL AS dep, IF(prenom<>'','PP','PM') AS typeDir, 0 AS dirSiren, rs AS dirRS, NULL AS civilite, nom, prenom, nomUsage AS naissance_nom, 0 AS naissance_date, NULL AS naissance_lieu, fonction AS fonction_code, IF(depart=1,0,1) AS actif
FROM bodacc_dirigeants_histo;"))
die($iDb->getLastError());
$retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', 'source=6', false,MYSQL_ASSOC);
$nbEtab=$retTmp[0]['nbEtab'];
echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC Histo consolidés.".EOL;
$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'),'nbLines'=>$nbEtab), "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;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Consolidation des dirigeants', $strMailInfo);
die();
?>

1257
bin/consolideEtab.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Reconsolidation de la table des téléphones/fax
Options :
-a Reconsolidation de toute la base des téléphones/fax
";
$semiManuel=$sansPropo=$toutes=$index=false;
$mInsee=new MInsee();
$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 'p':
$sansPropo=true;
break;
case 'a':
$toutes=true;
break;
case 'i':
$index=trim(substr($argv[$i],3));
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de SIRENAGE des annonces mal sirenés du BODACC...".EOL;
$pertinence=false;
$nbRep=30;
$siege=0;
$tabTables=array(
/* array('db'=>'sugarcrm', 'table'=>'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('db'=>'jo', 'table'=>'bodacc_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren',
'champRS'=>'CONCAT(raisonSociale," ",nomCommercial," ",enseigne)',
'champAdresse'=>'adrLibVoie',
'champCP'=>'codePostal',
'champVille'=>'ville',
'champSiren'=>'b.siren',
'champNic'=>'nic',
'champSirenValide'=>'sirenValide',
'champNicValide'=>'nicValide'),
/* array('db'=>'sdv1', 'table'=>'sirenage', 'champRS'=>'concat( RAISON_SOCIALE , \' \' , RAISON_SOCIALE2 )',//REF NIC RAISON_SOCIALE2 ADRESSE2 NUM_VOIE ADRESSE3
'champAdresse'=>'ADRESSE',
'champCP'=>'CP',
'champVille'=>'VILLE',
'champSiren'=>'SIREN',
'champSirenValide'=>'SIREN'),*/
);
$iDbSel=new WDB('jo');
$iDbMaj=new WDB('insee');
echo date ('Y/m/d - H:i:s')." - DEBUT de la mise à jour des TEL/FAX des entreprises...".EOL;
$strDate=' AND dateUpdate>DATE_SUB(NOW(), INTERVAL 2 DAY) ';
if ($toutes)
$strDate='';
$nbTel=$iDbSel->select('infos_entrep', 'siren, tel, fax',"siren>1000 AND (tel<>'' OR fax<>'') $strDate", false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbTel lignes de TEL/FAX à mettre à jour...".EOL;
$nbAvecMaj=$nbSansMaj=$nbErr=0;
while ($tabTel=$iDbSel->fetch(MYSQL_ASSOC)) {
$siren=$tabTel['siren'];
$tel=trim(strtr($tabTel['tel'], array('.'=>'', ' '=>'', '-'=>'')));
$fax=trim(strtr($tabTel['fax'], array('.'=>'', ' '=>'', '-'=>'')));
$tabTmp=$iDbMaj->select('identite', 'id, SIREN, NIC, ACTIF, SIEGE, TEL, FAX',"SIREN=$siren ORDER BY SIEGE DESC, ACTIF DESC LIMIT 0,1", false, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$tabUpdate=array();
$etab=$tabTmp[0];
$id=$etab['id'];
$telPrev=$etab['TEL'];
$faxPrev=$etab['FAX'];
if ($telPrev=='' && $tel<>'') $tabUpdate['TEL']=$tel;
if ($faxPrev=='' && $fax<>'') $tabUpdate['FAX']=$fax;
if (count($tabUpdate)>0) {
$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++;
}
else {
$nbSansMaj++;
// echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : PAS de mise à jour".EOL;
}
} else {
echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : Pas de fiche identite !".EOL;
$nbErr++;
// die();
}
/*print_r($tabTel);
print_r($tabTmp);
die();*/
}
echo date ('Y/m/d - H:i:s')." - FIN de la mise à jour des TEL/FAX des entreprises ($nbAvecMaj MAJ/$nbTel avec $nbErr erreurs).".EOL;
die();
?>

280
bin/convertSdCsv.php Normal file
View File

@ -0,0 +1,280 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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 d'un flux surveillance/diffusion Bodacc S&D en fichier CSV.
Options :
-v Mode verbose
-n Ajout des nics A6CMO
-x Formater la sortie standard en CSV pour exploitation
";
$tabFichier=array();
$verbose=false;
$sortieCSV=false;
$ajoutNic=false;
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
/*case 'i':
$incrementationDesTour=false;
break;
case 's':
$typePrestaton='surveillanceBodacc';
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);
$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);
foreach ($tabFichier as $iFic=>$fichier) {
$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($fichier);
$fp=fopen($fichier.'.csv', 'w');
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
$ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
$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
$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
$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, $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL;
die();
?>

602
bin/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();
?>

448
bin/convertSdFBoissons.php Normal file
View File

@ -0,0 +1,448 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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,christian.tesson@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,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges
'SJ0C'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ0D'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ06'=>'fb.bn.contentieux@heineken.fr,angelique.thomas@france-boissons.fr,christian.tesson@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,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ00'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr
'SJ08'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr',
'SJ09'=>'fb.bn.contentieux@heineken.fr,denise.gillard@france-boissons.fr,christian.tesson@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',
'BO0L'=>'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',
);
/**
* @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(PROD_PATH);
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(PROD_PATH.$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(PROD_PATH.$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(PROD_PATH.$nomFichier."-$ref.csv", REP_TEMP.'Sed_FBoissons_'.date('Ymd')."_$ref.csv");
@move(PROD_PATH.$nomFichier."-$ref.csv", CLIENTS_PATH.'/france boissons/'.$nomFichier."-$ref.csv");
$tabAttached=array(REP_TEMP.'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(REP_TEMP.'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(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) {
unlink(PROD_PATH.$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();
?>

322
bin/convertSdRecordati.php Normal file
View File

@ -0,0 +1,322 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
/**
* @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();
$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(PROD_PATH);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,34)=='diffusionBodacc_DIFBODPRDMAIRECORD')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Recordati à traiter !".EOL);
//print_r($tabFichier);
//die();
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichier =$tabFichier[$iFic];
$ligne001=$ligne100=$ligne104=$ligne999=0;
$tabLignes=file(PROD_PATH.$nomFichier);
$fp=fopen(PROD_PATH.$nomFichier.'.csv', 'w');
$message='';
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
$idannPre ='Identifiant Annonce';
$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';
$inter ='Acheteur/Vendeur';
$sirenV ='Siren Vendeur';
$raisonSV='Nom Vendeur';
$sirenA ='Siren Acheteur';
$raisonSA='Nom Acheteur';
$adresseFond='Adresse du fond';
$montantVente='Montant de la vente';
$deviseVente='Devise';
$dateVente='Date de la vente';
$opposition=$txtAnn='Opposition';
$ligne001++;
break;
case 100: // Structure Bodacc
/*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */
$ligne100++;
$idann = substr($ligne, 3 , 10 )*1; // Id interne de l'annonce S&D
if ($idannPre<>$idann) {
/** Recherche de l'oppositions
**/
if (preg_match('/Oppositions(?: )\:(.*)(?:Commentaires|\.$)/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
/** Rechercher du montant de la vente
**/
if (preg_match("/(?:prix|montant|indémni|indemni|évalu|evalu|éstim|estim)\D{1,15}([0-9\.,\?\s ]*)(?:eur|euro|euros)/i", $txtAnn, $matches)) {
$montantVente=''.trim($matches[1]);
echo "Montant de la vente AV: $montantVente\n";
if (substr($montantVente,-3,1)==',') {
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI1\n";
}
elseif (substr($montantVente,-3,1)=='.') {
echo "'".substr($montantVente,-3,3)."'\n";
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI2\n";
}
$montantVente=strtr($montantVente,array('.'=>'',','=>'',' '=>''));
$deviseVente='EUR';
//echo "Montant de la vente AP: $montantVente\n";
}
/** Recherche de la date de la vente
**/
if ($dateVente=='00/00/0000') {
if (preg_match_all("/([0-9].{1,3})(janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre).{1,2}([0-9]{4,4})/i", $txtAnn, $matches)) {
//print_r($matches);
//echo "Date de la vente : $dateVente\n";
$dateVente=end($matches[0]);
//die($txtAnn);
}
}
if ($catEven=='procol') {
$adresseFond=$adresse;
if (preg_match('/Complément de jugement(?: )\:(.*)$/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
else
$opposition='';
}
$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;
}
$codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc
$libTri=$iBodacc->getTribunalNom($codeTri);
$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='';
$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,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);
if (bzip2(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) {
unlink(PROD_PATH.$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();
?>

820
bin/convertSdSofid.php Normal file
View File

@ -0,0 +1,820 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
define('DIR_SOFID_IN', '/home/data/ftp/sofid ste fire de developpement/recv/');
define('DIR_SOFID_OUT', '/home/data/ftp/sofid/recv/');
$tabEvenSolib=array(10=>'CR',
11=>'CR',
13=>'CR',
14=>'CR',
15=>'CR',
16=>'CR',
17=>'CR',
18=>'CR',
19=>'CR',
20=>'VT',
21=>'VT',
22=>'VT',
24=>'VT',
25=>'VT',
30=>'CE',
31=>'ME',
32=>'ME',
33=>'ME',
34=>'ME',
35=>'Rec',
36=>'MAF',
37=>'LG',
38=>'LG',
39=>'MD',
40=>'RD',
41=>'DIS',
42=>'FLG',
51=>'RJ',
52=>'RJ',
53=>'RA',
56=>'PIE',
57=>'SAUVJ',
58=>'SAUVP',
59=>'RR',
60=>'R&L',
61=>'LB',
62=>'LJ',
63=>'FP',
64=>'INT',
65=>'LQ',
69=>'RL',
70=>'Suite',
71=>'SRJ',
72=>'SRLJ',
73=>'SP',
74=>'AP',
75=>'MP',
76=>'EP',
77=>'PRO',
78=>'DC',
79=>'CIA',
80=>'INFR');
$tabEven2SO=array( // PROCOL
1010=>92, // Déclaration de cessation de paiement
1050=>70, // Homologation de la conciliation
1055=>70, // Résolution de la conciliation
1100=>57, // Jugement de sauvegarde
1101=>58, // Plan de sauvegarde
1200=>52, // Redressement Judiciaire
1201=>52, // Conversion sauvegarde en Redressement Judiciaire
1202=>75, // Renouv. Periode Observation
1203=>78, // Avis de dépot de l'état de collocation
1204=>78, // Dépôt des créances
1205=>78,
1206=>78,
1207=>53, // Règlemement amiable
1208=>78,
1209=>51, // Règlement Judiciaire
1210=>77, // Production
1211=>52, // Redressement Judiciaire par extension au(x) gérant(s)
1212=>69, // Rectif ou Annul.LJ
1214=>78, // Avis de dépôt de l'état des créances (Loi de 1985)
1215=>70, // Jugement de désignation des organes de la procédure
1216=>78, // Autre avis de dépôt
1300=>62, // Conversion Redressement Judiciaire en Liquidation
1301=>62, // Ouverture Liquidation Judiciaire
1302=>66, // Ouverture Liquidation Judiciaire Simplifiée
1303=>62, // Ouverture Liquidation Judiciaire sur résolution
1304=>62, // Réouverture Liquidation Judiciaire
1305=>62, // Liquidation Judiciaire
1306=>66, // Liquidation Judiciaire simplifiée
1307=>62, // Conversion sauvegarde en Liquidation Judiciaire
1308=>62, // Fin du régime de Liquidation Judiciaire Simplifiée
1309=>62, // Conversion Liquidation Judiciaire en Liquidation
1310=>56, // Procédure d'Insolvabilité Européenne
1311=>62, // Liquidation Judiciaire par extension au(x) gérants
1312=>62, // Liquidation Judiciaire avec continuation d'exploitation
1313=>62, // Liquidation Judiciaire sans remise des accessoires
1346=>70, // Procédure d'insolvabilité (Règlement 1346/2000 du Conseil Européen)
1400=>70, // Nomination d'un administrateur judiciaire
1401=>70, // Nomination d'un mandataire judiciaire
1402=>70, // Nomination d'un représentant des créanciers
1403=>70, // Nominnation/Remplacement de commissaire à l'exécution du plan
1404=>70, // Prolongement de la mission du commissaire à l'exécution du plan
1405=>70, // Nomination d'un juge commissaire
1406=>70, // Changement de SYNDIC
1407=>75, // Modif. de Plan
1408=>75, // Modification du plan de cession
1409=>75, // Modif. de de continuation
1410=>75, // Suite de jugement/règlement/liquidation
1411=>75, // Arrêt du plan de cession
1412=>75, // Arrêt du plan de cession partielle
1413=>75, // Arrêt du plan de continuation
1414=>75, // Arrêt du plan de redressement
1415=>75, // Prolongement du plan cession
1416=>75, // Jugement constatant la bonne exécution du plan
1417=>62, // Jugement d'extension de liquidation judiciaire
1418=>52, // Jugement d'extension d'une procédure de redressement judiciaire
1419=>57, // Jugement d'extension d'une procédure de sauvegarde
1420=>70, // Nomination d'un liquidateur judiciaire
1421=>70, // Jugement prorogeant le plan de redressement
1425=>70, // Plan de cession avec location gérance
1430=>70, // Jugement autorisant la poursuite d'activité
1431=>70, // Jugement de cessation partielle d'activité
1435=>70, // Suspension de l'exécution provisoire
1436=>70, // Suspension provisoire des poursuites
1440=>70, // Jugement accordant un délai pour déposer la liste des créances
1445=>70, // Concordat
1450=>92, //Cessation paiement
1455=>70, // Jugement arrêtant le plan d'apurement du passif
1460=>70, // Homologation du plan
1470=>70, // Fin de mission d'administrateur judiciaire
1480=>70, // Jugement ordonnant la jonction des procédures
1500=>79, // Clôture de la procédure
1501=>79, // Clôture de la procédure après cession totale
1502=>76, // Clôture de la procédure pour extinction du passif
1503=>79, // Cloture insuf.Actif
1504=>79, // Clôture sauvegarde pour absence de projet de plan
1505=>74, // Appel de jugement
1506=>59, // Rectif ou Annulation RJ
1507=>74, // Appel de jugement
1508=>70, // Extinction du plan de sauvegarde
1509=>70, // Extinction du plan de redressement
1510=>74, // Rejet du plan
1511=>70, // Résolution du plan de cession
1512=>70, // Résolution du plan de continuation
1513=>70, // Résolution du plan de sauvegarde
1515=>74, // Arrêt divers
1517=>59, // Rectification d'une erreur matérielle
1520=>70, // Ordonnance
1525=>74, // Appel du ministère public
1530=>70, // Jugement constatant l'impécuniosité de la procédure de liquidation
1540=>70, // Ordonnance statuant sur les contestations du projet de répartition
1541=>74, // Rétractation de prononcé de liquidation judiciaire sur tierce opposition
1542=>74, // Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition
1543=>74, // Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition
1544=>74, // Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition
1545=>74, // Rétractation de jugement d'ouverture sur tierce opposition
1546=>74, // Autre rétractation sur tierce opposition
1550=>70, // Suites de jugements
1580=>70, // Jugement prononçant la continuation de l'activité par apurement du passif
1600=>63, // Faillite personnelle
1601=>64, // Interdiction de gérer
1602=>70, // Jugement de réhabilitation
1603=>61, // Liquidation de Biens
1604=>80, // Banqueroute
1605=>70, // Jugement autorisant la reprise des poursuites individuelles
1610=>80, // Faillite personnelle (Loi de 1985)
1611=>80, // Interdiction de gérer (Loi de 1985)
1620=>70, // Jugement condamnant le dirigeant en comblement du passif
1650=>80, // Rétablissement Personnel
1700=>70, // Décision soumise à publicité
1900=>80, // Interdiction temporaire d'exercice de la profession de CAC
1901=>80, // Radiation de la liste des CAC
1999=>70, // Autre procédure collective
// MMD
2000=>40, // Mention d'office
2100=>39, // Chg.Capital/Cess.apport de parts
2101=>39, // Chg.Capital/Cess.apport de parts
2102=>39, // Chg.Capital/Cess.apport de parts
2200=>40, // Cessation d'activité
2201=>40, // Cessation d'activité temporaire
2202=>41, // Dissolution
2203=>41, // Dissolution de la société
2204=>41, // Cessation d'activité avec dissolution
2205=>40, // Fermeture du fonds
2206=>39, // Mise en sommeil de la société
2207=>39, // Suppression d'une branche d'activité
2208=>39, // Suppression de l'établissement principal
2209=>39, // Vente du fonds
2210=>39, // Déclaration de dissolution par l'associé unique.
2211=>39, // Clôture de la liquidation
2212=>39, // Liquidation amiable
2300=>39, // Changement d'Adresse
2301=>39, // Modification de l'adresse du siège
2302=>39, // Modification de l'enseigne
2303=>39, // Modification de la date de clôture de l'exercice
2304=>39, // Modification de la date de début d'activité
2305=>39, // Modification de la dénomination
2306=>39, // Modification de la durée de la société
2307=>39, // Modification de la forme juridique
2308=>39, // Modification du nom
2309=>39, // Modification du nom commercial
2310=>39, // Modification du pseudonyme
2311=>39, // Modification sur l'exploitation
2312=>39, // Modification(s) diverse(s)
2313=>39, // Modification de l'activité
2314=>39, // Poursuite de l'activité
2315=>39, // Modification de l'administration
2316=>39, // Mise en activité de la société
2317=>39, // Modification du sigle
2318=>39, // Modifications diverses
2319=>39, // Poursuite de l'activité malgré la perte de plus de...
2320=>39, // Reconsitution de l'actif net
2321=>39, // Reconsitution de la moitié de l'actif net
2350=>39, // Déclaration des associés (loi du 1er février 2005)
2401=>39, // Changement de régime matrimonial
2402=>39, // Changement de régime matrimonial (divorce)
2403=>39, // Changement de régime matrimonial (mariage)
2404=>39, // Changement de régime matrimonial (veuvage)
2405=>39, // Changement de régime matrimonial (contrat de maria...
2406=>39, // Reprise du fonds par le conjoint
2407=>39, // Mention du conjoint collaborateur
2408=>39, // Radiation du conjoint collaborateur
2500=>30, // Confirmation établissement principal ou secondaire
2510=>39, // L'établissement secondaire devient principal
2520=>39, // Extension de l'établissement principal
2600=>39, // Décès
2610=>39, // Décision de l'unique actionnaire
2620=>39, // Transmission universelle du patrimoine
2630=>39, // Donation/Partage
2635=>39, // Cession de parts
2639=>39, // Nantissement de parts sociales
2640=>39, // Changement de domicile personnel
2650=>39, // Changement de nationalité
2660=>39, // Réalisation de l'apport partiel d'actif
2661=>39, // Apport partiel
2700=>39, // Fusion/Absorption (entitée absorbante)
2701=>39, // Fusion/Absorption (Entitée absorbante. Entité abso...
2702=>39, // Fusion/Absorption (Entitée absorbante. Entité abso...
2703=>39, // Fusion/Absorption (Entitée absorbante. Entité abso...
2710=>39, // Projet de fusion (entitée absorbante)
2720=>39, // Fusion/Absorption (entitée absorbée)
2721=>39, // Fusion/Absorption (entitée absorbée non identifiée...
2725=>39, // Fusion/Absorption
2726=>39, // Projet de Fusion/Absorption
2730=>39, // Projet de fusion (entitée absorbée)
2740=>39, // Scission
2750=>39, // Société participation
2800=>37, // Location gérance reçue
2840=>38, // Location/Gérance
2850=>38, // Location gérance donnée : Précédent propriétaire e...
2851=>38, // Location gérance donnée : Précédent propriétaire
2860=>38, // Location gérance donnée : Précédent exploitant
2870=>38, // Location gérance donnée
2875=>38, // Gérance/Mandat
2880=>38, // Renouvellement de location gérance
2881=>38, // Changement de location gérance
2885=>42, // Fin de location gérance
2890=>38, // Location gérance relative à une branche
2891=>39, // Location gérance relative à un établissement
2892=>39, // Location gérance relative à un fond
2900=>32, // Transfert d'établissement
2901=>32, // Transfert de siège
2902=>32, // Transfert du fonds
2903=>32, // Projet de transfert du siège
2904=>32, // Transfert du siège à l'étranger
2950=>32, // Création de fonds
2980=>32, // Transfert entre tribunaux
// DEPOTS DES COMPTES
3100=>91,
3200=>91,
3300=>91,
3999=>91,
// CREATIONS
4000=>10, // Création d'entreprise
4050=>10, // Création d'entreprise sans activité
4100=>10, // Création d'entreprise sans établissement
4200=>17, // Création d'établissement
4250=>17, // Création suite à transfert
4300=>17, // Création suite à reprise d'activité
4350=>10, // Création suite à fin de location-gérance
4355=>10, // Création suite à prise en location-gérance
4360=>10, // Reprise d'activité par suite de la résolution de v
4400=>10, // Création suite à changement de FJ
4410=>10, // Création suite à héritage ou donation
4450=>10, // Création suite à reprise par le conjoint
4500=>17, // Fonds acquis dans le cadre d'une PC
4501=>17, // Fonds acquis par achat
4502=>17, // Fonds acquis par apport
4600=>10, // Immatriculation d'une société de droit européen
4999=>10, // Création
// ventes !!!
5500=>20, // Entreprise réalisant la vente
5501=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5502=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5503=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5510=>20, // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00
5600=>20, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00
5650=>20,
5700=>20, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00
5999=>20,
// RADIATIONS
6000=>40, //Radiation pour cause de clôture de la liquidation (amiable/simplifié/général)
6001=>40, //Radiation pour cause de clôture de la liquidation amiable
6002=>40, //Radiation pour cause de clôture de la liquidation judiciaire pour IA
6003=>40, //Radiation pour cause de clôture de la liquidation judiciaire
6004=>40, //Radiation pour cause de clôture de la liquidation judiciaire simplifié
6005=>40, //Radiation pour clôture du plan de cession
6100=>40, //Radiation pour cause de décès
6200=>40, //Radiation pour cause de mention d'office
6201=>40, //Radiation pour cause de cessation d'activité
6300=>40, //Radiation pour cause de non-exercice
6400=>40, //Radiation pour cause de transfert
6500=>40, //Radiation pour cause de jugement de clôture du plan de cession
6600=>40, //Radiation d'un établissement
6700=>40, //Radiation
);
$tabEven2RO=array( 2305=>'a',
2308=>'a', // Chg de dénomination(RS,Ens,Sigle)
2309=>'a', // Modification du nom commercial BODB mmd 12 0000-00-00 00:00:00
2310=>'a', // Modification du pseudonyme
2300=>'b', // Changement d'Adresse
2301=>'b',
2900=>'b', // Transfert d'établissement
2901=>'b', // Transfert de siège
2902=>'b', // Transfert du fonds
2903=>'b', // Projet de transfert du siège
2904=>'b', // Transfert du siège à l'étranger
2950=>'b', // Création de fonds
2980=>'b', // Transfert entre tribunaux
2101=>'c', // Chg.Capital/Cess.apport de parts
2315=>'d', // Changement de Dirigeants
2313=>'e', // Mod Act/obj.soc./Cess./Mise somm.
2307=>'f', // Changement de Forme juridique
2318=>'g', // Opération sur Participations
2725=>'h', // Fusion Absorption
2318=>'i', // Mod.garantie financière/Caution
2401=>'j', // Changement de régime matrimonial
2319=>'k', // Non dissolution anticipée
2318=>'l', // Non dissolution anticipée
2318=>'m', // Dissolution anticipée (ou non)
2303=>'n', // Mod.date cloture exercice social
5500=>'V', // Entreprise réalisant la vente
5501=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5502=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5503=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00
5510=>'V', // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00
5600=>'V',
5650=>'V',
5700=>'A', // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00
1411=>'F', // Arrêt du plan de cession
1408=>'G', // Modification du plan de cession
1409=>'N', // Modification du plan de continuation
1414=>'M', // Arrêt du plan de redressement
);
function exporte($txt, $lon, $sep='') {
$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;
}
/**
* @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(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iBodacc=new MBodacc();
$iInsee=new MInsee();
$iRncs=new MRncs();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier SO2000.
";/*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=array();
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
/*case 'i':
$incrementationDesTour=false;
break;
case 's':
$typePrestaton='surveillanceBodacc';
break;
case 'd':
$typePrestaton='diffusionBodacc';
break;
case 'e':
$ignoreDateDerExec=true;
break;*/
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir(DIR_SOFID_IN);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,37)=='surveillanceBodacc_SURBODPRDFTSSOFID_')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Kronenbourg Sofid à traiter !".EOL);
$message='';
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichierIn=$tabFichier[$iFic];
$tabLignes=file(DIR_SOFID_IN.$nomFichierIn);
$ligne001=$ligne100=$ligne104=$ligne999=0;
$nomFichierOut='kro800'.substr($nomFichierIn, 37,-4).'.fic';
$fp=fopen(DIR_SOFID_OUT.$nomFichierOut, 'w');
$dateJ=date('Ymd');
$ecrireLignePre=false;
/** Codes/Variables à gérer **/
$depPar=0;
$SOSTAE='';
foreach ($tabLignes as $i=>$ligne) {
$typeLigne=substr($ligne, 0, 3)*1;
switch ($typeLigne) {
case 1: // Ligne ignorée
// Ecriture de l'entête
$ligne001++;
break;
case 100: // Structure Bodacc
case 999: // Fin
$strTxt=wordwrap($txtAnn, 39, EOL);
$tabTxt=explode(EOL, $strTxt);
foreach($tabTxt as $j=>$txt) {
$SOSEQ++;
if($j%16==0) {
// Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce
$typEnr=9;
if ($j==0) $ligneTXT =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ?
else $ligneTXT.=EOL.initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ?
$ligneTXT.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ?
$ligneTXT.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ?
$ligneTXT.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ?
$ligneTXT.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren
$ligneTXT.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic
$ligneTXT.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ
$ligneTXT.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence
$ligneTXT.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence
$ligneTXT.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce
$ligneTXT.=exporte('TXT', 3); // Structure identité
$ligneTXT.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle
$ligneTXT.=exporte($ref, 30); // Réf. Client
$ligneTXT.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié
$ligneTXT.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C
$ligneTXT.=exporte($datePar, 8); // Date de parution
$ligneTXT.=initstr(0, 5, '0', ALIGN_RIGHT); // Page
$ligneTXT.=exporte($codeEve, 2); //
$ligneTXT.=initstr($depPar, 2, '0', ALIGN_RIGHT);
$ligneTXT.=initstr($numAnn, 6, '0', ALIGN_RIGHT);
$ligneTXT.=exporte($codeRol, 1); //
$ligneTXT.=exporte('T', 1);
}
$ligneTXT.=exporte($txt, 40);
}
$codeEve=$codeRol='';
$ligneOut=$ligneID.EOL.$ligneANN.EOL.$ligneTXT;
if ($ligne100>1) $ecrireLignePre=true;
if($typeLigne==999) {
$ligne999++;
break;
}
$nann = trim(substr($ligne, 3 , 10 ))*1; // N° d'annonce
$siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce
$tabIdentite=@$iInsee->getIdentiteEntreprise($siren);
$nic = trim(substr($ligne, 22, 5 ))*1; // 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= 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
$numRC = trim(substr($ligne,95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise
$rs = trim(substr($ligne,104, 150 )); // Raison sociale de l'entreprise
$nomCom = trim(substr($ligne,254, 100 )); // Nom Commerciale
$ens = trim(substr($ligne,354, 100 )); // Enseigne
$fj = trim(substr($ligne,484, 4 ))*1; // FJ
$fjLib = trim(substr($ligne,488, 90 )); // FJ libellé
$capMnt = trim(substr($ligne,578, 15 )); // Capital
$capDev = trim(substr($ligne,593, 3 )); // Capital Devise
$adrNum = trim(substr($ligne,596, 4 )); //
$adrBtq = trim(substr($ligne,600, 1 )); // FJ libellé
$adrVoi = trim(substr($ligne,601, 5 )); // FJ libellé
$adrLib = trim(substr($ligne,606, 50 )); // FJ libellé
$adrL2 = trim(substr($ligne,656, 50 )); // FJ libellé
$adrL3 = trim(substr($ligne,706, 40 )); // FJ libellé
$adrCP = trim(substr($ligne,746, 5 ))*1; // FJ libellé
$adrVil = trim(substr($ligne,751, 45 )); // FJ libellé
if ($adrCP==0) {
$adrNum = trim(substr($ligne,796, 4 )); // FJ libellé
$adrBtq = trim(substr($ligne,800, 1 )); // FJ libellé
$adrVoi = trim(substr($ligne,801, 5 )); // FJ libellé
$adrLib = trim(substr($ligne,806, 50 )); // FJ libellé
$adrL2 = trim(substr($ligne,856, 50 )); // FJ libellé
$adrL3 = trim(substr($ligne,906, 40 )); // FJ libellé
$adrCP = trim(substr($ligne,946, 5 ))*1; // FJ libellé
$adrVil = trim(substr($ligne,951, 45 )); // FJ libellé
}
$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) {
if (@$codeEve=='') $codeEve=$tabEven2SO[$codeEven];
if (@$codeRol=='') $codeRol=$tabEven2RO[$codeEven];
$txtEven.=$iBodacc->getEvenement($codeEven).', ';
$catEven=$iBodacc->getChapitreEvenement($codeEven);
}
else
$txtEven.='';
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$dateCess= substr($ligne, 1136, 8 ); // Date de cessat° des paiements
$dateJuge= substr($ligne, 1144, 8 ); // Date de jugement
$dateEffet=substr($ligne, 1161, 8 ); // Date d'effet
if ($dateEffet*1==0) $dateEffet=$dateJuge;
$vteMnt=substr($ligne, 1169, 15 ); // Montant de la vente
$vteDev=substr($ligne, 1184, 3 ); // Devise de la vente
if ($nic*1==0) $nic=$tabIdentite['Nic'];
$SONABO='000960030';
if ($tabIdentite['Actif']==1) $SOORIG=1;
elseif (!isset($tabIdentite['Actif'])) $SOORIG=3;
elseif ($tabIdentite['Actif']==0 && ($tabIdentite['EntActiveRCS']==1||$tabIdentite['EtabActifRCS']==1)) $SOORIG=7;
elseif ($tabIdentite['Actif']==0 && $tabIdentite['EntActiveRCS']==0 && $tabIdentite['EtabActifRCS']==0) $SOORIG=9;
else $SOORIG=8;
if ($tabIdentite['Civilite']==1) $SOTSEX='M';
elseif ($tabIdentite['Civilite']==2) $SOTSEX='F';
else $SOTSEX='';
$SONUME=''.preg_replace('/^0+/','', $tabIdentite['Source']).$tabIdentite['SourceId'];
$SONUS='000000000';
$SOSEQ=1;
if ($adrCP==0) {
$adrNum = $tabIdentite['AdresseNum'];
$adrBtq = $tabIdentite['AdresseBtq'];
$adrVoi = $tabIdentite['AdresseVoie'];
$adrLib = $tabIdentite['AdresseRue'];
$adrL2 = $tabIdentite['Adresse2'];
$adrL3 = '';
$adrCP = $tabIdentite['CP'];
$adrVil = $tabIdentite['Ville'];
}
$typEnr=1;
$DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ?
$DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ?
$DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ?
$DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ?
$DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren
$DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic
$DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ
$DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence
$DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence
$DBILS2.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce
$DBILS2.=exporte('ID', 3); // Structure identité
$DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle
$DBILS2.=exporte($ref, 30); // Réf. Client
//($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT)
$DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié
$DBILS2.=exporte('', 1); // D=Siren douteux
$DBILS2.=initstr('', 9); // Témoin de MAJ
$DBILS2.=exporte($rs, 60); //
$DBILS2.=exporte(substr($rs,60),30); //
$DBILS2.=exporte($tabIdentite['Sigle'], 30); // Vide !
$DBILS2.=exporte($ens, 60); //
$DBILS2.=initstr($adrNum, 4, '0', ALIGN_RIGHT); //
$DBILS2.=exporte($adrBtq, 1); //
$DBILS2.=exporte(preg_replace('/ +/',' ',$adrVoi.' '.$adrLib), 33); //
$DBILS2.=exporte($adrVil, 32); //
$DBILS2.=initstr($adrCP, 5, '0', ALIGN_RIGHT); //
$DBILS2.=exporte(preg_replace('/ +/',' ',$adrL2.' '.$adrL3), 30); //
$DBILS2.=exporte($tabIdentite['DateCreaEn'], 8); // Date créa ENT
$DBILS2.=exporte($tabIdentite['Siege'], 1); // Statut de l'établissement
$DBILS2.=initstr($tabIdentite['FJ'], 4, 0, ALIGN_RIGHT);
$DBILS2.=exporte($SOTSEX, 1); // Sexe M/F
$DBILS2.=initstr($tabIdentite['NbEtab']*1, 4, 0, ALIGN_RIGHT);
$DBILS2.=exporte($SOSTAE, 4); // NAF4 ENT
$DBILS2.=exporte('', 4); // Famille ENT
$DBILS2.=exporte($SOSTAE, 4); // NAF4 ETAB
$DBILS2.=exporte('', 4); // Famille ETAB
$DBILS2.=exporte('', 3);
$DBILS2.=initstr(0, 13, '0', ALIGN_RIGHT); // Filler A1
$DBILS2.=exporte('', 16); // Filler A2
$DBILS2.=initstr(strtr($tabIdentite['Tel'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT);
$DBILS2.=initstr(strtr($tabIdentite['Fax'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT);
//5630Z5630Z RUE 00000000 00000000 2901929019
$DBILS2.=exporte($tabIdentite['Web'], 40); //
$DBILS2.=exporte('', 63); // Filler B1
$DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2
$DBILS2.=exporte('', 79);
$DBILS2.=exporte($tabIdentite['NafEnt'], 5);
$DBILS2.=exporte($tabIdentite['NafEtab'], 5);
$DBILS2.=exporte('', 18);
$DBILS2.=exporte('', 9); // RUE ?
$DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2
$DBILS2.=exporte('', 6);
$DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2
$DBILS2.=exporte('', 20);
$DBILS2.=exporte($tabIdentite['Dept'], 2); // Département du siège
$DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité
$DBILS2.=exporte($tabIdentite['Dept'], 2); // Département de l'étab
$DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité
$DBILS2.=exporte('', 39); // Filler C
$ligneID=$DBILS2;
$ligne100++;
$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);
$SOSEQ++;
if ($bodacc=='A') $SOJAL='001';
elseif ($bodacc=='B') $SOJAL='200';
elseif ($bodacc=='C') $SOJAL='300';
else $SOJAL='999';
$DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ?
$DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ?
$DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ?
$DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ?
$DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren
$DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic
$DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ
$DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence
$DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence
$DBILS2.=exporte('9', 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce
$DBILS2.=exporte('ANN', 3); // Structure identité
$DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle
$DBILS2.=exporte($ref, 30); // Réf. Client
//($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT)
$DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié
$DBILS2.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C
$DBILS2.=exporte($datePar, 8); // Date de parution
$DBILS2.=initstr(0, 5, '0', ALIGN_RIGHT); // Page
if ($codeEve=='') {
$message.="Code évènement non géré : '$codeEven'".EOL;
sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID (ERREUR)", $message);
die($message);
}
$DBILS2.=exporte($codeEve, 2); //
$DBILS2.=initstr($depPar, 2, '0', ALIGN_RIGHT);
$DBILS2.=initstr($numAnn, 6, '0', ALIGN_RIGHT);
$DBILS2.=exporte($codeRol, 1); //
$DBILS2.=exporte($tabEvenSolib[$codeEve], 5);
$DBILS2.=exporte($codeTri, 6); //
$DBILS2.=exporte($numPar, 3); //
$DBILS2.=initstr($dateJuge, 8, '0', ALIGN_RIGHT); // Date de jugement
$DBILS2.=initstr($dateEffet, 8, '0', ALIGN_RIGHT); // Date d'effet
$DBILS2.=initstr($dateCess, 8, '0', ALIGN_RIGHT); // Date de cessat° des paiements
$DBILS2.=exporte($vteDev, 2); // Devise de la vente
$DBILS2.=initstr($vteMnt, 11, '0', ALIGN_RIGHT); // Montant de la vente
$DBILS2.=exporte('', 33); // Particularité
$DBILS2.=exporte('', 4); // Code rubrique du Bodacc A1xx
$DBILS2.=exporte('', 6); // Code lib injecté
$tabJuge=$iRncs->getIntervenants($siren);
foreach ($tabJuge as $iDepot=>$depot) {
$DBILS2.=exporte('', 5); // Mot clé Nom
$DBILS2.=exporte('', 1); // Type officier ministeriel
$DBILS2.=exporte($depot['admcode'], 7); // Code Bil
$DBILS2.=exporte($depot['admnom'], 30); // Nom syndic
$DBILS2.=exporte($depot['admadrNum'], 4); // N° rue
$DBILS2.=exporte($depot['admadrInd'], 1); // Bis
$DBILS2.=exporte('', 3); // Type Voie
$DBILS2.=exporte($depot['admadrVoie'], 33); // Lib Voie
$DBILS2.=exporte('', 32); // Lieu
$DBILS2.=exporte($depot['admadrCP'], 5); // CP
$DBILS2.=exporte($depot['admadrVille'], 32); // Ville
$DBILS2.=exporte('', 10); // Tel
if ($iDepot==1) break;
}
$ligneANN=$DBILS2;
$txtAnn='';
//if ($ligne100>1) $ecrireLignePre=true;
break;
case 104: // Annonce
$ligne104++;
$txtAnn=trim($txtAnn.' '.trim(substr($ligne, 89 , 1910))); // Texte Annonce
break;
default: // Ligne non gérée
break;
}
if ($ecrireLignePre) {
fwrite($fp, $ligneOut.EOL);
$ecrireLignePre=false;
}
}
fclose($fp);
exec(__DIR__.'/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;
}
if ($ligne100==0) {
// Le fichier est vide, on le supprime
unlink(DIR_SOFID_OUT.$nomFichierOut);
} else {
// On génère un AR de fin de transmission
file_put_contents(DIR_SOFID_OUT.str_replace('.fic','.top',$nomFichierOut),'OK');
}
}
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();
?>

446
bin/convertSdVerdoso.php Normal file
View File

@ -0,0 +1,446 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
//define('VERSION_FICHIER_BODACC','0106');
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.'scores/classMScores.php');
//include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iBodacc=new MBodacc();
$iInsee=new MInsee();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier spécifique Verdoso.
";/*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();
$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(PROD_PATH);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,35)=='diffusionBodacc_DIFBODPRDMAIVERDOSO')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Verdoso à traiter !".EOL);
//print_r($tabFichier);
//die();
$message='';
$ligne001=$ligne100=$ligne104=$ligne999=0;
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichier =$tabFichier[$iFic];
$ligne001=$ligne100=$ligne104=$ligne999=0;
$tabLignes=file(PROD_PATH.$nomFichier);
$nomFichierHebdo=PROD_PATH.'SD_Verdoso_'.date('Y\sW').'.csv';
$fp=fopen($nomFichierHebdo, 'a+');
while(!feof($fp)) {
fgets($fp,4096);
$nbLignesDeja++;
}
rewind($fp);
/*
echo "Fichier Hebdomadaire: $nomFichierHebdo".EOL;
echo "Il y a $nbLignesDeja ligne(s) dans le fichier à l'ouverture".EOL;
*/
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
$idannPre ='Identifiant Annonce';
$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';
$inter ='Acheteur/Vendeur';
$sirenV ='Siren Vendeur';
$raisonSV='Nom Vendeur';
$sirenA ='Siren Acheteur';
$raisonSA='Nom Acheteur';
$adresseFond='Adresse du fond';
$montantVente='Montant de la vente';
$deviseVente='Devise';
$dateVente='Date de la vente';
$opposition='Opposition';
$naf='NAF';
$nafLib='Libellé NAF';
$fj='Forme Jur.';
$fjLib='Libellé Forme Juridique';
$effectif='Effectif';
$typeEf="Type d'effectif";
$dateBilan='Date Bilan';
$ca="Chiffre d'affaire en ME";
$typeCa='Type CA';
$capital='Capital';
$dept='Dépt. Siège';
$annee='Année de Création';
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
if ($nbLignesDeja<2) {
fwrite($fp, $ligneOut.EOL);
}
$ligne001++;
break;
case 100: // Structure Bodacc
/*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */
$ligne100++;
$idann = substr($ligne, 3 , 10 )*1; // Id interne de l'annonce S&D
if ($idannPre<>$idann) {
/** Recherche de l'oppositions
**/
if (preg_match('/Oppositions(?: )\:(.*)(?:Commentaires|\.$)/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
/** Rechercher du montant de la vente
**/
if (preg_match("/(?:prix|montant|indémni|indemni|évalu|evalu|éstim|estim)\D{1,15}([0-9\.,\?\s ]*)(?:eur|euro|euros)/i", $txtAnn, $matches)) {
$montantVente=''.trim($matches[1]);
echo "Montant de la vente AV: $montantVente\n";
if (substr($montantVente,-3,1)==',') {
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI1\n";
}
elseif (substr($montantVente,-3,1)=='.') {
echo "'".substr($montantVente,-3,3)."'\n";
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI2\n";
}
$montantVente=strtr($montantVente,array('.'=>'',','=>'',' '=>''));
$deviseVente='EUR';
//echo "Montant de la vente AP: $montantVente\n";
}
/** Recherche de la date de la vente
**/
if ($dateVente=='00/00/0000') {
if (preg_match_all("/([0-9].{1,3})(janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre).{1,2}([0-9]{4,4})/i", $txtAnn, $matches)) {
//print_r($matches);
//echo "Date de la vente : $dateVente\n";
$dateVente=end($matches[0]);
//die($txtAnn);
}
}
if ($catEven=='procol') {
$adresseFond=$adresse;
if (preg_match('/Complément de jugement(?: )\:(.*)$/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
else
$opposition='';
}
//$ligneOut="$idannPre;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn";
if ($idannPre<>'Identifiant Annonce' && !$ignoreAnnPre) {
// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
fwrite($fp, $ligneOut.EOL);
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n";
$message.="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.="NAF : $nafLib ($naf)\r\n";
$message.="FJ : $fjLib ($fj)\r\n";
$message.="Effectif $typeEf : $effectif\r\n";
$message.="Dernier Bilan : $dateBilan\r\n";
$message.="Chiffre d'Affaire $typeCa: $ca ME\r\n";
$message.="Capital : $capital\r\n";
$message.="Département : $dept\r\n";
$message.="Année de création : $annee\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;
}
$codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc
$libTri=$iBodacc->getTribunalNom($codeTri);
$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='';
$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;
if ($sirenV>1000)
$tabIdentite=@$iInsee->getIdentiteEntreprise($sirenV,0,0,0,0);
else
$tabIdentite=array();
//getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) {
$naf=$tabIdentite['NafEnt'];
$nafLib=$tabIdentite['NafEntLib'];
$fj=$tabIdentite['FJ'];
$fjLib=$tabIdentite['FJ_lib'];
$capital=$tabIdentite['Capital'].' '.$tabIdentite['CapitalDev'];
$dept=$tabIdentite['Dept'];
$annee=substr($tabIdentite['DateCreaEt'],0,4)*1;
if ($annee>substr($tabIdentite['DateCreaEn'],0,4)*1)
$annee=substr($tabIdentite['DateCreaEn'],0,4);
if ($annee>substr($tabIdentite['dateImmat'],0,4)*1)
$annee=substr($tabIdentite['dateImmat'],0,4);
$effInsee=$tabIdentite['Effectif'];
$caInsee=$tabIdentite['TrancheCA'];
$effBilan=$tabIdentite['bilanYP'];
$caBilan=$tabIdentite['bilanFL'];
$dateBilan=str_replace('//','',WDate::dateT('Ymd','d/m/Y',$tabIdentite['bilanDate']));
if ($effBilan>0) { $effectif=$effBilan; $typeEf='Réel'; }
elseif ($effInsee>0) { $effectif=$effInsee; $typeEf='Estimé'; }
else { $effectif='N/C'; $typeEf=''; }
$caEstime=0;
if ($caInsee<5 || $tabIdentite['bilanDate']*1==0)
$caEstime=$iInsee->getCAnafEffectif($naf, $effInsee);
if ($caInsee>=5 || $caEstime>=10000000 || $caBilan>=10000000) {
if ($caBilan>0) { $ca=round($caBilan/1000000); $typeCa='Réel'; }
elseif ($caInsee==5){ $ca=10; $typeCa='Approchant'; }
elseif ($caInsee==6){ $ca=20; $typeCa='Approchant'; }
elseif ($caInsee==7){ $ca=50; $typeCa='Approchant'; }
elseif ($caInsee==8){ $ca=100; $typeCa='Approchant'; }
elseif ($caInsee==9){ $ca=200; $typeCa='Approchant'; }
else { $ca=round($caEstime/1000000); $typeCa='Estimé'; }
$ignoreAnnPre=false;
} else {
// On ignore cette ligne
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
if ($idannPre<>$idann) $ecrireLignePre=true;
else $ecrireLignePre=false;
$idannPre=$idann;
$ignoreAnnPre=true;
}
/*print_r($tabIdentite);
die();
*/
}
$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";
if ($idann<>'Identifiant Annonce' && !$ignoreAnnPre) {
//$ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
fwrite($fp, $ligneOut.EOL);
$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.="NAF : $nafLib ($naf)\r\n";
$message.="FJ : $fjLib ($fj)\r\n";
$message.="Effectif $typeEf : $effectif\r\n";
$message.="Dernier Bilan : $dateBilan\r\n";
$message.="Chiffre d'Affaire $typeCa: $ca ME\r\n";
$message.="Capital : $capital\r\n";
$message.="Département : $dept\r\n";
$message.="Année de création : $annee\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;
}
}
fclose($fp);
if (bzip2(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) {
unlink(PROD_PATH.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $nomFichier vient d'être historisé.".EOL;
}
}
if (date('w')==5) {
$tabAttached=array($nomFichierHebdo);
$messageInfo="Bonjour,
Veuillez trouver le fichier hebdomadaire des Jugements d'Ouvertures de Sauvegarde et de Redressement Judiciaire.
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";
$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);
}
}
echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL;
die();
?>

View File

@ -0,0 +1,236 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Déclanche la facturation Scores et Décisions pour le mois précédent.
";
define(REP_FACTURE, '/var/www/html/factures/');
$moisCourant=date('Y-m', mktime(0,0,0, date('m'), date('d'), date('Y')));
$moisPrecedent=date('Y-m', mktime(0,0,0, date('m')-1, date('d'), date('Y')));
//$moisPrecedent='2008-12';
$dateDeb=$moisPrecedent.'-01';
$dateFin=$moisPrecedent.'-31';
$tplt['dateFacture']=date('d/m/Y');
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de facturation pour la période $dateDeb à $dateFin...".EOL;
die('Programme déprécié !!!')
$iDb=new WDB('sdv1');
$tabTmp=$iDb->select('clients', 'id, nom, actif, test, racineLogin, siren, nic, tva, editerFacture, fact_detail, fac_dest, fac_adr1, fac_adr2, fac_adr3, fac_email, fac_tel, fact_rib, liv_dest, liv_adr1, liv_adr2, liv_adr3, liv_email, liv_tel, droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces, accesPieces, accesKbis, accesInvestigations, miseSousSurveillance, forfaitExtranetPeriode, forfaitExtranetMontant, reconductionAuto, remarque, forfaitPiecesNb, forfaitPiecesMt, forfaitPiecesDep, forfaitInvestigNb, forfaitInvestigMt, forfaitInvestigDep, tarifIndiscore', '1', false, MYSQL_ASSOC);
$tabCli=array();
foreach ($tabTmp as $tabTmp2) {
$tabCli[$tabTmp2['id']]=$tabTmp2;
}
$nbCli=count($tabCli);
echo date('Y/m/d - H:i:s') ." - Nombre de clients : $nbCli".EOL;
$tabTmp=$iDb->select('utilisateurs', 'id, idClient, actif, deleted, LOWER(login) AS login, email, typeCompte, filtre_ip, civilite, nom, prenom, raisonSociale, tel, fax, mobile', '1', false, MYSQL_ASSOC);
$tabUti=array();
foreach ($tabTmp as $tabTmp2) {
$tabUti[$tabTmp2['login']]=$tabTmp2;
}
$nbUti=count($tabUti);
echo date('Y/m/d - H:i:s') ." - Nombre d'utilisateurs : $nbUti".EOL;
/*$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', "
(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore') AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true);*/
$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', "
(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore' AND tarifIndiscore<>0) AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Nombre d'actes à facturer : $nbActes".EOL;
$loginPre=false;
$tabFacturation=$tabFacturationDet1=$tabFacturationDet2=array();
while ($tab=$iDb->fetch(MYSQL_ASSOC)) {
/** Nombre total d'actes commandés par Client et par type d'acte
**/
@$tabFacturation[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['page']]++;
/** Nombre total d'actes commandés par Client, utilisateurs et par type d'acte
**/
@$tabFacturationDet1[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']]++;
/** Facturation détaillée des actes
**/
if ($tabCli[$tabUti[$tab['login']]['idClient']]['fact_detail']=='Oui')
@$tabFacturationDet2[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']][]=
array( 'siren'=>$tab['siren'],
'params'=>$tab['params'],
'dateHeure'=>$tab['dateHeure']);
// @$tabFacturation2[$tab['login']][$tab['page']]++;
//echo $siren.' '.trim($tab['DIR_IDEN'])."\t:\t$civ Nom='$nom', Prenom='$prenom', Usage='$naissNom' né le $naissDate à $naissLieu\t";
//$loginPre=$tab['login'];
}
/*
echo "tabFacturation :\n";
print_r($tabFacturation);
echo "tabFacturationDet1 :\n";
print_r($tabFacturationDet1);
echo "$tabFacturationDet2 :\n";
print_r($tabFacturationDet2);
echo "tabCli :\n";
print_r($tabCli);
echo "tabUti :\n";
print_r($tabUti);
*/
$iFacture=0;
foreach ($tabFacturation as $idClient => $tabFacture) {
$iFacture++;
$numFacture=WDate::dateT('d/m/Y', 'Ym', $tplt['dateFacture']).sprintf("%04s", $iFacture);
$numClient = $tabCli[$idClient]['siren']."-$idClient";
$tplt['numFacture'] = $numFacture;
$tplt['numClient'] = $numClient;
$tplt['siren'] = $tabCli[$idClient]['siren'];
$tplt['nic'] = $tabCli[$idClient]['nic'];
$tplt['raisonSociale'] = $tabCli[$idClient]['nom'];
$tplt['numtva'] = $tabCli[$idClient]['tva'];
// echo 'Facturation détaillée : '.$tabCli[$idClient]['fact_detail']."\n";
// Destinataire Facturation / Signataire
$tplt['adresseFact1'] = $tabCli[$idClient]['fac_adr1'];
$tplt['adresseFact2'] = $tabCli[$idClient]['fac_adr2'];
$tplt['adresseFact3'] = $tabCli[$idClient]['fac_adr3'];
$tplt['signataireNom'] = $tabCli[$idClient]['fac_dest'];
$tplt['signataireMail'] = $tabCli[$idClient]['fac_email'];
$tplt['signataireTel'] = $tabCli[$idClient]['fac_tel'];
// Livraison / Correspondant
$tplt['adresseLiv1'] = $tabCli[$idClient]['liv_adr1'];
$tplt['adresseLiv2'] = $tabCli[$idClient]['liv_adr2'];
$tplt['adresseLiv3'] = $tabCli[$idClient]['liv_adr3'];
$tplt['correspNom'] = $tabCli[$idClient]['liv_dest'];
$tplt['correspMail'] = $tabCli[$idClient]['liv_email'];
$tplt['correspTel'] = $tabCli[$idClient]['liv_tel'];
// Non affiché
$fact_detail = $tabCli[$idClient]['fact_detail']; // Facturation détaillée
$fact_rib = $tabCli[$idClient]['fact_rib']; // RIB S&D à fournir au client
// droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces,
$accesPieces = $tabCli[$idClient]['accesPieces'];
$accesKbis = $tabCli[$idClient]['accesKbis'];
$accesInvestigations = $tabCli[$idClient]['accesInvestigations'];
$ligne=$tplt['totalht']=$tplt['remise']=$tplt['tva']=$tplt['totalttc']=0;
$tplt['ligne']=array();
/* for($i=0; $i<=10; $i++) {
$tplt['ligne'][$i]['intitule']=';
$tplt['ligne'][$ligne]['quantite']=1;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']
*/
if ($tabCli[$idClient]['forfaitExtranetPeriode']=='Mensuel') {
$tplt['ligne'][$ligne]['intitule']='Accès mensuel extranet '.WDate::dateT('d/m/Y', 'M Y', $tplt['dateFacture']);
$tplt['ligne'][$ligne]['quantite']=1;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['forfaitPiecesNb']>0) {
$tplt['ligne'][$ligne]['intitule']='Forfait '.$tabCli[$idClient]['forfaitPiecesNb'].' pièces officielles '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=1;//;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesMt'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['forfaitPiecesDep']>0) {
$nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+
@$tabFacture['inpi_rcs'] + @$tabFacture['kbis'];
$tplt['ligne'][$ligne]['intitule']='Pièces officielles hors forfait '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=$nbPiecesCommandees-$tabCli[$idClient]['forfaitPiecesNb'];
if ($tplt['ligne'][$ligne]['quantite']<0) $tplt['ligne'][$ligne]['quantite']=0;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesDep'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['tarifIndiscore']>0) {
//$nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+
// @$tabFacture['inpi_rcs'] + @$tabFacture['kbis'];
$tplt['ligne'][$ligne]['intitule']='IndiScore '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=@$tabFacture['indiscore'];
if ($tplt['ligne'][$ligne]['quantite']<=0) $tplt['ligne'][$ligne]['quantite']=0;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['tarifIndiscore'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
/*
$forfaitInvestigNb = $tabCli[$idClient]['forfaitInvestigNb'];
$forfaitInvestigMt = $tabCli[$idClient]['forfaitInvestigMt'];
$forfaitInvestigDep = $tabCli[$idClient]['forfaitInvestigDep'];
*/
$tabGlobal[$idClient]['totalht'] = $tplt['totalht'];
$tabGlobal[$idClient]['remise'] = $tplt['remise'];
$tabGlobal[$idClient]['tva'] = $tplt['tva'];
$tabGlobal[$idClient]['totalttc'] = $tplt['totalttc'];
// print_r($tabFacture);
if ($tplt['totalht']>0 && $tabCli[$idClient]['editerFacture']=='Oui') {
@mkdir(REP_FACTURE.$moisCourant);
$fp=fopen(REP_FACTURE.$moisCourant.'/'.$numFacture.'.html', 'w');
fwrite($fp, get_include_contents('/var/www/batch/factures/facture.php', $tplt));
fclose($fp);
$iFactureAff=$iFacture;
} else {
// On n'édite pas de facture à 0
$iFactureAff='-';
$iFacture--;
}
echo "Facture n°$iFactureAff - ".$tabCli[$idClient]['nom']." ($numClient) : ".$tplt['totalht']."€HT\n";
}
echo date('Y/m/d - H:i:s') ." - FIN du programme de facturation pour la période $dateDeb à $dateFin...".EOL;
die();
function get_include_contents($filename, $tplt) {
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
return false;
}
?>

1752
bin/diffusionBodacc.php Normal file

File diff suppressed because it is too large Load Diff

99
bin/diffusionCegedim.php Normal file
View File

@ -0,0 +1,99 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
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,suivi@scores-decisions.com,ylenaour@scores-decisions.com';
//$mailTo='ylenaour@scores-decisions.com';
$nomFichier=REP_TEMP.'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();
?>

362
bin/diffusionEntrep.php Normal file
View File

@ -0,0 +1,362 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
function exporte($txt, $lon, $sep="\t") {
$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;
}
function choixAdr($bodEtab, $bodSiege, $insee) {
if (strlen(trim($bodSiege))>0) $adr=trim($bodSiege);
elseif (strlen(trim($bodEtab))>0) $adr=trim($bodEtab);
else $adr='';
if (isset($insee) && trim($insee)<>'') return $insee;
else return $adr;
}
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.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'partenaires/classMLiens.php');
include_once(INCLUDE_PATH.'scores/classMFinancier.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
include_once(FWK_PATH.'mail/sendMail.php');
$siretReprise=0;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Mise à jour des champs complexes de la table 'etablissement_act' et génération du fichier spécifique Véolia.
Options :
-r:SIRET Reprendre après ce siret
-v Verbosité maximum
";
$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 'r':
$siretReprise=substr($argv[$i],3,strlen($argv[$i])-3);
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iInsee=new MInsee();
/** Chargement des depCom des communes ayant au moins une adresse de domiciliation **/
$tabComDom=array();
$nbRows=$iDb->select('tabAdrDom', 'depComEt', '(enActif=1 OR etActif=1) AND nbEntrep>30 AND pasEntrepDom=0 AND siren>1000 GROUP BY depComEt', false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbRows communes avec des adresses de domiciliation...".EOL;
while($tabCom=$iDb->fetch(MYSQL_ASSOC))
$tabComDom['_'.$tabCom['depComEt']]=1;
$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";
$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, 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_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(CLIENTS_PATH.'veolia/veolia_'.date('Ymd').'.txt','w');
for ($iLimit=0; $iLimit<$nbRowsTot; $iLimit+=$iLimitNb) {
$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;
$numRow=$sirenPre=0;
$tabTva=array();
$anneeEstime=date('Y')-2;
$clotureEstime=$anneeEstime.'-12-31';
$clotureEstimeYmd=$anneeEstime.'1231';
$tabSirenVisites=array();
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
$numRow++;
$siren=$entrep['siren'];
$nic=$entrep['nic'];
$siret=$siren.$nic;
// Ne prendre que les siren passés en paramètre ?
//if (!in_array($siret, $tabSiret)) continue;
// Reprendre que à partir du siret...
if ($siret*1<$siretReprise) continue;
//if ($entrep['bilType']<>'R') continue;
$strOutput =exporte("A", 1);
$strOutput.=$entrep['source'].exporte(sprintf("%010s", $entrep['source_id']), 10);
$strOutput.=exporte(sprintf("%09s", $entrep['siren']), 9);
$strOutput.=exporte(sprintf("%05s", $entrep['nic']), 5);
$strOutput.=exporte($entrep['enseigne'], 40);
$strOutput.=exporte($entrep['sigle'], 20);
$strOutput.=exporte($entrep['raisonSociale'], 32);
$strOutput.=exporte(substr($entrep['raisonSociale'],32), 32);
$strOutput.=exporte($entrep['distSP'], 32); // ENTREE BATIMENT RESIDENCE
$adresse=$entrep['adr_num']*1;
if ($adresse==0) $adresse='';
else $adresse.=' ';
$adresse.=trim(preg_replace('/ +/', ' ', $entrep['adr_btq'].' '.$entrep['adr_typeVoie'].' '.$entrep['adr_libVoie']));
$strOutput.=exporte($adresse, 32);
$strOutput.=exporte($entrep['adr_comp'], 32);
$strOutput.=exporte(sprintf("%05s",$entrep['adr_cp']), 6);
$strOutput.=exporte($entrep['adr_ville'], 32);
$strOutput.=exporte($entrep['achPost'], 32); // CEDEX
if (strtoupper(trim($entrep['adr_dep']))=='2A' || strtoupper(trim($entrep['adr_dep']))=='2B')
$depCom=trim($entrep['adr_dep']).sprintf("%03s",$entrep['adr_com']);
else
$depCom=sprintf("%02s",substr($entrep['adr_dep']*1,0,2)).sprintf("%03s",$entrep['adr_com']);
$strOutput.=exporte($depCom, 5);
if (($entrep['source']*1)==2 && ($entrep['capitalSrc']*1)==2)
$strOutput.=exporte('I', 1); // Source INSEE
else
$strOutput.=exporte('S', 1); // Source Scores & Décisions
if ($entrep['dirCiv']==0 || $entrep['dirCiv']=='') $civ='';
elseif ($entrep['dirCiv']*1==1) $civ='M';
elseif ($entrep['dirCiv']*1==2) $civ='MME';
else $civ=$entrep['dirCiv'];
$strOutput.=exporte($civ, 4); // Civilite
$strOutput.=exporte($entrep['dirNom'], 20); // NOM
$strOutput.=exporte($entrep['dirPrenom'], 30); // PRENOM
$strOutput.=exporte($entrep['dirFct'], 4); // Code Fct
$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);
$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'],
$entrep['adr_typeVoie'],
$entrep['adr_libVoie'],
$entrep['adr_comp'],
$entrep['adr_cp'],
$entrep['adr_ville']);
if (is_array($tabDom) && count($tabDom)>0) {
//$nbDom++;
$tabNace['adrDom']=1;
if (preg_match('/^CHEZ (.*)$/i',$entrep['adr_comp'], $matches) &&
!preg_match('/ M | M. | MR | MME | MLLE /i',$entrep['adr_comp']))
$tabNace['adrDom']=2;
}
}
if ($siren<>$sirenPre) {
// Lecture du numéro de TVA
$tvaValide=$entrep['tvaIntraValide'];
$tvaCle=$entrep['tvaIntraCle'];
if ($tvaCle===null) {
$iTva=@new MTva($siren, false);
$tabTva=array('tvaIntraCle'=>substr($iTva->vatNumber,2,2));
} else
$tabTva=array();
// Recherche du siren de la maison mère
if ($entrep['nbActio']>0) {
if (isset($tabSirenVisites[$siren*1])) {
$sirenMere=$tabSirenVisites[$siren];
} else {
$sirenMere=@$iLiens->getMaisonMereFr($siren);
if ($siren<>$sirenMere) {
foreach ($iLiens->tabSirenVisites as $siren1) {
$tabSirenVisites[$siren1*1]=$sirenMere;
}
}
}
if ($siren<>$sirenMere) $tabTva['sirenGrp']=$sirenMere;
}
// Lecture du dernier bilan
/*$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);
$tabBilan=@$tabBilan[0];
$tabTmp=explode(';', $tabBilan['postes']);
foreach($tabTmp as $poste) {
if (trim($poste)<>'') {
$tabTmp2=explode('=',$poste);
$tabPostes[trim($tabTmp2[0])]=trim($tabTmp2[1]);
}
}
switch (strtoupper($tabBilan['unite'])) {
case 'K': $uniteMultiple=1000; break;
case 'M': $uniteMultiple=1000000; break;
}
if ($tabBilan['typeBilan']=='S')
$tabPostes=@$iBilan->bilanSimplifie2Normal($tabPostes);
*/
}
$effectifFr=@$entrep['bilYP']*1;
if ($effectifFr==0)
$effectifFr=$entrep['eff_entrep'];
$strOutput.=exporte($effectifFr, 6);
$strOutput.=exporte($entrep['eff_etab'], 6);
if ($entrep['bilAnnee']>1900) {
$montantCA=@$entrep['bilFL'];
$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);
$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
$tabUpdate=array_merge($tabTva, $tabNace,
array( 'bilType' =>'E',
'bilAnnee' =>$anneeEstime,
'bilCloture'=>$clotureEstime,
'bilDuree' =>12,
'bilTca' =>$iInsee->getTca($caEstime),
'bilFL' =>$caEstime));
} else {
$strOutput.=exporte('I', 1); // Réel , Inconnu, Estimé
$strOutput.=exporte('', 13);
$strOutput.=exporte('', 13);
$strOutput.=exporte('', 13);
$tabUpdate=array_merge($tabTva, $tabNace);
}
$iDb2->update('etablissements_act_tmp', $tabUpdate, "siren=$siren AND nic=$nic") or die('Err3:'.mysql_error());
fwrite($fp, $strOutput.EOL);
$sirenPre=$siren;
if ($numRow%10000==0)
echo date ('Y/m/d - H:i:s')." - $numRow/$nbRows : $strOutput".EOL;
}
}
$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_act_tmp', array('sirenGrp'=>$siren), "siren=$siren") or die('Err4:'.mysql_error());
}
$tabNaf5inconnu=array_unique($tabNaf5inconnu);
$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 ORDER BY createBegin DESC", false);
$id=@$ret[0][0];
$iDb->update('sphinx_idx', array('createEnd'=>date('YmdHis'),'nbLines'=>$nbRowsTot), "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());
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_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", "$nbRowsTot établissements actifs diffusés".EOL.print_r($tabNaf5inconnu, true) .EOL. print_r($tabNaf4inconnu,true) );
die();
?>

1857
bin/diffusionEntrepA6cmo.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,830 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
function exporte($txt, $lon=-1, $sep="|") {
$txt=strtr(trim($txt),array('&#039;'=>"'",'&amp;'=>'&', '&sup2;'=>'²', "\r"=>'', "\n"=>'', "\t"=>''));
if ($lon==-1) return $txt.$sep;
elseif ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt);
else return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep;
}
function choixAdr($bodEtab, $bodSiege, $insee) {
if (strlen(trim($bodSiege))>0) $adr=trim($bodSiege);
elseif (strlen(trim($bodEtab))>0) $adr=trim($bodEtab);
else $adr='';
if (isset($insee) && trim($insee)<>'') return $insee;
else return $adr;
}
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');
$iDb2=new WDB('historiques');
$iDb3=new WDB('tmp');
$iInsee=new MInsee();
$iBilan=new MBilans(0);
$iLiens=new MLiens(0);
$iCotation=new ICotation(array());
$presta=$purge=$siretReprise=$doFichierSiren=false;
$strReprise='';
$date=date('Ymd');
$tabFichier=array();
$nbSirValides=$nbSirInvalides=0;
$nbNicValides=$nbNicInvalides=0;
$nbInsert=0;
$eff69=$dateDebut=$nafAMS=false;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [Fichier à traiter ou Stock Adecco à charger]
Traitement des fichiers spécifiques Adecco.
Options :
-1 Prestation 1 Mise à jour du stock Adecco
-2 Prestation 2 Ajout des établissements de + de 10 salariés absent du stock Adecco
-a=SSAAMMJJ Prestation 3A Créations mensuelles d'établissements de + de 10 salariés depuis le SSAAMMJJ
-b=SSAAMMJJ Prestation 3B Fermeture mensuelles d'établissements depuis le SSAAMMJJ
-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
-s Traitement du fichier de siren/siret en entrée
-t Traitement du stock Interim...
";
$presta2='';
$dayOfTheWeek=date('w');
$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 '1': $presta=1; break;
case '2': $presta=2; break;
//case '3': $presta=3; 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 's': $doFichierSiren=true; break;
case 't': $presta=3.11; break;
case 'f': $dayOfTheWeek=5; $mailTo='ylenaour@scores-decisions.com'; 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
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 && !$doFichierSiren) {
/* Chargement du fichier Entrant adecco */
$nomFichier=$tabFichier[0];
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier Adecco à 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, 4096));
}
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier '$nomFichier' ($nbLignes lignes à traiter).".EOL;
rewind($fp);
/** Traitement de la 1ère ligne **/
$ligne = trim(fgets($fp, 4096));
if ($ligne<>'adREF|adSIREN|adNIC|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adNAF2008|adTRANCHE_EFFECTIF|adCEDEX|adCODE_COMMUNE|adVILLE|adVILLE_CDX|ADSE')
die('Première ligne du flux Adecco innatendue !'.EOL);
$dateInsert=date('YmdHis');
$nbLignesLues=1;
while (!feof($fp))
{
$nbLignesLues++;
$a=array();
$ligne = trim(fgets($fp, 4096));
$tabEtab=explode('|', $ligne);
$a['adREF'] = $tabEtab[0];
$a['adSIREN'] = $tabEtab[1];
$a['adNIC'] = $tabEtab[2];
$a['adRAISON_SOCIALE'] = $tabEtab[3];
$a['adADRESSE'] = $tabEtab[4];
$a['adFILLER'] = $tabEtab[5];
$a['adCP'] = $tabEtab[6];
$a['adNAF2008'] = $tabEtab[7];
$a['adTRANCHE_EFFECTIF']= $tabEtab[8];
$a['adCEDEX'] = $tabEtab[9];
$a['adCODE_COMMUNE'] = $tabEtab[10];
$a['adVILLE'] = $tabEtab[11];
$a['adVILLE_CDX'] = $tabEtab[12];
$a['ADSE'] = $tabEtab[13];
if (!$iInsee->valideSiren($a['adSIREN'])) {
$a['sirenValide']=0;
$a['nicValide']=0;
$nbNicInvalides++;
$nbSirInvalides++;
} else {
$a['sirenValide']=1;
$nbSirValides++;
if (!$iInsee->valideSiren($a['adSIREN'], $a['adNIC'])) {
$a['nicValide']=0;
$nbNicInvalides++;
} else {
$a['nicValide']=1;
$nbNicValides++;
}
}
$a['siret']=''.$tabEtab[1].''.$tabEtab[2];
if ($iDb3->insert('adecco_in', $a))
$nbInsert++;
elseif (mysql_errno()<>1062)
die(mysql_error().EOL);
}
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;
} elseif (count($tabFichier)==1 && $doFichierSiren) {
/* Chargement du fichier Entrant adecco */
$nomFichier=$tabFichier[0];
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier Adecco à 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, 4096));
}
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier '$nomFichier' ($nbLignes lignes à traiter).".EOL;
rewind($fp);
/** Traitement de la 1ère ligne **/
$ligne = trim(fgets($fp, 4096));
if ($ligne<>'customer_id|TRADE_NAME|SIREN|NIC|Naf_code|ADDRESS_PART_1|ADDRESS_PART_2|code_commune|ville|CP|Cedex|\'SIRENNIC')
die('Première ligne du flux Adecco en entrée inattendue !'.EOL);
$dateInsert=date('YmdHis');
$nbLignesLues=1;
$nomFichier=REP_TEMP."adeccoGeoloc_$date.txt";
$fp2=fopen($nomFichier,'w');
while (!feof($fp))
{
$nbLignesLues++;
$a=array();
$ligne = trim(fgets($fp, 4096));
$tabEtab=explode('|', $ligne);
$a['adREF'] = $tabEtab[0];
$a['adRAISON_SOCIALE'] = $tabEtab[1];
$a['adSIREN'] = $tabEtab[2];
$a['adNIC'] = $tabEtab[3];
$a['adNAF2008'] = $tabEtab[4];
$a['adADRESSE'] = $tabEtab[5];
$a['adFILLER'] = $tabEtab[6];
$a['adCODE_COMMUNE'] = $tabEtab[7];
$a['adVILLE'] = $tabEtab[8];
$a['adCP'] = $tabEtab[9];
// $a['adTRANCHE_EFFECTIF']= $tabEtab[8];
$a['adCEDEX'] = $tabEtab[10];
$a['siret'] = str_replace("'",'',$tabEtab[11]);
// $a['adVILLE_CDX'] = $tabEtab[12];
// $a['ADSE'] = $tabEtab[13];
if (!$iInsee->valideSiren($a['adSIREN'])) {
$a['sirenValide']=0;
$a['nicValide']=0;
$nbNicInvalides++;
$nbSirInvalides++;
} else {
$a['sirenValide']=1;
$nbSirValides++;
if (!$iInsee->valideSiren($a['adSIREN'], $a['adNIC'])) {
$a['nicValide']=0;
$nbNicInvalides++;
} else {
$a['nicValide']=1;
$nbNicValides++;
}
}
if ($a['sirenValide']==1 && $a['nicValide']==1) {
if ($a['siret']<>$a['adSIREN'].''.$a['adNIC'])
$a['siret']=$a['adSIREN'].''.$a['adNIC'];
exporteAdecco($a['siret'],$a['adREF'],$fp2, $presta, $eff69, $nafAMS);
}
}
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 && $presta<>3.11) {
if (count($tabFichier)<>1)
echo date('Y/m/d - H:i:s') ." - Prestation '$presta' inconnue !".EOL;
die();
}
//$nomFichier=CLIENTS_PATH.'adecco/adecco'.$presta.$presta2."_$date.txt";
$nomFichier=REP_TEMP.'adecco'.$presta.$presta2."_$date.txt";
$fp=fopen($nomFichier,'w');
// Ligne d'entête
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();
if ($purge) {
//$iDb3->query('/*TRUNCATE TABLE adecco_out;*/');
}
if ($presta==1) {
if ($siretReprise) $strReprise=" AND CONCAT(adSIREN,adNIC)>$siretReprise ";
//$nbRows=$iDb->select('tmp.adecco', 'REF, SIREN, NIC, siret, RAISON_SOCIALE, ADRESSE, FILLER, CP, VILLE', "nafet IN('7810Z', '7820Z', '7830Z')", true, MYSQL_ASSOC, true);
if ($eff69) $where="moinsDe10=1"; else $where='1';
$nbRows=$iDb->select('tmp.adecco_in',
'adRef AS REF, adSIREN AS SIREN, adNIC AS NIC, CONCAT(adSIREN,adNIC) AS siret, adRAISON_SOCIALE AS RAISON_SOCIALE, adADRESSE AS ADRESSE, adFILLER AS FILLER, adCP AS CP, adVILLE AS VILLE, ADSE/*CODE_COMMUNE, CEDEX*/',
"$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, $nafAMS, $tabTmp['RAISON_SOCIALE'], $tabTmp['ADRESSE'], $tabTmp['FILLER'], $tabTmp['CP'], $tabTmp['VILLE'], $tabTmp['ADSE']);
}
/** @toto Presta 1 :
- enregistrer chaque ligne fourni en bdd
- vérifier les fusions
*/
} elseif ($presta==3.1) {
$iDb->query('SELECT siretTrouve AS siret FROM tmp.adecco_out UNION SELECT siret FROM tmp.adecco_out;');
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...".EOL;
/** Les Créations d'étab>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 (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','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, $nafAMS);
}
} elseif ($presta==3.11) {
$iDb->query('SELECT siretTrouve AS siret FROM tmp.adecco_out UNION SELECT siret FROM tmp.adecco_out;');
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...".EOL;
/** Les Créations d'étab>10 **/
$where10="AND APE_ETAB IN ('7810Z','7820Z','7830Z')";
if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise ";
$nbRows=$iDb->select('insee.identite', "'' AS REF, SIREN, NIC, concat(SIREN, NIC) AS siret",
"CJ NOT BETWEEN 3000 AND 3999 AND ACTIF=1 $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, $nafAMS);
}
} elseif ($presta==3.2) {
/** Toutes les Fermetures **/
$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']) {
/*'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 'M0F':
case '430':
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;
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) {
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';
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;
echo mysql_error().EOL;
if (mysql_errno()>0) die();
fwrite($fp, "adSIREN|adNIC|sdPctAct|sdSirenAct|sdNomAct".EOL);
$sirenPre=false;
$pctAct=$sirenAct=$nomAct='';
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTmp['SIREN'];
// Actionnaire
if ($siren<>$sirenPre) {
$pctAct=$sirenAct=$nomAct='';
$tabAct=$iLiens->getActionnaires($siren, true);
foreach ($tabAct as $i=>$lien) {
$sirenAct=$lien['Siren']*1;
if($sirenAct>1000 && $lien['PminNum']>=50) {
$ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp'];
$tabIdentiteA=@$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=str_replace('|',' ',$tabIdentiteA['Nom']);
break;
} else
$sirenAct='';
}
if ($sirenAct<=1000) $sirenAct='';
}
if ($pctAct=='' && $sirenAct=='' && $nomAct=='') {
$sirenPre=$siren;
continue;
}
$strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC']."|$pctAct|$sirenAct|$nomAct".EOL;
if ($fp) fwrite($fp, str_replace(';',' ',$strOut));
echo $strOut;
$sirenPre=$siren;
}
} else {
/** @todo
- Non présents dans le fichier source Adecco
- Non Fournis dans le fichier principal (Déménagements, et affectation de NIC valide)
etab >= à 10 salariés, France entière avec Corse et les DOM TOM. Les sociétés étrangères immatriculées au RCS sont à exclure.
Les 2 NAF suivants sont à exclure
6820B = SCI/location de terrains
7020Z = Holding
*/
$tabSiret=array();
$iDb->query('DROP table IF EXISTS adecco_siret;');
$iDb->query('CREATE TABLE adecco_siret SELECT siret FROM tmp.adecco_in UNION SELECT siretTrouve AS siret FROM tmp.adecco_out;');
$iDb->query('ALTER TABLE adecco_siret CHANGE siret siret BIGINT(14) UNSIGNED ZEROFILL NULL DEFAULT NULL, ADD PRIMARY KEY(siret);');
/*echo mysql_error().EOL;
if (mysql_errno()>0) die();
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...".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)';
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*/
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, $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, $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);
$strIdentite="
SIREN,NIC,NOM AS L1_nomen,NOM2 AS L2_ComP,ADR_COMP AS L3_cadr,
NULL AS L4_VOIE, ADR_DISTSP AS L5_disp, NULL AS L6_POST, PAYS AS L7_ETRG, '' AS ZR1, NULL AS RPET, ADR_DEP AS insdepet,
NULL AS ARRONET, NULL AS CTONET, ADR_COM AS comet, ADR_LIBCOM AS libcom, NULL AS DU, NULL AS TU, NULL AS UU,
ADR_CP AS codpos, '' AS ZR2, NULL AS TCD, NULL AS ZEMET, CODEVOIE, ADR_NUMVOIE AS NUMVOIE, ADR_BTQ AS INDREP,
ADR_TYPVOIE AS TYPVOIE, ADR_LIBVOIE AS LIBVOIE, ENSEIGNE, APE_ETAB AS apet700, '' AS ZR3, SIEGE,
TEFF_ET AS tefet, EFF_ET AS efetcent, ORIGINE, DCRET, NULL AS MMINTRET, ACTIVNAT, LIEUACT, ACTISURF, SAISONAT, MODET,
DAPET, DEFET, EXPLET, PRODPART, AUXILT, NULL AS EAEANT, NULL AS EAEAPET, NULL AS EAESEC1T, NULL AS EAESEC2T, NOM AS nomen,
SIGLE, CIVILITE, CJ, TEFF_ENT AS tefen, EFF_ENT AS efencent, APE_ENT AS insapen700, '' AS ZR4, APRM, TCA,
NULL AS RECME, DAPEN, DEFEN, DCREN,NULL AS MMINTREN, MONOACT, MODEN, EXPLEN, NULL AS EAEANN, NULL AS EAEAPEN,
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,
insZEMET AS ZEMET, insDU AS DU, insTU AS TU, insUU AS UU, insMMINTRET AS MMINTRET, insMMINTREN AS MMINTREN, insRECME AS RECME,
insEAEANT AS EAEANT, insEAEAPET AS EAEAPET, insEAESEC1T AS EAESEC1T, insEAESEC2T AS EAESEC2T, insEAEANN AS EAEANN,
insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAESEC3N AS EAESEC3N, insEAESEC4N AS EAESEC4N";
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
//echo '2:'.mysql_error().EOL;
//$ret=$iDb2->select('historiques.notice_201012', 'insSIREN,insNIC,insL1_nomen,insL2_ComP,insL3_cadr,insL4_VOIE,insL5_disp,insL6_post,insL7_ETRG,insZR1,insrpet,insdepet,insarronet,insctonet,inscomet,inslibcom,insdu,insTu,insuu,inscodpos,insZR2,instcd,inszemet,inscodevoie,insNUMVOIE,insINDREP,insTYPVOIE,insLIBVOIE,insENSEIGNE,insapet700,insZR3,inssiege,instefet,insefetcent,insorigine,insdcRET,insMMIntrET,insACTIVNAT,insLIEUACT,insACTISURF,inssaisonat,insMODET,insdapet,insdefet,insEXPLET,insProdpart,insauxilt,inseaeant,inseaeapet,inseaesec1t,inseaesec2t,insnomen,inssigle,insCIVILITE,inscj,instefen,insefencent,insapen700,insZR4,insaprm,instca,insrecme,insdapen,insdefen,insdcren,insmmintren,insmonoact,insMODEN,insEXPLEN,inseaeann,insEAEapen,inseaesec1n,inseaesec2n,inseaesec3n,inseaesec4n,insnbETEXPL,instcaexp,insregimp,insmonoreg,insrpen,insdepcomen', "siret='$siret'", false);
$even=$evenDate=$nomPrenomDir=$YP=$pctAct=$sirenAct=$nomAct='';
$strOut="$siren|$nic|$ref|$RAISON_SOCIALE|$ADRESSE|$FILLER|$CP|$VILLE|$ADSE|";
if (count($ret)==0) {
/*$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<79;$i++)
$strOut.='|';*/
$even='Siren/Siret invalide';
// Recherche par IDENTITE
$deb=0;$nbRep=20;$maxRep=20;$siege=$actif='';
$nomIn=$RAISON_SOCIALE;
$adrIn=$ADRESSE;
//$FILLER
$cpIn=$CP;
$comIn=$VILLE;
$res=@$iInsee->rechercheEtab($nomIn, $adrIn, $cpIn, $comIn, $siege, $actif, $deb, $nbRep, $maxRep, false, true);
if ($res['nbReponses']>0) {
$levMin=1;
$trouve=false;
foreach ($res['reponses'] as $i=>$etab) {
//die(print_r($etab));
$size=strlen($nomIn.$etab['Nom'].$adrIn.$etab['Adresse'].$cpIn.$etab['CP'].$comIn.$etab['Ville']);
$levNom=levenshtein($nomIn,$etab['Nom']);
$levAdr=levenshtein($adrIn,$etab['Adresse']);
$levCP =levenshtein($cpIn ,$etab['CP']);
$levCom=levenshtein($comIn,$etab['Ville']);
$levTot=$levNom+$levAdr+$levCP+$levCom;
$levPct=$levTot/$size;
if ($levPct<0.15 && $levPct<$levMin) {
$trouve=true;
$siret=''.$etab['Siren'].''.$etab['Nic'];
$levMin=$levPct;
}
}
if ($trouve) {
$siren=substr($siret,0,9);
$nic=substr($siret,9,5);
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
}
}
}
if (count($ret)==0) {
$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<80;$i++)
$strOut.='|';
$even='Siren/Siret inexistant';
} 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;
//geoCodeAdrCpVilleF
}
$nouveauSiret='';
$tabAncienSiret=array();
$nbDem=0;
while ($actif==0) {
if ($presta==2) return;
// Recherche du nouveau siret
//echo "DEB Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/";
$tabAssoc=@$iInsee->getSiretAssoc($siren, $nic);
$nouveauSiret=@trim(''.$tabAssoc['suc']['siren'].
$tabAssoc['suc']['nic']);
@$tabAncienSiret[$nouveauSiret]++;
if($nouveauSiret<>'' && @$tabAncienSiret[''.$siren.$nic]<=2) {
$nbDem++;
$siren=substr($nouveauSiret,0,9);
$nic=substr($nouveauSiret,9,5);
$ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false);
$ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC);
$tmp=$ret[0];
$actif=$tmp['sdActif']*1;
$even="Etablissement déménagé $nbDem fois ";
} else
break;
//echo "FIN Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/";
}
//$tmp=$ret[0];
//$actif=$tmp['sdActif'];
$effet=$tmp['efetcent']*1;
$effetTR=$tmp['tefet']*1;
//(insEFENCENT>5 || insTEFET>2)
$tmp2=@$ret2[0];
$afficherNotice=false;
if ($actif*1==0) {
$actif=0;
$strOut.="$siren|$nic|";
for($i=0;$i<80;$i++)
$strOut.='|';
if (@$even=='') $even='Etablissement inactif ';
else $even.='inactif ';
// Recherche du dernier Even Insee
$ret=$iDb2->select('insee.insee_even', 'insEVE,insDATEVE,insSIRETPS,idFlux,insSIRETASS', "insSIREN=$siren AND insNIC=$nic AND insEVE IN (400,410,420,425,430,435,510,530,620,621,650,795)", false, MYSQL_ASSOC);
if (count($ret)==1 ) {
$tmp=$ret[0];
/*$siret2=$tmp['insSIRETPS']*1;
if ($siret2==0) $siret2=$tmp['insSIRETASS']*1;
if ($siret2>0) $siret2=' de/vers '.$siret2;
else $siret2='';*/
$infoFusion=false;
switch ($tmp['insEVE']*1) {
case 400: $even.='suppression du doublon '; break;
case 410: $even.='cessation juridique de l\'entreprise '; $infoFusion=true; break;
case 420:
case 425: $even.='cessation économique de l\'entreprise ';$infoFusion=true; break;
case 430:
case 435: $even.='fermeture de l\'etablissement '; break;
// case 510:
// case 530: $even.='transfert'.$siret2.' '; 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;
default: $even.=' '; break;
}
$evenDate=$tmp['insDATEVE'];
if ($infoFusion) {
// Annonces BODACC Fusion/Absorptions
$tabFusion=$iInsee->getAnnoncesLegales($siren, 0, array(2700,2701,2702,2703,2710,2720,2721,2725,2726,2730,2740), false);
if (count($tabFusion)>0) {
$FUSIONPROJET_SIREN=0;
foreach ($tabFusion as $iDep=>$depot) {
if ($iDep==0)
$ANNONCEFUSDATE=$depot['DateParution'];
$ANNONCEFUS++;
$FUSIONPROJET_DATE=$depot['dateJugement']; // Date du projet de fusion
$FUSIONPROJET=$depot['complement']; // Présence d'un projet de fusion, libellé du projet
if (preg_match_all("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $FUSIONPROJET, $matches)) {
foreach ($matches[1] as $FUSIONPROJET_SIREN) {
$FUSIONPROJET_SIREN=strtr($FUSIONPROJET_SIREN, array('.'=>'','-'=>'', ' '=>''));
if (!$iInsee->valideSiren($FUSIONPROJET_SIREN)) $FUSIONPROJET_SIREN=0;
else break;
}
}
if ($FUSIONPROJET_SIREN*1>1000) break;
}
$even.='dans le cadre d\'une fusion ';
if ($FUSIONPROJET_SIREN>1000) $even.="avec $FUSIONPROJET_SIREN ";
}
if (strtr($evenDate,array('-'=>''))*1==0) {
$tabRad=$iInsee->getAnnoncesLegales($siren, 0, array(2000,2200,2201,2202,2203,2204,2205,2206,2208,2210,2212,6000,6001,6002,6003,6004,6005,6100,6200,6201,6300,6400,6500,6600,6700), false);
$evenDate=$tabRad[0]['DateParution'];
}
}
}
} else {
foreach ($tmp as $i=>$value) {
if (is_numeric($i)) {
if ($value===null)
$afficherNotice=true;
else {
$strOut.=str_replace('|',' ',$tmp[$i]).'|';
$afficherNotice=false;
}
} else {
if ($afficherNotice) {
$strOut.=str_replace('|',' ',$tmp2[$i]).'|';
}
}
}
if ($presta==2) {
/* 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
/*$ret=$iDb2->select('jo.etablissements', 'dirNom,dirPrenom', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
$tmp=@$ret[0];*/
$nomPrenomDir='';//trim($tmp['dirPrenom'].' '.$tmp['dirNom']);
// Actionnaire
$tabAct=$iLiens->getActionnaires($siren, true);
foreach ($tabAct as $i=>$lien) {
$sirenAct=$lien['Siren']*1;
//die(print_r($lien));
if($sirenAct>1000 && $lien['PminNum']>=50 /*|| $lien['MajMin']=='+')*/) {
$ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC);
if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp'];
$tabIdentiteA=$iInsee->getIdentiteLight($sirenAct);
$pctAct=$lien['Pmin'];
$nomAct=$tabIdentiteA['Nom'];
break;
} else
$sirenAct='';
}
if ($sirenAct<=1000) $sirenAct='';
}
}
$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,
'nic'=>$nic,
'siretTrouve'=>$siren.''.$nic,
'siret'=>$siret,
'evenDate'=>$evenDate,
'even'=>$even,
'presta'=>$presta,
'prestaDate'=>$date));
//}
//echo $strOut;
echo "$siret\t$ref\t$ADSE\t$RAISON_SOCIALE\t$CP\t$VILLE".EOL;
if ($fp) fwrite($fp, str_replace(';',' ',$strOut));
}
?>

517
bin/diffusionRRG.php Normal file
View File

@ -0,0 +1,517 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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/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'];
$source=$tabId['source'];
$source_id=$tabId['id'];
$tabRnvpSrc=@$iRnvp->getAdresseRnvpSource($source, $source_id);
$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);
echo "Normalisation SED :".EOL;
print_r($tabRnvp);
echo "Normalisation 76310 :".EOL;
print_r($tabRnvpSrc);
die();
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, NEWCLIENTS_PATH.'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();
?>

235
bin/geoCodeAdresses.php Normal file
View File

@ -0,0 +1,235 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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(INCLUDE_PATH.'partenaires/classMMap.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Chargement du/des flux quotidiens en provenance de Insee.
Options :
-v Mode debug (Verbosité au maximum)
-d=20080430 Réappliquer les évènements depuis cette date
-f=20091230 Réappliquer les évènements jusqu'à cette date
-q Traiter le dernier flux Insee (Quotidien)
-h Traiter les flux historiques Insee
-l Traiter les conversions Lamberts
-a Traiter les altitudes
";
$iDb=new WDB('insee');
$iInsee=new MInsee();
$imap=new MMap();
$nbSiretInvalides=$nbErreurs=$nbInsert=$nbUpdate=
$nbLignes=$nbEnCache=$nbDistant=0;
$modeDebug=$dateReprise=$dateFin=false;
$doQuotidien=$doHisto=$doLamberts=$doAltitudes=false;
//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 'v': $modeDebug=true; break;
case 'd': $dateReprise=substr($argv[$i],3,8); break;
case 'f': $dateFin =substr($argv[$i],3,8); break;
case 'q': $doQuotidien=true; break;
case 'h': $doHisto =true; break;
case 'l': $doLamberts =true; break;
case 'a': $doAltitudes=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichier[]=$argv[$i];
}
if (!$doQuotidien && !$doHisto && !$doLamberts && !$doAltitudes)
$doQuotidien=$doHisto=$doLamberts=$doAltitudes=true;
if ($doQuotidien) {
echo date ('Y/m/d - H:i:s') . " - Début du traitement de géocodage des adresses INSEE".EOL;
$db_table='insee_even';
$ret=$iDb->select($db_table, 'MAX(idFlux) as idFlux', "1");
$idFluxFin=$ret[0]['idFlux'];
echo date ('Y/m/d - H:i:s')." - Le dernier flux INSEE géocodé est le flux $idFluxFin !".EOL;
if (!$dateReprise) {
$idFlux=$idFluxFin;
$idFlux3=(substr($idFlux,0,4)*1)-3;
$idFlux3=''.$idFlux3.substr($idFlux,4,6);
}
else {
if (!$dateFin) $dateFin=strtr($idFluxFin, array('-'=>''));
$idFlux=WDate::dateT('Ymd', 'Y-m-d', $dateReprise);
$idFluxFin=WDate::dateT('Ymd', 'Y-m-d', $dateFin);
echo date ('Y/m/d - H:i:s')." - On réapplique le géocodage du flux $idFlux au $idFluxFin !".EOL;
}
$nbLignes=$nbEnCache=$nbDistant=$nbAlt=0;
$nbLoaded=$iDb->select($db_table, 'insL4_VOIE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insCODPOS, insLIBCOM, insDEPCOM, insCODEVOIE, insL7_ETRG, idFlux', "idFlux BETWEEN '$idFlux' AND '$idFluxFin'", false, MYSQL_ASSOC, true);
//$nbLoaded=$iDb->select('jo.etablissements_act', "'' AS insL4_VOIE, adr_num AS insNUMVOIE, adr_btq AS insINDREP, adr_typeVoie AS insTYPVOIE, adr_libVoie AS insLIBVOIE, adr_cp AS insCODPOS, adr_ville AS insLIBCOM, CONCAT(adr_dep*1,adr_com) AS insDEPCOM, rivoli AS insCODEVOIE, '' AS insL7_ETRG, '2012-02-13' AS idFlux", "adr_dep IN (/*03,*/18,23,28,36,37,41,43,44,45,49,53,58,63,69,71,72,79,86,87) AND adr_libVoie<>'' GROUP BY adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_cp, adr_ville", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses à mettre à jour...".EOL;
$message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses à géocoder".EOL;
//die(mysql_error().EOL);
$tabGeocodeur=array();
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);
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++;
else {
$nbDistant++;
usleep(100);
}
}
$pct=round($nbEnCache/$nbLignes,3)*100;
$pct2=round($nbAlt/$nbLignes,3)*100;
$message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses géocodées du $idFlux au $idFluxFin dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL;
$message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL;
$message.=print_r($tabGeocodeur,true);
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage ($idFlux)", $message);
}
if ($doHisto) {
/** Déb à supprimer HISTO : quand l'historique du géocodage sera complet
**/
$nbLignes=$nbEnCache=$nbDistant=$nbAlt=0;
$nbLoaded=$iDb->select($db_table, 'insL4_VOIE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insCODPOS, insLIBCOM, insDEPCOM, insCODEVOIE, insL7_ETRG, idFlux', "idFlux='$idFlux3'", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses à mettre à jour...".EOL;
$message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses à géocoder".EOL;
$tabGeocodeur=array();
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);
echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.")\t";
echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => ';
echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL;
@$tabGeocodeur[$imap->geocodeur][$imap->enCache]++;
if ($imap->enCache==true) $nbEnCache++;
else {
$nbDistant++;
usleep(100);
}
}
$pct=round($nbEnCache/$nbLignes,3)*100;
$pct2=round($nbAlt/$nbLignes,3)*100;
$message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses géocodées en histo pour le $idFlux3 dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL;
$message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL;
$message.=print_r($tabGeocodeur,true);
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage Histo ($idFlux3)", $message);
/** Fin à supprimer HISTO **/
}
if ($doAltitudes) {
/** Déb à supprimer ALTITUDE : quand toutes les adresses seront altimétriques
**/
$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 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();
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);
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]++;
if ($imap->enCache==true) $nbEnCache++;
else {
$nbDistant++;
usleep(100);
}
}
$pct=round($nbEnCache/$nbLignes,3)*100;
$pct2=round($nbAlt/$nbLignes,3)*100;
$message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses sans altitude dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL;
$message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL;
$message.=print_r($tabGeocodeur,true);
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage/altitude", $message);
/** Fin à supprimer ALTITUDE **/
}
if ($doLamberts) {
/** Déb à supprimer LAMBERT : quand toutes les adresses seront aussi stockées en lambert 93 **/
unset ($imap);
$imap=new MMap(false);
$iDb2=new WDB('jo');
$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", "l93_x IS NULL OR l93_y IS NULL", false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses sans Lambert 93 à mettre à jour...".EOL;
$message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses sans Lambert 93".EOL;
$tabGeocodeur=array();
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);
echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.")\t";
echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => ';
echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL;
@$tabGeocodeur[$imap->geocodeur][$imap->enCache]++;
if ($imap->enCache==true) $nbEnCache++;
else {
$nbDistant++;
usleep(100);
}
// Conversion WGS84 en Lambert93
$latitude=$imap->latitudeDec;
$longitude=$imap->longitudeDec;
$lambert=geos2lambert93($latitude,$longitude);
$x93=round($lambert['x_93']);
$y93=round($lambert['y_93']);
$tabUpdate=array('l93_x'=>$x93, 'l93_y'=>$y93);
$adresse=addslashes($adr['insL4_VOIE']);
$cp=$adr['insCODPOS'];
$ville=$adr['insLIBCOM'];
$iDb2->update('zonageXY', $tabUpdate, "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville' LIMIT 1");
}
$pct=round($nbEnCache/$nbLignes,3)*100;
$pct2=round($nbAlt/$nbLignes,3)*100;
$message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses converties en Lambert 93 pour le $idFlux3 dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL;
$message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL;
$message.=print_r($tabGeocodeur,true);
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage en Lambert 93", $message);
/** Fin à supprimer LAMBERT **/
}
die();
?>

865
bin/getAdressesSources.php Normal file
View File

@ -0,0 +1,865 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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', SOURCES_PATH.'rnvp/');
define('RNVP_BACKUP_DIR', SOURCES_PATH.'rnvp/histo/');
$sep="\t";
$eol=EOL;
$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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,
'notBetween'=>'10:00-18:00',
'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,suivi@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;
} elseif ($tabSrcDet['notBetween']<>'') {
$tmpNotBetween=explode('-', $tabSrcDet['notBetween']);
$timeDeb=str_replace(':','',$tmpNotBetween[0])*1;
$timeFin=str_replace(':','',$tmpNotBetween[1])*1;
if (date('Hi')*1>$timeDeb && date('Hi')*1<$timeFin) {
echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."' entre ".$tabSrcDet['notBetween'].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,suivi@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,suivi@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();
?>

159
bin/getAmf.php Normal file
View File

@ -0,0 +1,159 @@
#!/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 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)
";/* -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");
}
}
}
$iDb=new WDB('sdv1');
$table='amf_geco';
//$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
typeId mediumint(8) UNSIGNED Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
nom varchar(78) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
siren int(9) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
sirenValide tinyint(1) Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
nic mediumint(5) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
nicValide tinyint(1) Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
agrementDate varchar(10) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
agrementType tinyint(1) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
agrementNum varchar(11) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
adr varchar(40) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
adrComp varchar(40) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
cp char(5) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
ville varchar(32) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
dateConf
*/
'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($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();
?>

2664
bin/getAnnoncesOctde.php Normal file

File diff suppressed because it is too large Load Diff

346
bin/getBalo.php Normal file
View File

@ -0,0 +1,346 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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(INCLUDE_PATH.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
include_once(INCLUDE_PATH.'partenaires/classMBourse.php');
define('DILA_SOURCE_DIR', SOURCES_PATH.'dila/balo');
$iDb=new WDB('jo');
//$iDb2=new WDB('sdv1');
//$iBodacc=new MBodacc();
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIERS]
Chargement du/des fichier BALO en provenance de la DILA.
Options :
-d Mode debug (Verbosité au maximum)
-l Ne pas traiter uniquement les derniers BALO
-n Continuer au fichier suivant en cas d'erreur
-s Ignorer la validation du Schéma XML
";
$iInsee=new MInsee();
//$iBodacc=new MBodacc();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=$nbIgnore=0;
$modeDebug=false; // Mode débug
$validateSchema=true; // Par défaut, on Valide le Schéma XML
$unTaz=true; // Par défaut, on décompresse les archives
$forceContinue=false; // Par défaut, on arrête au fichier courant en cas d'erreur
$lastBalo=true; // Pär défaut, on télécharge uniquement les derniers BALO
$strMailInfo='';
$tabFichierXML=$tabFichLigneCmd=array();
$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 'n': $forceContinue=true; break;
case 's': $validateSchema=false; break;
case 'l': $lastBalo=false; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichLigneCmd[]=$argv[$i];
}
/** Parcours récursif des répertoires à la recherche des XML **/
$directories = expandDirectories(DILA_SOURCE_DIR, true);
foreach ($directories as $filename) {
if (substr($filename, -4)=='.taz')
$tabFichierXML[] = $filename;
}
sort($tabFichierXML);
//print_r($ret);
//die(mysql_error());
$nbAnnoncesEnBase=$ret[0]['nb'];
if (count($tabFichierXML)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier BALO à traiter !".EOL);
$message=date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des annonces du BALO...".EOL;
echo $message;
$strMailInfo.=$message;
if ($lastBalo) {
$ret=$iDb->select('balo', 'MAX(Date_Parution)*1 AS Date_Parution', "1", false);
$derBaloBase=$ret[0]['Date_Parution'];
$derBaloFile=substr(strtr(basename(end($tabFichierXML)),array('balo_'=>'','.taz'=>'')),0,8);
if ($modeDebug) {
echo date ('Y/m/d - H:i:s') . " - Dernier BALO en base : $derBaloBase".EOL;
echo date ('Y/m/d - H:i:s') . " - Dernier BALO en fichier : ".$derBaloFile.EOL;
}
foreach ($tabFichierXML as $i=>$filename) {
$filename2=substr(strtr(basename($filename),array('balo_'=>'','.taz'=>'')),0,8);
if ($filename2<$derBaloBase) {
unset($tabFichierXML[$i]);
//echo "$filename2 < $derBaloBase = OUI".EOL;
}
}
sort($tabFichierXML);
//print_r($tabFichierXML);
//die();
}
//print_r($tabFichierXML); die();
$nbAnnTot=0;
for ($iFic=0; isset($tabFichierXML[$iFic]); $iFic++)
{
// Liste des PDF
$tabFichierPDF=array();
$tabCtrl=array();
$nomFichier=$tabFichierXML[$iFic];
$tabCtrl['NomFichier']=$fichierTaz=basename($nomFichier);
$tabCtrl['Bodacc_Annee_Parution']=$anneePar=substr($fichierTaz,5,4);
$tabCtrl['Bodacc_Date_Parution']=$tabCtrl['Bodacc_Date_Parution_Texte']=substr($fichierTaz,5,8);
$tabCtrl['Bodacc_Num']=$numPar=substr($fichierTaz,14,3);
$tabCtrl['dateDownload']=date('YmdHis',filemtime($nomFichier));
$tabCtrl['Bodacc_Code']='BALO';
$nomFichierXml=strtr(BODACC_LOCAL_DIR."tmp/$fichierTaz",array('.taz'=>'.xml'));
$fichierXml=basename($nomFichierXml);
// Conversion du .taz en .xml//pdftohtml -xml BDXML-A_20070251_0001_p000.pdf
if ($unTaz) {
@mkdir(BODACC_LOCAL_DIR.'tmp');
if (!copy($nomFichier, BODACC_LOCAL_DIR.'tmp/'.basename($nomFichier))) {
$message=date ('Y/m/d - H:i:s')." - Erreur : Copie impossible de '".$nomFichier."' vers '".BODACC_LOCAL_DIR.'tmp/'.basenem($nomFichier)."' !";
echo $message;
$strMailInfo.=$message;
if ($forceContinue) continue;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO (ERREUR)', $strMailInfo);
die();
}
exec('cd '.BODACC_LOCAL_DIR.'tmp;tar -xvzf '. BODACC_LOCAL_DIR.'tmp/'.basename($nomFichier).';cd ..');
//echo BODACC_LOCAL_DIR.EOL;
if (!file_exists($nomFichierXml)) {
//if (balo_20050601065)
$nomFichierXml=strtr(BODACC_LOCAL_DIR."tmp/".strtr(basename($nomFichier),array('.taz'=>''))."/$fichierTaz",array('.taz'=>'.xml'));
if (!file_exists($nomFichierXml)) {
// if (!file_exists(BODACC_LOCAL_DIR.strtr($nomFichierXml,array('.xml'=>'.extr.xml')))) {
$message=date ('Y/m/d - H:i:s')." - Erreur A lors de la décompression du fichier $nomFichier (XML inexistant) !".EOL;
echo $message;
$strMailInfo.=$message;
if ($forceContinue) continue;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO (ERREUR)', $strMailInfo);
die();
} else {
$localTmpDir=BODACC_LOCAL_DIR."tmp/".strtr(basename($nomFichier),array('.taz'=>''))."/";
//echo(date ('Y/m/d - H:i:s')." - Décompression du fichier $nomFichierXml...!".EOL);
//die();
}
} else
$localTmpDir=BODACC_LOCAL_DIR.'tmp/';
}
$tabCtrl['taille']=$tailleFichier=filesize($nomFichierXml);
$tailleKo=round($tailleFichier/1024);
$dom_object = new DomDocument2();
$dom_object->load($nomFichierXml);
/* if ($validateSchema) {
$schema=__DIR__.'/schema/OCTDE_EXPORT_JAL_V3.8.xsd';
// VALIDATION SCHEMA
if (!$dom_object->schemaValidate($schema))
echo date ('Y/m/d - H:i:s')." - Attention : Fichier n°$iFic, $fichierXML : Schéma XSD non validé !!!".EOL;
else
echo date ('Y/m/d - H:i:s')." - Fichier n°$iFic, $fichierXML : Schéma XSD validé.".EOL;
} else echo date ('Y/m/d - H:i:s')." - Fichier n°$iFic, $fichierXML : Schéma XSD ignoré.".EOL;
*/
// create DOMXPath object with our DOMObject
$xpath = new Domxpath($dom_object);
$result = $xpath->query("//PARUTION_BALO");
$node = $result->item(0);
$dateParution=$node->getAttribute('date');
$numParution=$node->getAttribute('numero');
$nbAffaires=$node->getAttribute('nbaffaires');
$nbFichiers=$node->getAttribute('nbfichiers');
/** On test si le fichier est déjà en base **/
$ret=$iDb->select('chargements', 'Bodacc_Date_Parution, Bodacc_Code, Bodacc_Annee_Parution, DateDispo, dateDownload, taille, Bodacc_Num, Num_Annonce_Deb, Num_Annonce_Fin, dateInsert', "NomFichier='$fichierTaz'");
if (count($ret)>0/* && $fichierTLS<>$nomFichier*/) {
$dateTrt=$ret[0]['dateInsert'];
// $reload=false;
$ret=$iDb->select('balo', 'count(*) as nb', "Date_Parution='$dateParution' AND Num_Parution=$numParution");
//print_r($ret);
//die(mysql_error());
$nbAnnoncesEnBase=$ret[0]['nb'];
if ($nbAffaires<>$nbAnnoncesEnBase) {
$message=date ('Y/m/d - H:i:s')." - ATTENTION : Fichier n°$iFic, $fichierXml$numParution du $dateParution nombre d'annonces en base incohérent ($nbAnnoncesEnBase v/s $nbAffaires annonces, $nbFichiers fichiers, $tailleKo k)...".EOL;
echo $message;
$strMailInfo.=$message;
} else {
if ($modeDebug)
echo date ('Y/m/d - H:i:s')." - Fichier n°$iFic, $fichierXml$numParution du $dateParution déjà chargé ($nbAffaires annonces, $nbFichiers fichiers, $tailleKo k)...".EOL;
else {
$message=date ('Y/m/d - H:i:s')." - Dernier BALO $fichierXml$numParution du $dateParution déjà chargé le $dateTrt ($nbAffaires annonces, $nbFichiers fichiers, $tailleKo k).".EOL;
echo $message;
$strMailInfo.=$message;
continue;
}
}/* elseif (count($ret)>0 && $fichierTLS==$nomFichier) {
$ficDB=$ret[0];
echo date ('Y/m/d - H:i:s')." - BODACC $bodaccAnneePar-$bodaccNumPar du $dateBodacc déjà chargé ($nomFichier / $dateBodaccTxt).\n";
$reload=true;*/
}
//$strMailInfo.=date ('Y/m/d - H:i:s')." - $strTypeJo $debutNom $bodaccAnneePar-$bodaccNumPar du $dateBodacc en cours de traitement ($nomFichier, $dateBodaccTxt, $tailleKo k)...".EOL;
$nbPdf=0;
$result = $xpath->query("//PARUTION_BALO/ANNONCE_REF/.");
$nbItemsXml = $result->length;
if ($nbItemsXml==0) {
$message=date ('Y/m/d - H:i:s')." - Il n'y a aucune annonce à traiter dans ce flux XML !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO (ERREUR)', $strMailInfo);
die();
} elseif ($nbAffaires<>$nbItemsXml) {
$message=date ('Y/m/d - H:i:s')." - Il y a $nbItemsXml annonce à traiter dans ce flux XML contre $nbAffaires déclarées !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO (ERREUR)', $strMailInfo);
die();
} else {
/** On vérifie si ce fichier a déjà été chargé
**/
/*$ret=$iDb->select('annonces_chargements', 'dateLivraison, dateDispo, dateTraitementDeb, dateTraitementFin, nbAnnonces, NbAnnoncesLues', "fichierXML='$fichierXML'", false);
if (isset($ret[0])) {
$enBase=$ret[0];
$nbAnnEnBase=$enBase['NbAnnoncesLues'];
if ($nbAnnEnBase<$nbItemsXml) {
echo date ('Y/m/d - H:i:s') . " - ERREUR : Fichier n°$iFic, $fichierXML partiellement chargé le ".$enBase['dateTraitementFin']." ($nbAnnEnBase annonces en base / $nbItemsXml annonces dans le flux XML) !".EOL;
die();
} elseif ($nbAnnEnBase==$nbItemsXml) {
echo date ('Y/m/d - H:i:s') . " - Fichier n°$iFic, $fichierXML déjà chargé le ".$enBase['dateTraitementFin']." ($nbAnnEnBase annonces en base)...".EOL;
continue;
}
}*/
}
$message=date ('Y/m/d - H:i:s')." - Fichier n°$iFic, $fichierXml$numParution du $dateParution en cours de traitement ($nbAffaires annonces, $nbFichiers fichiers, $tailleKo k)...".EOL;
echo $message;
$strMailInfo.=$message;
/**
** Traitement de chaque annonce du noeud PCL_REDIFF
**/
$tabAnnonces=array();
$iAnn=0;
foreach ($result as $annonce) {
$iAnn++;
$tabAnnonce=array();
$tabAnnonce['Date_Parution']=$dateParution;
$tabAnnonce['Num_Parution']=$numParution;
/** On récupère l'annonce XML **/
$dom = new DOMDocument('1.0', 'iso-8859-1');
$elem=$dom->createElement('annonce');
$dom->appendChild($dom->importNode($annonce, true));
$tabAnnonce['xml']=$dom->saveXML();
$title = $xpath->query ('NOMS_SOCIETE/NOM_SOCIETE', $annonce);
$tabAnnonce['Societe_Nom']=$nom=utf8_decode($title->item(0)->nodeValue);
$tabAnnonce['Societe_Rcs']=$siren=$title->item(0)->getAttribute('rcs');
$title = $xpath->query ('NUMERO_AFFAIRE', $annonce);
$tabAnnonce['Num_Affaire']=$numAff=$title->item(0)->nodeValue;
$title = $xpath->query ('CATEGORIE', $annonce);
$node=$title->item(0);
$tabAnnonce['c0_code']=$node->getAttribute('code');
$tabAnnonce['c0_name']=trim(utf8_decode($node->getAttribute('name')));
$title = $xpath->query ('CATEGORIE/CATEGORIE_N1', $annonce);
if ($title->length>0) {
$node=$title->item(0);
$tabAnnonce['c1_code']=$node->getAttribute('code');
$tabAnnonce['c1_name']=trim(utf8_decode($node->getAttribute('name')));
$title = $xpath->query ('CATEGORIE/CATEGORIE_N1/CATEGORIE_N2', $annonce);
if ($title->length>0) {
$node=$title->item(0);
$tabAnnonce['c2_code']=$node->getAttribute('code');
$tabAnnonce['c2_name']=trim(utf8_decode($node->getAttribute('name')));
}
}
$tabAnnonce['Categorie']=strtoupper($tabAnnonce['c0_name']);
if ($tabAnnonce['c1_name']<>'' && $tabAnnonce['c1_name']<>'UNKNOWN') $tabAnnonce['Categorie'].=' > '.$tabAnnonce['c1_name'];
if ($tabAnnonce['c2_name']<>'' && $tabAnnonce['c2_name']<>'UNKNOWN') $tabAnnonce['Categorie'].=' > '.$tabAnnonce['c2_name'];
$title = $xpath->query ('FICHIERS_JOINTS/FICHIER_PDF', $annonce);
$tabAnnonce['pdfLink']=$title->item(0)->nodeValue;
$tabAnnonce['Num_Affaire2']=substr($tabAnnonce['pdfLink'],8,7)*1;
$title = $xpath->query ('FICHIERS_JOINTS/FICHIER_HTML', $annonce);
$fichierHtml=$localTmpDir.$title->item(0)->nodeValue;
if ($tabAnnonce['Num_Affaire2']==0)
$tabAnnonce['Num_Affaire2']=substr($fichierHtml,8,7)*1;
$tabAnnonce['Annonce_Html'] = preg_replace('#^.*</head>.*?<body>#Uis','',file_get_contents($fichierHtml));
$tabAnnonce['Annonce_Html'] = preg_replace('#</body>.*?</html>.*?$#Uis','',$tabAnnonce['Annonce_Html']);
$tabPdf=getPdfInfo($localTmpDir.$tabAnnonce['pdfLink']);
$tabAnnonce['pdfSize'] = $tabPdf['pdfSize'];
$tabAnnonce['pdfVer'] = $tabPdf['version'];
$tabAnnonce['pdfPage'] = $tabPdf['nbPages'];
$tabAnnonce['dateInsert']=date('YmdHis');
$message=date ('Y/m/d - H:i:s')." - Fichier n°$iFic, $fichierXml$numParution du $dateParution - affaire $numAff $iAnn/$nbAffaires : $siren $nom - ";
$numAff2=$tabAnnonce['Num_Affaire2'];
$ret=$iDb->select('balo', 'id, Categorie, dateInsert', "Date_Parution='$dateParution' AND Num_Affaire2=$numAff2", false);
//echo mysql_error().EOL;
$id=$ret[0]['id'];
if ($id>0) {
if (!isset($tabCtrl['dateInsert'])) $tabCtrl['dateInsert']=$ret[0]['dateInsert'];
// if ($ret[0]['Categorie']<>'') unset($tabAnnonce['Categorie']);
$message.="Id $id ";
unset($tabAnnonce['dateInsert']);
$iDb->update('balo', $tabAnnonce, "id=$id", false);
//echo mysql_error();
$message.='MAJ'.EOL;
} else {
if (!$iDb->insert('balo', $tabAnnonce, false)) {
$message=date ('Y/m/d - H:i:s') .' - ERREUR : Insertion impossible de l\'annonce MySql n°'. mysql_errno() .') : '. mysql_error() . EOL;
echo $message;
$strMailInfo.=$message;
$message=print_r($tabAnnonce,1);
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO (ERREUR)', $strMailInfo);
die();
} else
$message.='Insertion.' . EOL;
}
echo $message;
$strMailInfo.=$message;
}
if (!isset($tabCtrl['dateInsert'])) $tabCtrl['dateInsert']=date('YmdHis');
$tabCtrl['Num_Annonce_Deb']=1;
$tabCtrl['Num_Annonce_Fin']=$iAnn;
$tabCtrl['NbAnnoncesLues']=$nbItemsXml;
$iDb->insert('chargements', $tabCtrl, false);
}
$message=date('Y/m/d - H:i:s') .' - FIN du traitement.'. EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'JO BALO', $strMailInfo);
?>

240
bin/getBanques.php Normal file
View File

@ -0,0 +1,240 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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();
?>

1572
bin/getBilansInpi.php Normal file

File diff suppressed because it is too large Load Diff

10485
bin/getBodacc.php Normal file

File diff suppressed because it is too large Load Diff

858
bin/getDefaillances.php Normal file
View File

@ -0,0 +1,858 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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', FTPCLIENT_PATH.'creditsafe/send/');
define('CSF_BACKUP_DIR', SOURCES_PATH.'jal/creditsafe/');
$strInfoScript='Usage : '.basename($argv[0]). " <option>
Chargement du/des fichier défaillances en provenance de CSF.
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;
if ($loadInpiLocal) {
$ret=$iGreffe->getListeCessions();
$nbInsert=$ret['insert'];
$nbDeja=$ret['update'];
$nbTot=$nbInsert+$nbDeja;
$message.="Il y a $nbTot annonce(s) RJ avec cessions dont $nbInsert nouvelles ($nbDeja déjà en base).\r\n";
echo date('Y/m/d - H:i:s') ." - Il y a $nbTot annonce(s) RJ avec cessions dont $nbInsert nouvelles ($nbDeja déjà en base).".EOL;
$ret=$iGreffe->getListeCessions('lj');
$nbInsert=$ret['insert'];
$nbDeja=$ret['update'];
$nbTot=$nbInsert+$nbDeja;
$message.="Il y a $nbTot annonce(s) LJ avec cessions dont $nbInsert nouvelles ($nbDeja déjà en base).\r\n";
echo date('Y/m/d - H:i:s') ." - Il y a $nbTot annonce(s) LJ avec cessions dont $nbInsert nouvelles ($nbDeja déjà en base).".EOL;
$nbAnnUpdateJ=$nbAnnInsertJ=0; // Jugements
$nbAnnUpdateE=$nbAnnInsertE=0; // Evènements
$tabTmp=$iDb->select($table, 'MAX(dateInsert) as lastInsert',"source='PP' AND typeEven<2000", false, MYSQL_ASSOC);
$dateMaj=$tabTmp[0]['lastInsert'];
//$dateMaj='2009-07-01 01:00:00';
/**
** Jugements INPI
**/
$AnnDb=$iDb->select('rncs_jugements j, rncs_entrep e',
"j.siren, e.sirenValide, j.codeEven AS typeEven, j.dateEffet AS dateJugement,
adm1type AS inter1type, adm1id AS inter1id, CONCAT(adm1nom,' ',adm1adr1,' ',adm1adr2,' ',adm1adrCP,' ',adm1adrVille) as inter1nom,
adm2type AS inter2type, adm2id AS inter2id, CONCAT(adm2nom,' ',adm2adr1,' ',adm2adr2,' ',adm2adrCP,' ',adm2adrVille) as inter2nom,
j.flux AS dateSource, j.dateInsert, 'PP' AS source, e.triCode AS tribunal, e.raisonSociale",
"j.dateInsert>'$dateMaj' AND j.siren=e.siren AND DATEDIFF(NOW(), j.dateEffet)<=90", false, MYSQL_ASSOC);
$nbAnnonces=count($AnnDb);
$message.="Il y a $nbAnnonces annonce(s) jugements INPI IMR depuis le dernier chargement du $dateMaj :\r\n";
echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnonces annonce(s) jugements INPI IMR depuis le dernier chargement du $dateMaj.".EOL;
foreach ($AnnDb as $i=>$tabInsert) {
$siren=$tabInsert['siren'];
$dateJugement=$tabInsert['dateJugement'];
$typeEven=$tabInsert['typeEven'];
//echo "$siren $dateJugement $typeEven".EOL;
//$tabTmp=@$iInsee->getIdentiteEntreprise($tabInsert['siren']);
$tabTmp=@$iInsee->getIdentiteLight($tabInsert['siren']);
$tabInsert['adresse'] = $tabTmp['Adresse'];
$tabInsert['codePostal'] = $tabTmp['CP'];
$tabInsert['ville'] = $tabTmp['Ville'];
// On recherche s'il y a eu un même jugement au cours de 3 derniers mois
$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', '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.
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;
} else
echo date('Y/m/d - H:i:s') ." - On ignore le chargement des annonce(s) jugements INPI IMR !".EOL;
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;
global $tabCodeEven;
$tabCodeEven=array( 'LJ' => 1305, // Liquidation Judiciaire
'LJS' => 1306, // Liquidation Judiciaire Simplifiee
'PDS' => 1100, // Procedure De Sauvegarde
'PS' => 1101, // Plan De Sauvegarde
'RJ' => 1200, // Redressement Judiciaire
'RJS' => 1200, // Redressement Judiciaire Simplifié ?
'CCJ_DIV'=>1999, // Autres jugements et ordonnances
'CI' => 1503, // Clôture pour insuffisance d'actif
'CPR' => 1645, // Clôture du Rétablissement Professionnel
'CSL' => 1307, // Conversion de la sauvegarde en LJ
'CSR' => 1201, // Conversion de la sauvegarde en RJ
'DOP' => 1215, // Désignation des organes de procédure
'EC' => 1203, // Dépôt de l'état de collocation
'EOPC' => 1511, // Cloture du plan de cession
'EOPDS' => 1500, // Cloture de la procédure de sauvegarde
'EOPS' => 1513, // Cloture du plan de sauvegarde
'EORJ' => 1512, // Cloture de la procédure de redressement judiciaire
'EXLJ' => 1417, // Extension de la liquidation judiciaire
'EXPDS' => 1419, // Extension de la procédure de sauvegarde
'EXRJ' => 1418, // Extension de la procédure de redresseent judiciaire
'FP' => 1600, // Faillite personnelle
'JCC' => 1501, // Jugement de clôture après cession
'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
'PCP' => 1412, // Plan de cession partielle
'PCR' => 1413, // Plan de continuation/Redressement
'PCRM' => 1409, // Jugement lié au plan de continuation/redressement
'PR' => 1407, // Jugement lié au projet de répartition
'PSM' => 1407, // Jugement lié au plan de sauvegarde
'RGJ' => 1209, // Règlement judiciaire
'STOP_LJ'=>1544, // Rétractation de jugement de liquidation judiciaire
'STOP_PCL'=>1506, // Rétractation de jugement => Infirmation Jugement
'STOP_RJ'=>1543, // Rétractation de jugement de redressement judiciaire
'CRE' => 1210, // Jugement lié aux créances => Production de titres et créances
'AMP' => 1525, // Appel du ministère public => Appel de jugement
'HC' => 1445, // Homologation de concordat => Jugement d'homologation de l'accord
'HP' => 1460, // Plan homologué => Jugement d'homologation de l'accord
'CP' => 1010, // Cessation de paiement
'PA' => 1430, // Jugement autorisant la poursuite d'activité
'PUB' => 1700, // Décision soumise à publicité
'SEP' => 1435, // Suspension de l'éxecution provisoire
'SP' => 1436, // Suspension provisoire des poursuites
);
/*
elseif ($libEven=='Liquid.judiciaire Simplifiee') $typeEven='1306';
elseif ($libEven=='Plan De Cession') $typeEven='1411';
elseif ($libEven=='
elseif ($libEven=='Plan De Redressement') $typeEven='1414';
elseif ($libEven=='Conciliation') $typeEven='1150';
elseif ($libEven=='Infirmat Liquid Judiciaire') $typeEven='1506';
*/
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 = trim($tab[7]);
$tabAnn['typeEven'] = getCodeEven($codeJugementCSF)*1;
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]);
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', '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);
}
}
}
}
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', '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 {
// 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', '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;
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', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement annonces Greffes', $message);
echo date ('Y/m/d - H:i:s') . " - Fin du traitement.".EOL;
die();
?>

463
bin/getDevises.php Normal file
View File

@ -0,0 +1,463 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
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.'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;
//$urlListeTauxDGI=$urlListeTauxBCE=$urlListeTauxDouanes='';
$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;
if ($urlListeTauxDGI<>'') {
/** 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;
}
if ($urlListeTauxBCE<>'') {
/** 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(REP_TEMP.'urlListeTauxBCE.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open(REP_TEMP.'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(REP_TEMP, $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(REP_TEMP.$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;
}
if ($urlListeTauxDouanes<>'') {
/** 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(REP_TEMP.'urlListeTauxDouanes.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open(REP_TEMP.'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(REP_TEMP, $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(REP_TEMP.$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(REP_TEMP.$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;
}
if ($urlListeTauxBqMonde<>'') {
/** 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(REP_TEMP.'urlListeTauxBqMonde.zip',$page['body'])) {
$zip = new ZipArchive();
$zip->open(REP_TEMP.'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(REP_TEMP, $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(REP_TEMP.$filename);
$iL2=0;
$tabAnnees=$tabPays=$txUsdEur=array();
foreach($tabTmp as $iL=>$tL) {
$tC=explode('","', '",'.utf8_decode(trim($tL)).'"');
//print_r($tC);
if (count($tC)<10) 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', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement des devises', $strMailInfo);
echo date('Y/m/d - H:i:s') .' - FIN du script.'. EOL;
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);
}
}
}
}
}
}
*/
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
bin/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();
?>

323
bin/getFantoir.php Normal file
View File

@ -0,0 +1,323 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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=',';
$strMailInfo='';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [FICHIERS]
Récupération du fichier FANTOIR de la DGI sur le site http://www.collectivites-locales.gouv.fr/
Options :
-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) {
$message=date ('Y/m/d - H:i:s')." - Début de la récupération du FANTOIR...".EOL;
echo $message;
$strMailInfo.=$message;
$filename=REP_TEMP.'FANTOIR.zip';
if (file_exists($filename) && date('Ymd',filemtime($filename))==date('Ymd')) {
$message=date ('Y/m/d - H:i:s')." - Le dernier fichier FANTOIR a déjà été récupéré.".EOL;
echo $message;
$strMailInfo.=$message;
} 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);
$message=date ('Y/m/d - H:i:s')." - Récupération du dernier FANTOIR en $duree s ($tailleMo Mo).".EOL;
echo $message;
$strMailInfo.=$message;
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) {
$message=date ('Y/m/d - H:i:s')." - Le dernier fichier FANTOIR a déjà été décompressé avec succès.".EOL;
echo $message;
$strMailInfo.=$message;
$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 {
$message=date ('Y/m/d - H:i:s') . " - ERREUR 1 : Décompression impossible de $filenameGz !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement du Fantoir (ERREUR)', $strMailInfo);
die();
}
$tailleGz=round($tailleGz/1024,1);
$tailleUnz=round(filesize(REP_TEMP.$filenameGz)/1024,1);
$tFin = microtime(true);
$tDur = round($tFin-$tDeb,1);
$message=date ('Y/m/d - H:i:s')." - Fichier $filenameGz décompressé : $tailleUnz Ko en $tDur sec. ($tailleGz Ko compressés)".EOL;
echo $message;
$strMailInfo.=$message;
$fichierZip=$filename;
$tabFichiers[]=REP_TEMP.$filenameGz;
}
zip_close($zip);
} else {
$message=date ('Y/m/d - H:i:s') . " - ERREUR 2 : Décompression impossible de ". basename($filename).' !'.EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement du Fantoir (ERREUR)', $strMailInfo);
die();
}
}
}
$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) {
$message=date ('Y/m/d - H:i:s')." - ERREUR 3 : Impossible d'ouvrir le fichier n°$nbFichiers à traiter '".$nomFichier."'".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement du Fantoir (ERREUR)', $strMailInfo);
die();
}
$dateInsert=date('YmdHis');
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 256));
}
$nbLignesTot=$nbLignes;
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 = trim(substr($a, 11, 4 )); // Code nature de la voie
$voieLib = trim(substr($a, 15, 26 )); // Libellé de la voie
$typeCommune = trim(substr($a, 42, 1 )); // Type Commune (N=Rurale, R=recensée)
$carRUR = trim(substr($a, 45, 1 )); // Caractère RUR (3=pseudo-recensée)
$voieCar = trim(substr($a, 48, 1 )); // Caractère de la voie (0=publique, 1=privée)
$popCar = trim(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 = trim(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 = trim(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';
//if ($modeDebug)
echo date ('Y/m/d - H:i:s') . " - Ligne $nbLignes/$nbLignesTot, DEP='$codDepartement' Dir='$codDirection:$libDirOuCommune'".EOL;
$iTotal[$db_table]++;
} 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';
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Ligne $nbLignes/$nbLignesTot, Commune='$codDepartement $codCommune' : '$libDirOuCommune' ($typeCommune,$carRUR) Population=$popReel/$popApar/$popFic($popCar)".EOL;
$iTotal[$db_table]++;
} 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';
if ($modeDebug) echo date ('Y/m/d - H:i:s') . " - Ligne $nbLignes/$nbLignesTot, Commune='$codDepartement $codCommune' : '$libDirOuCommune', RIVOLI='$codDepartement"."$codDirection $codCommune $idVoieCommune $cleRivoli'".EOL;
$iTotal[$db_table]++;
}
$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) {
$message=date ('Y/m/d - H:i:s') . " - ERREUR 4 SQL n°".mysql_errno()." à l'insertion de la ligne n°$nbLignes dans la table '$db_table' :".EOL;
echo $message;
$strMailInfo.=$message;
$message=print_r($tabInsert,1);
echo $message;
$strMailInfo.=$message;
$message=mysql_error().EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement du Fantoir (ERREUR)', $strMailInfo);
die();
} else {
$iUpdate[$db_table]++;
}
} else {
if ($db_table=='fantoirVoi')
echo date ('Y/m/d - H:i:s') . " - Ligne $nbLignes/$nbLignesTot, Commune='$codDepartement $codCommune' : '$libDirOuCommune', Création du RIVOLI='$codDepartement"."$codDirection $codCommune $idVoieCommune $cleRivoli'".EOL;
$iInsert[$db_table]++;
}
}
fclose ($fp);
$nbId=$iInsert['fantoirDep']*1;
$nbUd=$iUpdate['fantoirDep']*1;
$nbIc=$iInsert['fantoirCom']*1;
$nbUc=$iUpdate['fantoirCom']*1;
$nbIv=$iInsert['fantoirVoi']*1;
$nbUv=$iUpdate['fantoirVoi']*1;
$strMailInfo.=date ('Y/m/d - H:i:s') . " - Le fichier Fantoir de la DGI en date du $dateFantoirYmd (Date Topad=$dateTopad) vient d'être chargé :
- ".$iTotal['fantoirDep']." départements ($nbId ajouts et $nbUd mises à jours),
- ".$iTotal['fantoirCom']." communes ($nbIc ajouts et $nbUc mises à jours),
- ".$iTotal['fantoirVoi']." voies ($nbIv ajouts et $nbUv mises à jours).
";
}
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Chargement du Fantoir', $strMailInfo);
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;
?>

371
bin/getFiness.php Normal file
View File

@ -0,0 +1,371 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
$tabDep=array( 'CORSE'=>'',
'AIN'=>'01',
'AISNE'=>'02',
'ALLIER'=>'03',
'ALPES DE HAUTE PROVENCE'=>'04',
'ALPES-MARITIMES'=>'06',
'ARDECHE'=>'07',
'ARDENNES'=>'08',
'ARIEGE'=>'09',
'AUBE'=>'10',
'AUDE'=>'11',
'AVEYRON'=>'12',
'BAS-RHIN'=>'67',
'BOUCHES-DU-RHONE'=>'13',
'CALVADOS'=>'14',
'CANTAL'=>'15',
'CHARENTE'=>'16',
'CHARENTE-MARITIME'=>'17',
'CHER'=>'18',
'CORREZE'=>'19',
'CORSE-DU-SUD'=>'2A',
'COTE-D\'OR'=>'21',
'COTES-D\'ARMOR'=>'22',
'CREUSE'=>'23',
'DEUX-SEVRES'=>'79',
'DORDOGNE'=>'24',
'DOUBS'=>'25',
'DROME'=>'26',
'ESSONNE'=>'91',
'EURE'=>'27',
'EURE-ET-LOIR'=>'28',
'FINISTERE'=>'29',
'GARD'=>'30',
'GERS'=>'32',
'GIRONDE'=>'33',
'GUADELOUPE'=>'9A',
'GUYANE'=>'9C',
'HAUT-RHIN'=>'68',
'HAUTE-CORSE'=>'2B',
'HAUTE-GARONNE'=>'31',
'HAUTE-LOIRE'=>'43',
'HAUTE-MARNE'=>'52',
'HAUTE-SAONE'=>'70',
'HAUTE-SAVOIE'=>'74',
'HAUTE-VIENNE'=>'87',
'HAUTES-ALPES'=>'05',
'HAUTES-PYRENEES'=>'65',
'HAUTS-DE-SEINE'=>'92',
'HERAULT'=>'34',
'ILE DE CLIPPERTON'=>'9M',
'ILLE-ET-VILAINE'=>'35',
'INDRE'=>'36',
'INDRE-ET-LOIRE'=>'37',
'ISERE'=>'38',
'JURA'=>'39',
'LA REUNION'=>'9D',
'LANDES'=>'40',
'LOIR-ET-CHER'=>'41',
'LOIRE'=>'42',
'LOIRE-ATLANTIQUE'=>'44',
'LOIRET'=>'45',
'LOT'=>'46',
'LOT-ET-GARONNE'=>'47',
'LOZERE'=>'48',
'MAINE-ET-LOIRE'=>'49',
'MANCHE'=>'50',
'MARNE'=>'51',
'MARTINIQUE'=>'9B',
'MAYENNE'=>'53',
'MAYOTTE'=>'9F',
'MEURTHE-ET-MOSELLE'=>'54',
'MEUSE'=>'55',
'MORBIHAN'=>'56',
'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',
'RHONE'=>'69',
'SAINT PIERRE ET MIQUELON'=>'9E',
'SAONE-ET-LOIRE'=>'71',
'SARTHE'=>'72',
'SAVOIE'=>'73',
'SEINE-ET-MARNE'=>'77',
'SEINE-MARITIME'=>'76',
'SEINE-SAINT-DENIS'=>'93',
'SOMME'=>'80',
'T.A.A.F.'=>'9I',
'TARN'=>'81',
'TARN-ET-GARONNE'=>'82',
'TERRITOIRE DE BELFORT'=>'90',
'VAL D\'OISE'=>'95',
'VAL DE MARNE'=>'94',
'VAR'=>'83',
'VAUCLUSE'=>'84',
'VENDEE'=>'85',
'VIENNE'=>'86',
'VOSGES'=>'88',
'WALLIS ET FUTUNA'=>'9J',
'YONNE'=>'89',
'YVELINES'=>'78',
);
/*
$tabDep=array( 'CORSE',
'AIN',
'AISNE',
'ALLIER');
*/
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS]
Téléchargement et mise à jour du fichier Finess (Etablissements de Santé)
Options:
-v Mode debug
";
$modeDebug=false;
$strMailInfo='';
$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': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabFichier[$j]=$argv[$i];
$j++;
}
}
}
$message=date('Y/m/d - H:i:s')." - Début du traitement de récupération de la base FINESS...".EOL;
echo $message;
$strMailInfo.=$message;
$tabEtab=array(0=>'', 1=>'Etablissement',2=>'Juridique');
$tabSelect=$tabTables=array();
$url='http://finess.sante.gouv.fr/finess/jsp/rechercheSimple.jsp';
$page=getUrl($url);
if ($page['code']<>200) {
$message=date('Y/m/d - H:i:s')." - Code retour de Finess ($url) différent de 200 !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers FINESS (ERREUR)", $strMailInfo);
die();
}
$cookie=$page['header']['Set-Cookie'];
$referer=$url;
$iDb=new WDB('sante');
$i=-1;
foreach ($tabDep as $dep=>$depNum) {
$i++;
/*$etabMax=1;$j=0*/
$etabMax=3;
for($j=1; $j<$etabMax; $j++) {
$etab=$tabEtab[$j];
$publMax=1;
if ($j>0) $table="finess".$i."_$j";
else $table="finess".$i;
for($publ=0; $publ<$publMax; $publ++) {
if ($publ>0) $table.="_$publ";
$fichierCsv=REP_TEMP."$table.csv";
if (!file_exists($fichierCsv) || filesize($fichierCsv)<100 || date('Ymd', filemtime($fichierCsv))<date('Ymd',mktime(0,0,0,date('m'),date('d')-5,date('Y')))) {
// On récupère le fichier distant
$message=date('Y/m/d - H:i:s')." - Début de la récupération du CSV pour $dep $etab,$publ...".EOL;
echo $message;
$strMailInfo.=$message;
//echo 'Date du fichier = '.date('Ymd', filemtime($fichierCsv)).EOL;
//echo 'Date il y a 5 jours = '.date('Ymd',mktime(0,0,0,date('m'),date('d')-5,date('Y'))).EOL;
$choixLoc2=$dep.'%0D%0A';
if ($dep=='CORSE')
$choixLoc='*+CORSE%2C+%2C+%2C+%23%0D%0A';
else
$choixLoc='*+%2C+'.$dep.'+%5B'.$depNum.'%5D%2C+%2C+%23%0D%0A';
$userAgent='Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
$postData='siren=&siret=&nofiness=&rs=&ongletActuel=1&regionText=&region=&deptriorder=&dep=&commune=&rue=&choixLoc='.$choixLoc.'&chercher=Chercher';
//$url='http://finess.sante.gouv.fr/finess/jsp/actionRechercheSimple.do';//.'?'.$postData;
$url='http://finess.sante.gouv.fr/finess/jsp/actionRechercheAvancee.do';
/* publ[2]
etat[3]
dateDeb[]
chercher[Chercher] */
$post=array('siren'=>'',
'siret'=>'',
'nofiness'=>'',
'rs'=>'',
'ongletActuel'=>1,
'regionText'=>'',
'region'=>'',
'deptriorder'=>'',
'dep'=>'',
'commune'=>'',
'rue'=>'',
//'entite'=>$etab,
'choixLoc'=>$choixLoc,
'chercher'=>'Chercher');
if ($etab<>'') $post['entite']=$etab;
if ($publ>0) $post['publ']=$publ;
$page=getUrl($url, $cookie, $post, $referer);
if (preg_match('/<div class="errors"><p>Liste des erreurs<\/p><ul>(.*)<\/ul><\/div>/Uis', $page['body'], $matches)) {
if ($etab<>'') {
$publMax=4;
continue;
} else {
$etabMax=3;
continue 2;
}
}
if (preg_match('/sultat\(s\) trouv.*\(s\)\:.*<ul class="listeCriteres">.*<li>(.*)<\/li>.*<\/ul>/Uis', $page['body'], $matches))
$nbResultats=trim($matches[1]);
else
$nbResultats=false;
if ($etab=='') $post['entite']=$etab;
/*exec('wget --append-output=/tmp/wget.log --keep-session-cookies --save-headers --output-document=/tmp/wget.htm "'.$url.'"');
$str=file_get_contents('/tmp/wget.htm');
if (!preg_match_all('/Set\-Cookie\: (.*); path=\//Uis', $str, $matches))
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];*/
if (!$modeDebug) randsleep(7,21);
$referer=$url;
$tdeb=microtime(1);
$url='http://finess.sante.gouv.fr/finess/jsp/liste.do?order=CSVEQUIP&noFiness=&export=complet';
$page=getUrl($url, $cookie, '', $referer);
$tfin=microtime(1);
$duree=round($tfin-$tdeb,1);
$debit=round((strlen($page['body'])/($tfin-$tdeb))/1024,1);
/*print_r($page);
die();*/
$strCsv=preg_replace('/^=/m', '', str_replace(';=',';',$page['body']));
$strCsv=strtr($strCsv,array('SIREN'=>'SIRET'));
//if (mb_detect_encoding($strCsv, 'UTF-8', true))
// $strCsv=utf8_decode($strCsv);
file_put_contents($fichierCsv, $strCsv);
$message=date('Y/m/d - H:i:s')." - Fin de la récupération du CSV pour $dep $etab,$publ en $duree s ($nbResultats lignes, $debit Ko/s).".EOL;
echo $message;
$strMailInfo.=$message;
} else {
$message=date('Y/m/d - H:i:s')." - Récupération du CSV depuis le cache pour $dep $etab,$publ.".EOL;
echo $message;
$strMailInfo.=$message;
}
if (@$nbResultats*1>0) { // le fichier doit contenir au moins une ligne d'entête
$tabTmp=file(REP_TEMP."$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(REP_TEMP."$table.csv",'sante',$table,$recreate);
$duree=round(microtime(1)-$tdeb,1);
$message=date('Y/m/d - H:i:s')." - Chargement du département $dep $etab : $nbInsert lignes en $duree s ($table)".EOL;
echo $message;
$strMailInfo.=$message;
// die(REP_TEMP."$table.csv".EOL);
} else {
$message=date('Y/m/d - H:i:s')." - Pas de rechargement du département $dep $etab : $nbLignesTable lignes déjà en base $table.".EOL;
echo $message;
$strMailInfo.=$message;
}
$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
$message=date('Y/m/d - H:i:s')." - Mise en place de la nouvelle table Finess...".EOL;
echo $message;
$strMailInfo.=$message;
$tabErreur=array();
$sql="DROP TABLE IF EXISTS `finess_old`;";
if (!$iDb->query($sql)) $tabErreur[]='DROP TABLE finess_old '.mysql_errno().':'.mysql_error();
// On historise la table précédente
$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 `finessWeb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Numéro FINESS` char(9) NOT NULL,
`SIRET` varchar(14) DEFAULT NULL,
`APE` varchar(5) DEFAULT NULL,
`Raison sociale` varchar(38) DEFAULT NULL,
`Complément distribution` varchar(32) DEFAULT NULL,
`Adresse` varchar(36) DEFAULT NULL,
`Lieudit/BP` varchar(32) DEFAULT NULL,
`Code postal` bigint(5) unsigned zerofill NOT NULL,
`Libelle routage` varchar(26) DEFAULT NULL,
`Tel` varchar(15) DEFAULT NULL,
`Fax` varchar(14) DEFAULT NULL,
`Date ouvert` varchar(17) DEFAULT NULL,
`Code categorie` smallint(3) unsigned zerofill DEFAULT NULL,
`Lib categorie` varchar(59) DEFAULT NULL,
`Code statut` bigint(2) DEFAULT NULL,
`Lib statut` varchar(59) DEFAULT NULL,
`Code tarif` tinyint(2) unsigned DEFAULT NULL,
`Lib tarif` varchar(59) DEFAULT NULL,
`Code PSPH` enum('','0','1','2','3','4','5','6','7','8','9') NOT NULL COMMENT 'Participation au Service Public Hospitalier (0:non, 1:Etab.public de santé, 2:PSPH intégration, 3:PSPH concession, 4:PSPH association, 5:Assoc 1901 act. Psy, 9:indéterminé)',
`Lib PSPH` varchar(29) DEFAULT NULL,
`FINESS juridique` char(9) DEFAULT NULL,
`recupTel` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `idxFiness` (`Numéro FINESS`),
KEY `idxSiret` (`SIRET`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Ficher National des Etablissements Sanitaires et Sociaux';";
if (!$iDb->query($sql)) $tabErreur[]='CREATE TABLE '.mysql_errno().':'.mysql_error();
// Ecritures des lignes
$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) {
foreach ($tabTables as $table) {
$sql="DROP TABLE IF EXISTS `$table`;";
if (!$iDb->query($sql)) $tabErreur[]="DROP TABLE $table ".mysql_errno().':'.mysql_error();
}
}
if (count($tabErreur)>0) {
$message='Liste des Erreurs :'.EOL;
echo $message;
$strMailInfo.=$message;
$message=print_r($tabErreur,1).EOL;
echo $message;
$strMailInfo.=$message;
} else {
$message=date('Y/m/d - H:i:s')." - Fin de la mise en place de la table Finess...".EOL;
echo $message;
$strMailInfo.=$message;
}
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers FINESS", $strMailInfo);
echo date('Y/m/d - H:i:s')." - Fin du script...".EOL;
?>

186
bin/getImportExport.php Normal file
View File

@ -0,0 +1,186 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS]
Téléchargement et mise à jour des fichiers Imports/Exports des Douanes.
Options:
-v Mode debug
";
$modeDebug=false;
$strMailInfo='';
$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': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabFichier[$j]=$argv[$i];
$j++;
}
}
}
$message=date ('Y/m/d - H:i:s')." - Début de la récupération du fichier Import/Export des douanes...".EOL;
echo $message;
$strMailInfo.=$message;
/**
** Fichiers Classement Imports/Exports
**
** @todo Vérifier les changements du flux RSS http://lekiosque.finances.gouv.fr/APPCHIFFRE/rss.xml
**
**/
$url='http://lekiosque.finances.gouv.fr/Appchiffre/entreprise/Trans_palm.asp';
$referer='';
$tabCsv=array();
$tabFlux=array('export','import');
$tabRege=array( 'R01', // Nord - Pas-de-Calais
'R02', // Picardie
'R03', // Ile-de-France
'R04', // Centre
'R05', // Haute-Normandie
'R06', // Basse-Normandie
'R07', // Bretagne
'R08', // Pays de la Loire
'R09', // Poitou-Charentes
'R10', // Limousin
'R11', // Aquitaine
'R12', // Midi-Pyrénées
'R13', // Champagne-Ardenne
'R14', // Lorraine
'R15', // Alsace
'R16', // Franche-Comté
'R17', // Bourgogne
'R18', // Auvergne
'R19', // Rhône-Alpes
'R20', // Languedoc-Roussillon
'R21', // Provence-Alpes-Côte-d'Azur
'R22', // Corse
'R24', // Les départements d'Outre-mer
);
/*
de 1 à 9 salariés : micro-entreprises
de 10 à 49 salariés : petites entreprises
de 50 à 249 salariés : moyennes entreprises
Ces trois premières catégories constituent les Micro entreprises et les PME.
250 et plus : grandes entreprises
Parfois la catégorie est inconnue car l'information sur la tranche d'effectif salarié n'est pas disponible.
*/
$iDb=new WDB();
$page=getUrl($url, '', '', $referer);
$body=$page['body'];
$cookie=$page['header']['Set-Cookie'];
$referer=$url;
if (preg_match('/Transfert du palmarès national et des palmarès régionaux(?:.*)année(.*)</Uis', $page['body'], $matches)) {
$annee=trim($matches[1]);
$message=date('Y/m/d - H:i:s')." - Le palmarès national Import/Export date de $annee.".EOL;
echo $message;
$strMailInfo.=$message;
} else {
$message=date('Y/m/d - H:i:s')." - ERREUR : Impossible de détecter l'année du palmarès national Import/Export !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers I/E des Douanes (ERREUR)", $strMailInfo);
die();
}
$url='http://lekiosque.finances.gouv.fr/Appchiffre/entreprise/chargement.asp';
foreach ($tabFlux as $flux) {
$importExport=strtoupper(substr($flux,0,1));
foreach ($tabRege as $rege) {
$post=array('fluc'=>$flux,
'x'=>40,
'y'=>10,
'rege'=>$rege,
);
randsleep(7,21);
$page=getUrl($url, $cookie, $post, $referer);
//$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(REP_TEMP.'importExport.zip', 'w');
fwrite($fp, $zip);
fclose($fp);
$zip = new ZipArchive;
if ($zip->open(REP_TEMP.'importExport.zip') === TRUE) {
$zip->extractTo(REP_TEMP);
$zip->close();
echo date('Y/m/d - H:i:s')." - Décompression du fichier $nomFichier OK.".EOL;
$nomFichierCsv=str_replace('.zip','.csv',$nomFichier);
$fp = fopen(REP_TEMP.$nomFichierCsv, 'r');
$nbRows=$nbInsert=0;
while (($data = fgetcsv($fp, 5000, ';')) !== FALSE) {
$nbRows++;
if ($data[0]*1>0) {
$tabInsert=array( 'importExport'=>$importExport,
'annee'=>$annee,
'siren'=>$data[0],
'raisonSociale'=>$data[1],
'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],
'deptSiege'=>$data[6],
);
$iDb->insert('importExport', $tabInsert);
$nbInsert++;
}
}
fclose($fp);
$message=date('Y/m/d - H:i:s')." - Fichier $nomFichierCsv contenant $nbRows lignes dont $nbInsert insérées.".EOL;
echo $message;
$strMailInfo.=$message;
} else {
$message=date('Y/m/d - H:i:s')." - ERREUR lors de la décompression du fichier $nomFichier !".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers I/E des Douanes (ERREUR)", $strMailInfo);
die();
}
} else {
$message=date('Y/m/d - H:i:s')." - ERREUR : Aucune archive détecté dans :".EOL.print_r($page['header']).EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers I/E des Douanes (ERREUR)", $strMailInfo);
die();
}
}
}
$message=date ('Y/m/d - H:i:s') . " - Fin de chargement des fichiers Import/Export de l'année $annee des Douanes".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Fin du chargement des fichiers I/E des Douanes", $strMailInfo);
echo date('Y/m/d - H:i:s')." - Fin du script...".EOL;
?>

87
bin/getInflation.php Normal file
View File

@ -0,0 +1,87 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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/classMLiens.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIERS]
Génération du cache des variables courantes si nécessaire.
Options :
-d Mode debug (Verbosité au maximum)
-f Forcer la re-Génération du cache
";
$modeDebug=$modeGeneration=false;
$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 'f': $modeGeneration=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
}// else $tabFichLigneCmd[]=$argv[$i];
}
$iDb=new WDB('sdv1');
$url="http://www.france-inflation.com/inflation-depuis-1901.php";
$referer='';
$page=getUrl($url, '', '', $referer, false);
$body=$page['body'];
$nbInsert=$nbErreur=$nbDoublon=0;
/*<tr><td><a href="/calculateur-inflation.php"><br>Consensus 2015<br><br></a></td><td><font color="blue"><b>(0.6%)</b></font></td><td>(2552)</td></tr>
<tr><td>2014</td><td><font color="red"><b>0.5%</b></font></td><td>2537</td></tr>
<tr><td>2013</td><td><font color="red"><b>0.9 %</b></font></td><td>2524</td></tr>*/
if (preg_match_all("/<tr><tr>(.*\d{4,4})<\/td><td><font color=\"red\"><b>(.*)\%\)?<\/b><\/font><\/td><td>\(?([0-9\.]+)\)?<\/td><\/tr>/Uim", $body, $matches)) {
print_r($matches);
foreach($matches[2] as $i=>$annee) {
if ($matches[1][$i]=='(') { $prov=true; $strProv=' provisoire'; }
else { $prov=false; $strProv=''; }
$taux=str_replace('(','',$matches[3][$i]);
$tabInsert=array('annee'=>$annee,
'infla'=>$taux,
'cumul'=>$matches[4][$i],
'dateInsert'=>date('Ymd'),
'provisoire'=>$prov,
);
//print_r($tabInsert);
//die();
if ($iDb->insert('inflation', $tabInsert)) {
echo date('Y/m/d - H:i:s') ." - Insertion du taux d'inflation pour l'année $annee=$taux...". EOL;
$nbInsert++;
}
elseif ($iDb->getLastErrorNum()==1062 && ($annee==date('Y') || $annee==date('Y')-1)) {
unset($tabInsert['dateInsert']);
echo date('Y/m/d - H:i:s') ." - Mise à jour du taux d'inflation$strProv pour l'année $annee=$taux...". EOL;
$iDb->update('inflation', $tabInsert, "annee=$annee");
}
elseif ($iDb->getLastErrorNum()<>1062) {
echo date('Y/m/d - H:i:s') ." - ERREUR ". $iDb->getLastError() ." lors de l'insertion du taux d'inflation pour l'année $annee=$taux...". EOL;
$nbErreur++;
}
else
$nbDoublon++;
}
} else
echo date('Y/m/d - H:i:s') ." - ERREUR lors de la récupération des taux d'inflation !". EOL;
$nbInfla=$i+1;
if ($nbInfla==$nbDoublon)
echo date('Y/m/d - H:i:s') ." - Aucun ajout d'inflation sur les $nbInfla années disponibles.". EOL;
?>

604
bin/getInfosReg.php Normal file
View File

@ -0,0 +1,604 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
/**
** Attention : Si ajout d'une nouvelle source modifier la table articles !
** 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;
$strInfoProg='Usage : '.basename($argv[0]). " [OPTION]
Intégration des derniers communiqués boursier.
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 {
$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;
}*/
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;
@mkdir(LESECHOS_LOCAL_DIR.'syndication/');
$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;
}
}
/**
** INTEGRATION DES COMMUNIQUES "HUGIN"
**/
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;
}
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;
}
/**
** INTEGRATION DES COMMUNIQUES "ACTUSNEWS"
**/
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);
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;
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);
}
}
$message=date('Y/m/d - H:i:s') ." - FIN de l'intégration des $nbActus communiqués ActusNews.".EOL;
echo $message;
$strMessage.=$message;
}
/**
** INTEGRATION DES COMMUNIQUES "DIRELEASE"
**/
/*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))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.xml')
$tabFichier[] = $filename;
}
/** @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);
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);
if (stripos($strTmp, 'langue="FR"')>0) {
echo date ('Y/m/d - H:i:s')." - Chargement du communiqué en français ($ligne).".EOL;
preg_match('/<id>(.*)<\/id>/isU',$strTmp,$matches);
$pressReleaseId=trim(@$matches[1]);
preg_match('/<raisonsociale>(.*)<\/raisonsociale>/isU',$strTmp,$matches);
$raisonsociale=trim(@$matches[1]);
preg_match('/<codeisin>(.*)<\/codeisin>/isU',$strTmp,$matches);
$codeisin=trim(@$matches[1]);
preg_match('/<code_reuters>(.*)<\/code_reuters>/isU',$strTmp,$matches);
$code_reuters=trim(@$matches[1]);
preg_match('/<logo>(.*)<\/logo>/isU',$strTmp,$matches);
$logo=trim(@$matches[1]);
preg_match('/<site>(.*)<\/site>/isU',$strTmp,$matches);
$site=trim(@$matches[1]);
preg_match('/<site_investisseur>(.*)<\/site_investisseur>/isU',$strTmp,$matches);
$site_investisseur=trim(@$matches[1]);
preg_match('/<logo>(.*)<\/logo>/isU',$strTmp,$matches);
$logo=trim(preg_replace('/\s/','',@$matches[1]));
preg_match('/<miseajour>(.*)<\/miseajour>/isU',$strTmp,$matches);
$miseajour=trim(@$matches[1]);
preg_match('/<titre>(.*)<\/titre>/isU',$strTmp,$matches);
$titre=trim(@$matches[1]);
preg_match('/<contenu>(.*)<\/contenu>/isU',$strTmp,$matches);
$contenu=trim(strtr(@$matches[1],array('<![CDATA['=>'', ']]>'=>'')));
preg_match('/<pdf>(.*)<\/pdf>/isU',$strTmp,$matches);
$pdf=preg_replace('/\s/','',@$matches[1]);
preg_match('/<indice>(.*)<\/indice>/isU',$strTmp,$matches);
$indice=trim(@$matches[1]);
preg_match('/<secteur>(.*)<\/secteur>/isU',$strTmp,$matches);
$secteur=trim(@$matches[1]);
preg_match('/<marche_cotation>(.*)<\/marche_cotation>/isU',$strTmp,$matches);
$marche_cotation=trim(@$matches[1]);
preg_match('/<code_bloomberg>(.*)<\/code_bloomberg>/isU',$strTmp,$matches);
$code_bloomberg=trim(@$matches[1]);
preg_match('/<mnemo>(.*)<\/mnemo>/isU',$strTmp,$matches);
$mnemo=trim(@$matches[1]);
preg_match('/<nb_de_titres>(.*)<\/nb_de_titres>/isU',$strTmp,$matches);
$nb_de_titres=trim(@$matches[1]);
preg_match('/<footsie>(.*)<\/footsie>/isU',$strTmp,$matches);
$footsie=trim(@$matches[1]);
$tabInsert=array( //'companyId'=>$dom->getValueFromTag('COMPANY_ID'),
'companyName'=>$raisonsociale,
'companyIsin'=>$codeisin,
//'companySiren'=>$dom->getValueFromTag('COMPANY_SIREN'),
'companyRic'=>$code_reuters,
'companyLogoUrl'=>$logo,
'companyWebSite'=>$site,
//'companyProfile'=>$dom->getValueFromTag('URL3'),
//'companyAnnualReport'=>$dom->getValueFromTag('URL4'),
'companyInfoActionnaires'=>$site_investisseur,
'pressReleaseId'=>$pressReleaseId,
'pressReleaseDate'=>$miseajour,
'pressReleaseTitle'=>$titre,
'pressReleaseText'=>trim(strtr(html_entity_decode(strip_tags($contenu)),array('&rsquo;'=>''))),
'pressReleaseHtml'=>$contenu,
'pressReleaseAttachments'=>$pdf,
'indexQuoteInd'=>$indice,
'indexSector'=>$secteur,
'indexMarketPlace'=>$marche_cotation,
'source'=>'D',
'companyBloomberg'=>$code_bloomberg,
'companyMnemo'=>$mnemo,
'companyNbTitles'=>$nb_de_titres,
'companyFootsie'=>$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;
$nbDiRel++;
}
unset($dom);
}
}
$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"
**/
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;
}
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;
/*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;
$nbBusin++;
}
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;
}
/**
** 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();
?>

1310
bin/getInpi2009.php Normal file

File diff suppressed because it is too large Load Diff

1812
bin/getInseeEven.php Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1760
bin/getIsin.php Normal file

File diff suppressed because it is too large Load Diff

800
bin/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;
}
}
}
?>

363
bin/getLogos.php Normal file
View File

@ -0,0 +1,363 @@
#!/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(INCLUDE_PATH.'partenaires/classMBilans.php');
include_once(FWK_PATH.'mail/sendMail.php');
$dateTime=date('YmdHis');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Récuperer les logos non encore en base.
Options :
-b Rechercher les logo via Bing
-v Mode bavard ou debug
(*) Option par défaut si aucun argument n'est passé.
";
$bing=$modeDebug=false;
$iReprise=0;
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 'b': $bing=true; break;
case 'v': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
}
}
if ($modeDebug)
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des Logos...".EOL;
$iDb=new WDB('telephonie');
$referer='';
$url="http://www.annuaire.com/dernieres-societes-inscrites/";
$tDeb=microtime(true);
$page=getUrl($url, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
$taille=round(strlen($body)/1024,1);
/* <li class="even">
<a href="http://www.annuaire.com/marchand-de-meubles/love-lit-kids-love-lit-kids-528117443/"><img src="http://www.annuaire.com/images/category/picto/13.gif" /></a>
<strong><a href="http://www.annuaire.com/marchand-de-meubles/love-lit-kids-love-lit-kids-528117443/">LOVE LIT KIDS (LOVE LIT KIDS)</a></strong><br />
<p>mobiliers et d&eacute;corations contemporain et vintage pour chambres d'enfants de...</p>
</li>
</ul>
</div>
</div>
<div id="right-space">
<div class="ad"><script charset="iso-8859-1" type="text/javascript" src="http://adnext.fr/richmedia.adv?popunderid=97318&amp;tag=2&amp;s=big&amp;section=last_register_company"></script></div>
<div class="side-interpanel-separator"></div>
<div class="side-panel">
<p class="side-panel-title"><img src="http://www.annuaire.com/images/annuaire-rss.png" alt="" /> Soci&eacute;t&eacute;s <span class="annuaire_blue">premium</span></p>
<ul class="side-company-list">
<li>
<a href="http://www.annuaire.com/agence-de-publicite/west-development-513135723/"><img src="http://www.annuaire.com/uploads/513/135/513135723/logo.jpg" /></a>
<strong><a href="http://www.annuaire.com/agence-de-publicite/west-development-513135723/">WEST DEVELOPMENT</a></strong><br />
<span class="city annuaire_blue">Vire</span><br />
<p>WEST DEVELOPMENT le sp&eacute;cialiste en sonorisation, &eacute;clairage et instrument de...</p>
</li>
<li>*/
if (!preg_match_all('/<li(?:.*)>(?:\s+)<a href="(http\:\/\/www\.annuaire\.com\/(?:.*)\/)"><img src="(http\:\/\/www\.annuaire\.com\/(.*))" \/><\/a>(?:\s+)<strong><a href=".*">(.*)<\/a><\/strong><br \/>(.*)<\/li>/Uis', $body, $matches))
die('Erreur de parsing des logos...');
foreach ($matches[1] as $i=>$urlFiche) {
$siren=str_replace('/','',substr($urlFiche,-10));
$urlLogo=$matches[2][$i];
/** On télécharge d'abord tous les logos, comme un navigateur **/
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);
}
}
}
foreach ($matches[1] as $i=>$urlFiche) {
$siren=str_replace('/','',substr($urlFiche,-10));
$ret=$iDb->select('societe_ent', 'count(*) AS nb', "siren=$siren");
$nbDeja=$ret[0][0];
if ($nbDeja==0) {
$tabEntrep=array('siren'=>$siren);
$urlLogo=$matches[2][$i];
/** On télécharge d'abord tous les logos, comme un navigateur **/
if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/' &&
file_exists("/home/data/logos/$siren.$extension"))
$tabEntrep['logo']=1;
else
$tabEntrep['logo']=0;
/* $urlLogo=$matches[2][$i];
if (substr($urlLogo,0,32)<>'http://www.annuaire.com/uploads/') {
$urlLogo='';
$tabEntrep['logo']=0;
}*/
$tabEntrep['nom']=$nom=$matches[4][$i];
$tabEntrep['descCourt']=$desc=@trim(html_entity_decode(strip_tags($matches[5][$i])));
/** Téléchargement du logo **
if ($urlLogo<>'') {
$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);
if (file_put_contents("/home/data/logos/$siren.$extension",$body))
$tabEntrep['logo']=1;
} else
$tabEntrep['logo']=1;
}*/
$desc=$categ=$web='';
if ($i>0) {
/** Lecture de la fiche **/
$referer='';
$tDeb=microtime(true);
$page=getUrl($urlFiche, '', '', $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
if (preg_match_all('/<li class="tel">(?:\s+)<label class="type" title="(.*)"(?:\s+)?>(.*)<\/label>(?:\s+)<span class="dot">\:<\/span>(?:\s+)<span class="value"(?:.*)?>(.*)<\/span>(.*)<\/li>/Uis', $body, $matches2)) {
//print_r($matches2);
foreach ($matches2[1] as $j=>$typeTel) {
$libTel=html_entity_decode($matches2[2][$j]);
$numTel=trim($matches2[3][$j]);
$infoTel=html_entity_decode(trim(strtr(strip_tags($matches2[4][$j]),array('('=>'',')'=>''))));
$tabInsert=array('siren'=>$siren,
'typeTel'=>$typeTel,
'libTel'=>$libTel,
'numTel'=>$numTel,
'infoTel'=>$infoTel,
'dateInsert'=>$dateTime,
);
if ($iDb->insert('societe_tel', $tabInsert))
echo "$dateTime\t$siren\t$nom\t$typeTel\t$libTel\t$numTel\t$infoTel".EOL;
}
}
$desc=$categ=$web='';
if (preg_match('/<div id="description">(?:\s+)<label class="description">(?:.*)<\/span>(?:\s+)<p>(.*)<\/p>(?:\s+)<\/div>/Uis', $body, $matches2))
$tabEntrep['descLong']=@trim(html_entity_decode(strip_tags($matches2[1])));
if (preg_match('/<div id="category">(?:\s+)<label>(?:.*)<\/span>(?:\s+)<p class="(.*)">(.*)<\/p>/Uis', $body, $matches2)) {
$tabEntrep['catTyp']=@trim($matches2[1]);
$tabEntrep['catLib']=$categ=@trim($matches2[2]);
}
if (preg_match('/<div id="site">(?:\s+)<label>(?:.*)<\/span>(?:\s+)<a class="url" target="_blank" href="(.*)">(?:.*)<\/div>/Uis', $body, $matches2))
$tabEntrep['web']=$web=@trim($matches2[1]);
// if (preg_match('/<div id="mail">(?:\s+)<label>(?:.*)<\/span>(?:\s+)<span class="mail"><img src="http://www.annuaire.com/images/email/48294778500000/" /></span><a class="url" target="_blank" href="(.*)">(?:.*)<\/div>', $body, $matches2))
// $web=$matches2[2];
}
$tabEntrep['dateInsert']=$dateTime;
if ($iDb->insert('societe_ent', $tabEntrep))
echo "$dateTime\t$siren\t$nom\t$urlLogo\t$desc\t$categ\t$web".EOL;
}
}
//print_r($matches);
if ($modeDebug)
echo date('Y/m/d - H:i:s') ." - FIN du programme de récupération des Logos.".EOL;
if (!$bing) die();
// Recherche BING
$appId = '56D6CBA671C986D3EA11B1B48F97507BC5A00D51';
$numResults = 50;
$cultureInfo = 'fr-FR';
for($i=0; $i<1000; $i++) {
// for($j=522; $j<1000; $j++) {
// $siren2=implode(' ', str_split($siren, 3));
// if ($nomEntrep<>'') $rs2="OR \"$nomEntrep\"";
// $tabSitesExclus=array('societe.com','bilans.net','gouv.fr','info-financiere.fr','bodacc.fr','manageo.fr','bilansgratuits.fr','lesechos.fr','google.fr');
$sir1=sprintf("%03s", $i);
//$sir2=sprintf("%03s", $j);
$rs="$sir1 logo site:annuaire.com";
//511
// $rs="$siren OR \"$siren2\" $rs2 -site:".implode(' -site:', $tabSitesExclus);
$query=stripslashes(urlencode($rs));
$tabSources=array(// 'web'=>'Web page results',
'image'=>'Full-size image and thumbnail image information, including the file size in bytes (if available), height and width in pixels (if available), and the URI to the full-size image or thumbnail',
/*'instantAnswer'=>'Answers. The result fields returned for requests that specify InstantAnswer vary based on the value or values specified for the Query property. InstantAnswer results can include Encarta, FlightStatus, Finance, Music, Sports, Weather, and Movie ShowTimes. For the Version 2.0 release, results include Encarta and FlightStatus only. Other results are available by invitation',
'mobileWeb'=>'Mobile Web page results (primarily Extensible Hypertext Markup Language (XHTML) and Wireless Markup Language (WML)',
'phoneBook'=>'Results from online White Pages (residential) and Yellow Pages (commercial) entries',
'relatedSearch'=>'Suggestions for other searches related to the query term or terms',
'spell'=>'Spelling suggestions',
'translation'=>'Translated results for a queried',
'video'=>'Video results',*/
//'news'=>'Results from online news services',
);
$source=implode('+', array_keys($tabSources));
$offset=0;
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'];
foreach ($tabJson['Image']['Results'] as $j=>$tab) {
//print_r($tab);
$urlLogo=$tab['MediaUrl'];
$tmp=explode('/',str_replace('http://www.annuaire.com/uploads/','',$urlLogo));
$siren=$tmp[2];
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);
echo "$sir1\t$offset\t$siren\t$urlLogo".EOL;
randsleep(1,2);
}
}
}
$offset+=$numResults;
if ($offset>$tabJson['Image']['Total']) break;
}
}
die();
function findSiteWeb($siren, $nomEntrep='') {
// Recherche BING
$appId = '56D6CBA671C986D3EA11B1B48F97507BC5A00D51';
$numResults = 50;
$cultureInfo = 'fr-FR';
$siren2=implode(' ', str_split($siren, 3));
if ($nomEntrep<>'') $rs2="OR \"$nomEntrep\"";
$tabSitesExclus=array('societe.com','bilans.net','gouv.fr','info-financiere.fr','bodacc.fr','manageo.fr','bilansgratuits.fr','lesechos.fr','google.fr');
$rs="$siren OR \"$siren2\" $rs2 -site:".implode(' -site:', $tabSitesExclus);
$query=stripslashes(urlencode($rs));
$tabSources=array( 'web'=>'Web page results',
/*'image'=>'Full-size image and thumbnail image information, including the file size in bytes (if available), height and width in pixels (if available), and the URI to the full-size image or thumbnail',
'instantAnswer'=>'Answers. The result fields returned for requests that specify InstantAnswer vary based on the value or values specified for the Query property. InstantAnswer results can include Encarta, FlightStatus, Finance, Music, Sports, Weather, and Movie ShowTimes. For the Version 2.0 release, results include Encarta and FlightStatus only. Other results are available by invitation',
'mobileWeb'=>'Mobile Web page results (primarily Extensible Hypertext Markup Language (XHTML) and Wireless Markup Language (WML)',
'phoneBook'=>'Results from online White Pages (residential) and Yellow Pages (commercial) entries',
'relatedSearch'=>'Suggestions for other searches related to the query term or terms',
'spell'=>'Spelling suggestions',
'translation'=>'Translated results for a queried',
'video'=>'Video results',*/
//'news'=>'Results from online news services',
);
$source=implode('+', array_keys($tabSources));
$url="http://api.bing.net/json.aspx?AppId=$appId&Version=2.2&Market=$cultureInfo&Query=$query&Sources=$source&Web.Count=$numResults&JsonType=raw";
$page=getUrl($url, '', '', $referer, false);
$json=$page['body'];
$tabJson=json_decode($json, true);
$tabJson=$tabJson['SearchResponse'];
$levMin=100;
$pctMin=0;
$urlLev=$urlPct='';
$urlapprox="http://www.$nomEntrep.fr/";
foreach ($tabJson['Web']['Results'] as $i=> $result) {
$title=utf8_decode($result['Title']); // SCORES & DECISIONS - Accueil
$desc=utf8_decode($result['Description']); // Scores et Décisions - Le nouvel acteur de l'information sur les entreprises et leurs dirigeants avec une approche innovante
$url=$result['Url']; // http://www3.scores-decisions.com/
$lev=@levenshtein ($urlapprox,$url);
if ($lev>0 && $lev<$levMin) {
$levMin=$lev;
$urlLev=$url;
}
$sim=similar_text($urlapprox,$url,$pct);
if ($pct>$pctMin && strpos($url, 'zonebourse')===false) {
$pctMin=$pct;
$urlPct=$url;
}
if (preg_match('/\.(.*\.fr)\//', $url, $matches2)) {
}
$info=parse_url($url);
$host=preg_replace('/\/$/','',$info['host']);
$ext=getFileExtension($host);
$domaine=getFileExtension(preg_replace("/\.$ext$/",'','.'.$host));
echo "RECHERCHE DE '$nomEntrep' ($siren) : Trouvé $domaine.$ext".EOL;
if ($ext=='fr') {
$rep=$this->iDb->select('sitesWeb', 'siren, web', "web=$url");
if (@$rep[0]['siren']*1==0) {
$tabAfnic=$this->getInfosAfnic("$domaine.$ext");
$siren=$tabAfnic['siren']*1;
if ($siren>0) {
$tabInsert=array('siren'=>$siren,
'web'=>$url,
'dateInsert'=>date('YmdHis'));
$this->iDb->insert('sitesWeb', $tabInsert);
}
}
}
if ($levMin<15 && $pctMin>44 && $urlLev==$urlPct) {
echo date('Y-m-d H:i:s') .' - '. $page['code'] . " - $rs - $i - $lev (Min=$levMin) - $pct (Min=$pctMin) - $urlLev - $urlPct - $url !!! RETURNED !!!".EOL;
return $urlLev;
}
}
/*
[0] => Array
(
[Title] => SCORES & DECISIONS - Accueil
[Description] => Scores et Décisions - Le nouvel acteur de l'information sur les entreprises et leurs dirigeants avec une approche innovante
[Url] => http://www3.scores-decisions.com/
[CacheUrl] => http://cc.bingj.com/cache.aspx?q=scores+decisions&d=5004075153885515&mkt=fr-FR&w=881d2897,4f2fff68
[DisplayUrl] => www3.scores-decisions.com
[DateTime] => 2011-02-14T12:24:00Z
[DeepLinks] => Array
(
[0] => Array
(
[Title] => Partenaires
[Url] => http://www3.scores-decisions.com/partenaires.php
)
[1] => Array
(
[Title] => Contact
[Url] => http://www3.scores-decisions.com/contact.php
)
)
)
[1] => Array
(
[Title] => SCORES & DECISIONS - Société
[Description] => Scores et Décisions - Le nouvel acteur de l'information sur les entreprises et leurs dirigeants avec une approche innovante
[Url] => http://www3.scores-decisions.com/societe.php
[CacheUrl] => http://cc.bingj.com/cache.aspx?q=scores+decisions&d=4747772983970513&mkt=fr-FR&w=10f5cd33,9b81f773
[DisplayUrl] => www3.scores-decisions.com/societe.php
[DateTime] => 2011-02-13T02:17:00Z
)*/
return false;
}
?>

438
bin/getMarques.php Normal file
View File

@ -0,0 +1,438 @@
#!/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(INCLUDE_PATH.'partenaires/classMMarques.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS] marques1 marques2 ...
Téléchargement et mise à jour de Marques
Options:
-v Mode verbose ou debug
-f Forcer la mise à jour depuis Qualibat
-m Retourne le dernier numéro Qualibat en base
-i Les paramètres sont des numéros de marques
-r Les paramètres sont des Raisons Sociales
-d=SSAAMMJJ Récupères les dépots du SSAAMMJJ
-p Récupère les PDF non encore en base
-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=$majImages=false;
$nbMajSiren=$nbMajSiren2=$nbMajAdr=0;
$tabMarques=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': define(MODE_VERBOSE,true);
$modeDebug=true;
define('TMIN',1);
define('TMAX',2);
break;
case 'f': $force=true; break;
case 'm': $max=true;
$annee=substr($argv[$i],3); break;
case 'i': $majNum=true; break;
case 'r': $majNom=true; break;
case 'r': $majObj=true; break;
case 'd': $majDate=true; break;
case 'p': $getPdf=true; break;
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");
break;
}
} else {
$tabMarques[]=$argv[$i];
}
}
}
if (!defined('MODE_VERBOSE'))
define('MODE_VERBOSE',false);
/*
if (!defined('TMIN')) define('TMIN',31);
if (!defined('TMAX')) define('TMAX',160);
if (!defined('TMIN')) define('TMIN',21);
if (!defined('TMAX')) define('TMAX',60);
*/
if (!defined('TMIN')) define('TMIN',10);
if (!defined('TMAX')) define('TMAX',20);
$iDb=new WDB('bopi');
if ($getPdf) {
if ($annee) $strAnnee="nomPdf LIKE '%$annee%'";
else $strAnnee='1';
$ret=$iDb->select( 'infos_bopi',
'MAX(nomPdf) as nomPdf',
$strAnnee, false, MYSQL_ASSOC);
$ret=$ret[0];
$pdf=$ret['nomPdf'];
echo date('Y/m/d - H:i:s')." - Dernier BOPI Marques téléchargé : $pdf...".EOL;
$anneeMois=strtr($pdf, array('bopi_marques_'=>'', 'v1'=>'', 'v2'=>'', '.pdf'=>''));
$tabAnneeMois=explode('-', $anneeMois);
$lastAnnee=$tabAnneeMois[0];
$numFin =$tabAnneeMois[1];
//$lastAnnee=2011;
for ($annee=$lastAnnee; $annee<=date('Y'); $annee++) {
if ($annee==date('Y')) {
$numDeb=$numFin;
$numFin=date('W');
//echo 'A'.EOL;
} elseif ($numFin==52 && $annee+1==date('Y')) {
$annee++;
$numDeb=1;
$numFin=date('W');
//echo 'B'.EOL;
} else {
$numDeb=1;
$numFin=52;
//echo 'C'.EOL;
}
/*$annee=2011;
$numDeb=37;
//die($annee.EOL.$lastAnnee.EOL.date('Y').EOL.$numDeb.EOL.$numFin.EOL);*/
for ($num=$numDeb; $num<=$numFin; $num++) {
$taille=$iMarque->getEditionPdf('marques', $annee, $num);
$taille=round($taille/(1024*1024),2);
echo date('Y/m/d - H:i:s')." - BOPI $annee-$num : $taille Mo.".EOL;
}
}
}
if ($getMBopi) {
$ret=$iDb->select( 'infos_bopi_marques',
'DISTINCT numeroMarque',
'dateRecup IS NULL OR nbResults IS NULL OR nbResults<1', false, MYSQL_ASSOC);
foreach ($ret as $i=>$tabTmp)
$tabMarques[]=$tabTmp['numeroMarque'];
shuffle($tabMarques);
$majNum=true;
}
$nb=count($tabMarques);
$nbAcces=$nbCache=0;
foreach ($tabMarques as $i=>$marque) {
echo date('Y/m/d - H:i:s')." - Marque $i/$nb : n°$marque...";
if ($majNum) {
$ret=$iMarque->getMarques(0, $marque);
if (is_array($ret) && count($ret)>0) {
print_r($ret);
$nbCache++;
} else {
$majAdresses=$majSiren=true;
$res=$iMarque->getListeMarques($marque, '', '', '', true);
if ($getMBopi) {
$iDb->update( 'infos_bopi_marques',
array('dateRecup'=>date('Ymd'),
'nbResults'=>$res),
"numeroMarque=$marque", false);
$nbAcces++;
randsleep(TMIN,TMAX);
if (!$modeDebug && date('Hi')*1>1930) {
$nbTot=$nbAcces+$nbCache;
$pct=@round($nbCache/$nbTot*100,2);
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Marques - Traitement quotidien", "$nbTot requêtes traitées dont $nbCache en cache ($pct %)");
break;
}
}
}
}
elseif ($majNom)
$iMarque->getListeMarques('', $marque, '', '', true);
elseif ($majObj)
$iMarque->getListeMarques('', '', $marque, '', true);
elseif ($majDate)
$iMarque->getListeMarques('', '', '', WDate::dateT('Ymd','Y-m-d',strtr($marque, array('-'=>'','/'=>'',))), true);
}
if ($majSiren) {
// Identifiants Textes Uniques
$nbSirened=0;
// Tableau RS>Siren
global $tabRsSiren;
$tabRsSiren=array();
$tmp=$iDb->select('marques', 'idTxtUnique, sirenDeposant', "sirenDeposant>0 AND idTxtUnique<>'' GROUP BY idTxtUnique", false, MYSQL_ASSOC);
foreach ($tmp as $nbId=>$tabTmp)
$tabRsSiren[$tabTmp['idTxtUnique']]=$tabTmp['sirenDeposant'];
echo date ('Y/m/d - H:i:s')." - La table 'bopi.marques' idTxt/Siren contient $nbId lignes...".EOL;
$tmp=$iDb->select('marques', 'id, idTxtUnique', "sirenDeposant<100 AND idTxtUnique<>'' AND (detailDeposant<>'') AND sirenValide=0", false, MYSQL_ASSOC);
$nbMaj=count($tmp);
echo date ('Y/m/d - H:i:s')." - Nombre de siren à mettre à jour : $nbMaj".EOL;
$iDb2=new WDb('jo');
foreach ($tmp as $iLot=>$tabTmp) {
$id=$tabTmp['id'];
$idTxtUnique=$tabTmp['idTxtUnique'];
if (isset($tabRsSiren[$idTxtUnique])) {
$siren=$tabRsSiren[$idTxtUnique];
if ($iDb->update('marques', array( 'sirenDeposant'=>$siren,
'sirenValide'=>3), 'id='.$id))
$nbMajSiren++;
echo mysql_error();
$iDb2->delete('bodacc_sirenage', "idTable='marques' AND idAnn=$id");
echo mysql_error();
echo date ('Y/m/d - H:i:s')." - $iLot/$nbMaj : Mise à jour de la marque id=$id avec le siren $siren...".EOL;
//die();
} /*else {
$siren2=isSimilar($idTxtUnique);
if ($siren2<>false) {
if ($iDb->update('marques', array( 'sirenDeposant'=>$siren2,
'sirenValide'=>4), 'id='.$id))
$nbMajSiren2++;
$nbMajSiren++;
echo mysql_error();
$iDb2->delete('bodacc_sirenage', "idTable='marques' AND idAnn=$id");
echo mysql_error();
echo date ('Y/m/d - H:i:s')." - $iLot/$nbMaj : Mise à jour de la marque id=$id avec le siren $siren2...".EOL;
die();
}
//else echo date ('Y/m/d - H:i:s')." - $iLot/$nbMaj : pas de similitudes pour la marque id=$id...".EOL;
}*/
}
echo date ('Y/m/d - H:i:s')." - $nbMajSiren siren ont été mis à jour sur $nbMaj (dont $nbMajSiren2 par approximation).".EOL;
}
if ($majAdresses) {
$tmp=$iDb->select('marques', "id, deposantMarque, SUBSTRING(detailDeposant, LENGTH(deposantMarque)+2, LENGTH(detailDeposant)-LENGTH(deposantMarque)) AS adresse, IF(SUBSTRING(detailDeposant,LENGTH(detailDeposant),1)=')', 'FR', TRIM(REPLACE(SUBSTRING(detailDeposant,LENGTH(detailDeposant)-2,4),')',''))) AS codPays2", "deposant_AdrCP IS NULL OR deposantPays IS NULL", false, MYSQL_ASSOC);
$iDb2=new WDb('bopi');
$nbLots=count($tmp);
foreach ($tmp as $iLot=>$tabTmp) {
$id=$tabTmp['id'];
$adr=trim(preg_replace('/\(SIREN \d\d\d\d\d\d\d\d\d\)/','',$tabTmp['adresse']));
$adr=trim(preg_replace('/, FR$/','',$adr));
$adr=trim(preg_replace('/(\d\d\d\d\d), /','$1 ',$adr));
$adr=trim(preg_replace('/ F-/','',$adr));
$adr=trim(preg_replace('/FORME JURIDIQUE|SOCI.T. ANONYME/i','',$adr));
$tabAdresse=$iInsee->structureVoie($adr);
$tabUpdate=array();
$tabUpdate['deposant_AdrNum']=@$tabAdresse['num'];
$tabUpdate['deposant_AdrIndRep']=@$tabAdresse['indRep'];
$tabUpdate['deposant_AdrTypVoie']=@$tabAdresse['typeVoie'];
$tabUpdate['deposant_AdrLibVoie']=@$tabAdresse['libVoie'];
$tabUpdate['deposant_AdrCP']=@$tabAdresse['cp'];
$tabUpdate['deposant_AdrVille']=@$tabAdresse['ville'];
$tabUpdate['deposant_AdrComp']=@trim($tabAdresse['adrComp0'].' '.$tabAdresse['adrComp1']);
$tabUpdate['deposantPays']=strtoupper($tabTmp['codPays2']);
//print_r($tabAdresse);
echo "$iLot/$nbLots\t$adr\t";
if (!$iDb2->update('marques', $tabUpdate, "id=$id", false))
echo "ERREUR !!!".EOL;
else {
$nbMajAdr++;
echo "ok".EOL;
}
}
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;
if ($repriseIdTxt) {
$iDb2=new WDB('bopi');
$ret=$iDb->select( 'marques',
'id, idTxtUnique, detailDeposant, dateUpdate',
"idTxtUnique IS NULL", false, MYSQL_ASSOC);
foreach ($ret as $i=>$tabInsert) {
$idTxtUnique=trim(strtoupper(preg_replace('/[^a-z0-9]/i', '', $tabInsert['detailDeposant'])));
if ($idTxtUnique<>'')
$tabInsert['idTxtUnique'] = $idTxtUnique;
$id=$tabInsert['id'];
unset($tabInsert['id']);
unset($tabInsert['detailDeposant']);
$iDb2->update( 'marques', $tabInsert, "id=$id", false);
//die($id);
}
}
die();
$referer=$cookie='';
$tDeb=microtime(true);
$page=getUrl($url, $cookie, $post, $referer, false, '', '', 60);
$duree=round(microtime(true)-$tDeb,3);
$body=$page['body'];
die();
if ($max) {
$idQualibat=$iQualibat->getMaxQualibat();
echo date('Y/m/d - H:i:s')." - Dernier id Qualibat : '$idQualibat'.".EOL;
die();
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des entreprises Qualibat.".EOL;
if (count($tabQualibat)==0) {
$partiel=false;
$idQualibat=$iQualibat->getMaxQualibat();
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Dernier id Qualibat : '$idQualibat'.".EOL;
for ($id=1; $id<=$idQualibat; $id++) {
$numQualibatTmp=$id;
$tabQualibat[]=$numQualibatTmp;
}
// Il faudrait rechercher le dernier numéro Orias attribué non encore en base
$iQualibat->force=$force;
while(true) {
$numQualibatTmp++;
echo date('Y/m/d - H:i:s')." - Recherche du dernier numéro Qualibat attribué : ";
if ($iQualibat->getInfosQualibat(0,$numQualibatTmp)) {
if (!$iQualibat->enCache) {
randsleep($tMin/10,$tMax/10);
$nbAcces++;
} else
$nbCache++;
echo "$numQualibatTmp ";
} else {
echo --$numQualibatTmp.' !'.EOL;
break;
}
}
shuffle($tabQualibat);
echo date('Y/m/d - H:i:s')." - Mise à jour de la base Qualibat...".EOL;
} else {
$partiel=true;
echo date('Y/m/d - H:i:s')." - Chargement de numéros Qualibat...".EOL;
}
$nb=count($tabQualibat);
$nbAcces=$nbCache=0;
foreach ($tabQualibat as $i=>$idQualibat) {
echo date('Y/m/d - H:i:s')." - $i/$nb: $idQualibat ... ";
$iQualibat->force=$force;
print_r($iQualibat->getInfosQualibat(0,$idQualibat));
echo date('Y/m/d - H:i:s')." - $i/$nb: $idQualibat ... récupéré ";
if (!$partiel && date('Hi')*1>=1930) {
//if (date('Hi')*1>=2235) {
$nbTot=$nbAcces+$nbCache;
$pct=@round($nbCache/$nbTot*100,2);
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Qualibat - Traitement quotidien", "$nbTot requêtes traitées dont $nbCache en cache ($pct %)");
die();
}
if (!$iQualibat->enCache) {
echo "via WWW. Attente...".EOL;
if (!$partiel) randsleep($tMin,$tMax);
$nbAcces++;
} else {
echo "en cache !".EOL;
$nbCache++;
}
}
$nbTot=$nbAcces+$nbCache;
$pct=round($nbCache/$nbTot*100,2);
if (!$partiel) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Pompe Qualibat - Tout est fini !", "FIN des $nbTot requêtes traitées dont $nbCache en cache ($pct %)");
}
echo date('Y/m/d - H:i:s')." - FIN des $nbTot requêtes dont $nbCache en cache ($pct %)".EOL;
function isSimilar($idTxtUnique) {
global $tabRsSiren;
$taille=strlen($idTxtUnique);
if ($taille<40) return false;
foreach ($tabRsSiren as $idTxt=>$siren) {
if (levenshtein($idTxtUnique, $idTxt)<2)
return $siren;
}
return false;
}
die();

247
bin/getPollution.php Normal file
View File

@ -0,0 +1,247 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS]
Téléchargement et mise à jour d'informations en provenance de Bases Internet.
Options:
-v Mode debug
(*): Valeur par défaut !
";
$modeDebug=false;
$strMailInfo='';
$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': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabFichier[$j]=$argv[$i];
$j++;
}
}
}
/**
** Registre français des émissions polluantes.
**/
$message=date('Y/m/d - H:i:s')." - Demande de récupération du fichier du Registre français des émissions polluantes.".EOL;
echo $message;
$strMailInfo.=$message;
$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/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);
$message=date('Y/m/d - H:i:s')." - Fichier du Registre français des émissions polluantes téléchargé.".EOL;
} else {
$message=date('Y/m/d - H:i:s')." - Fichier du Registre français des émissions polluantes lu dans le cache.".EOL;
}
echo $message;
$strMailInfo.=$message;
$zip = new ZipArchive;
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',
'dechets_non_dangereux.csv'=> 'dechets_non_dangereux',
'emission.csv'=> 'emission',
'etablissements.csv'=> 'etablissements',
'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',
*/
);
$iDb=new WDB('pollutions');
$tabFichiers=$tabSize=$tabTime=array();
for ($i=0; $i<$zip->numFiles;$i++) {
$tabIndex=$zip->statIndex($i);
$tabFichiers[]=$tabIndex['name'];
$tabSize[]=$tabIndex['size'];
$tabTime[]=$tabIndex['mtime'];
// print_r($tabIndex);die();
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(REP_TEMP.$tabIndex['name']))." (".round(filesize(REP_TEMP.$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;
}
}
$zip->extractTo(REP_TEMP);
$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) {
$message=date('Y/m/d - H:i:s')." - ERREUR - Nombre de fichiers décompressés : $i fichiers dans $fichierZipIREP contre ".$tabFichiersConnus.' attendus !'.EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers Pollutions (ERREUR)", $strMailInfo);
die();
}
foreach ($tabFichiers as $idxF=>$nomFichier) {
if (in_array(basename(str_replace('.csv', '', $nomFichier)),$tabFichiersConnus)) {
$table=str_replace('.csv', '', $tabFichiersConnus[basename($nomFichier)]);
if ($table<>'') {
$table='iREP_'.$table;
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Chargement de la table $table...".EOL;
$tabTailles=$tabTypes=array();
$fp = fopen(REP_TEMP.$nomFichier, 'r');
$nbLignes=$nbInsert=0;
while (($data = fgetcsv($fp, 5000, ';')) !== 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 `$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 = '".basename($nomFichier)." du ".date('d/m/Y H:i', $tabTime[$idxF])." (".round($tabSize[$idxF]/1024)." ko)'";
if ($iDb->query($sql)) {
$message=date ('Y/m/d - H:i:s')." - Création de la table $table OK...".EOL;
echo $message;
$strMailInfo.=$message;
} else {
$message=$iDb->getLastError().EOL;
echo $message;
$strMailInfo.=$message;
$message=date ('Y/m/d - H:i:s')." - Impossible de créer la table $table !".EOL."Requête SQL = $sql".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du chargement des fichiers Pollutions (ERREUR)", $strMailInfo);
die();
}
continue;
}
$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 (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) {
$message=date ('Y/m/d - H:i:s') . " - ERREUR SQL sur la table '$table', SQL no ".mysql_errno().' : '.mysql_error().EOL;
echo $message;
$strMailInfo.=$message;
$message=date ('Y/m/d - H:i:s') . " - ERREUR à l'insertion de la ligne n°$i : ". implode(';', $data) ." !".EOL;
echo $message;
$strMailInfo.=$message;
$message=print_r($tabDataToInsert,1);
echo $message;
$strMailInfo.=$message;
}
unset($tabDataToInsert);
}
fclose($fp);
// 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);
$strType="VARCHAR(".$tabTailles[$i].")";
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)) {
if ($modeDebug) echo date ('Y/m/d - H:i:s')." - Taille du champ $i (". $champ[$i] .") passée à ". $tabTailles[$i] ."...".EOL;
} else {
$message=date ('Y/m/d - H:i:s')." - Impossible de modifier la taille du champ $i (". $champ[$i] .") à ". $tabTailles[$i] ." !".EOL;
echo $message;
$strMailInfo.=$message;
}
}
}
} else {
$message=date ('Y/m/d - H:i:s') . " - Fichier $nomFichier non chargé (1) !".EOL;
echo $message;
$strMailInfo.=$message;
}
} else {
$message=date ('Y/m/d - H:i:s') . " - Fichier $nomFichier non chargé (2) !".EOL;
echo $message;
$strMailInfo.=$message;
}
}
} else {
$message=date('Y/m/d - H:i:s')." - ERREUR : Aucune archive détecté dans :".EOL.print_r($page['header']).EOL;
echo $message;
$strMailInfo.=$message;
}
$message=date ('Y/m/d - H:i:s') . " - Fin de chargement du Registre français des émissions polluantes.".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Fin du chargement des fichiers Pollutions", $strMailInfo);
echo date('Y/m/d - H:i:s')." - Fin du script...".EOL;
?>

751
bin/getPrivileges.php Normal file
View File

@ -0,0 +1,751 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
define('PRIVILEGES_FTP_HOST', '194.5.119.252');
define('PRIVILEGES_FTP_LOGIN', 'score');
define('PRIVILEGES_FTP_PASS', '1eUauTJZ');
define('PRIVILEGES_FTP_DIR_GET', '/var/home_ftp/score/Send/');
define('PRIVILEGES_FTP_DIR_PUT', '/var/home_ftp/score/Receive/');
define('PRIVILEGES_FTP_LOCALDIR', SOURCES_PATH.'infogreffe/');
define('PRIVILEGES_BACKUP_DIR', SOURCES_PATH.'infogreffe/histo/');
$tabRejets=array(
'_00'=>"Surveillance RCS posée/Demande de suppression acceptée/Surveillance PRIV posée : pas d'inscription existante sur le dossier",
'_01'=>"Surveillance PRIV posée : inscription existante sur le dossier",
'_02'=>"GAGI,GREFTEL,INTERGREFFE-code 1-surveillance acceptée mais qui n'a pas encore fait l'objet d'un AR",
'_03'=>"GAGI,GREFTEL,INTERGREFFE-code 2 - surveillance acceptée avec CREATION d'une fiche débiteur, qui n'a pas fait l'objet d'un AR",
'_04'=>"GAGI-surveillance en attente envoyée au GAGI",
'_05'=>"Surveillance en attente de validation au greffe",
'_06'=>"Erreur de chargement",
'_10'=>"Surveillance impossible car société radiée",
'_11'=>"Surveillance impossible car société transférée dans un autre greffe",
'_12'=>"SIREN inconnu",
'_13'=>"Raison sociale erronée",
'_14'=>"Adresse erronée",
'_15'=>"Surveillance impossible sur un établissement secondaire",
'_16'=>"Demande incomplète ou incorrecte",
'_17'=>"Surveillance Privilège impossible",
'_18'=>"Surveillance impossible par le greffe",
'_19'=>"Surveillance RCS impossible",
'_20'=>"Cette surveillance concerne un autre Greffe",
'_21'=>"Surveillance BILAN impossible car la ste n'est pas tenue de déposer ses Comptes Annuels (ste de droit étranger)",
'_22'=>"Plusieurs Bottins (débiteurs) (GAGI)",
'_23'=>"Société de fait (GAGI) : Société non enregistrée au Registre du Commerce",
'_24'=>"Surveillance impossible car société en liquidation judiciaire",
'_25'=>"Greffe inconnu",
'_26'=>"Millésime bilan à surveiller incorrect",
'_27'=>"Références EXTELIA erronées ou incomplètes (ces reférences sont obligatoires en cas de demande de suppression)",
'_28'=>"Surveillance impossible sur un dossier non informatisé (dossier dit non repris ou figé)",
'_30'=>"Siren absent (ne concerne que les surveillances de type WebService)",
'_31'=>"Surveillance BILAN impossible sur une société non commerciale (statut <> B)",
'_50'=>"Ce greffe ne traite pas les surveillances car le groupement de ce greffe n'est pas surveillé",
'_51'=>"Etablissement non trouvé",
'_52'=>"Code catalogue de la surveillance non renseigné ou incorrect",
'_53'=>"le siren est déjà sous surveillance",
'_54'=>"DOSSIER AGORA : votre prestation ne comprend pas la couverture de ce groupement",
'_55'=>"DOSSIER INTERGREFFE : votre prestation ne comprend pas la couverture de ce groupement de greffes",
'_56'=>"Le siren est déjà en attente de validation par le greffe",
'_57'=>"Surveillance impossible sur un dossier dit non inscrit au RCS (statut F:artisan)",
'_58'=>"Surveillance impossible sur un agent commercial (statut P ou M)",
'_59'=>"Surveillance impossible sur une entreprise non inscrite au RCS mais seulement à l'INSEE(URSSAF, Chambre d'Agriculture ou Chambre des Métiers)",
'_88'=>"Rejet temporaire : surveillance sur un greffe absorbé rejetée pendant la phase de rechargement",
'_99'=>"Surveillance impossible pour raisons à examiner",
'_R'=>"Radiation RCS",
'_L'=>"Liquidation Judiciaire",
'_T'=>"Transfert dans un autre greffe",
);
function exporte($txt, $lon, $sep='') {
$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(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');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [FICHIER1] ...
Gestion de la surveillance Privilèges avec Infogreffe
Options :
-f Ne pas générer le fichier de demandes de surveillance Privilèges (DE)
-c Compter uniquement le nombre de demandes de surveillance Privilèges (DE) à traiter
-d Mode debug (Verbosité au maximum)
-n Ne pas supprimer les fichier téléchargés sur le FTP
";
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
$iInsee=new MInsee();
$iBodacc=new MBodacc();
$iRncs=new MRncs();
$nbSiretValides=$nbSiretInvalides=$nbInsert=$nbUpdate=0;
$modeDebug=false; // Mode débug
$genereDE=true; // Génére le fichier des demandes/suppressions de surveillance PRIVILEGES
$compteDE=false; // Compter le nb de nvelles DE et stopper !
$ftpDelete=true; // Par défaut on supprime les fichiers téléchargés
$tabFichier=$tabFichLigneCmd=array();
$strMailInfo=''; // 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 'f': $genereDE=false; break;
case 'c': $compteDE=true; break;
case 'n': $ftpDelete=false; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichLigneCmd[]=$argv[$i];
}
echo date('Y/m/d - H:i:s'). " - Début du programme de gestion des flux Privilèges...".EOL;
/** Lecture de la table surveillance_site et maj de la table greffe_surv_stock
**/
if ($genereDE || $compteDE) {
if ($modeDebug) echo date ('Y/m/d - H:i:s') . "SQL=\nSELECT DISTINCT (siren) AS siren\nFROM surveillances_site\nWHERE source='privileges' AND siren>100 AND siren NOT IN (SELECT siren FROM greffes_priv_stock);".EOL;
$resPriv=$iDb->query("SELECT DISTINCT (siren) AS siren, 0 AS retry, '' AS steNom, '' AS steVoieNum, '' AS steVoieType, '' AS steVoieLib, '' AS steVoieComp1, '' AS steVoieComp2, '' AS steCP, '' AS steVille, '' AS dateInsert FROM surveillances_site
WHERE source='privileges' AND siren>100 AND siren NOT IN (SELECT siren FROM greffes_priv_stock)
UNION
/* 2ème essai en cas de 1er retour négatif */
SELECT siren, retry, steNom, steVoieNum, steVoieType, steVoieLib, steVoieComp1, steVoieComp2, steCP, steVille, dateInsert
FROM greffes_priv_stock WHERE retry=1
UNION
/* Reconduction annuelle si encore en surveillance privilèges par le client */
SELECT siren, 100 AS retry, steNom, steVoieNum, steVoieType, steVoieLib, steVoieComp1, steVoieComp2, steCP, steVille, dateInsert
FROM greffes_priv_stock WHERE greDateSurvFin<DATE(NOW()) AND greDateSurvFin<>0 AND siren IN(SELECT siren FROM surveillances_site WHERE source='privileges' AND siren>100);",
false, MYSQL_ASSOC, true);
$nbPriv=mysql_num_rows($resPriv);
echo date ('Y/m/d - H:i:s') . " - Il y a $nbPriv nouveau siren à mettre en surveillance privilèges Infogreffe...".EOL;
if ($compteDE) die();
$timeStamp=date('YmdHis');
$nomFicDem=$timeStamp.'IPRDESCO';
$fp=fopen(PRIVILEGES_FTP_LOCALDIR.$nomFicDem, 'a');
$nbLignes=0;
while ($tabSiren=$iDb->fetch(MYSQL_ASSOC)) {
//print_r($tabSiren);
$siren=$tabSiren['siren'];
if ($tabSiren['retry']==1) { // Réenvoi après rejet
$tabInsert=$tabSiren;
$tabInsert['retry']=0;
} elseif($tabSiren['retry']==100) { // Reconduction annuelle
$tabInsert=$tabSiren;
$tabInsert['retry']=0;
$tabInsert['greDateSurvFin']=0;
} else {
$tabIdRncs =@$iRncs->getIdentiteEtab($siren);
$tabInsert=array( 'siren'=>$siren,
'steNom'=>@$tabIdRncs['raisonSociale'],
'steVoieNum'=>@trim($tabIdRncs['adrNumVoie'].' '.$tabIdRncs['adrIndRep']),
'steVoieType'=>@$tabIdRncs['adrTypeVoie'],
'steVoieLib'=>@$tabIdRncs['adrVoie'],
'steVoieComp1'=>@$tabIdRncs['adrComp'],
'steVoieComp2'=>'',
'steCP'=>@$tabIdRncs['cp'],
'steVille'=>@$tabIdRncs['commune'],
'dateInsert'=>$timeStamp,
);
if (trim($tabInsert['steNom'])=='') {
/** Entreprise absente au RCS (période RNCS Coface ORT) **/
$tabIdInsee=@$iInsee->getIdentiteLight($siren);
$tabInsert['steNom'] = @$tabIdInsee['Nom'];
}
if (trim($tabInsert['steVille'])=='') {
/** Etablissement absent au RCS (période RNCS Coface ORT) **/
$tabIdInsee=@$iInsee->getIdentiteLight($siren);
$tabInsert['steVoieNum'] = @trim($tabIdInsee['AdresseNum'].' '.$tabIdInsee['AdresseBtq']);
$tabInsert['steVoieType']= @$tabIdInsee['AdresseVoie'];
$tabInsert['steVoieLib'] = @$tabIdInsee['AdresseRue'];
$tabInsert['steVoieComp1']=@$tabIdInsee['Adresse2'];
$tabInsert['steVoieComp2']='';
$tabInsert['steCP'] = @$tabIdInsee['CP'];
$tabInsert['steVille'] = @$tabIdInsee['Ville'];
}
}
if (!$iDb2->insert('greffes_priv_stock', $tabInsert)) {
if ($iDb2->getLastErrorNum()==1062 && $tabSiren['retry']>=1)
$iDb2->update('greffes_priv_stock', $tabInsert, "siren=$siren");
else {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors d'insertion du siren $siren...".EOL;
}
}
$strOutput='';
$strOutput.=exporte('07100001', 8); // N° Abonné = 07100001
$strOutput.=exporte('C', 1); // C/S Création ou Suppression de surveillance
$strOutput.=exporte($tabInsert['dateInsert'], 8); // Date de la demande
$strOutput.=exporte('', 50); // Réf Intene S&D
$strOutput.=exporte('', 2); // Type Réponse Extelia
$strOutput.=exporte('', 8); // Date Réponse Extelia
$strOutput.=exporte('', 4); // N° du greffe
$strOutput.=exporte($tabInsert['siren'], 9);
$strOutput.=exporte('', 10); // N° de gestion RCS
$strOutput.=exporte($tabInsert['steNom'], 160); // Dénomination
$strOutput.=exporte('', 8); // N° de débiteur
$strOutput.=exporte($tabInsert['steVoieNum'], 10); // Adresse : Numéro de voie
$strOutput.=exporte($tabInsert['steVoieType'], 4); // Adresse : Type de voie
$strOutput.=exporte($tabInsert['steVoieLib'], 20); // Adresse : Libellé de la voie
$strOutput.=exporte($tabInsert['steVoieComp1'], 32);// Adresse : Complément 1
$strOutput.=exporte($tabInsert['steVoieComp2'], 32);// Adresse : Complément 2
$strOutput.=exporte($tabInsert['steCP'], 5); // Adresse : Code Postal
$strOutput.=exporte('', 1); // Filler
$strOutput.=exporte($tabInsert['steVille'], 30); // Adresse : Ville
$strOutput.=exporte('', 4); // Millésime Bilan
$strOutput.=exporte('', 4); // Filler
$strOutput.=exporte('71', 10); // Code Catalogue = 71
$strOutput.=exporte('', 4); // Filler
$strOutput.=exporte('', 8); // Flux retour : Date de l'AR
$strOutput.=exporte('', 3); // Flux retour : Code AR ou rejet
$strOutput.=exporte('00000000', 8); // Si Suppression : Référence du lot
$strOutput.=exporte('0000000000', 10); // Si Suppression : Référence détail suppr.
$strOutput.=exporte('', 8); // Flux retour : Date de début de Surveillance
$strOutput.=exporte('', 8); // Flux retour : Date de Fin de Surveillance
$strOutput.=exporte('', 11); // Filler
echo $strOutput.EOL;
if ($modeDebug && $nbLignes==0)
echo date ('Y/m/d - H:i:s') . " - Le fichier '$nomFicDem' fait ".strlen($strOutput)." caractères.".EOL;
fwrite($fp, $strOutput.EOL);
$nbLignes++;
}
fclose($fp);
if ($nbLignes==0) {
unlink(PRIVILEGES_FTP_LOCALDIR.$nomFicDem);
echo date ('Y/m/d - H:i:s') . " - Pas de flux de demandes de surveillance Privilèges pour Infogreffe.".EOL;
} else
echo date ('Y/m/d - H:i:s') . " - Fin de la génération des demandes pour Infogreffe : $nbLignes lignes traitées.".EOL;
}
$conn_id = ftp_connect(PRIVILEGES_FTP_HOST);
if (!$conn_id) { echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de se connecter au serveur FTP d'Extelia.".EOL; die(); }
$login_result = ftp_login($conn_id, PRIVILEGES_FTP_LOGIN, PRIVILEGES_FTP_PASS);
if (!$login_result) { echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de s'authentifier sur le serveur FTP d'Extelia.".EOL; die(); }
// Récupération du contenu d'un dossier
$contents = ftp_nlist($conn_id, PRIVILEGES_FTP_DIR_GET);
//print_r($contents);
//die('ici');
if ($contents) {
foreach($contents as $k => $server_file) {
$tailleDist = ftp_size($conn_id, $server_file);
$dateDist = ftp_mdtm($conn_id, $server_file);
$server_fileName=basename($server_file);
if (!preg_match('/IPRDESCO|IPSARSCO|IPSRESCO/i', $server_fileName)) {
if ($modeDebug) echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' n'est pas un flux PRIVILEGES.".EOL;
continue;
} elseif ($modeDebug)
echo date('Y/m/d - H:i:s'). " - Le fichier distant '$server_fileName' est un flux PRIVILEGES...".EOL;
if ($dateDist != -1) {
$tabFichiers[$server_fileName]['dateDispo']=date('Y-m-d H:i:s', $dateDist);
if ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Le fichier distant $server_fileName a été modifié le ".date("d/m/Y à H:i:s.",$dateDist)."\n";
} else {
$tabFichiers[$server_fileName]['dateDispo']=NULL;
if ($modeDebug)
echo date ('Y/m/d - H:i:s')." - ERREUR : Impossible de récupérer l'heure de modification du fichier distant $server_file !\n";
}
$tabFichiers[$server_fileName]['taille']=$tailleDist;
$tabFichiers[$server_fileName]['cheminNom']=$server_file;
if ($tailleDist != -1 && $modeDebug)
echo date ('Y/m/d - H:i:s') ." - Taille du fichier distant $server_fileName est de $tailleDist octets\n";
if (file_exists(PRIVILEGES_FTP_LOCALDIR . $server_fileName)) {
$dateLoc=filemtime(PRIVILEGES_FTP_LOCALDIR . $server_fileName);
$tabFichiers[$server_fileName]['dateDownload']=date('Y-m-d H:i:s', $dateLoc);
$tailleLoc=filesize(PRIVILEGES_FTP_LOCALDIR . $server_fileName);
if ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Taille du fichier local $server_fileName = $tailleLoc octets\n";
}
$tailleDistKo=round($tailleDist/1024,1);
if ($tailleDist<>@$tailleLoc) {
$tDeb = microtime(true);
if (ftp_get($conn_id, PRIVILEGES_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;
$strMailInfo.=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;
if ($ftpDelete && ftp_delete($conn_id, $server_file)) {
echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName supprimé avec succès.".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName supprimé avec succès.".EOL;
}
} else
die (date ('Y/m/d - H:i:s')." - ERREUR : Fichier distant $server_file non téléchargé !".EOL);
} elseif ($modeDebug)
echo date ('Y/m/d - H:i:s') ." - Le fichier $server_fileName a déjà été téléchargé le ".$tabFichiers[$server_fileName]['dateDownload']."($tailleDistKo Ko).".EOL;
}
}
if (@$nbLignes>0) {
/** Dépot du fichier des demandes **/
$tailleLoc=filesize(PRIVILEGES_FTP_LOCALDIR.$nomFicDem);
$tDeb = microtime(true);
if (ftp_put($conn_id, PRIVILEGES_FTP_DIR_PUT.$nomFicDem, PRIVILEGES_FTP_LOCALDIR.$nomFicDem, FTP_ASCII)) {
$tFin = microtime(true);
$tDur = round($tFin-$tDeb);
$tailleLocKo=round($tailleLoc/1024,1);
$tRatio=@round($tailleLocKo/$tDur,1);
echo date ('Y/m/d - H:i:s')." - Fichier '$nomFicDem' déposé avec succès : $tailleLocKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
$strMailInfo.=date ('Y/m/d - H:i:s')." - Fichier '$nomFicDem' déposé avec succès : $tailleLocKo Ko en $tDur sec. ($tRatio Ko/s)".EOL;
} else {
die (date ('Y/m/d - H:i:s')." - ERREUR : Fichier local '$nomFicDem' non déposé !".EOL);
}
}
// Fermeture de la connexion
ftp_close($conn_id);
echo date ('Y/m/d - H:i:s')." - Fin du transfert des fichiers Privilèges en FTP.".EOL;
if (count($tabFichLigneCmd)==0) {
$dh = opendir(PRIVILEGES_FTP_LOCALDIR);
while (false !== ($filename = readdir($dh))) {
$idF=substr($filename, 14, 8);
if ($filename<>'.' && $filename<>'..' &&
($idF=='IPSARSCO' || // Fichier des Accusés de Réception des demandes de surveillance
$idF=='IPSRESCO' || // Fichier des Révélations
$idF=='IPSPOSCO') ) // Fichier "Portefeuille"
$tabFichier[] = PRIVILEGES_FTP_LOCALDIR.$filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
//print_r($tabFichier);
foreach ($tabFichier as $iFic=>$fichier)
{
$fichierAvecRep=$fichier;
$fichier=basename($fichier);
$idF=substr($fichier, 14, 8);
echo date('Y/m/d - H:i:s'). " - Début du traitement du fichier $fichier (IDF='$idF')...".EOL;
$dateDispo=date('YmdHis', filemtime($fichierAvecRep));
/*
$dateFichierMod=substr(''.$dateDispo,0,8)*1;
$dateFichierNom=substr($fichier,0,8)*1;
*/
$fp=fopen($fichierAvecRep, 'r');
if ($fp && $idF=='IPSRESCO') {
$nbLignes=$nbLignes00=$nbLignes01=$nbLignes99=0;
$tabEntete=$tabFin=array();
/*
for($i=0; $i<6; $i++) $nbUpdate[$i]=$nbInsert[$i]=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();
}*/
$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
if ($nbLignesTot==0 && strlen($a)<500) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu !".EOL;
die();
}
$nbLignesTot++;
}
$nbLignesUtil=$nbLignesTot-3;
$tabTmp=$iDb->select('greffes_privileges', 'count(*) as nb, max(dateInsert) as dateChargement', "idFichier='$fichier'", false, MYSQL_ASSOC);
if (@$tabTmp[0]['nb']*1>0) {
$nbLignesCharges=$tabTmp[0]['nb'];
$dateChargement=$tabTmp[0]['dateChargement'];
if ($nbLignesCharges==$nbLignesUtil) {
echo date('Y/m/d - H:i:s'). " - Le fichier $fichier a déjà été chargé le $dateChargement ($nbLignesCharges/$nbLignesUtil lignes)...".EOL;
fclose($fp);
continue;
} else {
echo date('Y/m/d - H:i:s'). " - Attention : Le fichier $fichier a déjà été partiellement chargé le $dateChargement ($nbLignesCharges/$nbLignesUtil lignes)...".EOL;
echo date('Y/m/d - H:i:s'). " - Arrêt du traitement.".EOL;
die();
}
} else
echo date('Y/m/d - H:i:s') ." - Le fichier à charger $fichier contient $nbLignesTot lignes.".EOL;
/*
if ($iFic==0 && $nbLignesTot>2000000 && !$stock) {
// C'est le 1er fichier, il comporte plus de 2M de lignes et il n'est pas déclaré comme stock !
echo date('Y/m/d - H:i:s') ." - Ce fichier est-il un stock annuel ? Merci de confirmer (O/N) ";
while (1) {
$saisie = trim(strtoupper(fgets(STDIN)));
if ($saisie=='O' || $saisie=='o') {
$stock=1;
$actifIni=11;
break;
} elseif ($saisie=='N' || $saisie=='n') {
break;
}
}
}
*/
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
$sirenPre=0; // Valeur du Siren précédent
$siren=0;
$modifDir=$modifJug=false;
$table='';
while (!feof($fp)) {
$nbLignes++;
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['numChrono'] = trim( substr($a, 18, 10)); // N° chrono du fichier
break;
case '01': // PRIVILEGES
//die("'$a'");
$nbLignes01++;
$tabInsert=array();
// Données sur la surveillance
$tabInsert['dateEven']=trim(substr($a, 2 , 8 )); // Date de l'événement
$tabInsert['refLot']=trim(substr($a, 10 , 8 )); // Référence Extelia du lot
$tabInsert['refSurv']=trim(substr($a, 18 , 10 )); // Référence Extelia de la surveillance
$tabInsert['siren']=trim(substr($a, 28 , 9 )); // Siren
$tabInsert['greffe']=trim(substr($a, 37 , 4 )); // Greffe
$tabInsert['numDebiteur']=trim(substr($a, 41 , 8 )); // Numéro du débiteur
$tabInsert['sirenage']=trim(substr($a, 49 , 2 )); // Flag indicateur de sirénage
$tabInsert['typeEven']=trim(substr($a, 51 , 10 )); // Type de l'événement (PRNINS, PRNMOL, PRNRAD)
$tabInsert['dateFraiche']=trim(substr($a, 61 , 8 )); // Date de fraîcheur
$tabInsert['codeRev']=trim(substr($a, 69 , 10 )); // Code de dernière révélation
// Données sur le débiteur
$tabInsert['debRaisonSociale']=trim(substr($a, 79 , 160 )); // Raison sociale du débiteur
$tabInsert['debSigle']=trim(substr($a, 239 , 80 )); // Sigle du débiteur
$tabInsert['debCiv']=trim(substr($a, 319 , 10 )); // Civilité débiteur
$tabInsert['debNom']=trim(substr($a, 329 , 160 )); // Nom du débiteur
$tabInsert['debPrenom']=trim(substr($a, 489 , 64 )); // Prénom du débiteur
$tabInsert['debConjoint']=trim(substr($a, 553 , 32 )); // Conjoint débiteur
$tabInsert['debUsage']=trim(substr($a, 585 , 32 )); // Usage débiteur
$tabInsert['debEnseigne']=trim(substr($a, 617 , 64 )); // Enseigne débiteur
$tabInsert['debActivite']=trim(substr($a, 681 , 64 )); // Activité du débiteur
$tabInsert['debFj']=trim(substr($a, 745 , 10 )); // Code forme juridique du débiteur
$tabInsert['debFjLib']=trim(substr($a, 755 , 80 )); // Libellé de la forme juridique du débiteur
$tabInsert['debResidence']=trim(substr($a, 835 , 50 )); // Résidence débiteur
$tabInsert['debNumVoie']=trim(substr($a, 885 , 10 )); // Numéro de la voie débiteur
$tabInsert['debTypVoie']=trim(substr($a, 895 , 20 )); // Type de voie débiteur
$tabInsert['debLibVoie']=trim(substr($a, 915 , 50 )); // Nom de la voie débiteur
$tabInsert['debAdrComp']=trim(substr($a, 965 , 50 )); // Localité débiteur
$tabInsert['debCP']=trim(substr($a, 1015 , 15 )); // Code postal débiteur
$tabInsert['debVille']=trim(substr($a, 1030 , 50 )); // Bureau distributeur débiteur
$tabInsert['debPays']=trim(substr($a, 1080 , 10 )); // Pays débiteur
// Données sur l'inscription
$tabInsert['insType']=trim(substr($a, 1090 , 10 )); // Type de privilège
$tabInsert['insLib']=trim(substr($a, 1100 , 80 )); // Libellé du privilège
$tabInsert['insNum']=trim(substr($a, 1180 , 9 )); // Numéro d'inscription
$tabInsert['insDate']=trim(substr($a, 1189 , 8 ))*1; // Date d'inscription
$tabInsert['insObjet']=trim(substr($a, 1197 , 500 )); // Objet de l'inscription ou Descriptif
$tabInsert['insMontant']=trim(substr($a, 1697 , 15 ).'.'.substr($a, 1712 , 5 ))*1; // Montant de la créance (15 entiers, 5 décimales)
$tabInsert['insDev']=trim(substr($a, 1717 , 10 )); // Devise de la créance
$tabInsert['insDateEch']=trim(substr($a, 1727 , 8 ))*1; // Date d'exigibilité
$tabInsert['insDateFin']=trim(substr($a, 1735 , 8 ))*1; // Date de caducité/Date de péremption
$tabInsert['insNanTx']=trim(substr($a, 1743 , 5 )); // Nantissements : Taux d'intérêt
$tabInsert['insNanTitre']=trim(substr($a, 1748 , 150 )); // Nantissements : Titre de l'acte et date
$tabInsert['insNanOppo']=trim(substr($a, 1898 , 200 )); // Nantissements : Election de domicile pour les oppositions
$tabInsert['insProNat']=trim(substr($a, 2098 , 80 )); // Protêts : Nature de l'effet
$tabInsert['insProHui']=trim(substr($a, 2178 , 300 )); // Protêts : Nom et adresse de l'huissier
$tabInsert['insProRep']=trim(substr($a, 2478 , 200 )); // Protêts : Réponse
$tabInsert['insNSCA']=trim(substr($a, 2678 , 300 )); // Nantissements de parts de sociétés civiles : Acceptation
$tabInsert['insNSCParts']=trim(substr($a, 2978 , 150 )); // Nantissements de parts de sociétés civiles : Parts
$tabInsert['insNSCSigni']=trim(substr($a, 3128 , 200 )); // Nantissements de parts de sociétés civiles : Signification
// Données sur les créanciers
$tabInsert['creNom']=trim(substr($a, 3328 , 160 )); // Nom/raison sociale du 1er créancier
$tabInsert['creNumVoi']=trim(substr($a, 3488 , 10 )); // Numéro de la voie créancier
$tabInsert['creTypVoi']=trim(substr($a, 3498 , 20 )); // Type de voie créancier
$tabInsert['creLibVoi']=trim(substr($a, 3518 , 50 )); // Nom de la voie créancier
$tabInsert['creAdrComp1']=trim(substr($a, 3568 , 50 )); // Résidence créancier
$tabInsert['creAdrComp2']=trim(substr($a, 3618 , 50 )); // Localité créancier
$tabInsert['creCP']=trim(substr($a, 3668 , 15 )); // Code postal créancier
$tabInsert['creVille']=trim(substr($a, 3683 , 50 )); // Bureau distributeur créancier
$tabInsert['crePays']=trim(substr($a, 3733 , 10 )); // Pays créancier
$tabInsert['creAutres']=trim(substr($a, 3743 , 900 )); // Nom des 9 autres créanciers
// Données sur la radiation
$tabInsert['radDate']=trim(substr($a, 4643 , 8 ))*1; // Date de radiation définitive
$tabInsert['radMention']=trim(substr($a, 4651 , 8 ))*1; // Date de la dernière mention de radiation partielle
$tabInsert['radPartiel']=trim(substr($a, 4659 , 300 )); // Mention de radiation partielle (la plus récente)
$tabInsert['radPartMt']=trim(substr($a, 4959 , 15).'.'.substr($a, 4974 , 5 ))*1; // Montant radiation partielle (15 entiers et 5 décimales)
$tabInsert['radDev']=trim(substr($a, 4979 , 10 )); // Devise du montant de la radiation partielle
$tabInsert['radDiv']=trim(substr($a, 4989 , 10 )); // Zone libre
$tabInsert['idFichier']=$fichier;
$tabInsert['dateInsert']=date('YmdHis');
//print_r($tabInsert);
$iDb2->insert('greffes_privileges_mvt', $tabInsert);
if (!$iDb2->insert('greffes_privileges', $tabInsert)) {
if (mysql_errno()==1062) {
if (!$iDb2->update('greffes_privileges', $tabInsert, "siren=".$tabInsert['siren'].
" AND greffe=".$tabInsert['greffe'].
" AND numDebiteur='".$tabInsert['numDebiteur']."'
AND insType=".$tabInsert['insType'].
" AND insNum='".$tabInsert['insNum']."'
AND insDate=".$tabInsert['insDate'].
" AND insMontant=".$tabInsert['insMontant'].
" AND insDateEch=".$tabInsert['insDateEch'].
" AND insDateFin=".$tabInsert['insDateFin'].
" AND radDate=".$tabInsert['radDate'].
" AND radPartMt=".$tabInsert['radPartMt'])) {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la MAJ de siren=".$tabInsert['siren'].
" AND greffe=".$tabInsert['greffe'].
" AND numDebiteur='".$tabInsert['numDebiteur']."'
AND insType=".$tabInsert['insType'].
" AND insNum='".$tabInsert['insNum']."'
AND insDate=".$tabInsert['insDate'].
" AND insMontant=".$tabInsert['insMontant'].
" AND insDateEch=".$tabInsert['insDateEch'].
" AND insDateFin=".$tabInsert['insDateFin'].
" AND radDate=".$tabInsert['radDate'].
" AND radPartMt=".$tabInsert['radPartMt'].EOL;
die();
}
} else {
print_r($tabInsert);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors d'insertion du siren=".$tabInsert['siren'].EOL;
die();
}
}
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['numChrono'] = trim( substr($a, 18, 10)); // N° chrono du fichier
$tabFin['nbLignes01'] = trim( substr($a, 28, 10)); // Nombre de lignes NAN (privilèges)
$tabFin['nbLignes02'] = trim( substr($a, 38, 10)); // Nombre de lignes RCS (procol)
$tabFin['nbLignes03'] = trim( substr($a, 48, 10)); // Nombre de lignes BIL (bilans)
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
} elseif ($fp && $idF=='IPSARSCO') { // Fichier AR
$nbLignes=$nbLignes00=$nbLignes99=0;
$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
$len=strlen($a);
if ($nbLignesTot==0 && ($len<481 || $len>482)) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu (ligne de $len caractères) !".EOL;
die("'$a'");
}
$nbLignesTot++;
}
echo date('Y/m/d - H:i:s') ." - Le fichier à charger $fichier contient $nbLignesTot lignes.".EOL;
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
while (!feof($fp)) {
//002010040607100001AR0000000001
//992010040607100001AR00000000010000000156
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabEntete['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
break;
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabFin['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
$tabFin['nbLignes'] = trim( substr($a, 30, 10)); // Nombre de lignes AR (ou PO)
echo date('Y/m/d - H:i:s') ." - Le fichier $idF chargé $fichier contenait $nbLignes/".$tabFin['nbLignes']." lignes.".EOL;
break;
default:
$nbLignes++;
$siren = trim(substr($a, 81 , 9 ));// Siren
$tabUpdate=array();
// Données sur la surveillance
$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 ));// Type de réponse Extelia
$tabUpdate['greRepDate'] = trim(substr($a, 69 , 8 ));// Date de la réponse Extelia
$tabUpdate['greffe'] = trim(substr($a, 77 , 4 ));// N° du Greffe de l'AR
$tabUpdate['greArDate'] = trim(substr($a, 424 , 8 ));// Date de l'Accusé Réception Extelia
$tabUpdate['greArCode'] = trim(substr($a, 432 , 3 ));// Code Accusé Réception
$tabUpdate['greSurvRefLot'] = trim(substr($a, 435 , 8 ));// Référence Extelia du lot de surveillance
$tabUpdate['greSurvRefDetail'] =trim(substr($a, 443 , 10 ));// Référence Extelia de la surveillance détail
$tabUpdate['greDateSurvDeb'] = trim(substr($a, 453 , 8 ));// Date de début de la surveillance
$tabUpdate['greDateSurvFin'] = trim(substr($a, 461 , 8 ));// Date de fin de la surveillance
$tabUpdate['idFichier']=$fichier;
if (!$iDb2->update('greffes_priv_stock', $tabUpdate, "siren=$siren")) {
print_r($tabUpdate);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du siren $siren...".EOL;
die();
}
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
} elseif ($fp && $idF=='IPSPOSCO') { // Fichier Portefeuille
$nbLignes00=$nbLignes99=$nbLignes=$nbLignesTot=0;
while (!feof($fp)) {
$a = fgets($fp, 5096);
$len=strlen($a);
if ($nbLignesTot==0 && ($len<481 || $len>482)) {
echo date('Y/m/d - H:i:s') ." - Le fichier $idF à charger $fichier n'est pas au format attendu (ligne de $len caractères) !".EOL;
die("'$a'");
}
$nbLignesTot++;
}
echo date('Y/m/d - H:i:s') ." - Le fichier Portefeuille à charger $fichier contient $nbLignesTot lignes.".EOL;
//fclose($fp);
//echo date('Y/m/d - H:i:s') ." - Pour l'instant, on ignore les fichiers !".EOL;
$message=date('Y/m/d - H:i:s'). " - Début de traitement du fichier Portefeuille n°$iFic, $fichier...".EOL;
echo $message;
rewind($fp);
$a = fgets($fp, 5096);
while (!feof($fp)) {
$codeEnr = ''.trim( substr($a, 0, 2));
switch ($codeEnr) {
case '00': // Structure de contrôle entête(1 par fichier)
$nbLignes00++;
$tabEntete['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabEntete['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabEntete['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabEntete['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
break;
case '99': // Structure de contrôle fin de fichier (1 par fichier)
$nbLignes99++;
$tabFin['dateCreation'] = trim( substr($a, 2, 8)); // Date création fichier par Infogreffe
$tabFin['numAbonne'] = trim( substr($a, 10, 8)); // N° d'abonné
$tabFin['typeFichier'] = trim( substr($a, 18, 2)); // AR (sinon PO)
$tabFin['numChrono'] = trim( substr($a, 20, 10)); // N° chrono du fichier
$tabFin['nbLignes'] = trim( substr($a, 30, 10)); // Nombre de lignes AR (ou PO)
echo date('Y/m/d - H:i:s') ." - Le fichier $idF chargé $fichier contenait $nbLignes/".$tabFin['nbLignes']." lignes.".EOL;
break;
default:
$nbLignes++;
$siren = trim(substr($a, 81 , 9 )); // Siren
$tabUpdate=array();
// Données sur la surveillance
//$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 )); // Type de réponse Extelia = PO
$tabUpdate['dateDerPO'] = trim(substr($a, 69 , 8 )); // Date de la réponse Extelia
$tabUpdate['greffe'] = trim(substr($a, 77 , 4 )); // N° du Greffe de l'AR
$tabUpdate['greArDate'] = trim(substr($a, 424 , 8 )); // Date de l'Accusé Réception Extelia
$tabUpdate['greArCode'] = trim(substr($a, 432 , 3 )); // Code Accusé Réception
$tabUpdate['greSurvRefLot'] = trim(substr($a, 435 , 8 )); // Référence Extelia du lot de surveillance
$tabUpdate['greSurvRefDetail'] =trim(substr($a, 443 , 10 )); // Référence Extelia de la surveillance détail
$tabUpdate['greDateSurvDeb'] = trim(substr($a, 453 , 8 )); // Date de début de la surveillance
$tabUpdate['greDateSurvFin'] = trim(substr($a, 461 , 8 )); // Date de fin de la surveillance
//$tabUpdate['idFichier']=$fichier;
// Infos S&D
//$tabUpdate['sedRef'] = trim(substr($a, 17 , 50 ));// Ref S&D
//$tabUpdate['numGestion'] = trim(substr($a, 90 , 10 ));//
//$tabUpdate['steNom'] = trim(substr($a, 100 , 160 ));//
$tabUpdate['numDebiteur'] = trim(substr($a, 260 , 8 ));//
/*$tabUpdate['steVoieNum'] = trim(substr($a, 268 , 10 ));//
$tabUpdate['steVoieType'] = trim(substr($a, 278 , 4 ));//
$tabUpdate['steVoieLib'] = trim(substr($a, 282 , 20 ));//
$tabUpdate['steVoieComp1'] = trim(substr($a, 302 , 32 ));//
$tabUpdate['steVoieComp2'] = trim(substr($a, 334 , 32 ));//
$tabUpdate['steCP'] = trim(substr($a, 366 , 6 ));//
$tabUpdate['steVille'] = trim(substr($a, 372 , 30 ));//
*/
/** Recherche de la ligne dans le stock S&D
**/
$ret=$iDb2->select('greffes_priv_stock', 'greffe,greArDate,greArCode,greSurvRefLot,greSurvRefDetail,greDateSurvDeb,greDateSurvFin,numDebiteur', "siren=$siren", false, MYSQL_ASSOC);
if (isset($ret[0])) $ret=$ret[0];
else {
echo date ('Y/m/d - H:i:s') ." - ERREUR : Code AR '".$tabUpdate['greArCode']."' non géré pour le siren $siren...".EOL;
$tabUpdate['greRepType'] = trim(substr($a, 67 , 2 ));// Type de réponse Extelia
$tabUpdate['greRepDate'] = trim(substr($a, 69 , 8 ));// Date de la réponse Extelia
$tabUpdate['numGestion'] = trim(substr($a, 90 , 10 ));//
$tabUpdate['steNom'] = trim(substr($a, 100 , 160 ));//
$tabUpdate['steVoieNum'] = trim(substr($a, 268 , 10 ));//
$tabUpdate['steVoieType'] = trim(substr($a, 278 , 4 ));//
$tabUpdate['steVoieLib'] = trim(substr($a, 282 , 20 ));//
$tabUpdate['steVoieComp1'] = trim(substr($a, 302 , 32 ));//
$tabUpdate['steVoieComp2'] = trim(substr($a, 334 , 32 ));//
$tabUpdate['steCP'] = trim(substr($a, 366 , 6 ));//
$tabUpdate['steVille'] = trim(substr($a, 372 , 30 ));//
$tabUpdate['sedRef'] = trim(substr($a, 17 , 50 ));// Ref S&D
$tabUpdate['idFichier']=$fichier;
echo "A METTRE A JOUR".EOL;
print_r($tabUpdate);
die();
}
if ($tabUpdate['greArCode']=='') unset($tabUpdate['greArCode']);
elseif($tabUpdate['greArCode']=='05') { unset($tabUpdate['greArCode']); unset($tabUpdate['greArDate']); unset($tabUpdate['greDateSurvDeb']); unset($tabUpdate['greDateSurvFin']); unset($tabUpdate['numDebiteur']); }
else {
//$eeee=fgets(STDIN);
echo date ('Y/m/d - H:i:s') ." - ERREUR : Code AR '".$tabUpdate['greArCode']."' non géré pour le siren $siren...".EOL;
echo "EN BASE".EOL;
print_r($ret);
echo "A METTRE A JOUR".EOL;
print_r($tabUpdate);
die();
}
if (!$iDb2->update('greffes_priv_stock', $tabUpdate, "siren=$siren")) {
print_r($tabUpdate);
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour du siren $siren...".EOL;
die();
}
break;
}
$a = fgets($fp, 5096);
} // Fin lecture fichier
if (bzip2($fichierAvecRep, PRIVILEGES_BACKUP_DIR.$fichier)) {
unlink($fichierAvecRep);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $fichier vient d'être historisé.".EOL;
}
continue;
}
else
echo date('Y/m/d - H:i:s'). " - ERREUR lors de l'ouverture du fichier $fichier !".EOL;
@fclose($fp);
} // fin foreach ($tabFichier as $iFic=>$fichier)
echo date('Y/m/d - H:i:s'). " - Fin du programme de gestion des flux Privilèges.".EOL;
die();
?>

304
bin/getRSS.php Normal file
View File

@ -0,0 +1,304 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
/**
** Attention : Si ajout d'une nouvelle source modifier la table articles !
** ALTER TABLE `articles` CHANGE `source` `source` ENUM( 'A', 'B', 'D', 'E', 'H' ) NOT NULL DEFAULT 'A';
**/
echo date ('Y/m/d - H:i:s')." - Début de lecture des flux RSS...".EOL;
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'common/rss.php');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iDb=new WDB('presse');
$iDb2=new WDB('sdv1');
$iRss=new atomRss();
$cours=$doInvestir=$doBoursier=$doPQR=$modeVerbose=$doReprise=false;
$heureExec=date('Hi')*1;
$strMailInfo='';
$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;
$message=date('Y/m/d - H:i:s') ." - DEBUT du programme de chargement des flux RSS de la PQR...".EOL;
$messageLock="Traitement des flux RSS de la PQR en date du ".date('d/m/Y');
$fileLockName=REP_TEMP.basename($scriptName).'_PQR.lock';
} else {
$message=date('Y/m/d - H:i:s') ." - DEBUT du programme de chargement des flux RSS des valeurs boursières...".EOL;
$messageLock="Traitement des flux RSS de la bourse ISIN en date du ".date('d/m/Y');
$fileLockName=REP_TEMP.basename($scriptName).'_ISIN.lock';
}
if (file_exists($fileLockName)) {
if ($doPQR) echo date('Y/m/d - H:i:s')." - Le traitement des flux RSS de la PQR est en cours, patienter et recommencer plus tard !!!".EOL;
else echo date('Y/m/d - H:i:s')." - Le traitement des flux RSS de la bourse ISIN est en cours, patienter et recommencer plus tard !!!".EOL;
die();
} else {
$fpT=fopen($fileLockName, 'w');
fwrite($fpT, date('Ymd-His').";$scriptName;$messageLock".EOL);
fclose($fpT);
}
echo $message;
$strMailInfo.=$message;
$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'],
'mots' => $tReg['motsClefs'],
);
$nbFiltres=count($tabRegEx);
$message=date ('Y/m/d - H:i:s')." - Nombre de règles de filtrages : ".$nbFiltres.EOL;
echo $message;
$strMailInfo.=$message;
//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;
$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;
$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);
$message=date ('Y/m/d - H:i:s')." - Nombre de flux '$typeFlux' à traiter : ".$nbFlux.EOL;
echo $message;
$strMailInfo.=$message;
foreach ($lstRss as $iFlux=>$tabFlux) {
$urlRss=$tabFlux['url'];
$idRss=$tabFlux['id'];
$isin=$tabFlux['code_isin'];
$horaire=$tabFlux['frequence'];
$nbHeures=$tabFlux['nbHeures'];
if ($nbHeures=='') $nbHeures=999;
$fluxFiltre=$tabFlux['fluxFiltre'];
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==11 || $idRss==18) randsleep(1,2);
$tabFeed=@$iRss->loadRss($urlRss);
$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'),
'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']);
$idArticle=md5($dateRss.$urlArticle);
foreach ($tabRegEx as $iReg=>$tReg) {
$regEx=$tReg['mots'];
$regId=$tReg['id'];
$regNom=$tReg['nom'];
$titre=trim(utf8_decode($tabArticle['title']));
$description=trim(utf8_decode($tabArticle['description']));
usleep(500);
$page=getUrl($urlArticle);
$article=$page['body'];
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,
'article'=>$article,
'dateRss'=>$dateRss,
'idArticle'=>$idArticle,
'isin'=>$isin,
'idRss'=>$idRss,
'idFiltre'=>$regId,);
$id=$iDb->insert('pqr_articles',$tabInsert,false);
if ($id) {
$nbInsert++;
@$tabArtInsert[$regId]++;
//if($iDb->update('pqr_articles',$tabUpdate,'id='.$id))
$message=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;
echo $message;
$strMailInfo.=$message;
$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 {
if (!$cours) {
$tabUpdate=array('dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles);
if($iDb->update('pqr_rss',$tabUpdate,"id=$idRss")) {
$message=date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Mise à jour des informations du flux $urlRss".EOL;
echo $message;
$strMailInfo.=$message;
}
} else {
$tabUpdate=array('dernierCodeRetour'=>$iRss->codeErreurHttp,
'dernierNbArticles'=>$nbArticles);
if($iDb2->update('bourse_isin',$tabUpdate,"code_isin='$isin'")) {
$message=date ('Y/m/d - H:i:s')." - Feed $horaire #$iFlux/$nbFlux : Mise à jour des informations du flux $urlRss".EOL;
echo $message;
$strMailInfo.=$message;
}
}
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);
$message=date('Y/m/d - H:i:s') ." - FIN du programme de chargement des flux RSS.".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', 'Téléchargement des flux RSS', $strMailInfo);
unlink(REP_TEMP.basename($scriptName).'.lock');
die();
?>

933
bin/getRecme.php Normal file
View File

@ -0,0 +1,933 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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',
'2012 356000000',
'2012 552049447',
'2012 552081317',
'2012 775663438',
'2012 775685019',
'2012 572104891',
'2012 441133808',
'2012 432766947',
'2012 662043116',
'2012 428822852',
'2012 552016628',
'2012 326094471',
'2012 352751143',
'2012 775729155',
'2012 775665912',
'2012 788058030',
'2012 330715368',
'2012 775722879',
'2012 331596270',
'2012 483790069',
'2012 180036147',
'2012 440546018',
'2012 784396079',
'2012 315065292',
'2012 412280737',
'2012 775558489',
'2012 775665599',
'2012 501524029',
'2012 519587851',
'2012 775700198',
'2012 776056467',
'2012 692041585',
'2012 302421193',
'2012 385290309',
'2012 775688229',
'2012 542085907',
'2012 313320244',
'2012 451930051',
'2012 352973622',
'2012 381984921',
'2012 493479489',
'2012 712013432',
'2012 390199669',
'2012 775604853',
'2012 160020012',
'2012 775701253',
'2012 493425136',
'2012 302977145',
'2012 582056511',
'2012 552017303',
'2012 783595036',
'2012 781804141',
'2012 391718970',
'2012 775665607',
'2012 493292403',
'2012 962504049',
'2012 528194434',
'2012 391406956',
'2012 388202533',
'2012 326817442',
'2012 712032143',
'2012 487607202',
'2012 692039514',
'2012 313402455',
'2012 784276180',
'2012 642036941',
'2012 642006589',
'2012 538711821',
'2012 588502310',
'2012 527946537',
'2012 784804593',
'2012 485389811',
'2012 304992993',
'2012 528862956',
'2012 784301111',
'2012 381856723',
'2012 508364155',
'2012 349250027',
'2012 946751641',
'2012 542094354',
'2012 428684963',
'2012 391790961',
'2012 318186756',
'2012 301374963',
'2012 302097191',
'2012 542089750',
'2012 180020034',
'2012 672049020',
'2012 421671587',
'2012 507542652',
'2013 356000000',
'2013 552049447',
'2013 552081317',
'2013 775663438',
'2013 775685019',
'2013 572104891',
'2013 441133808',
'2013 432766947',
'2013 662043116',
'2013 428822852',
'2013 444619258',
'2013 552016628',
'2013 326094471',
'2013 352751143',
'2013 775729155',
'2013 775665912',
'2013 788058030',
'2013 775722879',
'2013 330715368',
'2013 331596270',
'2013 784396079',
'2013 501524029',
'2013 483790069',
'2013 315065292',
'2013 440546018',
'2013 180036147',
'2013 412280737',
'2013 775558489',
'2013 775665599',
'2013 519587851',
'2013 775700198',
'2013 776056467',
'2013 692041585',
'2013 302421193',
'2013 775688229',
'2013 385290309',
'2013 542085907',
'2013 313320244',
'2013 451930051',
'2013 352973622',
'2013 381984921',
'2013 493479489',
'2013 390199669',
'2013 775604853',
'2013 160020012',
'2013 775701253',
'2013 302977145',
'2013 493425136',
'2013 130017791',
'2013 582056511',
'2013 783595036',
'2013 391718970',
'2013 781804141',
'2013 775665607',
'2013 493292403',
'2013 962504049',
'2013 391406956',
'2013 528194434',
'2013 388202533',
'2013 326817442',
'2013 712032143',
'2013 487607202',
'2013 692039514',
'2013 784276180',
'2013 642036941',
'2013 794538520',
'2013 642006589',
'2013 538711821',
'2013 588502310',
'2013 527946537',
'2013 784804593',
'2013 485389811',
'2013 528862956',
'2013 508364155',
'2013 304992993',
'2013 784301111',
'2013 381856723',
'2013 349250027',
'2013 946751641',
'2013 542094354',
'2013 428684963',
'2013 318186756',
'2013 301374963',
'2013 180020034',
'2013 421671587',
'2013 302097191',
'2013 507542652',
'2013 542089750',
);
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--) {
if ($annee<=2011) {
http://www.insee.fr/fr/ppp/bases-de-donnees/irweb/irecorecme12/dd/dbase/irecorecme12_T2012.dbf
$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;
} else {
http://www.insee.fr/fr/ppp/bases-de-donnees/irweb/irecorecme12/dd/dbase/irecorecme12_T2012.dbf
$url=$urlBase."/fr/themes/detail.asp?ref_id=ir-irecorecme$annee2";
$page=getUrl($url, '', '', '', false);
$referer=$url;
$body=$page['body'];
die(print_r($body));
}
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
bin/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();
?>

139
bin/getRisquesGeo.php Normal file
View File

@ -0,0 +1,139 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/dates.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTIONS]
Téléchargement et mise à jour de la base GASPAR (risques par commune) sur prim.net.
Options:
-v Mode debug
";
$modeDebug=false;
$strMailInfo='';
$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': $modeDebug=true; break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else {
$tabFichier[$j]=$argv[$i];
$j++;
}
}
}
$iDb=new WDB('pollutions');
$message=date('Y/m/d - H:i:s')." - Téléchargement de la base GASPAR (risques par commune) sur prim.net.".EOL;
echo $message;
$strMailInfo.=$message;
$tabRegions=array( '01','02','03','04','11','21','22','23','24','25','26','31','41',
'42','43','52','53','54','72','73','74','82','83','91','93','94');
$tabRisques=array( 1=>array( 'lib'=>'Information Préventive',
'table'=>'prim_Prevent',
'struc'=>array('codeInsee','libCommune','population','datePAC','dateDICRIM','datePCS'),
),
2=>array( 'lib'=>'Atlas de Zone Inondable',
'table'=>'prim_Inond',
'struc'=>array('codeInsee','libCommune','alea','nomAZI','dateDiffusion'),
),
3=>array( 'lib'=>'Risques',
'table'=>'prim_Risques',
'struc'=>array('codeInsee','libCommune','risque'),
),
4=>array( 'lib'=>'Plan de prévention',
'table'=>'prim_PlansPrev',
'struc'=>array('codeInsee','libCommune','plan','datePrescrit','dateEnquete','dateApprouve','bassin'),
),
5=>array( 'lib'=>'Arrêtés de catastrophes naturelles',
'table'=>'prim_Arrets',
'struc'=>array('codeInsee','libCommune','risque','dateDeb','dateFin','dateArret','dateJO'),
),
);
for($i=1;$i<6;$i++) {
$content[$i]='';
$message=date('Y/m/d - H:i:s')." - Début de récupération des fichiers '".$tabRisques[$i]['lib']."'".EOL;
echo $message;
$strMailInfo.=$message;
foreach ($tabRegions as $region) {
// $url="http://www.prim.net/professionnel/procedures_regl/export_gaspar/reg_C$i"."_$region.txt";
$url="http://macommune.prim.net/gaspar/export_gaspar/reg_C$i"."_$region.txt";
$cookie=$post='';
$referer='http://macommune.prim.net/gaspar/export_gaspar/download.htm';
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Début de récupération du fichier reg_C$i"."_$region.txt".EOL;
$page=getUrl($url, $cookie, $post, $referer);
if ($page['code']==200) {
$content[$i].=$page['body'];
if ($modeDebug) echo date('Y/m/d - H:i:s')." - Fin de récupération du fichier reg_C$i"."_$region.txt".EOL;
//sleep(2);
} else {
$message=date('Y/m/d - H:i:s')." - Erreur lors de la récupération du fichier reg_C$i"."_$region.txt".EOL;
echo $message;
$strMailInfo.=$message;
/*
Information préventive pour la région Guadeloupe
INSEE;Commune;Population;Date transmission PAC;Date arrêté DICRIM;Date notification PCS
*/
}
}
$message=date('Y/m/d - H:i:s')." - Fin de récupération des fichiers '".$tabRisques[$i]['lib']."'".EOL;
echo $message;
$strMailInfo.=$message;
file_put_contents(REP_TEMP."risques$i.csv", $content[$i]);
// Lecture et chargement du fichier
$fp = fopen(REP_TEMP."risques$i.csv", 'r');
$nbRows=$nbInsert=$nbInsertErr=0;
while (($data = fgetcsv($fp, 5000, ';')) !== FALSE) {
$nbRows++;
if ($data[0]*1>0) {
$tabInsert=array();
for($j=0; $j<count($tabRisques[$i]['struc']); $j++) {
if (substr($tabRisques[$i]['struc'][$j],0,4)=='date')
@$data2=Wdate::dateT('d/m/Y','Y-m-d', $data[$j]);
else
$data2=$data[$j];
$tabInsert=array_merge($tabInsert, array($tabRisques[$i]['struc'][$j]=>$data2));
}
if ($iDb->insert($tabRisques[$i]['table'], $tabInsert))
$nbInsert++;
elseif (mysql_errno()==1062)
$nbDeja++;
else
$nbInsertErr++;
}
}
fclose($fp);
$message=date('Y/m/d - H:i:s')." - Chargement de la table '".$tabRisques[$i]['table']."' : $nbRows lignes dont $nbInsert insérées, $nbDeja déjà en base et $nbInsertErr erreur(s).".EOL;
echo $message;
$strMailInfo.=$message;
}
$message=date('Y/m/d - H:i:s')." - Fin du chargement de la base GASPAR (risques par commune).".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Fin du chargement de la base GASPAR (risques par commune)", $strMailInfo);
echo date('Y/m/d - H:i:s')." - Fin du script...".EOL;
?>

472
bin/getTelSources.php Normal file
View File

@ -0,0 +1,472 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Récupération des informations de contact issues des marchés publics
Options :
-a Ne pas traiter les administrations des Marchés Publics
-e Ne pas traiter les entreprises des Marchés Publics
-v Mode verbose
-m Ne pas envoyer le mail d'informations
";
$mInsee=new MInsee();
$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,
* ./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,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND nic>9 AND recupTel=0 AND (poste<>'' OR tel<>'' OR fax<>'' OR email<>'' OR web<>'')",
'go'=>1,
'idSrc'=>131),
'ent'=>array('lib'=>'Entreprises',
'db'=>'jo',
'table'=>'boamp_lots',
'zones'=>"id, siren, nic, poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert, dateUpdate,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND nic>9 AND recupTel=0 AND (poste<>'' OR tel<>'' OR fax<>'' OR email<>'' OR web<>'')",
'go'=>1,
'idSrc'=>131),
'asso'=>array('lib'=>'Associations',
'db'=>'jo',
'table'=>'asso',
'zones'=>"id, siren, nic, '' AS poste, Assoc_Mail AS mail, Assoc_Web AS web, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
'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',
'zones'=>"id, sirenMand AS siren, nicMand AS nic, '' AS poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"sirenMand>1000 AND nicMand>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR email<>'' OR web<>'')",
'go'=>1,
'idSrc'=>176),
'mandGrp'=>array('lib'=>'MandatairesGrp',
'db'=>'jo',
'table'=>'tabMandataires',
'zones'=>"id, sirenGrp AS siren, nicGrp AS nic, '' AS poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"sirenGrp>1000 AND nicGrp>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR email<>'' OR web<>'')",
'go'=>1,
'idSrc'=>176),
'annuWeb'=>array('lib'=>'Annuaire.com Web',
'db'=>'telephonie',
'table'=>'societe_ent',
'zones'=>"id, siren, 0 AS nic, '' AS poste, web, DATE(dateInsert)*1 AS dateInsert",
'where'=>"siren>1000 AND recupTel=0 AND web<>''",
'go'=>1,
'idSrc'=>251),
'annuTel'=>array('lib'=>'Annuaire.com Tel',
'db'=>'telephonie',
'table'=>'societe_tel',
'zones'=>"id, siren, NULL AS nic, infoTel AS poste, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(numTel,'-',''),' ',''),',',''),'.','') AS tel",
'where'=>"siren>1000 AND recupTel=0 AND libTel='Téléphone'",
'go'=>1,
'idSrc'=>251),
'insee'=>array('lib'=>'Insee Even',
'db'=>'insee',
'table'=>'insee_even',
'zones'=>"id, insSIREN as siren, insNIC as nic, '' AS poste, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(insTEL,'-',''),' ',''),',',''),'.','') AS tel",
'where'=>"insTEL<>'' AND recupTel=0",
'go'=>1,
'idSrc'=>2),
'annuFax'=>array('lib'=>'Annuaire.com Fax',
'db'=>'telephonie',
'table'=>'societe_tel',
'zones'=>"id, siren, NULL AS nic, infoTel AS poste, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(numTel,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND recupTel=0 AND libTel='Fax'",
'go'=>1,
'idSrc'=>251),
'tourisme'=>array('lib'=>'Hotels/Campings',
'db'=>'jo',
'table'=>'tourisme',
'zones'=>"id, siren, nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')",
'go'=>1,
'idSrc'=>200),
'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'=>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', 'an8');
$verbose=$noMail=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 'a':
$tabSrc['adm']['go']=0;
break;
case 'e':
$tabSrc['ent']['go']=0;
break;
case 'v':
$verbose=true;
break;
case 'm':
$noMail=true;
break;
/* case 'i':
$index=trim(substr($argv[$i],3));
break;*/
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des Tel, Fax, Mel et Web issus des différentes sources...".EOL;
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
foreach ($tabSrc as $src=>$tabSrcDet) {
if ($tabSrcDet['go']==0) {
echo date('Y/m/d - H:i:s') ." - On ne traite pas les contacts '".$tabSrcDet['lib']."'".EOL;
continue;
}
echo date('Y/m/d - H:i:s') ." - Traitement des contacts '".$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);
if (mysql_errno()<>0) die(mysql_error().EOL);
echo date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) de contacts '".$tabSrcDet['lib']."' à mettre à jour...".mysql_error().EOL;
$j=0;
while ($tabTel=$iDb->fetch(MYSQL_ASSOC)) {
$j++;
$siren=$tabTel['siren'];
$nic =$tabTel['nic'];
foreach ($tabZones as $zone) {
// Si la zone n'existe pas dans la table où on lit les infos de contacts
if (!isset($tabTel[$zone])) continue;
// Le téléphone doit faire 10 chiffres
if (($zone=='tel' || $zone=='fax' || $zone=='mob') && strlen($tabTel[$zone])<10 && $tabTel[$zone]*1<100000000) continue;
if ($zone<>'tel' && $zone<>'fax' && $zone<>'mob') {
if (strlen($tabTel[$zone])<4) continue;
$tel=0;
$infoTel=preg_replace('/(\s|,|\.|;)+$/','',trim($tabTel[$zone]));
$infoTel=preg_replace('/ ou .*| et .*| \(ou\) .*| \(et\) .*| ; .*| \/ .*/','',trim($infoTel));
if ($verbose) echo $tabSrcDet['lib']." $j/$nb - ".$tabTel['id']. ", $siren $nic - $zone : ".$tabTel[$zone].' ==> '.$infoTel.EOL;
} else {
$tel=$tabTel[$zone];
$infoTel='';
if ($verbose) echo $tabSrcDet['lib']." $j/$nb - ".$tabTel['id']. ", $siren $nic - $zone : ".$tabTel[$zone].' ==> '.$tel.EOL;
}
//continue;
if ($iDb2->insert('telephonie', array( 'siren'=>$siren,
'nic'=>$nic,
'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]++;
@$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']."'");
} 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 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);
}
echo date('Y/m/d - H:i:s') ." - FIN du programme de récupération des Tel, Fax, Mel et Web issus des différentes sources.".EOL;
die();
/** Mise à jour des fonctions de direction **/
$tabFonctions=array('maire',
'directeur',
'président',
'député',
'directrice',
'sénateur',
'proviseur',
'secrétaire',
'préfet',
'adjoint',
'chef',
'conseiller',
'ingénieur',
);
$strFct='';
foreach ($tabFonctions as $iFct=>$fct) {
if ($iFct>0) $strFct.=' OR ';
$strFct.="destinataire LIKE '%$fct%'";
}
$tabSrc=array( 'adm'=>array('lib'=>'Administrations',
'db'=>'jo',
'table'=>'boamp_detail',
'zones'=>"id, siren, nic, destinataire, poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert,
REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel,
REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax",
'where'=>"siren>1000 AND nic>9 AND recupDir=0 AND LENGTH(destinataire)>18 AND ($strFct)",
'go'=>1,
'idSrc'=>131),
);
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des Dirigeants issus de Marchés Publics...".EOL;
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
foreach ($tabSrc as $src=>$tabSrcDet) {
if ($tabSrcDet['go']==0) {
echo date('Y/m/d - H:i:s') ." - On ne traite pas les contacts '".$tabSrcDet['lib']."'".EOL;
continue;
}
echo date('Y/m/d - H:i:s') ." - Traitement des contacts '".$tabSrcDet['lib']."'".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 date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) de contacts '".$tabSrcDet['lib']."' à mettre à jour...".mysql_error().EOL;
while ($tabTel=$iDb->fetch(MYSQL_ASSOC)) {
$siren=$tabTel['siren'];
$nic =$tabTel['nic'];
print_r($tabTel);
continue;
foreach ($tabZones as $zone) {
// Si la zone n'existe pas dans la table où on lit les infos de contacts
if (!isset($tabTel[$zone])) continue;
// Le téléphone doit faire 10 chiffres
if (($zone=='tel' || $zone=='fax') && strlen($tabTel[$zone])<10) continue;
if ($zone<>'tel' && $zone<>'fax') {
$tel=0;
$infoTel=preg_replace('/(\s|,|\.|;)+$/','',trim($tabTel[$zone]));
echo $tabTel['id']. ", $siren : ".$tabTel[$zone].' ==> '.$infoTel.EOL;
} else {
$tel=$tabTel[$zone];
$infoTel='';
}
//continue;
if ($iDb2->insert('telephonie', array( 'siren'=>$siren,
'nic'=>$nic,
'dateProvPartenaire'=>$tabTel['dateInsert'],
'typeTel'=>$zone,
'actif'=>1,
'infoTel'=>$infoTel,
'telephone'=>$tel,
'partenaire'=>$tabSrcDet['idSrc'])) || $iDb2->getLastErrorNum()==1062) {
@$nbInsert[$zone]++;
$iDb->update($tabSrcDet['table'], array('recupTel'=>1), "id='".$tabTel['id']."'");
} else die($iDb2->getLastError());
}
}
}
die();
$nbAvecMaj=$nbSansMaj=$nbErr=0;
while ($tabTel=$iDbSel->fetch(MYSQL_ASSOC)) {
$siren=$tabTel['siren'];
$tel=trim(strtr($tabTel['tel'], array('.'=>'', ' '=>'', '-'=>'')));
$fax=trim(strtr($tabTel['fax'], array('.'=>'', ' '=>'', '-'=>'')));
$tabTmp=$iDbMaj->select('identite', 'id, SIREN, NIC, ACTIF, SIEGE, TEL, FAX',"SIREN=$siren ORDER BY SIEGE DESC, ACTIF DESC LIMIT 0,1", false, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$tabUpdate=array();
$etab=$tabTmp[0];
$id=$etab['id'];
$telPrev=$etab['TEL'];
$faxPrev=$etab['FAX'];
if ($telPrev=='' && $tel<>'') $tabUpdate['TEL']=$tel;
if ($faxPrev=='' && $fax<>'') $tabUpdate['FAX']=$fax;
if (count($tabUpdate)>0) {
$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++;
}
else {
$nbSansMaj++;
// echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : PAS de mise à jour".EOL;
}
} else {
echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : Pas de fiche identite !".EOL;
$nbErr++;
// die();
}
/*print_r($tabTel);
print_r($tabTmp);
die();*/
}
echo date ('Y/m/d - H:i:s')." - FIN de la mise à jour des TEL/FAX des entreprises ($nbAvecMaj MAJ/$nbTel avec $nbErr erreurs).".EOL;
die();
?>

228
bin/loadCSV.php Normal file
View File

@ -0,0 +1,228 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
error_reporting(E_ALL ^ E_NOTICE);
/** @todo Si MAJ en annule et remplace prévoir les manips SQL suivantes :
** Création d'une table insee.tmp sans aucun index
** A la fin du chargement construire les index
** Si pas d'erreur :
** 1. detruire insee
** 2. Renommer insee.tmp en insee
**/
set_time_limit(0);
$heureDebut=TIME_LISIBLE;
$dateJour=DATE;
$dateJourFormat=substr(DATETIME,0,4).'-'.substr(DATETIME,4,2).'-'.substr(DATETIME,6,2);
$db_name=$db_table='';
$j=0;
$dropBefore=$utf8_decode=false;
$argv=$_SERVER['argv'];
if ($_SERVER['argc']==1) die('Usage : '.basename($argv[0]). " [OPTION]... FICHIER
Charger un fichier CSV dans une base de données avec création de la table qui aura le nom du fichier chargé..
Options disponibles:
Les arguments obligatoires pour les options de formes longues le sont aussi
pour les options de formes courtes.
-s=CHAR séparateur de champs (virgule, point-virgule*, /t=TAB, /p=|, etc...)
-c=CHAR caractère encadrant les zones alphanumériques (inopérationnel)
-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 !
");
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 's': $separator=substr($argv[$i],3); break;
case 'c': $chaine=substr($argv[$i],3); break;
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 {
$fichier_csv[$j]=$argv[$i];
$j++;
}
}
if ($db_name=='') die("Base de données non communiquée !".EOL);
$iDb=new WDB($db_name);
if ($separator=='/t') {
$separator="\t";
echo "séparateur = TAB\n";
} else if ($separator=='/p') {
$separator='|';
echo "séparateur = PIPE\n";
} elseif (!isset($separator) || $separator=='') {
$separator=';';
echo "séparateur = '$separator'\n";
}
else
echo "séparateur = '$separator'\n";
// Mise à jour de la table PARAM
// -----------------------------
// 2 - pour la date et l'heure d'exécution du traitement en cours
/* $tabDataToUpdate=array('VALEUR'=>DATETIME,
'CLE'=>'INSEE_MAJ_ENCOURS');
$iparam->setParamValeur($tabDataToUpdate);
*/
echo date ('Y/m/d - H:i:s') . " - Début du traitement".EOL;
flush();
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;
/* $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".EOL;
exit();
}
$nbLignes=0;
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $fichier_csv[$nbFichiers] ."...".EOL;
flush();
while (($data = fgetcsv($fp, 3000, $separator)) !== FALSE)
{
//echo "\nLigne #$nbLignes:\n";
//print_r($data);
$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.="NOM LONGTEXT, PRENOM LONGTEXT, NUSAGE LONGTEXT) TYPE = MYISAM COMMENT = '$comment'";
$sql.=") ENGINE = MYISAM COMMENT = '$comment'";
//echo $sql;
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);
}
flush();
continue;
}
$tabDataToInsert=array();
for($i=0; $i<$nbColonnes; $i++) {
/* if ($i==1) {
$tabM=explode(' ', $data[$i]);
if (strlen($tabM[0])<=2) {
$nom=$tabM[0].' '.$tabM[1];
// unset($tabM[0]);
unset($tabM[1]);
}
else $nom=$tabM[0];
unset($tabM[0]);
$tabM=preg_split('/( NEE | NE )/i', implode(' ', $tabM));
$prenom=$tabM[0];
$usage=$tabM[1];
$tabDataToInsert=array_merge($tabDataToInsert, array('NOM'=>$nom, 'PRENOM'=>$prenom, 'NUSAGE'=>$usage));
} else*/
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]);
}
//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;
flush();
}
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;
die();
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;
}
?>

331
bin/loadInseeDC.php Normal file
View File

@ -0,0 +1,331 @@
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
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;
$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.
Options :
-v Mode debug (Verbosité au maximum)
-u Mettre à jour uniquement les informations dirigeants (Ne pas charger de fichier)
-n Ne pas mettre à jour les informations dirigeants.
-m:SSAAMM Forcer le mois de mise à jour à SSAAMM (sinon mois précedent)
";
$modeDebug=false; // Mode débug
$majDirUniquement=false; // Uniquement mettre à jour les dirigeants
$pasMajDir=false; // Ne pas mettre à jour les dirigeants
$tabFichier=array();
$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 'u': $majDirUniquement=true; break;
case 'n': $pasMajDir=true; break;
case 'm': $dateMAJ = substr($argv[$i],3,6); break;
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
} else $tabFichier[]=$argv[$i];
}
if (count($tabFichier)==0 && !$majDirUniquement && !$pasMajDir) {
echo $strInfoScript;
die('Aucun fichier à traiter'.EOL);
}
echo date ('Y/m/d - H:i:s') . " - Début du traitement".EOL;
$iDb=new WDB();
$nbErr=$nbOk=$nbDup=0;
$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++)
{
$nomFichier =$tabFichier[$nbFichiers];
$fp=fopen($nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s') . " - Impossible d'ouvrir le fichier n°$nomFichier !".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement.".EOL;
exit();
}
//$idFlux=basename($nomFichier);
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier $nomFichier ($idFlux)...".EOL;
//die();
flush();
$nbLignes=0;
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 4096));
if ($a=='' || $a==false) break;
$nomPrenom =substr($a, 0, 80);
$tabTmp=explode('*', $nomPrenom);
$nom=trim($tabTmp[0]);
if (isset($tabTmp[1])) $prenom=trim($tabTmp[1]);
else $prenom='';
if (substr($prenom,-1)=='/') $prenom=substr($prenom,0,strlen($prenom)-1);
$sexe =substr($a, 80, 1);
$dateNaiss =substr($a, 81, 8);
$comInsee =substr($a, 89, 5);
$comLib =trim(substr($a, 94, 30));
$pays =trim(substr($a,124, 30));
$dateDeces =substr($a,154, 8);
$comInsee2 =substr($a,162, 5);
$numDecesCom=trim(substr($a,167, 9));
$codeN =substr($a,176, 1);
$filler1 =trim(substr($a,177, 13));
$filler2 =substr($a,190, 8);
$tabDataToInsert=array( 'nom' => $nom,
'prenom' => $prenom,
'sexe' => $sexe,
'dateNaiss' => $dateNaiss,
'comInsee' => $comInsee,
'comLib' => $comLib,
'pays' => $pays,
'dateDeces' => $dateDeces,
'comInsee2' => $comInsee2,
'numDecesCom' => $numDecesCom,
'codeN' => $codeN,
'filler1' => $filler1,
'filler2' => $filler2,
'moisMaj' => $idFlux,
//'idFlux' => $idFlux,
);
$ret=$iDb->insert('insee_dc', $tabDataToInsert);
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++;
flush();
} elseif ($ret!=1 && $iDb->getLastErrorNum()==1062)
$nbDup++;
else $nbOk++;
unset($tabDataToInsert);
}
fclose ($fp);
}
echo date ('Y/m/d - H:i:s') . " - Fin du traitement : $nbOk lignes traitées dont $nbErr erreur(s) et $nbDup doublon(s).".EOL;
}
if (!$pasMajDir) {
echo date ('Y/m/d - H:i:s') . " - Mise à jour des informations dirigeants...".EOL;
// INFOS IG FP
$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)
echo date ('Y/m/d - H:i:s')." - Recherche des dirigeants en IG/FP à mettre à jour...".EOL;
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%') ";
$nivCinfEnum='igfp';
} else {
$strNivCinf=" Rubrique='procol' ";
$nivCinfEnum='procol';
}
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
echo date ('Y/m/d - H:i:s')." - Il y a $nbDirDc dirigeants en Procol à vérifier.".EOL;
$nbUpdate=$nbUpdateErr=$nbUpdateNo=0;
$numDir=0;
while ($tabDirDC=$iDb->fetch(MYSQL_ASSOC)) {
$numDir++;
$idDirIGFP=$tabDirDC['id'];
$sirenIGFP=$tabDirDC['siren'];
$nomIGFP=strtoupper($tabDirDC['nom']);
$prenomIGFP=strtoupper($tabDirDC['prenom']);
$naissDateIGFP=trim($tabDirDC['naissance_date']);
$naissLieuIGFP=strtoupper($tabDirDC['naissance_lieu']);
$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['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;
$tabTmp=$iDb2->select('rncs_dirigeants', 'id, siren, civilite, actif, fonction_lib, nom, naissance_nom, prenom, naissance_date, naissance_lieu', "id=$idDirIGFP OR (naissance_date='$naissDateIGFP' AND naissance_date>0 AND (nom='$nomIGFP' OR naissance_nom='$nomIGFP'))", false, MYSQL_ASSOC);
if (count($tabTmp)>0) {
foreach ($tabTmp as $iDir=>$tabDir) {
$idDir=$tabDir['id'];
$siren=$tabDir['siren'];
$nom=strtoupper($tabDir['nom']);
$prenom=strtoupper($tabDir['prenom']);
$naissDate=$tabDir['naissance_date'];
$naissLieu=trim(strtoupper($tabDir['naissance_lieu']));
$levPrenom=levenshtein($prenom, $prenomIGFP);
$levLieu=levenshtein($naissLieu, $naissLieuIGFP);
if ($naissLieuIGFP=='' || $naissLieu=='') $levLieu=0;
if ($levPrenom<6 && $levLieu<6) {
// On met à jour l'indicateur
if ($idDir==$idDirIGFP) $cinf=$nivCinf;
else $cinf=$nivCinf+1;
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++;
}
else $nbUpdateNo++;
}
}
//print_r($tabDirDC);
// $line = trim(fgets(STDIN));
}
$nbUpdate+=$nbUpdateErr;
if ($nivCinf==11)
echo date ('Y/m/d - H:i:s')." - Dirigeants en IG/FP : ";
else
echo date ('Y/m/d - H:i:s')." - Dirigeants en Procol : ";
echo "$nbUpdate dirigeants mis à jours dont $nbUpdateErr erreur(s) sur $nbDirDc probables.".EOL;
}
echo date ('Y/m/d - H:i:s')." - Recherche des dirigeants DC à mettre à jour...".EOL;
// INFOS DC
$iDb2=new WDB();
//AND i.idFlux = 'S1M0904.txt'
$strIdFlux=" AND i.moisMaj='$idFlux' ";
$strIdFlux='';
$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;
$numDir=0;
while ($tabDirDC=$iDb->fetch(MYSQL_ASSOC)) {
$numDir++;
$idDir=$tabDirDC['id'];
$hfDC=$tabDirDC['sexe'];
switch (strtoupper(trim($tabDirDC['civilite']))) {
case 'M': $hfDir=1; break;
case 'MME': $hfDir=2; break;
case 'MLLE': $hfDir=2; break;
case '': $hfDir=getCivilitePrenom($tabDirDC['prenomDir']); break;
default: die ("Civilité : '".strtoupper($tabDirDC['civilite'])."' inconnue !"); break;
}
$tabTmp=explode(' ', $tabDirDC['prenomDC']);
$prenomDC=strtoupper($tabTmp[0]);
$levPrenom=levenshtein(strtoupper($tabDirDC['prenomDir']), $prenomDC);
if ($levPrenom>4 && isset($tabTmp[1])) {
$prenomDC=strtoupper($tabTmp[0].' '.$tabTmp[1]);
$levPrenom=levenshtein(strtoupper($tabDirDC['prenomDir']), $prenomDC);
}
$lieuDC=trim(strtoupper($tabDirDC['comLib'].' '.$tabDirDC['pays']));
$levLieu=levenshtein(strtoupper($tabDirDC['naissance_lieu']), $lieuDC);
if ($levPrenom<6 && $levLieu<6) {
// On met à jour l'indicateur
if ($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'=>19), "id=$idDir"))
$nbUpdate++;
else
$nbUpdateErr++;
}
else $nbUpdateNo++;
//print_r($tabDirDC);
// $line = trim(fgets(STDIN));
}
$nbUpdate+=$nbUpdateErr;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement : $nbUpdate dirigeants mis à jours dont $nbUpdateErr erreur(s) sur $nbDirDc probables.".EOL;
}
die();
function getCivilitePrenom($prenom) {
return 0;
}
?>

422
bin/loadSurveillances.php Normal file
View File

@ -0,0 +1,422 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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.'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'];
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);
break;
}
}
}
}
$iDb=new WDB('insee');
$iDbSurv=new WDB('jo');
$iInsee=new MInsee();
echo date ('Y/m/d - H:i:s') . " - Début du traitement".EOL;
flush();
$ftpDir=FTPCLIENT_PATH;
$tabDir=array();
$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") || 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 **/
{
$tabFichier=array();
$dh = opendir($ftpDir.$dirToCheck.'/send/');
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..') {
$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
**/
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'];
$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')
$format='csv';
elseif (strtolower($format)=='plat')
$format='plat';
elseif (strtolower($format)=='sdin')
$format='sdin';
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'format' doit être 'csv', 'plat' ou 'stdin' et non '$format' pour le client $dirToCheck !".EOL);
if (!isset($tabInfos['chargement']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'chargement' n'est pas définie pour le client $dirToCheck !".EOL);
$chargement=$tabInfos['chargement'];
if (strtoupper($chargement)=='AR')
$chargement='AR';
elseif (strtoupper($chargement)=='MAJ')
$chargement='MAJ';
elseif (strtoupper($chargement)=='AJOUT')
$chargement='AJOUT';
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'chargement' doit être 'AR', 'MAJ' ou 'AJOUT' et non '$chargement' pour le client $dirToCheck !".EOL);
if (!isset($tabInfos['frequence']))
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'frequence' n'est pas définie pour le client $dirToCheck !".EOL);
$frequence=$tabInfos['frequence'];
if (strtoupper($frequence)=='Q')
$frequence='Q';
elseif (strtoupper($frequence)=='H')
$frequence='H';
elseif (strtoupper($frequence)=='M')
$frequence='M';
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La variable 'frequence' doit être 'Q', 'H' ou 'M' et non '$frequence' pour le client $dirToCheck !".EOL);
$retro=@$tabInfos['retro'].'';
if ($retro=='' || $retro==0) {
echo (date ('Y/m/d - H:i:s')." - Pas de rétroactivité pour le client $dirToCheck !".EOL);
$retro=NULL;
}
$dateFluxDef=@$tabInfos['dateFlux'];
if (isset($tabInfos['dateFlux']) && @$tabInfos['dateFmt']<>'Ymd')
die(date ('Y/m/d - H:i:s')." - ERREUR : Le format de 'dateFlux' doit être 'Ymd' pour le client $dirToCheck !".EOL);
$mailClient=false;
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;
die();
}
$dateFlux='';
if ($dateFluxDef<>'' && preg_match('/^n(\d*),(\d*)$/', trim($dateFluxDef), $z))
$dateFlux=trim(substr($fichier_csv, ($z[1])-1, $z[2]));
elseif ($dateFluxDef<>'' && preg_match('/^dateDepot$/i', trim($dateFluxDef), $z))
$dateFlux=date('Ymd', filemtime ($ftpDir.$dirToCheck."/send/$fichier_csv"));
if ($dateFlux*1<20071231) $dateFlux=date('Ymd');
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $fichier_csv ."...".EOL;
$numLigne=$nbConfs=$nbAjouts=0;
$nbSirenValide=$nbSirenErreur=0;
$tabIdClients=$erreurSiren=array();
while(!feof($fp)) {
$line=fgets($fp, 4096);
if (trim($line)=='') break;
$numLigne++;
//$ligne, $format='sdin', $tabZones=array(), $idClientDef='') {
$data=@getLigneFormat($line, $format, $tabZones, $idClientDef, $dateFlux);
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'];
$dateFichier=$data['dateFlux'];
$dateDerEnvoi=WDate::period2Days($dateFichier, $retro, true);
if ($dateDerEnvoi==NULL) $dateDerEnvoi=WDate::period2Days($dateFichier, '5 jours', true);
//die($dateFichier.EOL.$dateDerEnvoi.EOL);
unset($data['dateFlux']);
if ($chargement<>'AJOUT' && ($numLigne==1 || !in_array($idClient, $tabIdClients))) {
/** Passage à 0 de l'indicateur ligne traitée **/
$res=$iDbSurv->update('surveillances_listes', array('indTrt'=>0), "idClient='$idClient'");
if ($res) echo date ('Y/m/d - H:i:s')." - Toutes les lignes du client $idClient ont été positionnées à non traitées !".EOL;
else die (date ('Y/m/d - H:i:s')." - ERREUR : Impossible de positionner les lignes du client $idClient à non traitées !!!".EOL);
$tabIdClients[]=$idClient;
}
/** Contrôle de la validité du siren **/
if ($iInsee->valideSiren($data['siren'])) {
$data['sirenValide']=1;
$nbSirenValide++;
} else {
$data['sirenValide']=0;
$nbSirenErreur++;
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) {
/** Cette référence est déjà sous surveillance pour ce client **/
$dataUpdate=array_merge($data, array('dateConf'=>$dateFichier));
$res=$iDbSurv->update('surveillances_listes', $dataUpdate, "idClient='$idClient' AND ref='".$data['ref']."'");
if (!$res) die (date ('Y/m/d - H:i:s')." - ERREUR : Ligne $idClient, ".$data['siren'].", ".$data['ref']." mise à jour IMPOSSIBLE !!!".EOL);
else $nbConfs++;
} else {
$dataInsert=array_merge($data, array('dateAjout'=>$dateFichier,'dateDerEnvoi'=>$dateDerEnvoi));
$res=$iDbSurv->insert('surveillances_listes', $dataInsert);
if (!$res) {
echo date ('Y/m/d - H:i:s')." - Lignes $idClient, ".$data['siren'].", ".$data['ref']." ERREUR LORS DE L'AJOUT !!!".EOL;
die(mysql_error());
}
else $nbAjouts++;
}
}
echo date ('Y/m/d - H:i:s')." - Nombre de lignes à surveiller ajoutées pour $idClient = $nbAjouts.".EOL;
$mailInfo =" - Nombre de lignes à surveiller ajoutées : $nbAjouts".EOL;
if ($chargement<>'AJOUT') {
$res=$iDbSurv->select('surveillances_listes', 'count(*)', "idClient='$idClient' AND indTrt=0 AND dateSuppr=0");
$nbSuppr=$res[0][0];
$nbConfs=$nbConfs-$nbSuppr;
echo date ('Y/m/d - H:i:s')." - Nombre de lignes à surveiller confirmées pour $idClient = $nbConfs.".EOL;
$mailInfo.=" - Nombre de lignes à surveiller confirmées : $nbConfs".EOL;
echo date ('Y/m/d - H:i:s')." - Nombre de lignes à surveiller supprimées pour $idClient = $nbSuppr.".EOL;
$mailInfo.=" - Nombre de lignes à surveiller supprimées : $nbSuppr".EOL;
$res=$iDbSurv->update('surveillances_listes', array('dateSuppr'=>$dateFichier), "idClient='$idClient' AND indTrt=0 AND dateSuppr=0",true);
if (!$res) die (date ('Y/m/d - H:i:s')." - ERREUR : Impossible de supprimer les surveillances obsolètes du client $idClient !!!".EOL);
$res=$iDbSurv->update('surveillances_listes', array('dateSuppr'=>0), "idClient='$idClient' AND dateConf>dateSuppr AND dateSuppr<>0");
$nbReact=$res[0][0];
if ($nbReact>0) {
echo date ('Y/m/d - H:i:s')." - Attention, $nbReact ligne(s) ont été réactivées !".EOL;
$mailInfo.="Attention, $nbReact ligne(s) ont été réactivées !".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);
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);
@mkdir(CLIENTS_PATH.$dirToCheck.'/');
if (!move($ftpDir.$dirToCheck."/send/$fichier_csv", CLIENTS_PATH."$dirToCheck/$fichier_csv"))
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;
}
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
if ($data['idClient']=='' && $idClientDef<>'')
$data['idClient']=$idClientDef;
$data['siren'] = trim(substr($line, 98, 9)); // SIREN
$data['nic'] = trim(substr($line, 107, 5)); // NIC
$data['rs'] = trim(substr($line, 112, 60)); // RS
$data['cp'] = trim(substr($line, 332, 5)); // CP
$data['ville'] = trim(substr($line, 337, 40)); // Ville
$data['ref'] = trim(substr($line, 417, 18)); // Référence Client
$data['dateFlux'] = trim(substr($line, 3, 8)); // Date du fichier
if ($data['idClient']=='SURBODPRDFTSMEDERIC') {
$data['ref'] = substr($data['ref'], 0, 9); // Référence Client Fixe
$data['refInfos']= substr($data['ref'], 9, 9); // Référence Client à titre d'information
}
} elseif ($format=='plat') {
$data['idClient']=trim($idClientDef);
// Zone idClient
if (isset($tabZones['idClient']) && preg_match('/^c(\d*),(\d*)$/', trim($tabZones['idClient']), $z))
$data['idClient'].=trim(substr($line, ($z[1])-1, $z[2]));
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('/^c(\d*),(\d*)$/', trim($tabZones['siren']), $z))
$data['siren'] = trim(substr($line, ($z[1])-1, $z[2]));
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'siren' est incorrecte !".EOL);
// Zone ref
if (preg_match('/^c(\d*),(\d*)$/', trim($tabZones['ref']), $z))
$data['ref'] = trim(substr($line, ($z[1])-1, $z[2]));
else
die(date ('Y/m/d - H:i:s')." - ERREUR : La zone 'ref' est incorrecte !".EOL);
// Zone refInfos
if (isset($tabZones['refInfos']) && preg_match('/^c(\d*),(\d*)$/', trim($tabZones['refInfos']), $z))
$data['refInfos'] = trim(substr($line, ($z[1])-1, $z[2]));
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('/^c(\d*),(\d*)$/', trim($tabZones['rs']), $z))
$data['rs'] = trim(substr($line, ($z[1])-1, $z[2]));
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('/^c(\d*),(\d*)$/', trim($tabZones['cp']), $z))
$data['cp'] = trim(substr($line, ($z[1])-1, $z[2]));
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('/^c(\d*),(\d*)$/', trim($tabZones['ville']), $z))
$data['ville'] = trim(substr($line, ($z[1])-1, $z[2]));
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('/^c(\d*),(\d*)$/', trim($tabZones['dateFlux']), $z))
$data['dateFlux']= trim(substr($line, ($z[1])-1, $z[2]));
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;
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,73 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=test
# Arg3 = http://p-lei.org/user/login
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key l
key e
key n
key a
key o
key u
key r
key y
key @
key g
key m
key a
key i
key l
key .
key c
key o
key m
key ^J
key b
key j
key 1
key 0
key s
key x
key ^J
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key d
key Down Arrow
key ^J
key Find key
key /
key t
key m
key p
key /
key ^J
key o
key Q

View File

@ -0,0 +1 @@
lynx -accept_all_cookies -term=vt100 -error_file=/home/scores/batch/bin/lynx/globalLeiDeltaDwl.errlog -cmd_script=/home/scores/batch/bin/lynx/globalLeiDeltaDwl.lynx http://p-lei.org/user/login >> /dev/null

View File

@ -0,0 +1,72 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=test
# Arg3 = http://p-lei.org/user/login
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key l
key e
key n
key a
key o
key u
key r
key y
key @
key g
key m
key a
key i
key l
key .
key c
key o
key m
key ^J
key b
key j
key 1
key 0
key s
key x
key ^J
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key d
key Down Arrow
key ^J
key Find key
key /
key t
key m
key p
key /
key ^J
key o
key Q

View File

@ -0,0 +1 @@
lynx -accept_all_cookies -cmd_script=/home/scores/batch/bin/lynx/globalLeiFullDwl.lynx http://p-lei.org/user/login

97
bin/lynx/lynx_finseance Normal file
View File

@ -0,0 +1,97 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_finseance
# Arg3 = http://download.abcbourse.com/historiques.aspx?f=ex
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Up Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key s
key e
key _
key ^J
key o
key Q

View File

@ -0,0 +1 @@
lynx -accept_all_cookies -cmd_script=/home/scores/batch/bin/lynx/lynx_finseance http://download.abcbourse.com/historiques.aspx?f=ex

15
bin/lynx/lynx_intraday.sh Normal file
View File

@ -0,0 +1,15 @@
lynx -accept_all_cookies -cmd_script=/home/scores/batch/bin/lynx/lynx_intraday_fr http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx_intraday_fr http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_be http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_nl http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_pt http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_us_d http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_us_n http://www.abcbourse.com/download/telechargement_intraday.aspx
sleep 1
lynx -accept_all_cookies -cmd-script=/home/scores/batch/bin/lynx/lynx/lynx_intraday_us_s http://www.abcbourse.com/download/telechargement_intraday.aspx

82
bin/lynx/lynx_intraday_be Normal file
View File

@ -0,0 +1,82 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=lynx_intraday_be
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key c
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key b
key e
key _
key ^J
key o
key Q

82
bin/lynx/lynx_intraday_fr Normal file
View File

@ -0,0 +1,82 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=lynx_intraday_fr
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key c
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key f
key r
key _
key ^J
key o
key Q

81
bin/lynx/lynx_intraday_nl Normal file
View File

@ -0,0 +1,81 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_intraday_nl
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key s
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key n
key l
key _
key ^J
key o
key Q

82
bin/lynx/lynx_intraday_pt Normal file
View File

@ -0,0 +1,82 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_intraday_pt
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key c
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key p
key t
key _
key ^J
key o
key Q

View File

@ -0,0 +1,84 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_intraday_us_d
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key s
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key u
key s
key _
key d
key _
key ^J
key o
key Q

View File

@ -0,0 +1,84 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_intraday_us_n
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key s
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key u
key s
key _
key n
key _
key ^J
key o
key Q

View File

@ -0,0 +1,88 @@
# Command logfile created by Lynx 2.8.5rel.1 (04 Feb 2004)
# Arg0 = lynx
# Arg1 = -accept_all_cookies
# Arg2 = -cmd_log=/root/lynx/lynx_intraday_us_s
# Arg3 = http://www.abcbourse.com/download/telechargement_intraday.aspx
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Up Arrow
key Up Arrow
key ^J
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key Down Arrow
key ^J
key Down Arrow
key ^J
key p
key ^J
key Find key
key /
key t
key m
key p
key /
key a
key b
key c
key b
key o
key u
key r
key s
key e
key _
key i
key n
key t
key r
key a
key d
key a
key y
key _
key u
key s
key _
key s
key _
key ^J
key o
key Q

125
bin/majAbreviations.php Normal file
View File

@ -0,0 +1,125 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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');
$message=date ('Y/m/d - H:i:s') . " - Début du traitement de mise à jour des Abréviations...".EOL;
echo $message;
$strMailInfo=$message;
//$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);
$message=date ('Y/m/d - H:i:s') . " - Il y a $ret raisons sociales à tester...".EOL;
echo $message;
$strMailInfo.=$message;
$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 date ('Y/m/d - H:i:s') . " - Ajout de l'abréviation $motC pour $motL ($nomCourt v/s $nomLongs).".EOL;
$nbUpdate++;
} else {
$message=date ('Y/m/d - H:i:s') . " - Ajout de l'abréviation '$motC' pour '$motL' ($siren : $nomCourt v/s $nomLongs).".EOL;
echo $message;
$strMailInfo.=$message;
$nbInsert++;
}
echo mysql_error();
}
}
}
}
$message=date ('Y/m/d - H:i:s') . " - Fin du traitement de mise à jour des Abréviations...".EOL;
echo $message;
$strMailInfo.=$message;
sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com,ylenaour@scores-decisions.com', 'Traitement des Abréviations', $strMailInfo);
die();
?>

152
bin/majAdressesDom.php Normal file
View File

@ -0,0 +1,152 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [SIREN]
Mise à jour des adresses de domiciliation.
Options :
-d Mode debug (Verbosité au maximum)
-b Ne pas rechercher les nouvelles annonces Bodacc avec 'domiciliation' dans l'activité
";// -s:SSAAMMJJ Reprendre la mise à jour depuis le flux Insee du SSAAMMJJ
$modeDebug=false;
$newBodacc=true;
$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 'b': $newBodacc=false; break;
// case 's': $jourFlux=substr($argv[$i],3,8); break;
// case 'h': $histo=true; break;
/*
case 'j': $loadInpiLocal=false; break;
case 'q': $loadActesDuJour=false; break;
case 'b': $loadBilans=false; break;
case 'i': $iReprise=substr($argv[$i],3); break;*/
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
} //else $tabSiren[]=$argv[$i];
}
$iDb=new WDB('jo');
$iInsee=new MInsee();
echo date ('Y/m/d - H:i:s')." - Début du traitement de mise à jour des adresses de domiciliation...".EOL;
if ($newBodacc) {
/** Recherche de la dernière date de MAJ de la table des domiciliations
**/
$AnnDb=$iDb->select('tabAdrDom', 'max(dateInsert*1) AS dateInsertNum, max(dateUpdate*1) AS dateUpdateNum,
max(dateInsert) AS dateInsert, max(dateUpdate) AS dateUpdate', '1', false, MYSQL_ASSOC);
if ($AnnDb[0]['dateUpdateNum']>$AnnDb[0]['dateInsertNum'])
$dateLastMaj=$AnnDb[0]['dateUpdate'];
else
$dateLastMaj=$AnnDb[0]['dateInsert'];
echo date('Y/m/d - H:i:s') ." - Dernière date de mise à jour des domiciliataires : $dateLastMaj.".EOL;
/** Recherche des annonces contenant le mot "domiciliation" dans l'activité réelle
**/
$AnnDb=$iDb->select('bodacc_detail', 'siren', "siren>1000 AND activite LIKE '%domiciliation%' AND (dateInsert>'$dateLastMaj' OR dateUpdate>'$dateLastMaj')", false, MYSQL_ASSOC);
$nb=count($AnnDb);
echo date('Y/m/d - H:i:s') ." - Il y a $nb annonces de domiciliataires avec une annonce Bodacc.".EOL;
$tabSiren=array();
foreach( $AnnDb as $i=>$tabDom)
$tabSiren[]=$tabDom['siren'];
$tabSiren=array_unique($tabSiren);
$nb=count($tabSiren);
echo date('Y/m/d - H:i:s') ." - Il y a $nb sirens avec au moins une annonce.".EOL;
// Comptage AVANT INSERT
$nbSiren=$iDb->select('tabAdrDom', 'siren', '1 GROUP BY siren', false, MYSQL_ASSOC, true);
$AnnDb=$iDb->select('tabAdrDom', 'count(*) AS nb', '1', false, MYSQL_ASSOC);
$nbSiret=$AnnDb[0]['nb'];
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren entreprises de domiciliations ($nbSiret établissements).".EOL;
// Insertion des siren, nic de tous les établissements trouvés dans la base
$strSiren=implode(',',$tabSiren);
$iDb->query("INSERT IGNORE INTO jo.tabAdrDom (siren,nic,siege, etActif, nom, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, depComEt, adrComp, cj, apen,apet, dateInsert)
SELECT siren, nic, siege, actif AS etActif, raisonSociale AS nom, sigle, enseigne, adr_num as adrNum, adr_btq AS adrBtq, adr_typeVoie AS adrTypVoie, adr_libVoie AS adrLibVoie, adr_ville AS ville, adr_cp AS cp, CONCAT(adr_dep,adr_com) AS depComEt, adr_comp AS adrComp, cj, ape_entrep AS apen, ape_etab AS apet, NOW() as dateInsert
FROM jo.etablissements WHERE siren>1000 AND siren IN ($strSiren);", false);
// Comptage APRES INSERT
$nbSirenFin=$iDb->select('tabAdrDom', 'siren', '1 GROUP BY siren', false, MYSQL_ASSOC, true);
$AnnDb=$iDb->select('tabAdrDom', 'count(*) AS nb', '1', false, MYSQL_ASSOC);
$nbSiretFin=$AnnDb[0]['nb'];
$nbSiren=$nbSirenFin-$nbSiren;
$nbSiret=$nbSiretFin-$nbSiret;
echo date('Y/m/d - H:i:s') ." - Il y a $nbSiren nouvelles entreprises de domiciliations ($nbSiret nouveaux étabs).".EOL;
}
/** Mise à jour de toutes les fiches non encore mises à jour ou trop ancienne
**/
$AnnDb=$iDb->select('tabAdrDom', 'id, siren, nic, enActif, etActif, procol, nom, nom2, sigle, enseigne, adrNum, adrBtq, adrTypVoie, adrLibVoie, ville, cp, adrComp, adrDistSp, cj, apen, apet, dateInsert, dateUpdate',"dateUpdate=0 OR DATEDIFF(NOW(),dateUpdate)>180", false, MYSQL_ASSOC);
$nb=count($AnnDb);
echo date('Y/m/d - H:i:s') ." - Il y a $nb adresse(s) de domiciliations à mettre à jour pour ajout ou ancien.".EOL;
foreach ($AnnDb as $i=>$tabDom) {
//print_r($tabDom);
$siren=$tabDom['siren'];
$nic=$tabDom['nic'];
if ($siren<1000) continue;
$tabId=@$iInsee->getIdentiteEntreprise($siren, $nic);
//print_r($tabId);
$dateCrea=@trim($tabId['dateImmat']);
if ($dateCrea=='0000-00-00' || $dateCrea=='0' || $dateCrea=='') $dateCrea=$tabId['DateCreaEn'];
$adresse=trim(preg_replace('/^0+/','',$tabId['AdresseNum'].' '.$tabId['AdresseBtq'].' '.$tabId['AdresseVoie'].' '.$tabId['AdresseRue']));//.' '.$tabId['Adresse2'];
//rechercheEtab($raisonSociale, $adresse='', $codePostal='', $ville='', $siege='', $actif='', $deb=0, $nbRep=20, $maxRep=200, $pertinence=false, $uniquementAvecSiren='', $ape_etab='') {
$tabAdr=@$iInsee->rechercheEtab('', $adresse, $tabId['CP'], $tabId['Ville'], '', 1, 0, 1, 1000);
$nbEntrep=$tabAdr['nbReponsesTotal'];
// die("$nbEntrep entreprises à l'adresse.".EOL);
$etActif=@$tabId['EntActiveRCS']|@$tabId['EtabActifRCS']*1;
$enActif=@$tabId['EntActiveRCS']*1;
$tabUpdate=array( 'enActif'=>$enActif,
'etActif'=>$etActif,
'procol'=>$tabId['SituationJuridique'],
'siege'=>$tabId['Siege'],
'nom'=>$tabId['Nom'],
'nom2'=>$tabId['Nom2'],
'sigle'=>$tabId['Sigle'],
'enseigne'=>$tabId['Enseigne'],
'adrNum'=>$tabId['AdresseNum'],
'adrBtq'=>$tabId['AdresseBtq'],
'adrTypVoie'=>$tabId['AdresseVoie'],
'adrLibVoie'=>$tabId['AdresseRue'],
'ville'=>$tabId['Ville'],
'cp'=>$tabId['CP'],
'adrComp'=>$tabId['Adresse2'],
'pays'=>$tabId['PaysIso2'],
'depComEt'=>$tabId['Dept'].$tabId['codeCommune'],
'activite'=>$tabId['Activite'],
'dateCre'=>$dateCrea,
'dateRad'=>@$tabId['dateRad'],
// 'adrDistSp'=>$tabId['FJ'],
'cj'=>$tabId['FJ'],
'apen'=>$tabId['NafEtab'],
'apet'=>$tabId['NafEnt'],
'nbEntrep'=>$nbEntrep,
);
if (!$iDb->update('tabAdrDom', $tabUpdate, 'id='.$tabDom['id'])) {
print_r($tabUpdate);
die(mysql_error());
} else
echo date ('Y/m/d - H:i:s')." - $i/$nb - $siren $nic (en=$enActif, et=$etActif) : $nbEntrep entreprises\t".$tabId['Nom'].EOL;
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement de mise à jour des adresses de domiciliation.".EOL;
?>

101
bin/majIMR.php Normal file
View File

@ -0,0 +1,101 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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/classMGreffes.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " <option> [SIREN]
Mise à disposition d'un dossier dans le flux IMR du lendemain via l'Extranet Infogreffe (license RNCS IMR).
Options :
-d Mode debug (Verbosité au maximum)
";
$iDb=new WDB();
$iRncs=new MRncs();
$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 'd': $modeDebug=true; break;
/* case 's': $jourStock=substr($argv[$i],3,8); break;
case 'j': $loadInpiLocal=false; break;
case 'q': $loadActesDuJour=false; break;
case 'b': $loadBilans=false; break;
case 'i': $iReprise=substr($argv[$i],3); break;*/
case '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break;
}
} else $tabSiren[]=$argv[$i];
}
/** Si pas de Siren en param, recherche des IMR à mettre à jour en automatique
**/
if (count($tabSiren)==0) {
echo date ('Y/m/d - H:i:s') . " - Recherche des dossiers IMR PP à mettre à jour...".EOL;
$nbCJ1Maj=$iDb->select(
'rncs_entrep',
'siren, numGreffe, numRC2, raisonSociale, dateNaiss, lieuNaiss, sexe, cj, capitalMontant, capitalDevise, dateImma, flux, dateUpdate',
"cj<2000 AND actif=1 AND (dateNaiss=0 OR sexe='' OR dateImma=0) AND dateUpdate<dateUpdate<'2009-10-01 00:00:00'
AND siren NOT IN(SELECT siren FROM rncs_demandes) ORDER BY numRC2 ASC",
false, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s') . " - Il y a $nbCJ1Maj dossiers IMR PP à mettre à jour.".EOL;
$nbDem=0;
while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) {
$nbDem++;
/** On limite à 1000 le nombre de demandes possibles car Infogreffe limite
pour l'instant à 10 les demandes de MAJ **/
if ($nbDem>1000) break;
$tabSiren[]=$tabTmp['siren'];
$tabEntrep[$tabTmp['siren']]=$tabTmp;
}
}
$nb=count($tabSiren);
$nbDemandesDuJour=rand(15, 65);
echo date ('Y/m/d - H:i:s') . " - Aujourd'hui nous allons demander la mise à jour de $nbDemandesDuJour dossiers IMR...".EOL;
$nbDemandesEncours=0;
foreach($tabSiren as $i=>$siren) {
$strErr='';
$ret=$iRncs->majDossierIMR($siren);
//print_r($iRncs->infoIMR).EOL;
if (@$iRncs->infoIMR['validation-erreur']<>'')
$strErr.=' ('.$iRncs->infoIMR['validation-erreur'].')';
if ($iRncs->infoIMR['message-erreur']=="Vous avez déjà atteint le nombre maximal de demandes de réémissions autorisées aujourd'hui. Veuillez renouveler votre demande demain.") {
echo date ('Y/m/d - H:i:s') . " - $i/$nb - $siren : ".$iRncs->infoIMR['message-erreur'].$strErr.EOL;
break;
} elseif($iRncs->infoIMR['message-erreur']=="Aucune entreprise trouvée pour ce numéro SIREN") {
echo date ('Y/m/d - H:i:s') . " - $i/$nb - $siren : ".$iRncs->infoIMR['message-erreur'].$strErr.EOL;
} elseif ($iRncs->infoIMR['validation']) {
$nbDemandesEncours++;
echo date ('Y/m/d - H:i:s') . " - $i/$nb - $siren : ".$iRncs->infoIMR['validation-ok'].$strErr." ($nbDemandesEncours/$nbDemandesDuJour)".EOL;
if ($nbDemandesEncours>$nbDemandesDuJour) break;
} elseif (!$ret) {
echo date ('Y/m/d - H:i:s') . " - $i/$nb - $siren : ".$iRncs->libErreur.$strErr.EOL;
}
/** @todo
* - Enregistrer la demande complète avec :
* - le retour On line (tous les champs)
* - la date de la demande ainsi que la source (client, privilèges, ancienort, etc...)
* - la date de la réponse IMR
*/
}
die();
?>

1707
bin/majLiens.php Normal file

File diff suppressed because it is too large Load Diff

174
bin/renvoiMails.php Normal file
View File

@ -0,0 +1,174 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.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/classMRnvp.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Traitement de renvoi des mails non encore partis.
Options :
-u Supprimer le verrou
";
$argv=$_SERVER['argv'];
$scriptName=basename($argv[0]);
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'u':
unlink(REP_TEMP.basename($scriptName).'.lock');
echo date('Y/m/d - H:i:s')." - Suppression du verrou.".EOL;
die();
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} elseif ($argv[$i]>10000 && $siretInput) $tabSiret[]=$argv[$i];
}
}
$iDb=new WDb('sdv1');
$iDb2=new WDb('sdv1');
$rep=$iDb->select('sdmails', 'id, `from`, `to`, subject, texte, html, fichiers, modeCli, essais, dateEnvoi, dateInsert', "dateEnvoi=0 ORDER BY id DESC/*AND `to`='ylenaour@scores-decisions.com'*/", false);
$nbRenvois=count($rep);
echo date ('Y/m/d - H:i:s')." - Il y a $nbRenvois mail(s) à renvoyer à leur(s) destinataire(s)...".EOL;
if (file_exists(REP_TEMP.basename($scriptName).'.lock')) {
$tabLock=explode(';', file_get_contents(REP_TEMP.basename($scriptName).'.lock'));
if (substr($tabLock[0],0,8)==date('Ymd')) {
echo date('Y/m/d - H:i:s')." - Le traitement de renvoi des mails est en cours, patienter et recommencer plus tard !!!".EOL;
die();
} else {
unlink(REP_TEMP.basename($scriptName).'.lock');
echo date('Y/m/d - H:i:s')." - Suppression d'un ancien verrou (".substr($tabLock[0],0,8).")...".EOL;
}
}
$fpT=fopen(REP_TEMP.basename($scriptName).'.lock', 'w');
fwrite($fpT, date('Ymd-His').";$scriptName;Renvoi des mails en cours depuis le ".date('Ymd-His').EOL);
fclose($fpT);
foreach ($rep as $i=>$tMail) {
//print_r($tMail);
//die();
$id=$tMail['id'];
$to=$tMail['to'];
$subject=$tMail['subject'];
$tabAttachedFiles=explode(',',$tMail['fichiers']);
$nbFichiers=count($tabAttachedFiles);
//if ($modeDbug) echo date ('Y/m/d - H:i:s')." - $i2/$nbRenvois : Tentative de renvoi du mail à $to - $subject ($nbFichiers PJ) en date du ".$tMail['dateInsert'].EOL;
@sendMail2( $tMail['from'], $tMail['to'], $tMail['subject'], $tMail['texte'], $tMail['html'], $tabAttachedFiles, $id,
$tMail['essais'], $tMail['dateInsert']);
$i2=$i+1;
echo date ('Y/m/d - H:i:s')." - $i2/$nbRenvois : Le mail n°$id a été renvoyé à $to - $subject ($nbFichiers PJ) en date du ".$tMail['dateInsert'].EOL;
}
unlink(REP_TEMP.basename($scriptName).'.lock');
echo date ('Y/m/d - H:i:s')." - Fin de renvoi des $nbRenvois mail(s).".EOL;
die();
function sendMail2($from, $to, $subject, $text='', $html='', $tabAttachedFiles=array(), $idMail, $nbEssais=0, $dateInsertIni=0)
{
global $iDb2;
$to=preg_split("/[\s,;]+/", $to);
require_once('Mail.php');
require_once('Mail/mime.php');
$headers=array( 'From'=>$from,
'To'=>$to,
'Subject'=>$subject,
'Content-Transfer-Encoding'=>'8bit',
'MIME-Version'=>'1.0',
'Date'=>date('D, d M Y H:i:s O'),
'Message-ID'=>'<'.md5(date('YmdHis')).'@mail.scores-decisions.com>',
'X-Priority'=>3,
'X-Mailer'=>'PHP v'.phpversion(),
);
$mime = new Mail_mime();
$footer="";
if ($text<>'') $mime->setTXTBody($text.$footer);
if ($html<>'') $mime->setHTMLBody($html);
foreach ($tabAttachedFiles as $file)
$mime->addAttachment($file);
//do not ever try to call these lines in reverse order
$body = $mime->get();
$headers = $mime->headers($headers);
$params=array( 'host'=>'smtpauth.online.net', // SMTP_HOST
'port'=>25, //SMTP_PORT,
);
$params=array( 'host'=>SMTP_HOST,
'port'=>SMTP_PORT,
);
if (SMTP_USER=='' && SMTP_PASS=='')
$params['auth'] = false;
else {
$params['username'] = SMTP_USER;
$params['password'] = SMTP_PASS;
}
//$nbEssais=0;
while (1) {
// Create the mail object using the Mail::factory method
$mail_object = Mail::factory('smtp', $params);
// Trying to send the mail
$send = $mail_object->send($to, $headers, $body);
$nbEssais++;
if (PEAR::isError($send)) {
/** @todo tester les différents codes erreur **/
echo date('Y-m-d H:i:s'). " sendMail.php - essai #$nbEssais : ".$send->getMessage().EOL;
if (preg_match('/too many connections|421/i', $send->getMessage()))
sleep($nbEssais);
else {
$strTo=implode(';', $to);
file_put_contents( LOGS_PATH.'sendMailError.log',
date('Y-m-d H:i:s')."\t#$nbEssais\t$strTo\t".$send->getMessage().EOL,
FILE_APPEND);
break;
}
} else {
$dateHeureEnvoi=date('YmdHis');
/** Si nous sommes en mode CLI, alors on fait en sorte de ne pas atteindre
la limite des 25 mails par minute (ramené à 100 / minute)
**/
if (MODE_EXEC==MODE_CLI) usleep(500000);
break;
}
}
$cli=0;
if (MODE_EXEC==MODE_CLI) $cli=1;
$tabUpdate=array( 'essais'=> $nbEssais,
'dateInsert'=>$dateInsertIni,
'dateEnvoi'=>$dateHeureEnvoi,
);
$iDb2->update('sdmails',$tabUpdate,"id=$idMail", false);
return true;
}
?>

163
bin/repriseActivite.php Normal file
View File

@ -0,0 +1,163 @@
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE ^ E_STRICT);
include_once(__DIR__.'/../includes/auto_prepend.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Recherche de toutes les activités non mises à jours sur les entreprises et associations de la base S&D.
Options :
-t Calculer tous les ratios (*)
-i:XXX Reprendre à la ligne XXX
-h Reprendre les activités de l'historique des annonces
(*) Option par défaut si aucun argument n'est passé.
";/* -e:X Calculer pour les X derniers exercices (3 par défaut)
-f Calculer les scores financiers
*/
$iDeb=0;
$updateCache=$histo=false;
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (strtolower(substr($argv[$i],1,1))) {
case 'h':
$histo=true;
break;
case 'i':
$iDeb=substr($argv[$i],3)*1;
break;
case 'c':
$updateCache=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . ' inconnue !'.EOL);
break;
}
}
}
$iInsee=new MInsee();
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de récupération des Activités issus de annonces...".EOL;
if ($histo) {
/** Reprise de toutes les activités des annonces de l'historique
**/
$iDb =new WDB('historiques');
$iDb2=new WDB('historiques');
$iDb3=new WDB();
$nbRows=$iDb->select( 'siren_uniques', 'siren', "activite IS NULL", false, MYSQL_ASSOC, true);
//echo mysql_error().EOL;
if ($nbRows>0)
echo date('Y/m/d - H:i:s') ." - Il reste $nbRows siren pour lesquels il faut reprendre l'activité en historique Bodacc...".EOL;
$k=0;
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
//if (date('Hi')*1>=430 && date('Hi')*1<730) die();
$k++;
$nbActSiren=0;
$siren=$entrep['siren'];
echo date('Y/m/d - H:i:s') ." - $k/$nbRows - $siren ... ";
$tabInsert=array( 'siren'=>$siren,
'source'=>'bodaccHisto');
$bodaccHisto=$iDb2->select( 'entrep e, texte x',//.codEven Code évènement du mouvement Bodacc libEven ',
'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt',
"e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.DATE<20050101 AND x.annonceTxt LIKE '%ctivit%' GROUP BY e.ANBASE ORDER BY e.DATE ASC", true, MYSQL_ASSOC);
if (count($bodaccHisto)>0) {
foreach ($bodaccHisto as $idx=>$ann) {
if ( ($ann['CODEVE']<20) ||
($ann['CODEVE']>=30 && $ann['CODEVE']<42) ||
($ann['CODEVE']>=51 && $ann['CODEVE']<80) ) {
$strDate='';
if (preg_match('/(.*)(Date d\'effet|Date.de.d.but d.activit.)(?:.|)\:(.*)(\d\d\d\d)$/Ui', $ann['annonceTxt'], $matches)) {
$strDate=trim($matches[3].$matches[4]);
}
if (preg_match('/(.*)Activit(?:e|é)(?:.|)\:(.*)(?:Adresse(?:.*|)|Commentaires?|Administration|Etablissement principal|Date d\'effet|Date.de.d.but d.activit.|Capital|Nom commercial)(?:.|)\:/Uis', $ann['annonceTxt'], $matches))
if (strpos(substr($matches[1],-20),'cess') === false &&
strpos(substr($matches[1],-20),'date') === false) {
$tabInsert['activite']=$matches[2];
$tabInsert['idSource']=$ann['ANBASE'];
$tabInsert['dateSource']=$ann['DATE'];
$tabInsert['dateEffetTxt']=$strDate;
$tabInsert['dateEffet']=WDate::dateT('dMY', 'Ymd', $strDate);
$iDb3->insert('activiteReel', $tabInsert);
$nbActSiren++;
}
}
}
}
$iDb2->update('siren_uniques', array('activite'=>$nbActSiren), "siren=$siren");
echo "$nbActSiren activité(s).".EOL;
}
}
//'bodaccHisto', 'kbis',
$tabSrc=array( 'bodacc'=>array('lib'=>'Bodacc',
'db'=>'jo',
'table'=>'bodacc_detail',
'zones'=>"id, siren, Bodacc_Date_Parution AS dateSource, activite, '' AS dateEffetTxt, IF(dateEffet>0, dateEffet, IF(dateDebutActivite>0, dateDebutActivite, IF(dateCessationActivite>0, dateCessationActivite, Bodacc_Date_Parution))) AS dateEffet, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
'where'=>"siren>1000 AND recupAct=0 AND activite<>'' AND activite<>'Non précisée' AND Rubrique NOT IN ('ventes', 'procol') AND dateSuppr=0",
'go'=>1,
'idSrc'=>'bodacc'),
'asso'=>array( 'lib'=>'Associations',
'db'=>'jo',
'table'=>'asso',
'zones'=>"id, siren, Date_Parution AS dateSource, Assoc_Objet AS activite, Assoc_NObjet AS activiteN, Assoc_AObjet AS activiteP, Assoc_Date_Declaration AS dateEffetTxt, Assoc_Date_Declaration2 AS dateEffet, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
'where'=>"siren>1000 AND recupAct=0 AND (Assoc_Objet<>'' OR Assoc_NObjet<>'' OR Assoc_AObjet<>'') AND dateSuppr=0",
'go'=>1,
'idSrc'=>'asso'),
);
$iDb=new WDB('jo');
$iDb2=new WDB('jo');
foreach ($tabSrc as $src=>$tabSrcDet) {
if ($tabSrcDet['go']==0) {
echo date('Y/m/d - H:i:s') ." - On ne traite pas les activités '".$tabSrcDet['lib']."'".EOL;
continue;
}
echo date('Y/m/d - H:i:s') ." - Traitement des activités '".$tabSrcDet['lib']."'".EOL;
unset($iDb);
$iDb=new WDB($tabSrcDet['db']);
$nb=$iDb->select($tabSrcDet['table'], $tabSrcDet['zones'],$tabSrcDet['where'], false,MYSQL_ASSOC,true);
echo date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) d'activités '".$tabSrcDet['lib']."' à mettre à jour...".mysql_error().EOL;
while ($tabAct=$iDb->fetch(MYSQL_ASSOC)) {
$activite='';
$siren=$tabAct['siren'];
if ($tabSrcDet['idSrc']=='asso') $activite=trim($tabAct['activiteN']);
if ($activite=='') $activite=trim($tabAct['activite']);
if ($activite=='' && $tabSrcDet['idSrc']=='asso' && $tabAct['activiteP']<>'') $activite=trim($tabAct['activiteP']);
$tabInsert=array( 'siren' => $siren,
'activite' => $activite,
'source' => $tabSrcDet['idSrc'],
'idSource' => $tabAct['id'],
'dateSource' => $tabAct['dateSource'],
'dateEffetTxt' => $tabAct['dateEffetTxt'],
'dateEffet' => $tabAct['dateEffet'],
'dateInsert' => $tabAct['dateInsert']);
if ($iDb2->insert('activiteReel', $tabInsert, false) || $iDb2->getLastErrorNum()==1062) {
@$nbInsert[$zone]++;
$iDb->update($tabSrcDet['table'], array('recupAct'=>1, dateUpdate=>$tabAct['dateUpdate']), "id=".$tabAct['id']);
} else {
print_r($tabInsert);
die($iDb2->getLastError());
}
}
}
die(date('Y/m/d - H:i:s') ." - Fin du programme.".EOL);
?>

1853
bin/schema/Boamp.xsd Normal file

File diff suppressed because it is too large Load Diff

1534
bin/schema/BoampAB_002.xsd Normal file

File diff suppressed because it is too large Load Diff

1099
bin/schema/BoampC_002.xsd Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,476 @@
<?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 Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 10/06/08 -->
<!-- ********************************************************************************************************************************************************************************** -->
<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">
<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"/>
<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="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-5]{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:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,478 @@
<?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 Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 10/06/08 -->
<!-- Version V02 du 18/07/2008 -->
<!-- adresse et depot passé en optionnel pour les annulation. -->
<!-- ********************************************************************************************************************************************************************************** -->
<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: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="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-5]{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:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,478 @@
<?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 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) -->
<!-- ********************************************************************************************************************************************************************************** -->
<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: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="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:sequence>
</xs:complexType>
</xs:schema>

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,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,574 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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:maxLength value="200"/>
</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="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-5]{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="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 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="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="Autres jugements et ordonnances"/>
<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: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:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,582 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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:maxLength value="200"/>
</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="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-5]{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="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 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="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="Autres jugements et ordonnances"/>
<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: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:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,570 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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-5]{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 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="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="Autres jugements et ordonnances"/>
<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: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,578 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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-5]{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 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="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="Autres jugements et ordonnances"/>
<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: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,579 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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" -> -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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-5]{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 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="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: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,586 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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
-->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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-5]{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: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,600 @@
<?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) -->
<!-- ****************************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ****************************************************************************************************************************************************************************************** -->
<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: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: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>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="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 financière accélérée et le redressement judiciaire"/>
</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,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,815 @@
<?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 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 -->
<!-- ********************************************************************************************************************************************************************************** -->
<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>
<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>
<xs:sequence minOccurs="0">
<xs:element name="dateImmatriculation" type="Date_Type" minOccurs="0"/>
<xs:element name="categorieImmatriculation" 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="vente">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element name="dateImmatriculation" type="Date_Type" minOccurs="0"/>
<xs:element name="categorieVente" 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="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="200"/>
</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-5]{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="50"/>
</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,827 @@
<?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 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 -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- ********************************************************************************************************************************************************************************** -->
<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>
<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>
<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>
<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="200"/>
</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-5]{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="50"/>
</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,827 @@
<?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 Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- ********************************************************************************************************************************************************************************** -->
<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="200"/>
</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-5]{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="50"/>
</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,828 @@
<?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 Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- 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 -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- ********************************************************************************************************************************************************************************** -->
<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="200"/>
</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-5]{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,829 @@
<?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 -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- ********************************************************************************************************************************************************************************** -->
<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="200"/>
</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,762 @@
<?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 Journaux Officiels) -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- Version V01 du 14/01/08 -->
<!-- V04 du 12/03/08 : ajout norme ISO 4217 pour Devise_Type -->
<!-- ********************************************************************************************************************************************************************************** -->
<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="200"/>
</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>
<xs:element name="modificationsGenerales">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<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>
<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:sequence>
</xs:complexType>
</xs:element>
<xs:element name="radiationAuRCS">
<xs:complexType>
<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: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="200"/>
</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-5]{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,770 @@
<?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 14/01/08 -->
<!-- V04 du 12/03/08 : ajout norme ISO 4217 pour Devise_Type -->
<!-- ********************************************************************************************************************************************************************************** -->
<!-- -->
<!-- V05 du 11/04/08 : ajout champs dateEffet -->
<!-- ********************************************************************************************************************************************************************************** -->
<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="200"/>
</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>
<xs:element name="modificationsGenerales">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<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>
<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: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: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="200"/>
</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-5]{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>

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