882 lines
49 KiB
PHP
882 lines
49 KiB
PHP
#!/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');
|
|
|
|
$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');
|
|
$iBodacc=new MBodacc();
|
|
|
|
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 '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 diffusion BODACC.".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='';
|
|
if (strpos($tabAdherent['optionPrestation'], 'comptes')) // Export du Bodacc C - Dépôt des comptes
|
|
$strRubrique.="'comptes',";
|
|
if (strpos($tabAdherent['optionPrestation'], 'creations')) // Export des créations
|
|
$strRubrique.="'creations',";
|
|
if (strpos($tabAdherent['optionPrestation'], 'mmd')) // Export des MMD
|
|
$strRubrique.="'mmd',";
|
|
if (strpos($tabAdherent['optionPrestation'], 'procol')) // Export des ProCol
|
|
$strRubrique.="'procol',";
|
|
if (strpos($tabAdherent['optionPrestation'], 'radiations')) // Export des radiations
|
|
$strRubrique.="'radiations',";
|
|
if (strpos($tabAdherent['optionPrestation'], 'ventes')) // Export des ventes cessions
|
|
$strRubrique.="'ventes',";
|
|
|
|
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;
|
|
|
|
$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));
|
|
}
|
|
|
|
$versionEvenClient=0;
|
|
if (preg_match('/^versionEven=(.*)$/mUi', $tabAdherent['optionPrestation'], $matches))
|
|
$versionEvenClient=$matches[1]*1;
|
|
|
|
/*$tabSiren2=array();
|
|
foreach ($tabSiren as $siren) {
|
|
$tabSiren2[]=$siren['siren'];
|
|
}
|
|
sort($tabSiren2);
|
|
$tabSiren=$tabSiren2;
|
|
unset($tabSiren2);
|
|
//die();*/
|
|
|
|
$fields='d.id, d.siren, sirenValide, Bodacc_Num, Bodacc_Date_Parution, Num_Annonce, Rubrique_Bodacc, Rubrique, typeAnnonce, corrNum_Annonce, corrBodacc_Date_Parution, corrPage, corrNumParution, corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, 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, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, administrateur, admNom, admRepr, admAdresse, admCP, admVille, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert';
|
|
$where='1';
|
|
// On filtre les rubriques demandées
|
|
if ($strRubrique<>'') $where.=' AND Rubrique IN('. substr($strRubrique,0,strlen($strRubrique)-1) .') ';
|
|
// On ne prend que les dernières annonces depuis la dernière exécution de la prestation pour le client
|
|
if ($dateDernierTraitement) {
|
|
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) ) ";
|
|
}
|
|
}
|
|
// ... 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') ";
|
|
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) ) ";
|
|
else
|
|
$where.=" AND (d.dateInsert>='MAX(DATE_FORMAT(d.dateInsert,'%Y-%m-%d'))' OR d.dateUpdate>='MAX(DATE_FORMAT(d.dateUpdate,'%Y-%m-%d'))') ";
|
|
|
|
|
|
|
|
|
|
/*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>'2007-11-01' "; // Mederic a supprimer 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';
|
|
|
|
// 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) {
|
|
$strNaf="'".implode("','",$tabNaf)."'";
|
|
$fields='d.id';
|
|
$tables='bodacc_detail d, etablissements e';
|
|
$where.=" AND d.siren=e.siren AND d.siren<>0 AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 GROUP BY d.id;";
|
|
// OR (d.siren<>e.siren AND d.siren=0 AND (d.activite LIKE '%pharmacie%' OR d.activite LIKE '%officine%')) GROUP BY d.id
|
|
}
|
|
}
|
|
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';
|
|
$tables='bodacc_detail d, surveillances_listes s';
|
|
$where.=" AND d.siren=s.siren AND s.siren<>0 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
|
|
if (!$retroActivite)
|
|
$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
|
|
/*dateAjout dateConf dateSuppr rs cp ville indTrt dateDerEnvoi
|
|
Modifier SURBODPRDFTSMEDERIC 484968573 00010 201278081 2008-04-04 0000-00-00 0000-00-00*/
|
|
}
|
|
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
|
|
|
|
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
|
|
echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbAnnonces 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;
|
|
if (count($tabNaf)>0) {
|
|
$fields='d.id, d.siren, sirenValide, Bodacc_Num, Bodacc_Date_Parution, Num_Annonce, Rubrique_Bodacc, Rubrique, typeAnnonce, corrNum_Annonce, corrBodacc_Date_Parution, corrPage, corrNumParution, corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, 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, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, administrateur, admNom, admRepr, admAdresse, admCP, admVille, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert';
|
|
$tables='bodacc_detail d';
|
|
$where='d.id IN (0';
|
|
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
|
|
$where.=','.$annonce['id'];
|
|
}
|
|
$where.=')';
|
|
echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
|
|
$nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true);
|
|
echo date ('Y/m/d - H:i:s')." - 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
|
|
** Gérer les versions de tables even pour les clients
|
|
**
|
|
** Renvoyer le stock à médéric
|
|
**/
|
|
|
|
//print_r($annonce);
|
|
//$k++;
|
|
//$siren=$record['siren'];***/
|
|
|
|
//foreach ($tabAnnonces as $numAnn=>$annonce) {
|
|
// On récupère les 2 intervenants de la procédure
|
|
//if (!in_array($annonce['siren'], $tabSiren)) continue;
|
|
|
|
$numInter=0;
|
|
$inter=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++;
|
|
}
|
|
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++;
|
|
}
|
|
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++;
|
|
}
|
|
/* 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++;
|
|
}*/
|
|
$tribunalCode=$iDb2->select('bodacc', 'Tribunal_Code', 'id='.$annonce['id'], false);
|
|
$tribunalCode=$tribunalCode[0][0];
|
|
$refLigneClient=@$annonce['ref'];
|
|
|
|
$tabEven2=explode(';',$annonce['typeEven']);
|
|
$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;
|
|
}
|
|
}
|
|
$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(FILLER, 5) . // On garde la place pour le NIC
|
|
initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année
|
|
initstr(substr($annonce['Rubrique_Bodacc'],0,1), 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($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($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(FILLER, 5) . // On garde la place pour le NIC
|
|
initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année
|
|
initstr(substr($annonce['Rubrique_Bodacc'],0,1), 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
|
|
$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;
|
|
}
|
|
|
|
/*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;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n";
|
|
die();
|
|
?>
|