batch/old/diffusionBodaccPrev2011.php
2013-06-19 08:24:49 +00:00

1428 lines
88 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
if (!defined('VERSION_FICHIER_BODACC'))
define('VERSION_FICHIER_BODACC','0106');
/**
* @todo
* 2. Pouvoir faire du multiligne avec : 106 Libellé du Périmètre de la vente
* 5. JugesCommissaires à intégrer correctement
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'conversion/bilAltares.php');
include_once(FWK_PATH.'mail/sendMail.php');
$repProduction='/mnt/samba/partage/production/';
$incrementationDesTour=true;
$typePrestaton='diffusionBodacc';
$ignoreDateDerExec=$retroActivite=false;
$codeAdherent='';
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Génère les fichiers des clients en surveillance ou diffusion des annonces BODACC.
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 exécuter en réel (pas de MAJ des infos d'exécution: n°tour, dates trt, fichier en rép tempo...)
-c:AAA Limiter le traitement au fichier de l'abonné AAA
-r:XX Faire une rétroactivté de XX jours
";
$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':
$incrementationDesTour=false;
$repProduction=REP_TEMP;
break;
case 's':
$typePrestaton='surveillanceBodacc';
break;
case 'd':
$typePrestaton='diffusionBodacc';
break;
case 'e':
$ignoreDateDerExec=true;
break;
case 'r':
$retroActivite=substr($argv[$i],3,strlen($argv[$i])-3);
break;
case 'c':
$codeAdherent=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();
$iBodacc=new MBodacc();
global $iInsee, $a;
function genereMultiLigne($typeLigne, $enteteLigne, $chaine, $eol="\r\n", &$nbLignes=0) {
$lonLigne=LONGUEUR_LIGNE_SORTIE-90;
$str='';
$chaine=preg_replace('/ +/', ' ', strtr($chaine, array("\n"=>' ',"\r"=>' ',";"=>' ')));
switch ($typeLigne) {
case '101': // ?
case '102': // Activité déclarée au Bodacc
case '103': // Texte rectificatif
case '104': // Annonce Bodacc Complète
case '105': // Structure dirigeants
$tabLigne=str_split($chaine, $lonLigne);
foreach ($tabLigne as $i=>$ligne) {
$str.=initstr($typeLigne.$enteteLigne.$ligne, LONGUEUR_LIGNE_SORTIE).$eol;
$nbLignes++;
}
break;
default:
die("ERREUR : Structure de sortie n°$typeLigne non prise en charge !\n");
break;
}
return $str;
}
function getListeAdherents($prestation, $codeAdherent='') {
$strCodeAdherent='';
if ($codeAdherent<>'') $strCodeAdherent.=" AND q.loginprestation_c='$codeAdherent' ";
$iDbCrm=new WDB('sugarcrm');
$rep=$iDbCrm->select('cases_cstm q, accounts a, cases p LEFT JOIN contacts_cases k ON p.id = k.case_id LEFT JOIN contacts c ON k.contact_id = c.id LEFT JOIN contacts_cstm s ON c.id = s.id_c',
'p.id, p.case_number, p.name, p.account_id, a.name, q.typeprestation_c, q.datemiseenplace_c, q.datefinprestation_c, q.prestatest_c, q.loginprestation_c, q.passwordprestation_c, q.supportprestation_c, q.optionsupport_c, q.freqenvois_c, q.formatdesenvois_c, q.trtnumerotour_c, q.trtdatederniereexec_c*1 as derniereExec, q.optionsprestation_c, k.contact_id, k.deleted as lienContactDeleted, c.deleted as ContactDeleted, c.salutation, c.first_name, c.last_name, c.title, c.department, c.phone_mobile, c.phone_work, c.phone_fax, c.email1, c.email2, c.primary_address_street, c.primary_address_city, c.primary_address_postalcode, s.typedecontact_c', "p.deleted=0 AND p.id=q.id_c AND q.typeprestation_c='$prestation' AND q.prestationactive_c=1 AND p.account_id=a.id AND a.deleted=0 $strCodeAdherent ORDER BY p.case_number ASC", true, MYSQL_ASSOC);
//print_r($rep);
$tabPrestation=array();
foreach ($rep as $i=>$contacts) {
$numPrestation=$contacts['case_number'];
if ($contacts['lienContactDeleted']==0 && $contacts['ContactDeleted']==0) {
if ($contacts['email1']<>'') $email=$contacts['email1'];
else $email=$contacts['email2'];
if (!isset($tabPrestation[$numPrestation])) {
// echo "Ligne $i, prestation $numPrestation : ".$contacts['last_name']."\n";
$tabPrestation[$numPrestation]=array(
'id'=>$contacts['case_number'],
'idPrestationBdd'=>$contacts['id'],
'nomClient'=>$contacts['name'],
'typePrestation'=>$contacts['typeprestation_c'],
'dateDebut'=>$contacts['datemiseenplace_c'],
'dateFin'=>$contacts['datefinprestation_c'],
'test'=>$contacts['prestatest_c'],
'loginPrestation'=>$contacts['loginprestation_c'],
'passwPrestation'=>$contacts['passwordprestation_c'],
'supportPrestation'=>$contacts['supportprestation_c'],
'optionSupport'=>$contacts['optionsupport_c'],
'freqEnvois'=>$contacts['freqenvois_c'],
'formatEnvois'=>$contacts['formatdesenvois_c'],
'numeroDeTour'=>$contacts['trtnumerotour_c'],
'dateDerniereExec'=>$contacts['derniereExec']*1,
'optionPrestation'=>$contacts['optionsprestation_c'],
'contacts'=>array(array( 'salutation'=>$contacts['salutation'],
'prenom'=>$contacts['first_name'],
'nom'=>$contacts['last_name'],
'fonction'=>$contacts['title'],
'tel_por'=>$contacts['phone_mobile'],
'tel_bur'=>$contacts['phone_work'],
'tel_fax'=>$contacts['phone_fax'],
'email'=>$email,
'adresse'=>$contacts['primary_address_street'],
'ville'=>$contacts['primary_address_city'],
'codePos'=>$contacts['primary_address_postalcode'],
'typeContact'=>$contacts['typedecontact_c'])));
} else {
// echo "Ligne $i, prestation $numPrestation : ".$contacts['last_name']."\n";
$tabPrestation[$numPrestation]['contacts']=array_merge($tabPrestation[$numPrestation]['contacts'], array(
array( 'salutation'=>$contacts['salutation'],
'prenom'=>$contacts['first_name'],
'nom'=>$contacts['last_name'],
'fonction'=>$contacts['title'],
'tel_por'=>$contacts['phone_mobile'],
'tel_bur'=>$contacts['phone_work'],
'tel_fax'=>$contacts['phone_fax'],
'email'=>$email,
'adresse'=>$contacts['primary_address_street'],
'ville'=>$contacts['primary_address_city'],
'codePos'=>$contacts['primary_address_postalcode'],
'typeContact'=>$contacts['typedecontact_c'])));
}
}}
return $tabPrestation;
}
echo date ('Y/m/d - H:i:s')." - Début du traitement diffusion BODACC.\n";
/** On récupère la liste des Adhérents **/
//die(print_r(getListeAdherents('extranet')));
$tabAdherents=getListeAdherents($typePrestaton, $codeAdherent);
//print_r($tabAdherents);die();
$nbClients=count($tabAdherents);
echo date ('Y/m/d - H:i:s')." - Il y a $nbClients client(s) à servir en $typePrestaton.".EOL;
$strMessage=date ('Y/m/d - H:i:s')." - Il y a $nbClients client(s) à servir en $typePrestaton.".EOL;
//print_r($tabAdherents);die();
foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations
{
$clientNumTourFichier=($tabAdherent['numeroDeTour']*1)+1;
$clientIdentifiant=trim($tabAdherent['loginPrestation']);
$nomClient=trim($tabAdherent['nomClient']);
$numPrestation=$tabAdherent['id'];
/** Le client souhaite une compression du fichier ? **/
if (strpos($tabAdherent['optionSupport'], 'gzip')) $optionZip='gzip';
elseif (strpos($tabAdherent['optionSupport'], 'zip')) $optionZip='zip';
else $optionZip='none';
/** Le client préfère un paramétrage UNIX ou Window pour ses fins de lignes **/
if (strpos($tabAdherent['optionSupport'], 'os=dos')) $optionEOL="\r\n";
elseif (strpos($tabAdherent['optionSupport'], 'os=unix')) $optionEOL="\n";
else $optionEOL=EOL;
$tabOptOutput=array();
if($tabAdherent['dateDebut']<>'' && $tabAdherent['dateDebut']<>'0000-00-00')
$dateDebutPrestation=WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateDebut']);
else
$dateDebutPrestation=false;
if($tabAdherent['dateFin']<>'' && $tabAdherent['dateFin']<>'0000-00-00')
$dateFinPrestation=WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateFin']);
else
$dateFinPrestation=false;
//die($tabAdherent['dateDerniereExec']);
if ($ignoreDateDerExec)
$dateDernierTraitement=false;
elseif ($tabAdherent['dateDerniereExec']<>0)
$dateDernierTraitement=$tabAdherent['dateDerniereExec'];//WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateDerniereExec']);
else
$dateDernierTraitement=false;
if ($dateDebutPrestation && $dateDebutPrestation>DATE) // La date de démarrage de la prestation n'est pas encore arrivée
{
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : La prestation démarre le $dateDebutPrestation !".EOL;
continue;
}
if ($dateFinPrestation && DATE>$dateFinPrestation) // La date de fin de la prestation est révolue
{
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Fin de la prestation le $dateFinPrestation (Dernière exécution le $dateDernierTraitement) !".EOL;
continue;
}
if ($dateDernierTraitement && substr($dateDernierTraitement,0,8)*1==DATE*1)
{ echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement déjà exécuté aujourd'hui !".EOL;
continue;
} elseif ($dateDernierTraitement==0) {
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Jamais exécutée pour ce client !".EOL;
$dateDernierTraitement=false;
/* Il faudra vérifier si on génère le stocke et depuis quand sinon on prond le dernier Bodacc */
}// Bloc a décommenter
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Export des annonces en cours... (dernier traitement le $dateDernierTraitement)".EOL;
/**
** On génère la ligne d'entête
**/
$fp=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt', 'w');
if ($fp==false) die('ERREUR : Impossible de créer le fichier !');
error_reporting(E_ALL ^ E_NOTICE);
$str= initstr('001', 3, '0', ALIGN_RIGHT) . // Type de ligne
initstr(date('YmdHis'), 14) . // Date de génération du fichier
initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client
initstr($clientIdentifiant, 36) . // Identifiant Client
initstr($typePrestaton, 32) . // Type de prestation
initstr(VERSION_FICHIER_BODACC, 4) . // Type de prestation
initstr(FILLER, 1901) . // FILLER
'';
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL);
$nbLignes=1;
/**
** On génère les lignes de détail
**/
$strRubrique='';
$tabRubCollecte=array();
if (strpos($tabAdherent['optionPrestation'], 'comptes')) { // Export du Bodacc C - Dépôt des comptes
$strRubrique.="'comptes',";
$tabRubCollecte[]=" typeEven LIKE '3%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'creations')) { // Export des créations
$strRubrique.="'creations',";
$tabRubCollecte[]=" typeEven LIKE '4%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'mmd')) { // Export des MMD
$strRubrique.="'mmd',";
$tabRubCollecte[]=" typeEven LIKE '2%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'procol')) { // Export des ProCol
$strRubrique.="'procol',";
$tabRubCollecte[]=" typeEven LIKE '1%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'radiations')) { // Export des radiations
$strRubrique.="'radiations',";
$tabRubCollecte[]=" typeEven LIKE '6%' ";
}
if (strpos($tabAdherent['optionPrestation'], 'ventes')) { // Export des ventes cessions
$strRubrique.="'ventes',";
$tabRubCollecte[]=" typeEven LIKE '5%' ";
}
if (strpos($tabAdherent['optionPrestation'], '101')) // Commentaire inclus dans l'annonce si nécessaire
$tabOptOutput[101]=true; else $tabOptOutput[101]=false;
if (strpos($tabAdherent['optionPrestation'], '102')) // Activite déclaré au Bodacc
$tabOptOutput[102]=true; else $tabOptOutput[102]=false;
if (strpos($tabAdherent['optionPrestation'], '104')) // Annonce complète au format texte
$tabOptOutput[104]=true; else $tabOptOutput[104]=false;
if (strpos($tabAdherent['optionPrestation'], '105')) // Structure Dirigeants BODACC
$tabOptOutput[105]=true; else $tabOptOutput[105]=false;
if (strpos($tabAdherent['optionPrestation'], '200')) // Structure Identité Insee S&D
$tabOptOutput[200]=true; else $tabOptOutput[200]=false;
if (strpos($tabAdherent['optionPrestation'], '400')) // Structure Bilans
$tabOptOutput[400]=true; else $tabOptOutput[400]=false;
$tabNaf=array();
$posNaf=stripos($tabAdherent['optionPrestation'], 'NAF=');
if ($posNaf!==false) {
if (preg_match('/NAF=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabNaf=preg_split('(;|,)', $matches[1]);
//die(print_r($tabNaf));
}
$tabCJ=array();
$posCJ=stripos($tabAdherent['optionPrestation'], 'CJ=');
if ($posCJ!==false) {
if (preg_match('/CJ=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabCJ=preg_split('(;|,)', $matches[1]);
//die(print_r($tabCJ));
}
$tabCodeCom=array();
$posNaf=stripos($tabAdherent['optionPrestation'], 'CodeCom=');
if ($posNaf!==false) {
if (preg_match('/CodeCom=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabCodeCom=preg_split('(;|,)', $matches[1]);
/////die(print_r($tabCodeCom));
}
$tabEve=array();
$posEve=stripos($tabAdherent['optionPrestation'], 'codeEven=');
if ($posEve!==false) {
if (preg_match('/codeEven=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches))
$tabEve=preg_split('(;|,)', $matches[1]);
//die(print_r($tabCJ));
}
$versionEvenClient=0;
if (preg_match('/^versionEven=(.*)$/mUi', $tabAdherent['optionPrestation'], $matches))
$versionEvenClient=$matches[1]*1;
$collecte=false;
if (preg_match('/^collecte=oui/mUi', $tabAdherent['optionPrestation'], $matches))
$collecte=true;
/*$tabSiren2=array();
foreach ($tabSiren as $siren) {
$tabSiren2[]=$siren['siren'];
}
sort($tabSiren2);
$tabSiren=$tabSiren2;
unset($tabSiren2);
//die();*/
$fields ="d.id, d.siren, d.sirenValide, d.nic, d.nicValide, CONCAT('BOD-',SUBSTRING(d.Rubrique_Bodacc,1,1)) as source, d.Bodacc_Num, d.Bodacc_Date_Parution, d.Num_Annonce, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.corrNum_Annonce, d.corrBodacc_Date_Parution, d.corrPage, d.corrNumParution, d.corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, d.Tribunal_Code, adresse, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, d.ville, adresseSiege, adrSiegeNum, adrSiegeIndRep, adrSiegeTypVoie, adrSiegeLibVoie, adrSiegeComp1, adrSiegeComp2, codePostalSiege, villeSiege, administration, activite, typeEven, commentaires, dateEffet, publication, publicationNom, publicationDate, fusion, dateDebutActivite, dateCessationActivite, dateCessationPaiement, dateJugement, Numero, VenteMt, VenteDev, bienAcqui, 'M' As inter1type, 0 AS inter1id, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, 'R' As inter2type, 0 AS inter2id, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, 'A' As inter3type, 0 AS inter3id, administrateur, admNom, admRepr, admAdresse, admCP, admVille, 'O' AS inter4type, 0 AS inter4id, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert";
$fieldsCol="a.id, a.siren, a.sirenValide, 0 AS nic, 0 AS nicValide, CONCAT(a.source,'-',a.parutionIdJal) as source, 0 as Bodacc_Num, a.dateSource as Bodacc_Date_Parution, 0 as Num_Annonce, '' as Rubrique_Bodacc, '' as Rubrique, 'Insertion' as typeAnnonce, '' as corrNum_Annonce, '' as corrBodacc_Date_Parution, '' as corrPage, '' as corrNumParution, '' AS corrTexteRectificatif, '' as RC, a.raisonSociale, '' AS nomCommercial, '' AS enseigne, '' AS nationalite, '' AS FJ, '' AS Capital, '' AS CapitalDev, a.tribunal as Tribunal_Code, adresse, '' AS adrNum, '' AS adrIndRep, '' AS adrTypVoie, '' AS adrLibVoie, '' AS adrComp1, '' AS adrComp2, a.codePostal*1 AS codePostal, a.ville, adresse AS adresseSiege, '' AS adrSiegeNum, '' AS adrSiegeIndRep, '' AS adrSiegeTypVoie, '' AS adrSiegeLibVoie, '' AS adrSiegeComp1, '' AS adrSiegeComp2, a.codePostal*1 as codePostalSiege, a.ville as villeSiege, nouvDir AS administration, nouvActivite as activite, CONCAT(a.typeEven,'',REPLACE(strEven,';','')) AS typeEven, '' AS commentaires, a.dateEffetFinP as dateEffet, '' AS publication, '' AS publicationNom, '' AS publicationDate, '' AS fusion, '' AS dateDebutActivite, '' as dateCessationActivite, a.dateCessationPaiement, a.dateJugement, '' AS Numero, montant AS VenteMt, 'EUR' AS VenteDev, '' AS bienAcqui, inter1type, inter1id, inter1nom AS Mandataire, inter1nom AS mandNom, '' AS mandRepr, '' AS mandAdresse, '' AS mandCP, '' AS mandVille, '' AS JugeCommissaire, '' AS jugeCommissaireSuppleant, inter2type, inter2id, inter2nom AS ReprCreanciers, inter2nom AS creaNom, '' AS creaRepr, '' AS creaAdresse, '' AS creaCP, '' AS creaVille, inter3type, inter3id, inter3nom AS administrateur, inter3nom AS admNom, '' AS admRepr, '' AS admAdresse, '' AS admCP, '' AS admVille, 'O' AS inter4type, 0 AS inter4id, '' AS oppositions, '' AS oppoNom, '' AS oppoRepr, '' AS oppoAdresse, '' AS oppoCP, '' AS oppoVille, '' AS perimetre, '' AS dateFinDepotCreances, '' AS delaiDepotCreances, '' AS dateFinObservation, '' AS FinObservationBodacc, a.dateInsert";
$where=$whereCol='1';
// On filtre les rubriques demandées
if ($strRubrique<>'') {
$where.=' AND Rubrique IN('. substr($strRubrique,0,strlen($strRubrique)-1) .') ';
if (count($tabRubCollecte)>0)
$whereCol.=' AND ('.implode(' OR ', $tabRubCollecte).') ';
}
// On ne prend que les dernières annonces depuis la dernière exécution de la prestation pour le client
if ($clientIdentifiant<>'SURBODPRDFTSMEDERIC') {
if ($dateDernierTraitement) {
if (!$retroActivite) {
$where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement) ";
$whereCol.=" AND a.dateInsert>$dateDernierTraitement ";
}
else {
$where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) ";
$whereCol.=" AND (a.dateInsert>$dateDernierTraitement OR (a.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) ";
}
}
// ... sinon on prend les annonces depuis la date de début de la prestation
elseif ($dateDebutPrestation)
if (!$retroActivite) {
$where.=" AND (d.dateInsert>$dateDebutPrestation OR d.dateUpdate>$dateDebutPrestation) ";
$whereCol.=" AND a.dateInsert>$dateDebutPrestation ";
} else {
$where.=" AND (d.dateInsert>$dateDebutPrestation OR d.dateUpdate>$dateDebutPrestation OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) ) ";
$whereCol.=" AND (a.dateInsert>$dateDebutPrestation OR (a.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) ) ";
}
else {
$where.=" AND (d.dateInsert>='MAX(DATE_FORMAT(d.dateInsert,'%Y-%m-%d'))' OR d.dateUpdate>='MAX(DATE_FORMAT(d.dateUpdate,'%Y-%m-%d'))') ";
$whereCol.=" AND a.dateInsert>='MAX(DATE_FORMAT(a.dateInsert,'%Y-%m-%d'))' ";
}
} else {
$where.='';
$whereCol.='';
}
/*if (!$retroActivite)
$where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement) ";
else {
$where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) ";
}*/
$where.=" AND Bodacc_Date_Parution>'2010-05-11' "; /** @todo A supprimer après le 19 juillet 2010 ... **/
$whereCol.=" AND a.dateSource>'2010-05-12 02:00:00' AND a.dateSuppr=0 "; // Idem ... (Prev: après la rétro du 22 mai 2008)
if ($typePrestaton=='diffusionBodacc') {
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : diffusion...".EOL;
$tables='bodacc_detail d';
$tablesCol='annonces a';
// Credit safe
// if ($numPrestation==11)
// $where=" d.siren<>0 AND d.sirenValide=1 AND Bodacc_Date_Parution BETWEEN '2007-01-01' AND '2007-12-31' ";
if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) {
$strNaf=$strCJ='';
$fields="'BOD' AS src, d.id";
$fieldsCol="'COL' AS src, a.id";
$tables='bodacc_detail d, etablissements e';
$tablesCol='annonces a, etablissements e';
$where.=" AND d.siren=e.siren AND d.siren>1000 AND (d.nic=e.nic OR e.siege=1) AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND a.siren=e.siren AND a.siren>1000 AND DATEDIFF(NOW(), dateJugement)<=60 ";
}
if (count($tabNaf)>0) {
$strNaf="'".implode("','",$tabNaf)."'";
$where.=" AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) ";
$whereCol.=" AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) ";
}
if (count($tabCodeCom)>0) {
$where.=" AND (";
foreach($tabCodeCom as $iCom=>$codeCom) {
$dep=substr($codeCom,0,2);
if ($dep<>'2A' && $dep<>'2B') {
$dep=$dep*1;
if ($dep<10) $strDep="'$dep','0$dep','00$dep'";
elseif ($dep>96)$strDep="'$dep'";
else $strDep="'$dep','0$dep'";
} else $strDep="'$dep'";
$com=substr($codeCom,2,3)*1;
if ($iCom>0) { $where.=" OR "; $whereCol.=" OR "; }
$where.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com) ";
$whereCol.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com) ";
}
$where.=") ";
$whereCol.=") ";
}
if (count($tabCJ)>0) {
$strCJ=implode(',',$tabCJ);
$where.=" AND e.cj IN ($strCJ) ";
$whereCol.=" AND e.cj IN ($strCJ) ";
// $where="d.id>=10454829 AND d.Rubrique IN('procol') AND d.siren=e.siren AND d.siren>1000 AND e.cj IN (5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5385,5410,5415,5422,5426,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5585,5599,5605,5610,5615,5620,5630,5632,5642,5646,5647,5651,5652,5653,5655,5658,5659,5660,5685,5699,5710,5720,5785,5800,6100,6200,6210,6220,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901) GROUP BY d.id;";
}
if (count($tabEve)>0) {
$tabRubColl=array();
/*print_r($tabEve);
die();*/
foreach ($tabEve as $tmpEve) {
$tabRubColl[] =' typeEven LIKE \'%'.$tmpEve.'%\' ';
$tabRubColl2[]=' strEven LIKE \'%'.$tmpEve.'%\' ';
}
$where.=' AND ('.implode(' OR ', $tabRubColl).') ';
$whereCol.=' AND (typeEven IN ('.implode(',', $tabEve).') OR '.implode(' OR ', $tabRubColl2).') ';
}
if (count($tabNaf)>0 || count($tabCJ)>0) {
$where.=" GROUP BY d.id";
$whereCol.=" GROUP BY a.id";
/*$where="d.id>=10454829 AND d.Rubrique IN('procol') AND d.siren=e.siren AND d.siren>1000 AND e.cj IN (5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5385,5410,5415,5422,5426,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5585,5599,5605,5610,5615,5620,5630,5632,5642,5646,5647,5651,5652,5653,5655,5658,5659,5660,5685,5699,5710,5720,5785,5800,6100,6200,6210,6220,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901)
AND ( typeEven LIKE '%1010%' OR typeEven LIKE '%1050%' OR typeEven LIKE '%1055%' OR typeEven LIKE '%1100%' OR typeEven LIKE '%1101%' OR typeEven LIKE '%1200%' OR typeEven LIKE '%1201%' OR typeEven LIKE '%1207%' OR typeEven LIKE '%1209%' OR typeEven LIKE '%1211%' OR typeEven LIKE '%1212%' OR typeEven LIKE '%1310%' OR typeEven LIKE '%1346%' OR typeEven LIKE '%1418%' OR typeEven LIKE '%1419%' ) GROUP BY d.id;";
//die();
*/
}
}
elseif ($typePrestaton=='surveillanceBodacc') {
$tabSiren=$iDb->select('surveillances_listes', 'siren, ref', "idClient='$clientIdentifiant' AND dateSuppr='0000-00-00'", true, MYSQL_ASSOC);
$nbSirenClient=count($tabSiren);
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbSirenClient unités en surveillance...".EOL;
$fields.=', s.ref';
$fieldsCol.=', s.ref';
$tables='bodacc_detail d, surveillances_listes s';
$tablesCol='annonces a, surveillances_listes s';
$where.=" AND d.siren=s.siren AND s.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
$whereCol.=" AND a.siren=s.siren AND a.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
if ($clientIdentifiant<>'SURBODPRDFTSMEDERIC') {
if (!$retroActivite) {
$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=60 ";
}
} else {
$where.=" AND d.dateInsert>s.dateDerEnvoi ";
}
/*
$where="d.siren=s.siren AND s.siren>1000 AND s.idClient='SURBODPRDFTSMEDERIC' AND s.dateSuppr='0000-00-00' AND (
(d.id=13278187 AND d.siren=513077818) OR
(d.id=13834100 AND d.siren=458202033) OR
(d.id=13893752 AND d.siren=503498636) OR
(d.id=13901548 AND d.siren=523090157) )";
/**/
}
else die('Type de prestation non gérée : '.$typePrestaton.EOL);
//$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 "; // NE PAS ENVOYER D'ANNONCES DONT LES DELAIS DE FORCLUSION SONT PASSEES
/* if ($codeAdherent=='DIFBODTSTFTSA6CMO') {
$where="SIREN IN(038728333,
038733259,
998823504
)";
}*/
if ($collecte) {
$query ="SELECT $fields FROM $tables WHERE $where UNION SELECT $fieldsCol FROM $tablesCol WHERE $whereCol";
echo date ('Y/m/d - H:i:s')." - $query;".EOL;
$res=$iDb->query($query);
$nbAnnonces=mysql_num_rows($res);
$strCollecte='(avec Collecte)';
//die(mysql_error().EOL);
} else {
echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
$nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true); // Gérer la table surveillance
$strCollecte='(Bodacc seul)';
}
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbAnnonces annonces à traiter $strCollecte...".EOL;
//echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Début de génération du fichier client en version $versionEvenClient...".EOL;
//if ($collecte) die();
if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) {
$fields="d.id, d.siren, d.sirenValide, CONCAT('BOD-',SUBSTRING(d.Rubrique_Bodacc,1,1)) as source, d.Bodacc_Num, d.Bodacc_Date_Parution, d.Num_Annonce, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.corrNum_Annonce, d.corrBodacc_Date_Parution, d.corrPage, d.corrNumParution, d.corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, d.Tribunal_Code, adresse, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, d.ville, adresseSiege, adrSiegeNum, adrSiegeIndRep, adrSiegeTypVoie, adrSiegeLibVoie, adrSiegeComp1, adrSiegeComp2, codePostalSiege, villeSiege, administration, activite, typeEven, commentaires, dateEffet, publication, publicationNom, publicationDate, fusion, dateDebutActivite, dateCessationActivite, dateCessationPaiement, dateJugement, Numero, VenteMt, VenteDev, bienAcqui, 'M' As inter1type, 0 AS inter1id, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, 'R' As inter2type, 0 AS inter2id, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, 'A' As inter3type, 0 AS inter3id, administrateur, admNom, admRepr, admAdresse, admCP, admVille, 'O' AS inter4type, 0 AS inter4id, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert";
$fieldsCol="a.id, a.siren, a.sirenValide, CONCAT(a.source,'-',a.parutionIdJal) as source, 0 as Bodacc_Num, a.dateSource as Bodacc_Date_Parution, 0 as Num_Annonce, '' as Rubrique_Bodacc, '' as Rubrique, 'Insertion' as typeAnnonce, '' as corrNum_Annonce, '' as corrBodacc_Date_Parution, '' as corrPage, '' as corrNumParution, '' AS corrTexteRectificatif, '' as RC, a.raisonSociale, '' AS nomCommercial, '' AS enseigne, '' AS nationalite, '' AS FJ, '' AS Capital, '' AS CapitalDev, a.tribunal as Tribunal_Code, adresse, '' AS adrNum, '' AS adrIndRep, '' AS adrTypVoie, '' AS adrLibVoie, '' AS adrComp1, '' AS adrComp2, a.codePostal*1 AS codePostal, a.ville, adresse AS adresseSiege, '' AS adrSiegeNum, '' AS adrSiegeIndRep, '' AS adrSiegeTypVoie, '' AS adrSiegeLibVoie, '' AS adrSiegeComp1, '' AS adrSiegeComp2, a.codePostal*1 as codePostalSiege, a.ville as villeSiege, nouvDir AS administration, nouvActivite as activite, CONCAT(a.typeEven,'',REPLACE(strEven,';','')) AS typeEven, '' AS commentaires, a.dateEffetFinP as dateEffet, '' AS publication, '' AS publicationNom, '' AS publicationDate, '' AS fusion, '' AS dateDebutActivite, '' as dateCessationActivite, a.dateCessationPaiement, a.dateJugement, '' AS Numero, montant AS VenteMt, 'EUR' AS VenteDev, '' AS bienAcqui, inter1type, inter1id, inter1nom AS Mandataire, inter1nom AS mandNom, '' AS mandRepr, '' AS mandAdresse, '' AS mandCP, '' AS mandVille, '' AS JugeCommissaire, '' AS jugeCommissaireSuppleant, inter2type, inter2id, inter2nom AS ReprCreanciers, inter2nom AS creaNom, '' AS creaRepr, '' AS creaAdresse, '' AS creaCP, '' AS creaVille, inter3type, inter3id, inter3nom AS administrateur, inter3nom AS admNom, '' AS admRepr, '' AS admAdresse, '' AS admCP, '' AS admVille, 'O' AS inter4type, 0 AS inter4id, '' AS oppositions, '' AS oppoNom, '' AS oppoRepr, '' AS oppoAdresse, '' AS oppoCP, '' AS oppoVille, '' AS perimetre, '' AS dateFinDepotCreances, '' AS delaiDepotCreances, '' AS dateFinObservation, '' AS FinObservationBodacc, a.dateInsert";
$tables='bodacc_detail d';
$tablesCol='annonces a';
$where='d.id IN (0';
$whereCol='a.id IN (0';
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
if ($annonce['src']=='BOD') $where.=','.$annonce['id'];
else $whereCol.=','.$annonce['id'];
}
$where.=')';
$whereCol.=')';
if ($collecte) {
$query ="SELECT $fields FROM $tables WHERE $where UNION SELECT $fieldsCol FROM $tablesCol WHERE $whereCol";
echo date ('Y/m/d - H:i:s')." - $query;".EOL;
$res=$iDb->query($query);
$nbAnnonces=mysql_num_rows($res);
$strCollecte='(avec Collecte)';
//die(mysql_error().EOL);
} else {
echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
$nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true); // Gérer la table surveillance
$strCollecte='(Bodacc seul)';
}
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbAnnonces liens entrep/annonces à traiter...".EOL;
}
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Début de génération du fichier client en version $versionEvenClient...".EOL;
//echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
//while(=$iDb->fetch(MYSQL_ASSOC)) {
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
/** Marquer les liens REF/SIREN envoyées à chaque client
**/
$numInter=0;
$inter=$interType=array();
/*if ($annonce['mandNom']<>'' || $annonce['mandCP']<>0) {
$inter[$numInter]['type']='M'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=0;
$inter[$numInter]['Nom']=$annonce['mandNom'];
$inter[$numInter]['Repr']=$annonce['mandRepr'];
$inter[$numInter]['adrNum']='';
$inter[$numInter]['adrBis']='';
$inter[$numInter]['adrType']='';
$inter[$numInter]['adrLib']=$annonce['mandAdresse'];
$inter[$numInter]['CP']=$annonce['mandCP'];
$inter[$numInter]['Ville']=$annonce['mandVille'];
$inter[$numInter]['Tel']='';
$numInter++;
//$interType[]='M';
}
if ($annonce['creaNom']<>'' || $annonce['creaCP']<>0) {
$inter[$numInter]['type']='R'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=0;
$inter[$numInter]['Nom']=$annonce['creaNom'];
$inter[$numInter]['Repr']=$annonce['creaRepr'];
$inter[$numInter]['adrNum']='';
$inter[$numInter]['adrBis']='';
$inter[$numInter]['adrType']='';
$inter[$numInter]['adrLib']=$annonce['creaAdresse'];
$inter[$numInter]['CP']=$annonce['creaCP'];
$inter[$numInter]['Ville']=$annonce['creaVille'];
$inter[$numInter]['Tel']='';
$numInter++;
//$interType[]='R';
}
if ($annonce['admNom']<>'' || $annonce['admCP']<>0) {
$inter[$numInter]['type']='A'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=0;
$inter[$numInter]['Nom']=$annonce['admNom'];
$inter[$numInter]['Repr']=$annonce['admRepr'];
$inter[$numInter]['adrNum']='';
$inter[$numInter]['adrBis']='';
$inter[$numInter]['adrType']='';
$inter[$numInter]['adrLib']=$annonce['admAdresse'];
$inter[$numInter]['CP']=$annonce['admCP'];
$inter[$numInter]['Ville']=$annonce['admVille'];
$inter[$numInter]['Tel']='';
$numInter++;
//$interType[]='A';
}
/* if ($annonce['oppoNom']<>'' || $annonce['oppoCP']<>0) {
$inter[$numInter]['type']='O'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=0;
$inter[$numInter]['Nom']=$annonce['oppoNom'];
$inter[$numInter]['Repr']=$annonce['oppoRepr'];
$inter[$numInter]['adrNum']='';
$inter[$numInter]['adrBis']='';
$inter[$numInter]['adrType']='';
$inter[$numInter]['adrLib']=$annonce['oppoAdresse'];
$inter[$numInter]['CP']=$annonce['oppoCP'];
$inter[$numInter]['Ville']=$annonce['oppoVille'];
$inter[$numInter]['Tel']='';
$numInter++;
//$interType[]='O';
}*/
$avecMand=false;
$tabEven2=explode(';',$annonce['typeEven']);
if ($annonce['siren']*1>100 && (count($interType)==0 || $collecte))
foreach ($tabEven2 as $even)
if (substr($even,0,1)*1==1 || substr($even,0,1)*1==5)
$avecMand=true;
if ($avecMand) {
/** On doit recherche des mandataires absent ou non décodés de l'annonce Bodacc Texte **/
$tabTypes=array('A','C','L','M','R','O');
for($iInter=1; $iInter<4; $iInter++) {
$tabMand=$iDb2->select('annonces', 'inter'.$iInter.'type, inter'.$iInter.'id, inter'.$iInter.'nom, complement', 'siren='.$annonce['siren']." AND inter".$iInter."type IN ('".implode("','", $tabTypes)."') AND (inter".$iInter."id>0 OR inter".$iInter."nom<>'' OR complement LIKE 'Mandataire%') ORDER BY dateInsert DESC", false, MYSQL_ASSOC);
$interNom=$interTel=$interCp=$interVille='';
$interSiren=0;
foreach ($tabMand as $mand) {
// As t'on déjà traité ce type de mandataire ?
if (in_array($mand['inter'.$iInter.'type'],$interType)) continue;
//print_r($annonce);
$mandId=$mand['inter'.$iInter.'id'];
if ($mandId>0) {
// Il y a un mandataire avec un identifiant numérique
$tabTmp=$iDb2->select( 'tabMandataires', 'id, sirenGrp, sirenMand, Nom, Prenom, type, adresse, adresseComp, cp, ville, tel, fax, email, web', 'id='.$mandId, true, MYSQL_ASSOC);
$mand2=$tabTmp[0];
$adr=$iInsee->structureVoie($mand2['adresse']);
$interNom=$mand2['Nom'];
$interSiren=$mand2['sirenMand']*1;
if ($interSiren==0) $interSiren=$mand2['sirenGrp']*1;
$interCp=$mand2['cp']*1;
$interVille=strtoupper($mand2['ville']);
$interTel=strtr($mand2['tel'],array(' '=>'',','=>'','.'=>'', '-'=>'/','-'=>''))*1;
} else {
// Il y a un mandataire sans identifiant numérique
if (trim($mand['inter'.$iInter.'nom'])=='' && substr($mand['complement'],0,10)=='Mandataire')
// Uniquement avec le nom du mandataire en complément
$interNom=substr($mand['complement'],13,strlen($mand['complement'])-13);
else {
if (preg_match('/^(.*), Téléphone \: (.*)$/Ui', $mand['inter'.$iInter.'nom'], $matches)) {
$interTel=strtr($matches[2],array(' '=>'',','=>'','.'=>'', '-'=>'/','-'=>''))*1;
$mand['inter'.$iInter.'nom']=$matches[1];
}
$tabTmp=explode(' ', $mand['inter'.$iInter.'nom']);
if (count($tabTmp)>1) {
$interNom=$tabTmp[0];
unset($tabTmp[0]);
$adr=$iInsee->structureVoie(trim(implode(' ', $tabTmp)));
$interCp=$adr['cp']*1;
$interVille=$adr['ville'];
}
// echo $mand['inter'.$iInter.'nom']." : Nom=$interNom, Tél=$interTel, Adresse=";
// print_r($adr);
}
$inter[$numInter]['type']=$mand['inter'.$iInter.'type']; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
$inter[$numInter]['SIRET']=$interSiren.'00000';
$inter[$numInter]['Nom']=trim(strtoupper($interNom));
$inter[$numInter]['Repr']='';
$inter[$numInter]['adrNum']=$adr['num'];
$inter[$numInter]['adrBis']=$adr['indRep'];
$inter[$numInter]['adrType']=trim(strtoupper($adr['typeVoie']));
$inter[$numInter]['adrLib']=trim(strtoupper($adr['libVoie']));
$inter[$numInter]['CP']=$interCp;
$inter[$numInter]['Ville']=trim(strtoupper($interVille));
$inter[$numInter]['Tel']=$interTel;
$numInter++;
$interType[]=$mand['inter'.$iInter.'type'];
}
}
}
}
$tribunalCode=$annonce['Tribunal_Code'];
$refLigneClient=@$annonce['ref'];
//ICI//
$iDb2->update('surveillances_listes', array('dateDerEnvoi'=>DATETIME),"idClient='$clientIdentifiant' AND siren='".$annonce['siren']."' AND ref='$refLigneClient'");
$tabEven=array();
foreach ($tabEven2 as $even) {
$versionEven=$iBodacc->getVersionEvenement($even);
if ($versionEven==0 || $versionEven<=$versionEvenClient)
$tabEven[]=$even;
else {
if ($even<2000) $even2=1999;
elseif ($even<3000) $even2=2312;
elseif ($even<4000) $even2=3999;
elseif ($even<5000) $even2=4999;
elseif ($even<6000) $even2=5999;
elseif ($even<7000) $even2=6700;
else $even2=1999;
$tabEven[]=$even2;
// echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Evènement $even non géré en v$versionEvenClient : $even2".EOL;
}
}
$tabTmp=explode('-', $annonce['source']);
$source=$tabTmp[0];
if ($source=='BOD')
$codeSourceBodacc=substr($annonce['Rubrique_Bodacc'],0,1);
else {
switch (substr($annonce['source'],0,1)) {
case 'G': // G=Greffes
case 'P': // P=Inpi
case 'J': // J=Journal d'Annonces Légales
case 'T': // T=Tribunal
$codeSourceBodacc=substr($annonce['source'],0,1); break;
default: $codeSourceBodacc='J'; break;
}
}
if ($tabOptOutput[200]==true) {
$str=genereLigne200($annonce['siren'], $annonce['nic']);
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL);
$nbLignes++;
}
if ($tabOptOutput[400]==true) {
$str=genereLignes400($annonce['siren'], $nbLignes, $optionEOL);
fwrite($fp, $str);
}
$str= initstr('100', 3, '0', ALIGN_RIGHT) . // Type de ligne
initstr($annonce['id'], 10, '0', ALIGN_RIGHT) . // Numéro unique d'identification interne d'une annonce
initstr($annonce['siren'], 9, '0', ALIGN_RIGHT) . // Siren de l'entreprise concernée par l'annonce
initstr($annonce['nic'], 5, '0', ALIGN_RIGHT) . // NIC de l'établissement
initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année
initstr($codeSourceBodacc, 1) . // Code Bodacc (A, B ou C)
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['Bodacc_Date_Parution']), 8) . // Date de parution du Bodacc
initstr($annonce['Num_Annonce'], 5, '0', ALIGN_RIGHT) . // Numéro de l'annonce dans le Bodacc
initstr(substr($annonce['Rubrique_Bodacc'],1,3), 3, '0') . // Rubrique dans le Bodacc
initstr($annonce['typeAnnonce'], 1) . // Type d'annonce Bodacc : I=Insertion, A=Additif,
// R=Rectif, S=Suppression
initstr($annonce['corrNum_Annonce'], 5, '0', ALIGN_RIGHT) . // Si annonce diff. de I, numéro de l'annonce corrigée
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['corrBodacc_Date_Parution']), 8) . // Si diff. I, date du Bodacc de l'annonce corrigée
initstr($annonce['corrPage'], 6, '0', ALIGN_RIGHT) . // Si diff. I, page du Bodacc de l'annonce corrigée
initstr($annonce['corrNumParution'], 4, '0', ALIGN_RIGHT) . // Si diff. I, Num parut°/année de annonce corrigée
// (ex: 230A, 001B)
// initstr($annonce['corrTexteRectificatif'], XXXXXX, '0', ALIGN_RIGHT) . // Si diff. I,
// initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateInsert']), 8, '0') . // Date de l'intégration en bae S&D
initstr($refLigneClient, 18) . // REFERENCE DU CLIENT
initstr($tribunalCode, 6) .
initstr($annonce['RC'], 9) . // Numéro de RC (Registre du Commerce) de l'entreprise
initstr($annonce['raisonSociale'], 150) . // Raison sociale de l'entreprise
initstr($annonce['nomCommercial'], 100) . // Nom commercial de l'entreprise
initstr($annonce['enseigne'], 100) . // Enseigne de l'établissement
initstr($annonce['nationalite'], 30) . // Nationalité si Personne physique
//initstr(MInsee::getFJInsee($annonce['siren']), 4) . // FJ codification Insee
initstr('0000', 4) . // FJ codification Insee
initstr($annonce['FJ'], 90) . // Forme juridique de l'entreprise déclarée au BODACC
initstr(round($annonce['Capital']), 15, '0', ALIGN_RIGHT) . // Capital
initstr($annonce['CapitalDev'], 3) . // Devise du capital (format ISO)
// Adresse / 150 car
initstr($annonce['adrNum'], 4, '0', ALIGN_RIGHT) . //
initstr($annonce['adrIndRep'], 1) . //
initstr($annonce['adrTypVoie'], 5) .
initstr($annonce['adrLibVoie'], 50) .
initstr($annonce['adrComp1'], 50) .
initstr($annonce['adrComp2'], 40) .
initstr($annonce['codePostal'], 5, '0', ALIGN_RIGHT) . // Code Postal de l'établissement
initstr($annonce['villeSiege'], 45) . // Ville de l'établissement
// Adresse du siège / 150 car
initstr($annonce['adrNumSiege'], 4, '0', ALIGN_RIGHT) . //
initstr($annonce['adrIndRepSiege'], 1) . //
initstr($annonce['adrTypVoieSiege'], 5) .
initstr($annonce['adrLibVoieSiege'], 50) .
initstr($annonce['adrComp1Siege'], 50) .
initstr($annonce['adrComp2Siege'], 40) .
initstr($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) . // Code Postal de l'établissement
initstr($annonce['villeSiege'], 45) . // Ville de l'établissement
initstr(implode('',$tabEven), 32, '0', ALIGN_RIGHT) . // Code Evènement Bodacc n°1 à 8
initstr($annonce['publicationNom'], 100) . // NOM du JAL si publication
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['publicationDate']), 8) . // Date de publication du JAL si publication
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateCessationPaiement']), 8) . // Date de cessation des paiements
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateJugement']), 8) . // Date du jugement
initstr(FILLER, 1) . // FILLER (Replace type de création)
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateDebutActivite']), 8) . // Date de début d'activité
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateEffet']), 8) . // Date d'effet (Ventes/MMD)
// ou Date clôture exercice si ann dépôt comptes
initstr(round($annonce['VenteMt']), 15, '0', ALIGN_RIGHT) . // Montant de la vente
initstr($annonce['VenteDev'], 3) . // Devise de la ventre
initstr($annonce['Numero'], 35) . // Numéro de l'affaire au greffe
initstr($inter[0]['type'], 1) . // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
initstr($inter[0]['SIRET'], 14, '0', ALIGN_RIGHT) . // Intervenant A : Siret
initstr($inter[0]['Nom'], 80) . // Raison sociale
initstr($inter[0]['Repr'], 80) . // Représentant
initstr($inter[0]['adrNum'], 4, '0', ALIGN_RIGHT) . // Adresse, numéro dans la voie
initstr($inter[0]['adrBis'], 1) . // Adresse, Bis/Ter
initstr($inter[0]['adrType'], 4) . // Adresse, type de voie
initstr($inter[0]['adrLib'], 32) . // Adresse, libellé de la voie
initstr($inter[0]['CP'], 5, '0', ALIGN_RIGHT) . // Adresse, code Postal
initstr($inter[0]['Ville'], 45) . // Adresse, commune
initstr($inter[0]['Tel'], 10, '0', ALIGN_RIGHT) . // Téléphone
initstr($inter[1]['type'], 1) . // Type d'intervenant A : Mand/Adm/ReprCre/Oppo
initstr($inter[1]['SIRET'], 14, '0', ALIGN_RIGHT) . // Intervenant A : Siret
initstr($inter[1]['Nom'], 80) . // Raison sociale
initstr($inter[1]['Repr'], 80) . // Représentant
initstr($inter[1]['adrNum'], 4, '0', ALIGN_RIGHT) . // Adresse, numéro dans la voie
initstr($inter[1]['adrBis'], 1) . // Adresse, Bis/Ter
initstr($inter[1]['adrType'], 4) . // Adresse, type de voie
initstr($inter[1]['adrLib'], 32) . // Adresse, libellé de la voie
initstr($inter[1]['CP'], 5, '0', ALIGN_RIGHT) . // Adresse, code Postal
initstr($inter[1]['Ville'], 45) . // Adresse, commune
initstr($inter[1]['Tel'], 10, '0', ALIGN_RIGHT) . // Téléphone
initstr(FILLER/*$annonce['JugeCommissaireNom']*/, 30) . // NOM du JugeCommissaire
initstr(FILLER/*$annonce['JugeCommissairePrenom']*/, 30) . // Prénom du JugeCommissaire
initstr(FILLER/*$annonce['JugeCommissaireSupplNom']*/, 30) . // NOM du JugeCommissaire suppléant
initstr(FILLER/*$annonce['JugeCommissaireSupplPrenom']*/, 30) . // Prénom du JugeCommissaire suppléant
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateFinDepotCreances']), 8) . // Date limite pour le dépôt des créances
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateFinObservation']), 8) . // Date de fin de la période d'observation
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateInsert']), 8) . // Date d'insertion dans la base S&D
'';
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL);
$nbLignes++;
// if ($tabOptOutput['commentaire']==true && $annonce['commentaires']<>'')
// fwrite($fp, '101'.initsrt($annonce['commentaires'],1500).$eol); // Commentaire textuel si nécessaire
$enteteL= initstr($annonce['id'], 10, '0', ALIGN_RIGHT) . // Numéro unique d'identification interne d'une annonce
initstr($annonce['siren'], 9, '0', ALIGN_RIGHT) . // Siren de l'entreprise concernée par l'annonce
initstr($annonce['nic'], 5, '0', ALIGN_RIGHT) . // NIC de l'établissement
initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année
initstr($codeSourceBodacc, 1) . // Code Bodacc (A, B ou C)
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['Bodacc_Date_Parution']), 8) . // Date de parution du Bodacc
initstr($annonce['Num_Annonce'], 5, '0', ALIGN_RIGHT) . // Numéro de l'annonce dans le Bodacc
initstr(substr($annonce['Rubrique_Bodacc'],1,3), 3, '0') . // Rubrique dans le Bodacc
initstr($annonce['typeAnnonce'], 1) . // Type d'annonce Bodacc : I=Insertion, A=Additif,
// R=Rectificatif, S=Suppression
initstr($annonce['corrNum_Annonce'], 5, '0', ALIGN_RIGHT) . // Si annonce différent de I, numéro de l'annonce corrigée
initstr(WDate::dateT('Y-m-d','Ymd',$annonce['corrBodacc_Date_Parution']), 8) . // Si diff. I, date du Bodacc de l'annonce corrigée
initstr($annonce['corrPage'], 6, '0', ALIGN_RIGHT) . // Si diff. I, page du Bodacc de l'annonce corrigée
initstr($annonce['corrNumParution'], 4, '0', ALIGN_RIGHT) . // Si diff. I, Num parution dans l'année de annonce corri(ex: 230A, 001B)
initstr($refLigneClient, 18) . // REF CLI
'';
if ($tabOptOutput[101]==true && $annonce['commentaires']<>'') // Commentaires
fwrite($fp, genereMultiLigne('101', $enteteL, $annonce['commentaires'], $optionEOL, $nbLignes));
if ($tabOptOutput[102]==true && $annonce['activite']<>'') // Activité déclarée au Bodacc
fwrite($fp, genereMultiLigne('102', $enteteL, $annonce['activite'], $optionEOL, $nbLignes));
if ($annonce['corrTexteRectificatif']<>'') // Texte rectificatif
fwrite($fp, genereMultiLigne('103', $enteteL, $annonce['corrTexteRectificatif'], $optionEOL, $nbLignes));
if ($tabOptOutput[104]==true) { // Annonce Bodacc Complète
if ($collecte && substr($annonce['source'],0,3)<>'BOD' ) {
$tabCollecte=$iInsee->getProColPart($annonce['siren']);
foreach ($tabCollecte as $annCollecte) {
$idAnn2=('0.'.$annonce['id'])*1.0;
if ($annCollecte['id']==$idAnn2) {
$annoncetxt=str_replace(' RCS Tribunal inconnu.',' RCS.', $annCollecte['texteAnnonce']);
break;
}
}
} else {
$annoncetxt=$iDb2->select('bodacc', 'annonce', 'id='.$annonce['id'], false);
$annoncetxt=$annoncetxt[0][0];
}
fwrite($fp, genereMultiLigne('104', $enteteL, $annoncetxt, $optionEOL, $nbLignes));
}
if ($tabOptOutput[105]==true) { // Liste des dirigeants
$annonceDir=$iDb2->select('bodacc_dirigeants', 'id, num, dateEffet, fonction, rs, nom, prenom, nomUsage', 'id='.$annonce['id'], true);
$strDir='';
foreach ($annonceDir as $k=>$dir) {
$strDir.=initstr(WDate::dateT('Y-m-d','Ymd',$dir['dateEffet']), 8, '0', ALIGN_RIGHT) . // Date de la prise de fonction
initstr($dir['fonction'], 4) . // Code Fonction S&D
initstr($dir['rs'], 80) . // Raison Sociale du dirigeant
initstr($dir['nom'], 50) . // NOM du dirigeant
initstr($dir['prenom'], 100) . // Prenom
initstr($dir['usage'], 50); // Nom d'usage
if ($k%6==0) $strDir.=initstr(' ', 28);
else $strDir.=initstr(' ', 26);
}
fwrite($fp, genereMultiLigne('105', $enteteL, $strDir, $optionEOL, $nbLignes));
}
if ($nbLignes%1000==1) echo date ('Y/m/d - H:i:s')." - Nb lignes=$nbLignes\n";
}
/**
** On génère la ligne de fin de fichier
**/
$nbLignes++;
$str= initstr('999', 3, '0', ALIGN_RIGHT) . // Type de ligne
initstr(date('YmdHis'), 14) . // Date & Heure de fin génération du fichier
initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client
initstr($clientIdentifiant, 36) . // Identifiant Client
initstr($typePrestaton, 32) . // Type de prestation
initstr($nbLignes, 10, '0', ALIGN_RIGHT) . // Nombre de lignes Total du fichier
'';
fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE)); // Pas de fin de ligne sur la dernière ligne
fclose($fp);
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient :Fichier client terminé.".EOL;
/** Mise à jour des numéros de tour et des date de dernières exécutions
**/
if ($incrementationDesTour) {
$iDbCrm=new WDB('sugarcrm');
$rep=$iDbCrm->update('cases_cstm', array('trtdatederniereexec_c'=>date('YmdHis'), 'trtnumerotour_c'=> $clientNumTourFichier),
"id_c='".$tabAdherent['idPrestationBdd']."'");
}
/** Conversion du fichier si nécessaire en CSV
**/
if ($tabAdherent['formatEnvois']=='csv') {
$ligneOut='';
$ligne001=$ligne100=$ligne104=$ligne999=0;
$tabLignes=file(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt');
$fichier_csv=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv';
$fp=fopen(REP_TEMP . $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)';
$dateEve='Date évènement';
$txtAnn ='Texte Annonce';
$ligne001++;
break;
case 100: // Structure Bodacc
$ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$dateEve;$txtAnn";
$ligne100++;
$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
$dateEve1=substr($ligne, 1144, 8 ); // Date de jugezment
$dateEve2=substr($ligne, 1161, 8 ); // Date d'effet, etc...
if ($dateEve1>0)
$dateEve=WDate::dateT('Ymd','d/M/Y',$dateEve1);
elseif ($dateEve2>0)
$dateEve=WDate::dateT('Ymd','d/M/Y',$dateEve2);
else
$dateEve='';
$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='';
foreach ($even as $codeEven)
if ($codeEven<>0) {
$txtEven.=$iBodacc->getEvenement($codeEven)." ($codeEven), ";
$catEven=$iBodacc->getChapitreEvenement($codeEven);
}
else
$txtEven.='';
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
$ecrireLignePre=true;
break;
case 104: // Annonce
$ligne104++;
$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;$dateEve;$txtAnn";
$ligne999++;
$ecrireLignePre=true;
break;
default: // Ligne non gérée
break;
}
if ($ecrireLignePre) fwrite($fp, $ligneOut.EOL);
}
fclose($fp);
echo date ('Y/m/d - H:i:s')." - Conversion du fichier $fichier_csv terminée !".EOL;
}
/** Conversion du fichier si nécessaire en SO2000
**/
elseif ($tabAdherent['formatEnvois']=='specifique') {
$fichierIn=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt';
if (preg_match('/APICIL/',$fichierIn)) { $numeroAbonneBil='019400018'; $optionsIdBil='I'; }
// elseif (preg_match('/METRO/',$fichierIn)) { $numeroAbonneBil='013990040'; $optionsIdBil='IN'; }
$ret=conversionSd2So2000($repProduction.$fichierIn, $numeroAbonneBil, '', $optionsIdBil);
if ($ret===true)
echo date('Y/m/d - H:i:s') . " - Conversion spécifique BIL/SO2000 (abonné $numeroAbonneBil) terminée !".EOL;
else
echo date('Y/m/d - H:i:s') . " - ERREUR lors de la conversion du fichier S&D $fichierIn en BIL/SO2000 (abonné $numeroAbonneBil) : $ret !".EOL;
}
/*Gzip ou zip zt envoi par mail ou dépot sur le site FTP*/
switch ($optionZip) {
case 'zip':
$zip = new ZipArchive;
$ficProduction=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.zip';
$res = $zip->open($repProduction.$ficProduction, ZipArchive::CREATE);
if ($res === TRUE) {
// $zip->addFromString('test.txt', 'file content goes here');
$zip->addFile( REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt',
$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt');
if ($tabAdherent['formatEnvois']=='csv')
$zip->addFile(REP_TEMP. $fichier_csv, $fichier_csv);
$zip->close();
echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.zip OK...'.EOL;
} else {
echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Zip du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL;
}
break;
case 'gzip':
$ficProduction= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt.gz';
$string=file_get_contents(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt');
$gz = gzopen($repProduction.$ficProduction,'w9');
if (!$gz) {
echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Gzip du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL;
} else {
gzwrite($gz, $string);
gzclose($gz);
echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt.gz OK...'.EOL;
}
if ($tabAdherent['formatEnvois']=='csv') {
$ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv.gz';
$string=file_get_contents(REP_TEMP. $fichier_csv);
$gz = gzopen($repProduction.$ficProduction_csv,'w9');
if (!$gz) {
echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Gzip du fichier $fichier_csv impossible !".EOL;
} else {
gzwrite($gz, $string);
gzclose($gz);
echo date ('Y/m/d - H:i:s')." - Compression du fichier $ficProduction_csv OK...".EOL;
}
}
break;
case 'bzip2':
$ficProduction=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt.bz2';
$string=file_get_contents(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt');
$bz = bzopen($repProduction.$ficProduction,'w');
// Ne sait pas si le niveau de compression 1 à 9 est implémenté pour cette fonction
if (!$bz) {
echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Bzip2 impossible pour ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL;
} else {
bzwrite($bz, $string, strlen($string));
bzclose($bz);
echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt.bz2 OK...'.EOL;
}
if ($tabAdherent['formatEnvois']=='csv') {
$ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv.bz2';
$string=file_get_contents(REP_TEMP. $fichier_csv);
$bz = bzopen($repProduction.$ficProduction_csv,'w');
if (!$bz) {
echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Bzip2 du fichier $fichier_csv impossible !".EOL;
} else {
bzwrite($bz, $string, strlen($string));
bzclose($bz);
echo date ('Y/m/d - H:i:s')." - Compression du fichier $ficProduction_csv OK...".EOL;
}
}
break;
default:
$ficProduction= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt';
$ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv';
if (!copy(REP_TEMP.$ficProduction, $repProduction.$ficProduction))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été créé...".EOL;
if ($tabAdherent['formatEnvois']=='csv') {
if (!copy(REP_TEMP.$ficProduction_csv, $repProduction.$ficProduction_csv))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction_csv impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été créé...".EOL;
}
break;
}
/** Sauvegarde des fichiers dans clients **/
$repBakClient='/home/data/clients/'.strtolower($tabAdherent['nomClient']);
if (!file_exists($repBakClient)) {
echo date ('Y/m/d - H:i:s')." - ATTENTION : Les dossiers BACKUP du client ne sont pas correctement créés !".EOL;
if (!file_exists($repBakClient) && mkdir($repBakClient))
echo date ('Y/m/d - H:i:s')." - Le dossier Backup du client a été créé ($repBakClient)".EOL;
// if (!file_exists($repFtpClient.'/recv') && mkdir($repFtpClient.'/recv'))
// echo date ('Y/m/d - H:i:s')." - Le dossier FTP/RECV du client a été créé ($repFtpClient/recv)".EOL;
}
if (!copy($repProduction.$ficProduction, $repBakClient.'/'.$ficProduction))
echo date ('Y/m/d - H:i:s')." - ERREUR : Copy du fichier $ficProduction dans Backup impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été historisé...".EOL;
if ($tabAdherent['formatEnvois']=='csv') {
if (!copy($repProduction.$ficProduction_csv, $repBakClient.'/'.$ficProduction_csv))
echo date ('Y/m/d - H:i:s')." - ERREUR : Historisation du fichier $ficProduction_csv impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été historisé...".EOL;
}
/** Si FTP, déplacement dans les dossiers adéquats **/
if ($tabAdherent['supportPrestation']=='ftp' || $tabAdherent['supportPrestation']=='web') {//$repProduction.$ficProduction
$repFtpClient='/home/data/ftp/'.strtolower($tabAdherent['nomClient']);
if (!file_exists($repFtpClient) || !file_exists($repFtpClient.'/recv')) {
echo date ('Y/m/d - H:i:s')." - ATTENTION : Les dossiers FTP du client ne sont pas correctement créés !".EOL;
if (!file_exists($repFtpClient) && mkdir($repFtpClient))
echo date ('Y/m/d - H:i:s')." - Le dossier FTP du client a été créé ($repFtpClient)".EOL;
if (!file_exists($repFtpClient.'/recv') && mkdir($repFtpClient.'/recv'))
echo date ('Y/m/d - H:i:s')." - Le dossier FTP/RECV du client a été créé ($repFtpClient/recv)".EOL;
}
if (!move($repProduction.$ficProduction, $repFtpClient.'/recv/'.$ficProduction))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction dans FTP/RECV impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été déplacé dans FTP/RECV...".EOL;
if ($tabAdherent['formatEnvois']=='csv') {
if (!move($repProduction.$ficProduction_csv, $repFtpClient.'/recv/'.$ficProduction_csv))
echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction_csv dans FTP/RECV impossible !".EOL;
else
echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été déplacé dans FTP/RECV...".EOL;
}
}
}
$strMessage.=date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n";
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces par fichier '$typePrestaton'", $strMessage);
echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n";
die();
function genereLigne200($siren, $nic) {
global $iInsee, $a;
$a=$iInsee->getIdentiteEntreprise($siren,$nic);
$b=$iInsee->getInfosNotice($siren,$nic);
$c=$iInsee->getAdresse($siren,$nic);
$str= initstr(200, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité
initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D
initstr($a['Siren'], 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise
initstr($a['Nic'], 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement
initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité
initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide
initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés
initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal
initstr(str_replace('-','',$a['dateMajIdentite']), 8 , '0', ALIGN_RIGHT) . // Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D
initstr($a['Actif'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIF Établissement juridiquement actif
initstr($a['ActifEco'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIFECO Établissement économiquement actif
initstr($a['SituationJuridique'], 2 ) . // Obligatoire SITJUR Situation Juridique de l'entreprise
initstr('', 3 ) . // Facultatif EVE Dernier événement Insee recensé
initstr(str_replace('-','',$a['DateMajINSEE']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEVE Date du dernier événement Insee recensé
initstr('', 2 ) . // Facultatif TYPETAB Type d'établissement concerné par l'événement
initstr($a['Siege'], 1 , '0', ALIGN_RIGHT) . // Obligatoire SIEGE Établissement siège, secondaire ou principal
initstr($a['Nom'], 160 ) . // Obligatoire NOM Raison Sociale
initstr($a['NomCommercial'], 160 ) . // Facultatif NOMCOM Nom commercial
initstr($a['Enseigne'], 80 ) . // Facultatif ENSEIGNE Enseigne de l'établissement
initstr($a['Sigle'], 40 ) . // Facultatif SIGLE sigle de l'entreprise
initstr($a['AdresseNum'], 4 , '0', ALIGN_RIGHT) . // Facultatif ADR_NUMVOIE Numéro dans la voie
initstr($a['AdresseBtq'], 1 ) . // Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...)
initstr($a['AdresseVoie'], 4 ) . // Facultatif ADR_TYPVOIE Type de voie
initstr($a['AdresseRue'], 32 ) . // Obligatoire ADR_LIBVOIE Libellé de la voie
initstr($a['Ville'], 32 ) . // Obligatoire ADR_LIBCOM Commune
initstr($a['CP'], 5 , '0', ALIGN_RIGHT) . // Obligatoire ADR_CP Code postal
initstr($a['Adresse2'], 38 ) . // Facultatif ADR_COMP Complément d'adresse
initstr('', 38 ) . // Facultatif ADR_DISTSP Distribution spéciale
initstr($a['Pays'], 38 ) . // Facultatif PAYS Pays
initstr($a['PaysIso2'], 2 ) . // Facultatif PAYSISO2 Code Pays au format ISO2
initstr($a['Dept'], 2 ) . // Obligatoire ADR_DEP Département de l'établissement
initstr($a['codeCommune'], 3 , '0', ALIGN_RIGHT) . // Obligatoire ADR_COM Code commune de l'établissement
initstr(str_replace(' ','',$a['Rivoli']), 5 ) . // Facultatif CODEVOIE Code voie de l'établissement
initstr($a['codIris'], 4 ) . // Facultatif CODEIRIS Code Iris de l'établissement
initstr('', 5 ) . // Facultatif CODEILOT Code Ilot de l'établissement
initstr($a['AdresseDom'], 1 , '0', ALIGN_RIGHT) . // Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation
initstr($a['Tel'], 15 ) . // Facultatif TEL Numéro de téléphone
initstr($a['Fax'], 15 ) . // Facultatif FAX Numéro de télécopie
initstr($a['Web'], 80 ) . // Facultatif WEB Site Web
initstr($a['Mail'], 80 ) . // Facultatif MAIL Adresse Email de contact générique
initstr($a['Auxiliaire'], 1 , '0', ALIGN_RIGHT) . // Facultatif AUXILT Auxiliarité de l'activité de l'établissement
initstr($a['Saisonnalite'], 1 , '0', ALIGN_RIGHT) . // Facultatif SAISONAT Saisonnalité de l'établissement
initstr($a['NatureActivite'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTIVNAT Nature de l'activité de l'établissement
initstr($a['OrigineCreation'], 2 ) . // Facultatif ORIGINE Origine de la création de l'établissement
initstr($a['TypeExploitation'], 2 , '0', ALIGN_RIGHT) . // Facultatif TYPEXPLOIT Type d'exploitation
initstr($a['LIEUACT'], 2 , '0', ALIGN_RIGHT) . // Facultatif LIEUACT Lieu de l'activité de l'établissement
initstr($a['ACTISURF'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTISURF Type de magasin
initstr($a['PRODPART'], 1 , '0', ALIGN_RIGHT) . // Facultatif PRODPART Participation particulière à la production de l'établissement
initstr($b['insARRONET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ARRONET Arrondissement de l'établissement
initstr($b['insCTONET'], 3 , '0', ALIGN_RIGHT) . // Facultatif CTONET Canton
initstr($b['insTCD'], 2 , '0', ALIGN_RIGHT) . // Facultatif TCD Tranche de commune détaillée
initstr($b['insZEMET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ZEMET Zone d'emploi
initstr($b['insDU'], 2 ) . // Facultatif DU Département de l'unité urbaine de localisation
initstr($b['insTU'], 1 ) . // Facultatif TU Taille de l'unité urbaine
initstr($b['insUU'], 2 ) . // Facultatif UU Numéro de l'untié urbaine
initstr(str_replace('-','',$a['DateCreaEt']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCRET Date de création de l'établissement
initstr($a['NafEtab'], 5 ) . // Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement
initstr($a['NaceEtab'], 5 ) . // Facultatif NACE_ETAB Code activité NACE de l'établissement
initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPET Année de validité de l'activité principale de l'établissement
initstr($a['EffectifEtab'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ET Effectif de l'établissement
initstr($a['EffEtTr'], 2 ) . // Facultatif TEFF_ET Tranche d'effectif de l'établissement
initstr($a['AnneeEffEt'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFET Année de mise à jour de l'effectif établissement
initstr('', 1 ) . // Facultatif MODET Modalité de l'activité pricipale de l'établissement
initstr($a['EXPLET'], 1 ) . // Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production
initstr($b['insRPET'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPET Région de localisation de l'établissement
initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTET Date de réactivation de l'établissement
initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFERET Date de fermeture de l'établissement
initstr($b['insEAEANT'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE*
initstr($b['insEAEAPET'], 5 ) . // Facultatif EAEAPET Activité principale de l'établissement issue des EAE
initstr($b['insEAESEC1T'], 5 ) . // Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE
initstr($b['insEAESEC2T'], 5 ) . // Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE
initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCREN Date de création de l'entreprise
initstr($a['NafEnt'], 5 ) . // Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise
initstr($a['NaceEnt'], 5 ) . // Facultatif NACE_ENT Code activité NACE de l'entreprise
initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPEN Année de validité de l'activité principale de l'entreprise
initstr($a['Effectif'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ENT Effectif de l'entreprise
initstr($a['EffEnTr'], 2 ) . // Facultatif TEFF_ENT Tranche d'effectif de l'entreprise
initstr($a['AnneeEffEn'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFEN Année de mise à jour de l'effectif entreprise
initstr($a['MODEN'], 1 ) . // Facultatif MODEN Modalité de l'activité pricipale de l'entreprise
initstr($a['EXPLEN'], 1 ) . // Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production
initstr($b['insRPEN'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPEN Région de localisation du siège de l'entreprise
initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTEN Date de réactivation de l'entreprise
initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFEREN Date de fermeture de l'entreprise
initstr(str_replace('-','',$a['dateImmat']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS
initstr(str_replace('-','',$a['dateRad']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATERAD Date de radiation de l'entreprise du RCS
initstr($a['Capital'], 15 , '0', ALIGN_RIGHT) . // Facultatif CAPITAL Montant du capital de l'entreprise
initstr($a['CapitalType'], 1 ) . // Facultatif CAPITALTYPE Type de capital
initstr($a['CapitalDev'], 3 ) . // Facultatif CAPITALDEV Devise du capital
initstr($a['FJ'], 4 , '0', ALIGN_RIGHT) . // Obligatoire CJ Catégorie Juridique de l'entreprise
initstr($a['Civilite'], 1 , '0', ALIGN_RIGHT) . // Facultatif CIVILITE Civilité de l'entreprise si Personne Physique
initstr($a['NbEtab'], 4 , '0', ALIGN_RIGHT) . // Facultatif NBETAB Nombre d'établissements actifs de l'entreprise
initstr($a['TrancheCA'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCA Tranche de chiffre d'affaire
initstr($a['TrancheCAexp'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCAEXP Tranche de chiffre d'affaire à l'export
initstr($a['APRM'], 6 ) . // Facultatif APRM Activité principale au registre des métiers
initstr($a['MONOREG'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOREG Mono-régionalité de l'entreprise
initstr($a['REGIMP'], 2 , '0', ALIGN_RIGHT) . // Facultatif REGIMP Principale région d'implantation de l'entreprise
initstr($a['MONOACT'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOACT Mono-activité de l'entreprise
initstr(substr($a['SiretSiege'],-5), 5 , '0', ALIGN_RIGHT) . // Facultatif NICSIEGE Nic de l'établissement siège
initstr($a['RECME'], 1 , '0', ALIGN_RIGHT) . // Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État
initstr(0, 14 , '0', ALIGN_RIGHT) . // Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif SIRETLIETYPE Type de sitet lié
initstr($a['AutreSiret']['pre']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert)
initstr($a['AutreSiret']['suc']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert)
initstr('', 2 ) . // Facultatif insDESTINAT Destination Insee
initstr($b['insDEPCOMEN'], 5 , '0', ALIGN_RIGHT) . // Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise
/*initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE
initstr(0 1 , '0', ALIGN_RIGHT) . // Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMCJ Indicateur de MAJ de la Forme Juridique
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPEN Indicateur de MAJ du NAF entreprise
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPET Indicateur de MAJ du NAF établissement
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMSIGLE Indicateur de MAJ du SIGLE
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep
initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab
*/
'00000000000'.
initstr(1, 1 ) . // Facultatif ADR_RNVP Type de Prestation RNVP si RNVP
initstr($c['L1_NOM'], 38 ) . // Facultatif L1_nomen Ligne 1 : Nom de l'entreprise
initstr($c['L2_NOM2'], 38 ) . // Facultatif L2_COMP Ligne 2 : Complément de nom
initstr($c['L3_ADRCOMP'], 38 ) . // Facultatif L3_CADR Ligne 3 : Complément d'adresse
initstr($c['L4_VOIE'], 38 ) . // Facultatif L4_VOIE Ligne 4 : Adresse
initstr($c['L5_DISTSP'], 38 ) . // Facultatif L5_DISP Ligne 5 : Distribution spéciale
initstr($c['L6_POST'], 38 ) . // Facultatif L6_POST Ligne 6 : Code Postal, commune, etc..
initstr($c['L7_PAYS'], 38 ) . // Facultatif L7_ETRG Ligne 7 : Pays si étranger
initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE*
initstr($b['insEAEAPEN'], 5 ) . // Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE
initstr($b['insEAESEC1N'], 5 ) . // Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE
initstr($b['insEAESEC2N'], 5 ) . // Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE
initstr($b['insEAESEC3N'], 5 ) . // Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE
initstr($b['insEAESEC4N'], 5 ) . // Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE
initstr($a['GeoLat'], 12 , '0', ALIGN_RIGHT) . // Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoLon'], 12 , '0', ALIGN_RIGHT) . // Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984)
initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // Facultatif GPSP Niveau de précision du géocodage
initstr($a['GeoInfos']['NZUS'], 10 ) . // Facultatif ZUS Identifiant de la Zone Urbaine Sensible
initstr($a['GeoInfos']['NZRU'], 10 ) . // Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine
initstr($a['GeoInfos']['NZFU'], 10 ) . // Facultatif ZFU Identifiant de la Zone Franche Urbaine
initstr($a['GeoInfos']['NCUCS'], 10 ) . // Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social
initstr($a['GeoInfos']['NAFR'], 10 ) . // Facultatif AFR Identifiant de la Zone AFR
initstr($a['GeoInfos']['NZRR'], 10 ) . // Facultatif ZRR Identifiant de la ZRR
initstr($a['TvaNumero'], 15 ) . // Facultatif TVA Numéro de TVA Intracommunataire
initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . // Facultatif TVAVALIDE Numéro de TVA validé
initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . // Facultatif ANCIENSIEGE Ancien siège
initstr($a['Isin'], 12 ) . // Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse
// A voir
initstr($a['dir1NomPrenom'], 40 ) . // Facultatif PPDIR1NOM Nom du principal dirigeant
initstr('', 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant
initstr('', 40 ) . // Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant
initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1DNAISS Date de naissance
initstr($a['dir1LieuNaiss'], 35 ) . // Facultatif PPDIR1LNAISS Lieu de Naissance
initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1FONC Code Fonction
initstr(str_replace('-','',$a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant
// A voir
initstr($a['dir2NomPrenom'], 40 ) . // Facultatif PPDIR2NOM Nom du seconde principal dirigeant
initstr('', 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant
initstr('', 40 ) . // Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant
initstr($a['dir2LieuNaiss'], 35 ) . // Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant
initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant
initstr(str_replace('-','',$a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant
initstr(str_replace('-','',$a['bilanDate']), 8 , '0', ALIGN_RIGHT) . // Facultatif BILANCLOT Date de dernière clôture de bilan disponible
initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . // Facultatif BILANDUREE Durée du dernier exercice disponible
initstr($a['bilanFL'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible
initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANRES Résultat au dernier bilan disponible
initstr('', 41 ) ; // Facultatif FILLER1 Zone libre
return $str;
}
function genereLignes400($siren, &$nbLignes=0, $optionEOL) {
global $iInsee, $a, $nbLignes;
$mBil=new MBilans($siren);
$tabBilans=@$mBil->listeBilans();
$derBilan=current($tabBilans);
$p=@$mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']);
//print_r($p);
if ($p['CONSOLIDE']=='S') $numLiasse='2033';
else $numLiasse='2050';
$unite=strtoupper($p['MONNAIE_LIV_UNITE']);
if ($unite=='') $unite='U';
$strIni=initstr(400, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité
initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D
initstr($a['Siren'], 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise
initstr($a['Nic'], 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement
initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité
initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide
initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés
initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal
initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', ALIGN_RIGHT) . // DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ
initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', ALIGN_RIGHT) . // MILLESIME Année du bilan
initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ
initstr($p['DUREE_MOIS'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREE Durée de l'exercice en mois
initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ
initstr($p['DUREE_MOIS_PRE'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREEP Durée de l'exercice précédent en mois
initstr($numLiasse,4) . // BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050
initstr($p['CONSOLIDE'], 1) . // BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal
initstr($p['MONNAIE'], 3) . // BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres)
initstr($p['MONNAIE_ORI'], 3) . // BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217*
initstr($unite, 1); // BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions
unset($p['SIREN']);
unset($p['SOURCE']);
unset($p['devise']);
unset($p['DATE_FRAICHE_BILAN']);
unset($p['DATE_CLOTURE']);
unset($p['DATE_CLOTURE_PRE']);
unset($p['DUREE_MOIS']);
unset($p['DUREE_MOIS_PRE']);
unset($p['MONNAIE']);
unset($p['CONSOLIDE']);
unset($p['MONNAIE_ORI']);
unset($p['MONNAIE_LIV_UNITE']);
if (count($p)==0) return '';
$strIni.=initstr(count($p), 4, '0', ALIGN_RIGHT); // BILAN_NBPOSTES Nombre de postes livrés
$nbP=0;$strP=$strRet='';
foreach ($p as $code=>$valeur) {
$nbP++;
if ($valeur>=0) $signe='+';
else $signe='-';
$strP.= initstr($code, 4).$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT);
if($nbP<76) continue;
$strRet.=initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL;
$nbLignes++;
$nbP=0;$strP='';
}
if($nbP<76) {
// Ecriture de la dernière ligne sauf s'il y a dejà 76 postes
$strRet.=initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL;
$nbLignes++;
}
return $strRet;
}
?>