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