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