#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini 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(); ?>