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

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