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

1022 lines
58 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');
$iInsee=new MInsee();
$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='';
$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;
$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;
$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, 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";
$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 ($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) 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') ";
$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) 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'))') ";
$whereCol.=" AND a.dateInsert>='MAX(DATE_FORMAT(a.dateInsert,'%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';
$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) {
$strNaf="'".implode("','",$tabNaf)."'";
$fields='d.id';
$fieldsCol='a.id';
$tables='bodacc_detail d, etablissements e';
$tablesCol='annonces a, 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;";
$whereCol.=" AND a.siren=e.siren AND a.siren<>0 AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) AND DATEDIFF(NOW(), dateJugement)<=60 GROUP BY a.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';
$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<>0 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
$whereCol.=" AND a.siren=s.siren AND a.siren<>0 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' ";
if (!$retroActivite) {
$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 ";
$whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=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
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)';
} 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) {
$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
**/
$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'];
$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;
}
}
$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($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($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($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;
}
/*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();
?>