2012-10-16 07:44:31 +00:00
#!/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
2013-06-19 08:24:49 +00:00
* 1. Num<EFBFBD> roter toutes les proc<EFBFBD> dures OK
2012-10-16 07:44:31 +00:00
* 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc
* 101 Commentaire
2013-06-19 08:24:49 +00:00
* 102 Activite d<EFBFBD> clar<EFBFBD> au Bodacc
2012-10-16 07:44:31 +00:00
* 103 texte rectificatif
2013-06-19 08:24:49 +00:00
* 104 Annonce compl<EFBFBD> te au format texte
2012-10-16 07:44:31 +00:00
* 105 Structure Dirigeants BODACC
2013-06-19 08:24:49 +00:00
* 106 Libell<EFBFBD> du P<EFBFBD> rim<EFBFBD> tre de la vente
2012-10-16 07:44:31 +00:00
* 3.
2013-06-19 08:24:49 +00:00
* 5. JugesCommissaires <EFBFBD> int<EFBFBD> grer correctement
2012-10-16 07:44:31 +00:00
2013-06-19 08:24:49 +00:00
Noms et pr<EFBFBD> noms des dirigeants de l 'entreprise ' Anum . ?
2012-10-16 07:44:31 +00:00
Raison sociale du vendeur Anum . 255
Siren du vendeur ( en cas de Vente / Cessions ) Num . 9
2013-06-19 08:24:49 +00:00
Indicateur de correction du SIREN vendeur ( si C , le siren diffus<EFBFBD> au BODACC est faut mais S & D a affect<EFBFBD> le bon SIREN ) ' Car . 1
2012-10-16 07:44:31 +00:00
*/
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]
2013-06-19 08:24:49 +00:00
Conversion d ' un flux surveillance / diffusion Bodacc S & D en fichier sp<EFBFBD> cifique Bouchara - Recordati .
2012-10-16 07:44:31 +00:00
" ;/*Options :
2013-06-19 08:24:49 +00:00
- d Clients en Diffusion Bodacc ( par d<EFBFBD> faut )
2012-10-16 07:44:31 +00:00
- s Clients en Surveillance Bodacc
2013-06-19 08:24:49 +00:00
- e Ne pas tenir compte de la date de derni<EFBFBD> re ex<EFBFBD> cution du script
- i Ne pas incr<EFBFBD> menter les num<EFBFBD> ros de tour ( pour les tests ) .
2012-10-16 07:44:31 +00:00
" ;*/
$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 ;
2013-06-19 08:24:49 +00:00
if ( count ( $tabFichier ) == 0 && count ( $tabFichLigneCmd ) == 0 ) die ( date ( 'Y/m/d - H:i:s' ) . " - Aucun fichier Recordati <20> traiter ! " . EOL );
2012-10-16 07:44:31 +00:00
//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 ) {
2013-06-19 08:24:49 +00:00
case 1 : // Ligne ignor<6F> e
// Ecriture de l'ent<6E> te
2012-10-16 07:44:31 +00:00
$idannPre = 'Identifiant Annonce' ;
$siren = 'Siren' ;
$nic = 'Nic' ;
2013-06-19 08:24:49 +00:00
$ref = 'R<> f<EFBFBD> rence' ;
2012-10-16 07:44:31 +00:00
$numPar = 'Parution' ;
$bodacc = 'Bodacc' ;
$datePar = 'Date parution' ;
2013-06-19 08:24:49 +00:00
$numAnn = 'Num<75> ro Annonce' ;
2012-10-16 07:44:31 +00:00
$cor = 'Type Annonce' ;
$libTri = 'Tribunal' ;
2013-06-19 08:24:49 +00:00
$numRC = 'Num<75> ro RCS' ;
2012-10-16 07:44:31 +00:00
$raisonS = 'Raison sociale' ;
$catEven = 'Chapitre' ;
2013-06-19 08:24:49 +00:00
$txtEven = 'Ev<45> nement(s)' ;
2012-10-16 07:44:31 +00:00
$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
2013-06-19 08:24:49 +00:00
/*Identit<69> du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */
2012-10-16 07:44:31 +00:00
$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
**/
2013-06-19 08:24:49 +00:00
if ( preg_match ( " /(?:prix|montant|ind<6E> mni|indemni|<7C> valu|evalu|<7C> stim|estim) \ D { 1,15}([0-9 \ ., \ ? \ s ]*)(?:eur|euro|euros)/i " , $txtAnn , $matches )) {
2012-10-16 07:44:31 +00:00
$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 ;
2013-06-19 08:24:49 +00:00
if ( preg_match ( '/Compl<70> ment de jugement(?: )\:(.*)$/Uis' , $txtAnn , $matches ))
2012-10-16 07:44:31 +00:00
$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 " ;
2013-06-19 08:24:49 +00:00
$message .= " Source : BODACC n<> $numPar $bodacc du $datePar . " ;
2012-10-16 07:44:31 +00:00
if ( trim ( $dateInsert ) <> '' )
2013-06-19 08:24:49 +00:00
$message .= 'Entr<74> e en base S&D : ' . WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateInsert ) . " \r \n " ;
2012-10-16 07:44:31 +00:00
$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 = '' ;
}
2013-06-19 08:24:49 +00:00
$siren = substr ( $ligne , 13 , 9 ); // Siren de l'entreprise concern<72> e par l'annonce
2012-10-16 07:44:31 +00:00
$nic = trim ( substr ( $ligne , 22 , 5 )); // Nic
2013-06-19 08:24:49 +00:00
$ref = trim ( substr ( $ligne , 71 , 18 )); // R<> f<EFBFBD> rence Client
$numPar = substr ( $ligne , 27 , 3 ); // Num<75> ro de parution du Bodacc dans l'ann<6E> e
2012-10-16 07:44:31 +00:00
$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
2013-06-19 08:24:49 +00:00
$numAnn = substr ( $ligne , 39 , 5 ); // Num<75> 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 <20> une pr<70> c<EFBFBD> dente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce
$corNumA = substr ( $ligne , 48 , 5 ); // Num<75> ro de l'annonce corrig<69> e Si annonce diff<66> rent de Insertion
$corDate = substr ( $ligne , 53 , 8 ); // Date du Bodacc de l'annonce corrig<69> e Si annonce diff<66> rent de Insertion. Format AAAAMMJJ
$corPage = substr ( $ligne , 61 , 6 ); // Premi<6D> re page du Bodacc de l'annonce corrig<69> e Si annonce diff<66> rent de Insertion
$corNumP = substr ( $ligne , 67 , 4 ); // Num<75> ro parution du Bodacc dans l'ann<6E> e de l'annonce corrig<69> e Si annonce diff<66> rent de Insertion
2012-10-16 07:44:31 +00:00
$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' )
2013-06-19 08:24:49 +00:00
$cor = " - Annonce n<> $corNumA $corNumP , page $corPage , du " . WDate :: dateT ( 'Ymd' , 'd/M/Y' , $corDate );
2012-10-16 07:44:31 +00:00
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 ;
}
2013-06-19 08:24:49 +00:00
$codeTri = substr ( $ligne , 89 , 6 ); // Code Tribunal Codification interne utilis<69> e par le Bodacc
2012-10-16 07:44:31 +00:00
$libTri = $iBodacc -> getTribunalNom ( $codeTri );
2013-06-19 08:24:49 +00:00
$numRC = trim ( substr ( $ligne , 95 , 9 )); // Num<75> ro de RC (Registre du Commerce) de l'entreprise
2012-10-16 07:44:31 +00:00
$raisonS = trim ( substr ( $ligne , 104 , 150 )); // Raison sociale de l'entreprise
$even = array ();
2013-06-19 08:24:49 +00:00
$even [ 7 ] = substr ( $ligne , 996 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 1 Cf. Table EVEN
$even [ 6 ] = substr ( $ligne , 1000 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 2 Cf. Table EVEN
$even [ 5 ] = substr ( $ligne , 1004 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 3 Cf. Table EVEN
$even [ 4 ] = substr ( $ligne , 1008 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 4 Cf. Table EVEN
$even [ 3 ] = substr ( $ligne , 1012 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 5 Cf. Table EVEN
$even [ 2 ] = substr ( $ligne , 1016 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 6 Cf. Table EVEN
$even [ 1 ] = substr ( $ligne , 1020 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 7 Cf. Table EVEN
$even [ 0 ] = substr ( $ligne , 1024 , 4 ) * 1 ; // Code Ev<45> nement Bodacc n<> 8 Cf. Table EVEN
2012-10-16 07:44:31 +00:00
$txtEven = '' ;
2013-06-19 08:24:49 +00:00
$inter = 'Vendeur' ; // Par d<> faut, nous sommes avec un vendeur
2012-10-16 07:44:31 +00:00
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 ;
2013-06-19 08:24:49 +00:00
case 999 : // Ligne ignor<6F> e
2012-10-16 07:44:31 +00:00
//$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 " ;
2013-06-19 08:24:49 +00:00
$message .= " Source : BODACC n<> $numPar $bodacc du $datePar . " ;
2012-10-16 07:44:31 +00:00
if ( trim ( $dateInsert ) <> '' )
2013-06-19 08:24:49 +00:00
$message .= 'Entr<74> e en base S&D : ' . WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateInsert ) . " \r \n " ;
2012-10-16 07:44:31 +00:00
$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 ;
2013-06-19 08:24:49 +00:00
default : // Ligne non g<> r<EFBFBD> e
2012-10-16 07:44:31 +00:00
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 );
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Le fichier n<> $i , $nomFichier vient d'<27> tre historis<69> . " . EOL ;
2012-10-16 07:44:31 +00:00
}
}
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - Conversion termin<69> e ! " . EOL ;
2012-10-16 07:44:31 +00:00
die ();
?>