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

468 lines
18 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/');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(INCLUDE_PATH.'scores/classMScores.php');
//include_once(INCLUDE_PATH.'partenaires/classMRncs.php');
include_once(FWK_PATH.'mail/sendMail.php');
$iBodacc=new MBodacc();
$iInsee=new MInsee();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier spécifique Verdoso.
";/*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,35)=='diffusionBodacc_DIFBODPRDMAIVERDOSO')
$tabFichier[] = $filename;
}
sort($tabFichier);
} else $tabFichier=$tabFichLigneCmd;
if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Verdoso à traiter !".EOL);
//print_r($tabFichier);
//die();
$message='';
$ligne001=$ligne100=$ligne104=$ligne999=0;
for ($iFic=0; isset($tabFichier[$iFic]); $iFic++)
{
$nomFichier =$tabFichier[$iFic];
$ligne001=$ligne100=$ligne104=$ligne999=0;
$tabLignes=file(DIR_RECORDATI_IN.$nomFichier);
$nomFichierHebdo=DIR_RECORDATI_IN.'SD_Verdoso_'.date('Y\sW').'.csv';
$fp=fopen($nomFichierHebdo, 'a+');
while(!feof($fp)) {
fgets($fp,4096);
$nbLignesDeja++;
}
rewind($fp);
/*
echo "Fichier Hebdomadaire: $nomFichierHebdo".EOL;
echo "Il y a $nbLignesDeja ligne(s) dans le fichier à l'ouverture".EOL;
*/
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='Opposition';
$naf='NAF';
$nafLib='Libellé NAF';
$fj='Forme Jur.';
$fjLib='Libellé Forme Juridique';
$effectif='Effectif';
$typeEf="Type d'effectif";
$dateBilan='Date Bilan';
$ca="Chiffre d'affaire en ME";
$typeCa='Type CA';
$capital='Capital';
$dept='Dépt. Siège';
$annee='Année de Création';
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
if ($nbLignesDeja<2) {
fwrite($fp, $ligneOut.EOL);
}
$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' && !$ignoreAnnPre) {
// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
fwrite($fp, $ligneOut.EOL);
$sirenAffV=implode(' ', str_split($sirenV,3));
if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')';
else $sirenAffA='';
$message.="Siren : $sirenAffV\r\n";
$message.="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.="NAF : $nafLib ($naf)\r\n";
$message.="FJ : $fjLib ($fj)\r\n";
$message.="Effectif $typeEf : $effectif\r\n";
$message.="Dernier Bilan : $dateBilan\r\n";
$message.="Chiffre d'Affaire $typeCa: $ca ME\r\n";
$message.="Capital : $capital\r\n";
$message.="Département : $dept\r\n";
$message.="Année de création : $annee\r\n";
/*
[dir1Titre] => Gérant
[dir1NomPrenom] => TROJMAN Stella
[Activite] => Travaux de revêtement des sols et des murs
[dir1DateNaiss] => 1941
*/
$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;
if ($sirenV>1000)
$tabIdentite=@$iInsee->getIdentiteEntreprise($sirenV,0,0,0,0);
else
$tabIdentite=array();
//getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) {
$naf=$tabIdentite['NafEnt'];
$nafLib=$tabIdentite['NafEntLib'];
$fj=$tabIdentite['FJ'];
$fjLib=$tabIdentite['FJ_lib'];
$capital=$tabIdentite['Capital'].' '.$tabIdentite['CapitalDev'];
$dept=$tabIdentite['Dept'];
$annee=substr($tabIdentite['DateCreaEt'],0,4)*1;
if ($annee>substr($tabIdentite['DateCreaEn'],0,4)*1)
$annee=substr($tabIdentite['DateCreaEn'],0,4);
if ($annee>substr($tabIdentite['dateImmat'],0,4)*1)
$annee=substr($tabIdentite['dateImmat'],0,4);
$effInsee=$tabIdentite['Effectif'];
$caInsee=$tabIdentite['TrancheCA'];
$effBilan=$tabIdentite['bilanYP'];
$caBilan=$tabIdentite['bilanFL'];
$dateBilan=str_replace('//','',WDate::dateT('Ymd','d/m/Y',$tabIdentite['bilanDate']));
if ($effBilan>0) { $effectif=$effBilan; $typeEf='Réel'; }
elseif ($effInsee>0) { $effectif=$effInsee; $typeEf='Estimé'; }
else { $effectif='N/C'; $typeEf=''; }
$caEstime=0;
if ($caInsee<5 || $tabIdentite['bilanDate']*1==0)
$caEstime=$iInsee->getCAnafEffectif($naf, $effInsee);
if ($caInsee>=5 || $caEstime>=10000000 || $caBilan>=10000000) {
if ($caBilan>0) { $ca=round($caBilan/1000000); $typeCa='Réel'; }
elseif ($caInsee==5){ $ca=10; $typeCa='Approchant'; }
elseif ($caInsee==6){ $ca=20; $typeCa='Approchant'; }
elseif ($caInsee==7){ $ca=50; $typeCa='Approchant'; }
elseif ($caInsee==8){ $ca=100; $typeCa='Approchant'; }
elseif ($caInsee==9){ $ca=200; $typeCa='Approchant'; }
else { $ca=round($caEstime/1000000); $typeCa='Estimé'; }
$ignoreAnnPre=false;
} else {
// On ignore cette ligne
$txtEven=substr($txtEven,0,strlen($txtEven)-2);
$txtAnn='';
if ($idannPre<>$idann) $ecrireLignePre=true;
else $ecrireLignePre=false;
$idannPre=$idann;
$ignoreAnnPre=true;
}
/*print_r($tabIdentite);
die();
*/
}
$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";
if ($idann<>'Identifiant Annonce' && !$ignoreAnnPre) {
//$ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
$ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn";
fwrite($fp, $ligneOut.EOL);
$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.="NAF : $nafLib ($naf)\r\n";
$message.="FJ : $fjLib ($fj)\r\n";
$message.="Effectif $typeEf : $effectif\r\n";
$message.="Dernier Bilan : $dateBilan\r\n";
$message.="Chiffre d'Affaire $typeCa: $ca ME\r\n";
$message.="Capital : $capital\r\n";
$message.="Département : $dept\r\n";
$message.="Année de création : $annee\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);
}
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°$iFic, $nomFichier vient d'être historisé.".EOL;
}
}
if (date('w')==5) {
$tabAttached=array($nomFichierHebdo);
$messageInfo="Bonjour,
Veuillez trouver le fichier hebdomadaire des Jugements d'Ouvertures de Sauvegarde et de Redressement Judiciaire.
Bien Cordialement,
Le service Support.
--
SCORES & DECISIONS
Service support
1, rue de Clairefontaine - 78120 RAMBOUILLET
tél : 33 (0)1 75 43 80 10
fax : 33 (0)1 75 43 85 74
support@scores-decisions.com
http://www.scores-decisions.com/
Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises
Pensez à l'environnement avant d'imprimer ce message !
Save paper - think before you print";
//$emailEnvoi='vfahmy@verdoso.com,contact@scores-decisions.com';
$emailEnvoi='ylenaour@scores-decisions.com';
if ($catEven<>'Chapitre') {
sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Annonces Legales", $messageInfo, '', $tabAttached);
//sendMail('infoslegales@scores-decisions.com', 'jean.frederic.lambert@gmail.com', "Surveillance Annonces Legales", $messageInfo, '', $tabAttached);
}
}
echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL;
die();
?>