batch/1.1/old/convertSdRecordati.php
2012-10-16 07:44:31 +00:00

323 lines
13 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
//define('VERSION_FICHIER_BODACC','0106');
define('DIR_RECORDATI_IN','/mnt/samba/partage/production/');
/**
* @todo
* 1. Numéroter toutes les procédures OK
* 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc
* 101 Commentaire
* 102 Activite déclaré au Bodacc
* 103 texte rectificatif
* 104 Annonce complète au format texte
* 105 Structure Dirigeants BODACC
* 106 Libellé du Périmètre de la vente
* 3.
* 5. JugesCommissaires à intégrer correctement
Noms et prénoms des dirigeants de l'entreprise ' Anum. ?
Raison sociale du vendeur Anum. 255
Siren du vendeur (en cas de Vente/Cessions) Num. 9
Indicateur de correction du SIREN vendeur (si C, le siren diffusé au BODACC est faut mais S&D a affecté le bon SIREN) ' Car. 1
*/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iBodacc=new MBodacc();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier spécifique Bouchara-Recordati.
";/*Options :
-d Clients en Diffusion Bodacc (par défaut)
-s Clients en Surveillance Bodacc
-e Ne pas tenir compte de la date de dernière exécution du script
-i Ne pas incrémenter les numéros de tour (pour les tests).
";*/
$tabFichLigneCmd=$tabFichier=array();
$argv=$_SERVER['argv'];
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir(DIR_RECORDATI_IN);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' &&
substr($filename, 0,34)=='diffusionBodacc_DIFBODPRDMAIRECORD')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Recordati à traiter !".EOL);
//print_r($tabFichier);
//die();
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichier =$tabFichier[$iFic];
$ligne001=$ligne100=$ligne104=$ligne999=0;
$tabLignes=file(DIR_RECORDATI_IN.$nomFichier);
$fp=fopen(DIR_RECORDATI_IN.$nomFichier.'.csv', 'w');
$message='';
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
$idannPre ='Identifiant Annonce';
$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)';
$txtAnn ='Texte Annonce';
$inter ='Acheteur/Vendeur';
$sirenV ='Siren Vendeur';
$raisonSV='Nom Vendeur';
$sirenA ='Siren Acheteur';
$raisonSA='Nom Acheteur';
$adresseFond='Adresse du fond';
$montantVente='Montant de la vente';
$deviseVente='Devise';
$dateVente='Date de la vente';
$opposition=$txtAnn='Opposition';
$ligne001++;
break;
case 100: // Structure Bodacc
/*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */
$ligne100++;
$idann = substr($ligne, 3 , 10 )*1; // Id interne de l'annonce S&D
if ($idannPre<>$idann) {
/** Recherche de l'oppositions
**/
if (preg_match('/Oppositions(?: )\:(.*)(?:Commentaires|\.$)/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
/** Rechercher du montant de la vente
**/
if (preg_match("/(?:prix|montant|indémni|indemni|évalu|evalu|éstim|estim)\D{1,15}([0-9\.,\?\s ]*)(?:eur|euro|euros)/i", $txtAnn, $matches)) {
$montantVente=''.trim($matches[1]);
echo "Montant de la vente AV: $montantVente\n";
if (substr($montantVente,-3,1)==',') {
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI1\n";
}
elseif (substr($montantVente,-3,1)=='.') {
echo "'".substr($montantVente,-3,3)."'\n";
$montantVente=substr($montantVente,0,strlen($montantVente)-3);
// echo "ICI2\n";
}
$montantVente=strtr($montantVente,array('.'=>'',','=>'',' '=>''));
$deviseVente='EUR';
//echo "Montant de la vente AP: $montantVente\n";
}
/** Recherche de la date de la vente
**/
if ($dateVente=='00/00/0000') {
if (preg_match_all("/([0-9].{1,3})(janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre).{1,2}([0-9]{4,4})/i", $txtAnn, $matches)) {
//print_r($matches);
//echo "Date de la vente : $dateVente\n";
$dateVente=end($matches[0]);
//die($txtAnn);
}
}
if ($catEven=='procol') {
$adresseFond=$adresse;
if (preg_match('/Complément de jugement(?: )\:(.*)$/Uis', $txtAnn, $matches))
$opposition=trim($matches[1]);
else
$opposition='';
}
$ligneOut="$idannPre;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn";
if ($idannPre<>'Identifiant Annonce') {
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n";
$message.="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message.="Tribunal : $libTri"."\r\n";
$message.="\r\n";
if (trim($raisonSA)<>'') {
$message.="Acheteur : $raisonSA $sirenAffA"."\r\n";
if ($montantVente*1>0)
$message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n";
$message.="\r\n";
}
$message.="$txtEven"."\r\n";
$message.="\r\n";
$message.=$txtAnn."\r\n";
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
}
$sirenA=$raisonSA=$sirenV=$raisonSV=$adresseFond=$montantVente=$deviseVente=$dateVente='';
}
$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
$adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '.
substr($ligne, 600 , 1 ).' '.
substr($ligne, 601 , 5 ).' '.
substr($ligne, 606 , 50 ).' '.
substr($ligne, 656 , 50 ).' '.
substr($ligne, 706 , 40 ).', '.
substr($ligne, 746 , 5 ).' '.
substr($ligne, 751 , 45 )));
$venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8));
$venteMt= substr($ligne, 1169 , 15 );
$venteDev=substr($ligne, 1184 , 3 );
$dateInsert=substr($ligne, 1910 , 8 );
$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='';
$inter='Vendeur'; // Par défaut, nous sommes avec un vendeur
foreach ($even as $codeEven)
if ($codeEven<>0) {
$txtEven.=$iBodacc->getEvenement($codeEven).', ';
$catEven=$iBodacc->getChapitreEvenement($codeEven);
if ($codeEven==5700) {
$inter='Acheteur'; // L'interlocuteur est l'acheteur !
$sirenA=$siren;
$raisonSA=$raisonS;
$adresseFond=$adresse;
$montantVente=$venteMt;
$deviseVente=$venteDev;
$dateVente=$venteDt;
}
}
else
$txtEven.='';
if ($inter=='Vendeur') {
$sirenV=$siren;
$raisonSV=$raisonS;
}
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
if ($idannPre<>$idann) $ecrireLignePre=true;
else $ecrireLignePre=false;
$idannPre=$idann;
break;
case 104: // Annonce
$ligne104++;
$txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce
break;
case 999: // Ligne ignorée
//$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$txtAnn";
$opposition=preg_replace('/.*Oppositions \:/i','', $txtAnn);
$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn";
// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn";
if ($idann<>'Identifiant Annonce') {
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n";
$message.="Source : BODACC n°$numPar $bodacc du $datePar. ";
if (trim($dateInsert)<>'')
$message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n";
$message.="Tribunal : $libTri"."\r\n";
$message.="\r\n";
if (trim($raisonSA)<>'') {
$message.="Acheteur : $raisonSA $sirenAffA"."\r\n";
if ($montantVente*1>0)
$message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n";
$message.="\r\n";
}
$message.="$txtEven"."\r\n";
$message.="\r\n";
$message.=$txtAnn."\r\n";
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
}
$ligne999++;
$ecrireLignePre=true;
break;
default: // Ligne non gérée
break;
}
if ($ecrireLignePre)
fwrite($fp, $ligneOut.EOL);
}
if ($catEven<>'Chapitre') {
sendMail('infoslegales@scores-decisions.com', 'c.ferault@bouchara-recordati.fr,f.hadjadj@bouchara-recordati.fr,a.mandar@bouchara-recordati.fr', "Surveillance Annonces Legales ($catEven)", $message);
sendMail('infoslegales@scores-decisions.com', '<Yoann Le Naour>ylenaour@scores-decisions.com,<Fabienne Zicarro>fzicaro@scores-decisions.com', "Surveillance Annonces Legales ($catEven)", $message);
}
fclose($fp);
if (bzip2(DIR_RECORDATI_IN.$nomFichier, DIR_RECORDATI_IN.$nomFichier)) {
unlink(DIR_RECORDATI_IN.$nomFichier);
echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL;
}
}
echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL;
die();
?>