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

974 lines
44 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
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.'partenaires/classMGreffes.php');
include_once(INCLUDE_PATH.'partenaires/classMFedaso.php');
include_once(FWK_PATH.'mail/sendMail.php');
function getNextDate($dateCour, $nbJours=7) {
$nextDate=date('Ymd', mktime(0, 0, 0, WDate::dateT('Ymd','m', $dateCour), WDate::dateT('Ymd','d', $dateCour)+$nbJours, WDate::dateT('Ymd','Y', $dateCour)));
return $nextDate;
}
$iDb=new WDB();
$iDb2=new WDB('sdv1');
$iInsee=new MInsee();
$fedaso=new MFedaso();
$tabInfosGlobal=array();
$repPdfInfogreffe='/home/data/ftp/fedaso/statuts/recv';
$repCsvFedaso='/home/data/ftp/fedaso/statuts/send/';
// 1: A supprimer quand Fedaso est nickel... d'ici
switch (''.date('d-m')) {
case '01-01':
case '01-05':
case '25-12':
die();
break;
default:
if (date('N')>5) // Nombre ISO-8601 du jour de la semaine (ajout PHP 5.1.0) de 1 à 7 : Lundi à Dimanche
die();
break;
}
$nbEnvois=200;
$verFedasoFic='v0,6';
$verFedasoRef='v0,11';
$sep=',';
$eol=EOL;
$genereDepot=false; // Génération du lot de traitement pour envoi vers FEDASO
$chargerRetour=true; // Charger le/les retours Fedaso
$initReferentiel=false; // Mettre à jour le référentiel des tables associées
$tabFichierIn=$tabFichLigneCmd=array();
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Gestion des échanges avec Fedaso.
Options :
-d Mettre à disposition les documents à traiter par Fedaso.
-t Forcer la mise à jour hebdomadaire des tables associées.
-c Charger les documents traités et retournés par Fedaso (*)
(*) Option par défaut si aucun argument n'est passé.
";/* -e:X Calculer pour les X derniers exercices (3 par défaut)
-f Calculer les scores financiers
*/
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'd':
$genereDepot=true;
if (date('N')==5) $initReferentiel=true;
break;
case 'r':
$chargerRetour=true;
break;
case 't':
$initReferentiel=true;
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . ' inconnue !'.EOL);
break;
}
} else $tabFichLigneCmd[]=$argv[$i];
}
if (count($tabFichLigneCmd)==0) {
$dh = opendir($repCsvFedaso);
while (false !== ($filename = readdir($dh))) {
if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt')
$tabFichierIn[] = $filename;
}
sort($tabFichierIn);
} else $tabFichierIn=$tabFichLigneCmd;
if ($initReferentiel) {
if (date('N')==5) echo date('Y/m/d - H:i:s') ." - Génération hebdomadaire du référentiel OK...". EOL;
else echo date('Y/m/d - H:i:s') ." - Génération forcée du référentiel OK...". EOL;
$nb=file_put_contents($repPdfInfogreffe."/tableCodesRetours_$verFedasoRef.csv", $fedaso->getRefCodeRetour($sep,$eol));
echo date('Y/m/d - H:i:s') ." - Référentiel 'Codes Retours' : $nb lignes.". EOL;
$nb=file_put_contents($repPdfInfogreffe."/tableCodesVoies_$verFedasoRef.csv", $fedaso->getRefCodeVoie($sep,$eol));
echo date('Y/m/d - H:i:s') ." - Référentiel 'Codes Voies' : $nb lignes.". EOL;
$nb=$iDb->exportCSV('SELECT devIso, devNom FROM sdv1.devise_liste;', $repPdfInfogreffe."/tableCodesDevises_$verFedasoRef.csv",$sep,$eol);
echo date('Y/m/d - H:i:s') ." - Référentiel 'Devises' : $nb lignes.". EOL;
$nb=$iDb->exportCSV('SELECT codActe, libActe FROM jo.tabActes;', $repPdfInfogreffe."/tableCodesActes_$verFedasoRef.csv",$sep,$eol);
echo date('Y/m/d - H:i:s') ." - Référentiel 'Actes' : $nb lignes.". EOL;
$nb=$iDb->exportCSV('SELECT codeFct AS codFonction, libelle AS libFonction FROM jo.bodacc_fonctions;', $repPdfInfogreffe."/tableCodesFonctions_$verFedasoRef.csv",$sep,$eol);
echo date('Y/m/d - H:i:s') ." - Référentiel 'Fonctions' : $nb lignes.". EOL;
$nb=$iDb->exportCSV('SELECT g.bdfFibCodeEtab AS banque, g.bdfFibCodeGuichet AS guichet, b.bdfFibDenom40 AS nomBanque, b.bdfFibDenom10 AS sigleBanque, g.bdfFibDenom20 AS nomGuichet, g.bdfFibAdresse1 AS adresse1, g.bdfFibAdresse2 AS adresse2, g.bdfFibAdresse3 AS adresse3, g.CP, g.Ville
FROM insee.BDF_Etabs b, insee.BDF_Guichets g
WHERE b.bdfFibCodeEtab = g.bdfFibCodeEtab
ORDER BY banque, guichet;', $repPdfInfogreffe."/tableCodesGuichets_$verFedasoRef.csv",$sep,$eol);
echo date('Y/m/d - H:i:s') ." - Référentiel 'Guichets' : $nb lignes.". EOL;
$nb=$iDb->exportCSV('SELECT codPays3 AS codPays, libPays FROM jo.tabPays;', $repPdfInfogreffe."/tableCodesPays_$verFedasoRef.csv",$sep,$eol);
echo date('Y/m/d - H:i:s') ." - Référentiel 'Pays' : $nb lignes.". EOL;
$zip = new ZipArchive;
$res=$zip->open($repPdfInfogreffe."/tableReferentiel_$verFedasoRef.zip", ZipArchive::OVERWRITE);
if ($res === TRUE) {
$zip->addFile($repPdfInfogreffe."/tableCodesRetours_$verFedasoRef.csv", "tableCodesRetours_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesVoies_$verFedasoRef.csv", "tableCodesVoies_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesDevises_$verFedasoRef.csv", "tableCodesDevises_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesActes_$verFedasoRef.csv", "tableCodesActes_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesFonctions_$verFedasoRef.csv", "tableCodesFonctions_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesGuichets_$verFedasoRef.csv", "tableCodesGuichets_$verFedasoRef.csv");
$zip->addFile($repPdfInfogreffe."/tableCodesPays_$verFedasoRef.csv", "tableCodesPays_$verFedasoRef.csv");
$zip->close();
unlink($repPdfInfogreffe."/tableCodesRetours_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesVoies_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesDevises_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesActes_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesFonctions_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesGuichets_$verFedasoRef.csv");
unlink($repPdfInfogreffe."/tableCodesPays_$verFedasoRef.csv");
echo date('Y/m/d - H:i:s') ." - Compression ZIP du référentiel OK...". EOL;
} else {
echo date('Y/m/d - H:i:s') ." - ERREUR ZIP n°$res : Compression ZIP du référentiel impossible !". EOL;
}
}
/*
$nbLignes=$iDb->exportCSV(file_get_contents($sql), $csv.'.tmp');
$fp = fopen("./csv2sql.log", 'a');
fwrite($fp, date('Y-m-d H:i:s')." - $base $sql $csv : $nbLignes lignes extraites".EOL);
*/
$tabTmp=$iDb2->select('fedaso', 'count(*) AS nb', "DATE(dateEnvoi)=DATE(NOW())", false, MYSQL_ASSOC);
$nbEncours=$tabTmp[0]['nb'];
if ($genereDepot && $nbEncours==0) {
$nbEncours=0;
$tabActesASaisir=$tabFichierOut=array();
$tabTmp=$iDb->select('jo.tabActes', 'codActe', 'prioriteSaisie BETWEEN 1 AND 10', false, MYSQL_ASSOC);
foreach ($tabTmp as $actes)
$tabActesASaisir[]=$actes['codActe'];
$nbTypesSaisie=count($tabActesASaisir);
echo date('Y/m/d - H:i:s') ." - Il y a $nbTypesSaisie types d'actes en saisie.". EOL;
while($nbEncours<=$nbEnvois) {
// $tabTmp=$iDb->select('sdv1.logs', 'siren, page, params, dateHeure', "page LIKE 'greffe_%' AND params<>'' AND params NOT LIKE 'Erreur%' GROUP BY siren, page, params ORDER BY dateHeure DESC", false, MYSQL_ASSOC);
$tabTmp=$iDb->select('sdv1.logs', 'siren, page, params, dateHeure', "page LIKE 'greffe_%' AND params<>'' AND siren=0 AND params NOT LIKE 'Erreur%' AND dateHeure>='2010-01-22 00:00:00' ORDER BY dateHeure ASC", false, MYSQL_ASSOC);
foreach ($tabTmp as $actes) {
$siren =$actes['siren'];
$params=$actes['params'];
$pageAc=$actes['page'];
if ($pageAc=='greffe_bilans') {
//http://extranet.scores-decisions.com/datafile.php?q=acte-552144503-PF-20010606-7501-55-B-14450-110812-01.pdf&type=pdf
//$url="http://extranet.scores-decisions.com/pdf/bilan-$siren-$params.pdf";
$url="http://extranet.scores-decisions.com/datafile.php?q=bilan-$siren-$params.pdf&type=pdf";
$racine='bilan';
} elseif ($pageAc=='greffe_actes') {
$url="http://extranet.scores-decisions.com/datafile.php?q=acte-$siren-$params.pdf&type=pdf";
$racine='acte';
//pdf/acte-$siren-$params.pdf";
$tmp=explode('-', $params);
if (!in_array(''.$tmp[0], $tabActesASaisir)) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (exclu)".EOL;
continue;
}
}
if ($siren==0 && !preg_match('/\|/', $params)) {
$dir = "/home/buzuk/";//
// Ouvre un dossier bien connu, et liste tous les fichiers
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (preg_match('/^'.$racine.'-(.*)-'.$params.'\.pdf$/', $file, $matches)) {
//echo "fichier : $file : type : " . filetype($dir . $file) . "\n";
print_r($matches);
$newSiren=$matches[1];
$iDb2->update( 'logs',
array('siren'=>$newSiren),
"page='$pageAc' AND params='$params' AND siren=0 AND dateHeure>='2010-01-22 00:00:00' ORDER BY dateHeure DESC", false);
echo "fichier : $file : siren=$newSiren mis à jour !".EOL;
//die();
}
}
closedir($dh);
}
//die();
}
continue;
// On vérifie si cette acte n'est pas déjà saisie ou en saisie !
$tabTmp2=$iDb2->select('fedaso', 'count(*) AS nb', "siren=$siren AND page='$pageAc' AND params='$params'", false, MYSQL_ASSOC);
if ($tabTmp2[0]['nb']>0) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (en cours)".EOL;
// On efface ce fichier déjà mis à disposition
// unlink($repPdfInfogreffe.'/'.basename($url));
continue;
}
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
if (!$tabPdf) {
$page=getUrl($url, '', '', '', false);
if ($page['code']<>200 || !isset($page['header']['Content-disposition']) || $page['header']['Content-disposition']=='') {
echo date('Y/m/d - H:i:s') ." - ___\t$url (inexistant)".EOL;
continue;
}
@mkdir($repPdfInfogreffe);
$fp=@fopen($repPdfInfogreffe.'/'.basename($url), 'w');
if (!$fp || !fwrite($fp, $page['body']))
echo date('Y/m/d - H:i:s') ." - ___\t$url (erreur fichier local)".EOL;
@fclose($fp);
$tabPdf=getPdfInfo($repPdfInfogreffe.'/'.basename($url));
// randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
if (!$tabPdf) {
echo date('Y/m/d - H:i:s') ." - ___\t$url (vide)".EOL;
continue;
}
$pdfSize= $tabPdf['pdfSize'];
$pdfVer = $tabPdf['version'];
$pdfPage= $tabPdf['nbPages'];
$nbEncours++;
$tabFichierOut[]=basename($url);
if(!$iDb2->insert('fedaso', array( 'siren' => $siren,
'params' => $params,
'page' => $pageAc,
'dateEnvoi' => date('YmdHis'),
))) {
echo date('Y/m/d - H:i:s') ." - ERREUR lors de l'insertion de $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
} else
echo date('Y/m/d - H:i:s') ." - $nbEncours\t$url ($pdfSize ko, $pdfPage pages)".EOL;
if ($nbEncours>=$nbEnvois) {
// On efface le dernier fichier car il est de trop !
//unlink($repPdfInfogreffe.'/'.basename($url));
break(2);
}
}
}
$fichierIndex='lotliensn-'.date('Y-m-d-Hi').'.txt';
$nbActes=count($tabFichierOut);
if (file_put_contents($repPdfInfogreffe.'/'.$fichierIndex, $verFedasoFic.EOL.implode(EOL, $tabFichierOut).EOL.$nbActes))
echo date('Y/m/d - H:i:s') ." - Le fichier index $fichierIndex a été crée pour les $nbActes.". EOL;
else
echo date('Y/m/d - H:i:s') ." - Erreur : Création impossible du fichier index $fichierIndex pour les $nbActes !". EOL;
} elseif ($genereDepot && $nbEncours==$nbEnvois) {
echo date('Y/m/d - H:i:s') ." - Les $nbEncours actes quotidiens ont déjà été déposés.". EOL;
} elseif ($genereDepot && $nbEncours<$nbEnvois) {
echo date('Y/m/d - H:i:s') ." - Erreur : Il n'y a que $nbEncours actes / $nbActes déposés pour Fedaso !". EOL;
}
if (count($tabFichierIn)>0 || count($tabFichLigneCmd)>0) {
echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement du retour Fedaso.".EOL;
$mailReferentiel=array();
for ($i=0; isset($tabFichierIn[$i]); $i++)
{
$nomFichier =$tabFichierIn[$i];
$dateFichier=date('YmdHis', filectime($repCsvFedaso.$nomFichier));
$fp=fopen($repCsvFedaso.$nomFichier, 'r');
if (!$fp) {
echo date ('Y/m/d - H:i:s') ." - Erreur : Impossible d'ouvrir le fichier n°$i à traiter (".$nomFichier.")".EOL;
echo date ('Y/m/d - H:i:s') . " - Fin du traitement".EOL;
die();
}
$nbLignes=0; // Nombre de ligne du fichier
while (!feof($fp))
{
$nbLignes++;
$a = trim(fgets($fp, 1024));
}
echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier n°$i, $nomFichier ($nbLignes lignes à traiter) !".EOL;
$ligne=1;
rewind($fp);
/** Traitement de la 1ère ligne **/
$a = utf8_decode(fgets($fp, 2048));
while (!feof($fp))
{
$ajoutMailRef=false;
/*
$siren = trim($a[0]);
$typeData = strtoupper(trim($a[1]));
$codeRetour = trim($a[2]);
$typeActe = trim($a[3]);
$refDoc = trim($a[4]);
*/
$siren = trim(substr($a,0,9))*1;
$typeData = strtoupper(trim(substr($a,9,1)));
$codeRetour = trim(substr($a,10,3))*1;
$typeActe = trim(substr($a,13,3));
$refDoc = trim(substr($a,16,80));
if ($siren==0) {
$tmp=explode('-', $refDoc);
$siren=$tmp[1];
/*
if (substr($refDoc,4,1)=='_') $pageAc='greffe_bilans';
elseif (substr($refDoc,2,1)=='-') $pageAc='greffe_actes';
$tabTmp=$iDb2->select('fedaso', 'siren', "page='$pageAc' AND params='$refDoc'", false, MYSQL_ASSOC);
if ($tabTmp[0]['siren']>0) $siren=$tabTmp[0]['siren'];
echo date ('Y/m/d - H:i:s')." - ERREUR fichier $nomFichier, ligne $ligne : Siren vide dans $refDoc remplacé par $siren !".EOL;*/
if ($siren==0 || !$iInsee->valideSiren($siren))
die(date ('Y/m/d - H:i:s')." - ERREUR fichier $nomFichier, ligne $ligne : Siren $siren invalide dans $refDoc !".EOL);
}
$typePresta = strtoupper(trim(substr($a,96,1)));
/** @todo Tester les codes retour **/
switch ($codeRetour) {
case 100: // Document illisible
case 101: // Document partiellement lisible
case 102: // Document inattendu
case 103: // Page blanche
case 104: // Fichier absent
case 105: // Page partiellement scannée
case 106: // Document complémentaire concernant une autre société
case 107: // Page(s) manquante(s)
echo date ('Y/m/d - H:i:s')." - ERREUR fichier $nomFichier, ligne $ligne : Code retour n°$codeRetour sur $siren ($typeData) !".EOL;
continue;
break;
case 200: // Aucune information dirigeants
case 210: // Aucune information actionnaire
case 211: // Aucune information capitalistique
case 220: // Aucune information RIB
echo date ('Y/m/d - H:i:s')." - ATTENTION fichier $nomFichier, ligne $ligne à priori vide (Vérifier si fedaso gère bien ces codes) !".EOL;
break;
case 201: // Code fonction inexistant
case 221: // Code guichet inconnu
case 250: // Raison Sociale absente
case 300: // Code pays absent du réferentiel
case 301: // Code devise absent du référentiel
$ajoutMailRef=true;
break;
case 0:
break;
default:
$message="ERREUR fichier $nomFichier, ligne $ligne : Code retour Fedaso inconnu '$codeRetour' pour le document $refDoc dans le fichier $nomFichier";
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "FEDASO : Erreur code retour '$codeRetour' inconnu", $message);
echo date ('Y/m/d - H:i:s')." - $message".EOL;
die();
break;
}
// Récupération de la date du document
$tmp=@explode('-', $refDoc);
$dateDoc=@$tmp[3]*1;
// Transformation de la référence en réf. stockée en base (suppression siren, acte/bilan et .pdf)
$refBase=str_replace('.pdf','',preg_replace('/^(bilan|acte)-\d\d\d\d\d\d\d\d\d-/Ui','', $refDoc));
$tabTypeActes[$refDoc][]=$typeActe;
$tabInsert=array();
$table='';
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (deb)".EOL;
switch ($typeData) {
case 'R': // ligne de RIB
$rib=array();
$rib['codeBanque'] = trim(substr($a, 97, 5))*1;
$rib['codeGuichet'] = trim(substr($a,102, 5))*1;
$rib['numCompte'] = trim(substr($a,107,11));
$rib['clefRib'] = trim(substr($a,118, 2))*1;
$rib['libBanque'] = strtoupper(trim(substr($a,120,40)));
$rib['libGuichet'] = strtoupper(trim(substr($a,160,40)));
$rib['dateInfo'] = trim(substr($a,200, 8))*1;
$rib['dateDispo'] = trim(substr($a,208,14))*1;
$rib['dateSaisie'] = trim(substr($a,222,14))*1;
$rib['refDoc'] = $refBase;
if ($rib['codeBanque']<>0 || $rib['codeGuichet']<>0 || $rib['numCompte']<>'' || $rib['clefRib']<>0 ||
$rib['libBanque']<>'' || $rib['libGuichet']<>'' ) {
$table='fedRib';
$rib['siren'] = $siren;
$rib['source'] = 1500;
$rib['codeRetour']=$codeRetour;
$tabInsert=$rib;
@$tabTypeData[$refDoc][$typeData]++;
if ($ajoutMailRef) {
$mailReferentiel[]="Document $refDoc : Code Banque ou Guichet inconnu ". $rib['libBanque'].' ('.$rib['codeBanque'].') - '.$rib['libGuichet'].' ('.$rib['codeGuichet'].')';
}
}
break;
case 'D': // Ligne de Dirigeants
$dir=array();
$dir['siren'] = $siren;
$dir['raisonSociale']= strtoupper( trim(substr($a, 100,255)));
$dir['dateInfo'] = strtoupper( trim(substr($a,1019, 8)))*1;
$dir['source'] = 1500;
$dir['refDoc'] = $refBase;
if ($dir['dateInfo']==0) {
$dir['dateInfo']=$dateDoc;
}
if ($dir['raisonSociale']<>'')
if (!$iDb2->insert('capitalActions', $dir))
if (!$iDb2->update('capitalActions', $dir, "siren=$siren AND (dateInfo='".$dir['dateInfo']."' OR refDoc='$refBase')"))
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - Insertion impossible sur 'capitalAction' : ". mysql_error().EOL;
$dir['actif'] = trim(substr($a, 97, 1));
if ($dir['actif']=='')
$dir['actif']='NULL';
$dir['typeDir'] = strtoupper( trim(substr($a, 98, 2)));
$dir['dirSiren']=$siren2= trim(substr($a, 355, 9));
$dir['dirSirenValide']=0;
if ($dir['typeDir']=='PM') {
if ($siren2<>0 && $iInsee->valideSiren($siren2))
$dir['dirSirenValide']=1;
else
echo date ('Y/m/d - H:i:s')." - Fichier $nomFichier, ligne $ligne : Prévoir le sirenage des dirigeants $codeRetour sur $siren/$siren2 ($typeData) !".EOL;
}
$dir['dirRS'] = strtoupper( trim(substr($a, 364,255)));
$dir['civilite'] = strtoupper( trim(substr($a, 619, 3)));
$dir['nom'] = strtoupper( trim(substr($a, 622, 60)));
$dir['prenom'] = strtoupper( trim(substr($a, 682, 40)));
$dir['naissance_nom']= strtoupper( trim(substr($a, 722, 60)));
$dir['naissance_date']= trim(substr($a, 782, 8))*1;
$dir['naissance_dept_pays']=strtoupper(trim(substr($a,790,3)));
$dir['naissance_lieu']= strtoupper( trim(substr($a, 793, 40)));
$dir['nat'] = strtoupper( trim(substr($a, 833, 3)));
$dir['adresse_num'] = trim(substr($a, 836, 4))*1;
$dir['adresse_btq'] = strtoupper( trim(substr($a, 840, 1)));
$dir['adresse_codvoie']=strtoupper( trim(substr($a, 841, 4)));
$dir['adresse_libvoie']=strtoupper( trim(substr($a, 845, 32)));
$dir['adresse_comp']= strtoupper( trim(substr($a, 877, 40)));
$dir['adresse_cp'] = strtoupper( trim(substr($a, 917, 5)));
$dir['adresse_ville']= strtoupper( trim(substr($a, 922, 40)));
$dir['adresse_pays']= strtoupper( trim(substr($a, 962, 3)));
if ($ajoutMailRef && $codeRetour==300)
$mailReferentiel[]="Document $refDoc : Code pays '".$dir['adresse_pays']."' ou nationalité '".$dir['nat']."'inconnu !";
$dir['fonction_code']= strtoupper( trim(substr($a, 965, 4)))*1;
$dir['fonction_lib']= strtoupper( trim(substr($a, 969, 50)));
if ($dir['fonction_code']==0 && $dir['fonction_lib']<>'')
$mailReferentiel[]="Document $refDoc : Code Fonction dirigeant inexistant '". $dir['fonction_lib']."'";
$dir['dateDispo'] = strtoupper( trim(substr($a,1027, 14)))*1;
$dir['dateSaisie'] = strtoupper( trim(substr($a,1041, 14)))*1;
$dir['codeRetour'] = $codeRetour;
if ($codeRetour==200) {
$table='';
} else {
@$tabTypeData[$refDoc][$typeData]++;
$tabInsert=$dir;
$table='fedDirigeants';
}
break;
case 'L': // lien
case 'A': // lien Actionnaires
case 'P': // lien Participations
case 'F': // lien Fusion Absorbant
case 'E': // ligne de lien Fusion Absorbée
case 'S': // ligne de lien Scission
$lien=array();
$pct=0;
$lien['capital'] = trim(substr($a, 97, 15))*1;
$lien['deviseCapital'] = strtoupper( trim(substr($a, 112, 3)));
$lien['nbActions'] = trim(substr($a, 115, 15))*1;
if ($ajoutMailRef && $codeRetour==301)
$mailReferentiel[]="Document $refDoc : Code devise inconnu ". $lien['deviseCapital'];
if ($lien['nbActions']<>0 && $lien['capital']<>0)
$lien['actionNominale'] = $lien['capital']/$lien['nbActions'];
if ($lien['capital']<>0 || $lien['deviseCapital']<>'' || $lien['nbActions']<>0) {
$lien['siren'] = $siren;
$lien['source'] = 1500;
$lien['refDoc'] = $refBase;
$lien['dateInfo'] = trim(substr($a, 631, 8))*1; // A voir mais la date du doc n'est pas la date de signature
$lien['dateSaisie'] = trim(substr($a, 782, 14))*1;
if ($lien['dateInfo']==0) {
$lien['dateInfo']=$dateDoc;
}
if (!$iDb2->insert('capitalActions', $lien))
if (!$iDb2->update('capitalActions', $lien, "siren=$siren AND (dateInfo='".$lien['dateInfo']."' OR refDoc='$refBase')"))
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - Insertion impossible sur 'capitalAction' : ". mysql_error().EOL;
}
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (capital)".EOL;
$lien['actif'] = trim(substr($a, 130, 1));
if ($lien['actif']=='')
$lien['actif']='NULL';
$lien['lienPct'] = trim(substr($a, 131, 6))*1;
$lien['lienNbActions'] = trim(substr($a, 137, 15))*1;
$lien['lienMontant'] = trim(substr($a, 152, 15))*1;
if ($lien['capital']>0) {
if ($lien['lienPct']>0)
$pct=$lien['lienPct'];
elseif ($lien['lienMontant']>0) {
$pct=($lien['lienMontant']/$lien['capital'])*100;
$lien['lienPct']=$pct;
}
} elseif($lien['lienNbActions']>0 && $lien['nbActions']) {
$pct=($lien['lienNbActions']/$lien['nbActions'])*100;
$lien['lienPct']=$pct;
}
$lien['MajMin'] = strtoupper( trim(substr($a, 167, 1)));
if ($pct>50 && $lien['MajMin']<>'+')
$lien['MajMin']='+';
$lien['PpPm'] = strtoupper( trim(substr($a, 168, 2)));
$lien['siren2']=$siren2 = trim(substr($a, 170, 9))*1;
$lien['RS'] = strtoupper( trim(substr($a, 179,255)));
$lien['nom'] = strtoupper( trim(substr($a, 434, 40)));
$lien['prenom'] = strtoupper( trim(substr($a, 474, 40)));
$lien['siren2Valide']=0;
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (".$lien['PpPm']." 1)".EOL;
if ($lien['PpPm']=='PM') {
if ($siren2<>0 && $iInsee->valideSiren($siren2))
$lien['siren2Valide']=1;
else
echo date ('Y/m/d - H:i:s')." - Fichier $nomFichier, ligne $ligne : Prévoir le sirenage des actionnaires/participations $codeRetour sur $siren/$siren2 ($typeData) !".EOL;
}
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (".$lien['PpPm']." 2)".EOL;
$lien['civilite'] = strtoupper( trim(substr($a, 514, 3)));
$lien['naissance_nom'] = strtoupper( trim(substr($a, 517, 60)));
$lien['naissance_date'] = strtoupper( trim(substr($a, 577, 8)));
$lien['naissance_dept_pays']= strtoupper( trim(substr($a, 585, 3)));
$lien['naissance_lieu'] = strtoupper( trim(substr($a, 588, 40)));
$lien['nat'] = strtoupper( trim(substr($a, 628, 3)));
$lien['adresse_num'] = strtoupper( trim(substr($a, 639, 4)));
$lien['adresse_btq'] = strtoupper( trim(substr($a, 643, 1)));
$lien['adresse_codvoie'] = strtoupper( trim(substr($a, 644, 4)));
$lien['adresse_libvoie'] = strtoupper( trim(substr($a, 648, 32)));
$lien['adresse_comp'] = strtoupper( trim(substr($a, 680, 40)));
$lien['adresse_cp'] = strtoupper( trim(substr($a, 720, 5)));
$lien['adresse_ville'] = strtoupper( trim(substr($a, 725, 40)));
$lien['adresse_pays'] = strtoupper( trim(substr($a, 765, 3)));
//$lien['dateDepot'] = strtoupper( trim(substr($a, 768, 1)));
$lien['typeLien']=$typeData;
$lien['codeRetour'] = $codeRetour;
if ($siren>0 && $siren2>0 && ($typeData=='P' || $typeData=='A')) {
if ($typeData=='A') {
$actionPart1=2;
$actionPart2=1;
} elseif ($typeData=='P') {
$actionPart1=1;
$actionPart2=2;
}
$ret=$iDb->select('liens', 'count(*) AS nb', "(Siren1 IN ($siren,$siren2) OR Siren2 IN ($siren,$siren2)) AND source>1500", false, MYSQL_ASSOC);
if ($ret[0]['nb']==0) {
if ($lien['adresse_pays']<>'' && $lien['adresse_pays']<>'FRA')
$pays=$lien['adresse_pays'];
else $pays='';
$tabInsertLiens1=array( 'Siren1' => $siren,
'actif' => $lien['actif']*1,
'source' => 1500,
'ActionPart'=> $actionPart1,
'Pmin' => $pct,
'Pmax' => $pct,
'MajMin' => $lien['MajMin'],
'PpPm' => substr($lien['PpPm'],1,1), // P ou M
'Siren2' => $siren2,
'RaisonSociale'=>trim(preg_replace('/ +/', ' ', $lien['RS']/*.' '.$lien['civilite'].' '.$lien['nom'].' '.$lien['prenom']*/)),
'Pays' => $pays,
'dateLien' => $lien['dateInfo'],
'dateInsert'=> date('YmdHis'),
);
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (id AV)".EOL;
$entrep=@$iInsee->getIdentiteEntreprise($siren);
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (id AP)".EOL;
if (substr($entrep['FJ'],0,1)*1<>1) $pppm2='M';
else $pppm2='P';
$rs2=$entrep['Nom'];
$pays2=trim($entrep['Pays']);
$tabInsertLiens2=array( 'Siren1' => $siren2,
'actif' => $lien['actif']*1,
'source' => 1500,
'ActionPart'=> $actionPart2,
'Pmin' => $pct,
'Pmax' => $pct,
'MajMin' => $lien['MajMin'],
'PpPm' => $pppm2, // P ou M
'Siren2' => $siren,
'RaisonSociale'=>$rs2,
'Pays' => $pays2,
'dateLien' => $lien['dateInfo'],
'dateInsert'=> date('YmdHis'),
);
if (!$iDb->insert('liens', $tabInsertLiens1)) {
print_r($tabInsertLiens1);
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - Insertion impossible sur 'jo.liens' 1 : ". mysql_error().EOL;
}
if (!$iDb->insert('liens', $tabInsertLiens2)) {
print_r($tabInsertLiens2);
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - Insertion impossible sur 'jo.liens' 2 : ". mysql_error().EOL;
}
$lien['lienPublie']=1;
}
}
if ($codeRetour==210) {
$table='';
} else {
@$tabTypeData[$refDoc][$typeData]++;
$tabInsert=$lien;
$table='fedLiens';
}
break;
default:
echo date ('Y/m/d - H:i:s')." - ERREUR fichier $nomFichier, ligne $ligne : TypeData '$typeData' inconnu !".EOL;
break;
}
//echo "$nomFichier, $ligne, $codeRetour, $refDoc, $typeData (FIN)".EOL;
if ($table<>'') {
if (!$iDb2->insert($table, $tabInsert) && mysql_errno()<>1062)
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - Insertion impossible sur '$table' : ". mysql_error().EOL;
}
$ligne++;
$a = utf8_decode(fgets($fp, 2048));
}
}
if (count($mailReferentiel)>0) {
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "FEDASO : Penser à modifier le référentiel", implode(EOL, $mailReferentiel));
}
/** Enlever ce die() quand on est prêt à valider les fichiers charger **/
//die();
/** Mise à jour des informations globales de retour : Dates, Types d'actes et structures lues
**/
foreach ($tabTypeActes as $refDoc=>$typeActes) {
// Transformation de la référence en réf. stockée en base (suppression siren, acte/bilan et .pdf)
$params=str_replace('.pdf','',preg_replace('/^(bilan|acte)-\d\d\d\d\d\d\d\d\d-/Ui','', $refDoc));
$tmp=explode('-', $refDoc);
$siren=$tmp[1];
$tabTypeData2=array();
if (isset($tabTypeData[$refDoc]))
foreach ($tabTypeData[$refDoc] as $typeD=>$nbD)
$tabTypeData2=array_merge($tabTypeData2, array('nbData'.$typeD=>$nbD));
echo date ('Y/m/d - H:i:s') . " - Mise à jour des infos retournées pour $refDoc...".EOL;
$typeActes=array_unique($typeActes);
if (!$iDb2->update('fedaso', array_merge($tabTypeData2, array('typeActesLus'=>implode(';', $typeActes),
'dateRetour'=>$dateFichier)),"siren=$siren AND params='$params'"))
echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " - MAJ impossible sur 'fedaso' : ". mysql_error().EOL;
}
echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement du retour Fedaso.".EOL;
} else {
//$message.="Aucun fichier CSF à traiter !\r\n";
echo date ('Y/m/d - H:i:s') . " - Aucun fichier Fedaso à traiter !".EOL;
//if (count($argv)==1) die($strInfoScript);
}
die();
$referer='http://www.journal-officiel.gouv.fr/association/';
if ($verif) {
echo date('Y/m/d - H:i:s') ." - Comptage du nombre d'annonce présentes en base par date de parution...". EOL;
$AnnDb=$iDb->select('asso', 'Date_Parution, count(*) as nb', '1 GROUP BY Date_Parution');
foreach ($AnnDb as $i=>$tabDates) {
if ($tabDates[0]<>'0000-00-00') {
$parDate=$tabDates[0];
$parNb =$tabDates[1];
$dateFmt=str_replace('/', '%2F', WDate::dateT('Y-m-d', 'd/m/Y',$parDate));
$url="http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID=&JTY_WALDEC=&JPA_D_D=$dateFmt&JPA_D_F=".$dateFmt.'&rechercher.x='.rand(1,68).'&rechercher.y='.rand(1,16).'&rechercher=Rechercher';
$page=getUrl($url, '', '', $referer, false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
$ctx=@getTextInHtml($body, '<A href="index.php?ctx=', 'ctx=', '&'); // Clé de contexte entre chaque page
$nbAnnonces=@getTextInHtml($body, '<p>R&eacute;sultat de la recherche : <strong>', '<strong>', 'annonce(s)</strong>');
if ($nbAnnonces<>$parNb && $nbAnnonces<>0)
echo date('Y/m/d - H:i:s') ." - Parution du $parDate : $parNb annonces en base / $nbAnnonces annonces parues !". EOL;
elseif ($nbAnnonces==0)
echo date('Y/m/d - H:i:s') ." - Parution du $parDate : $parNb annonces en base / Plus d'annonces sur le site JO.". EOL;
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
//die();
}
}
die();
}
if ($lastJO==true) {
$strLast=' dernier';
$strDates='';
}
else {
$strLast='';
if ($depotComptes) {
if ($dateDebut==false) {
$dateDeb= getNextDate(date('Ymd'),-5);
$dateDebut= WDate::dateT('Ymd', 'd/m/Y',$dateDeb);
}
if ($dateFin==false) {
$dateF= getNextDate(date('Ymd'),0);
$dateFin= WDate::dateT('Ymd', 'd/m/Y',$dateF);
}
$dateCour= $dateDeb;
}
if ($dateDebut==false || $dateFin==false)
die($strInfoProg);
else
$strDates=" du $dateDebut au $dateFin";
$dateCour=$dateDeb;
}
echo date('Y/m/d - H:i:s') ." - DEBUT du la récupération du$strLast JO Association$strDates".EOL;
echo date('Y/m/d - H:i:s') .' - La durée maximum entre chaque requête est de '. $tempsMaxEntreRequetes .' secondes.'. EOL;
flush();
while ($dateCour<=$dateF || $lastJO) { // Boucle sur les dates
//echo date ('Y/m/d - H:i:s') ." - dateCour($dateCour) <= dateF($dateF) OU lastJO($lastJO)=true". $eol;
for ($i_reg=0; isset($tabReg[$i_reg]) || $lastJO; $i_reg++) { // Boucle sur les régions
if ($lastJO==true) { // Cas récup dernier JO
$region='';
$url='http://www.journal-officiel.gouv.fr/association/index.php?ACTION=showLast';
} else { // On est pas dans la récupération du JO Assoc Jiur
$region=$tabReg[$i_reg];
$reg5=substr($region,0,5);
$dateFmt=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',$dateCour));
if ($depotComptes)
$dateFmt2=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',getNextDate($dateCour,0)));
else
$dateFmt2=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',getNextDate($dateCour)));
//$url='http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID='.urlencode($tabReg[$i_reg]).'&JAN_LIEU_DECL=&JTY_ID=&JTY_WALDEC=&JPA_D_D='. $dateFmt .'&JPA_D_F='. $dateFmt2;//&rechercher.x=44&rechercher.y=6&rechercher=Rechercher
$url='http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID='.$region.'&JTY_WALDEC=&JTY_SIREN=&JPA_D_D='. $dateFmt .'&JPA_D_F='. $dateFmt2.'&rechercher.x='.rand(1,68).'&rechercher.y='.rand(1,16).'&rechercher=Rechercher';
// http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID=ASSOCIATION%2FCOMPT&JTY_WALDEC=&JTY_SIREN=&JPA_D_D=01%2F01%2F1990&JPA_D_F=31%2F12%2F2009&rechercher.x=40&rechercher.y=9&rechercher=Rechercher
$strLast='';
}
$page=getUrl($url, '', '', $referer, false, 'www.journal-officiel.gouv.fr');
$body=$page['body'];
//die(print_r($body));
$ctx=@getTextInHtml($body, '<A href="index.php?ctx=', 'ctx=', '&'); // Clé de contexte entre chaque page
$nbAnnonces=@getTextInHtml($body, '<p>R&eacute;sultat de la recherche : <strong>', '<strong>', 'annonce(s)</strong>');
$dateDerParution=@getTextInHtml($body, 'Paru le : <b>', '<b>', '</b>'); // Date au format JJ/MM/AAAA
$nbPages=ceil($nbAnnonces/25);
if ($nbPages>100) {
echo date('Y/m/d - H:i:s') .' - ERREUR : Il y a plus de 100 pages d\'annonces !'. EOL;
die();
}
echo date('Y/m/d - H:i:s') ." - Clé de contexte = $ctx".EOL;
unset($AnnDb);
$nbAnnDb=0;
if ($lastJO==true) {
echo date('Y/m/d - H:i:s') .' - Derniere parution ASSO le '. $dateDerParution .' de '. $nbAnnonces .' annonces ('. $nbPages .' pages)'. EOL;
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$dateDb=substr($dateDerParution,6,4).'-'.substr($dateDerParution,3,2).'-'.substr($dateDerParution,0,2);
$AnnDb=$iDb->select('asso', 'count(*) AS nb', "Date_Parution='$dateDb'", false, MYSQL_ASSOC);
$nbAnnDb=$AnnDb[0]['nb'];
if ($nbAnnDb==$nbAnnonces) {
echo date('Y/m/d - H:i:s') .' - Toutes les annonces du '. $dateDerParution .' sont en base !'. EOL;
echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL;
die();
}
elseif ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) {
$message=date('Y/m/d - H:i:s') .' - ATTENTION : Il n\'y a que '. $nbAnnDb .' annonces en base sur les '. $nbAnnonces .' annonces présentes au JO Association du '. $dateDerParution .' !'. EOL;
echo $message;
mail('buzuk@free.fr', 'JO Association', $message);
mail('ylenaour@scores-decisions.com', 'JO Association', $message);
mail('lenaoury@gmail.com', 'JO Association', $message);
echo date('Y/m/d - H:i:s') .' - Tentative de récupération des annonces...'. EOL;
}
} else {
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$dateDb=substr($dateCour,0,4).'-'.substr($dateCour,4,2).'-'.substr($dateCour,6,2);
$dateDerParution=WDate::dateT('Y-m-d', 'd/m/Y',$dateDb);
if ($depotComptes) {
switch ($region) {
case 'ASSOCIATION%2FCOMPTE': $strRegSql=" AND typeAsso='ASS' "; break;
case 'FONDATION%2FCOMPTE': $strRegSql=" AND typeAsso='FON' "; break;
case 'FONDS+DE+DOTATION%2FCOMPTE': $strRegSql=" AND typeAsso='FOD' "; break;
case 'AUTRE%2FCOMPTE': $strRegSql=" AND typeAsso='DIV' "; break;
}
$AnnDb=$iDb->select('asso_bilans', 'count(*) AS nb', "Assoc_Date_Declaration='$dateDb' $strRegSql", false, MYSQL_ASSOC);
$strJO='depôts des comptes associations';
} else {
$AnnDb=$iDb->select('asso', 'count(*) AS nb', "Date_Parution='$dateDb'", false, MYSQL_ASSOC);
$strJO='associations';
}
$nbAnnDb=$AnnDb[0]['nb'];
if ($nbAnnDb>=$nbAnnonces) {
echo date('Y/m/d - H:i:s') ." - Les $nbAnnonces annonces $strJO $reg5 du $dateDerParution ($dateDb) sont en base ($nbAnnDb) !". EOL;
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
continue;
}
elseif ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) {
$message=date('Y/m/d - H:i:s') ." - ATTENTION : Il n'y a que $nbAnnDb annonce(s) $strJO en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution !". EOL;
echo $message;
mail('ylenaour@scores-decisions.com', 'JO Association', $message);
mail('lenaoury@gmail.com', 'JO Association', $message);
echo date('Y/m/d - H:i:s') .' - Tentative de récupération des annonces...'. EOL;
}
else
echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnDb annonce(s) $strJO $reg5 en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution !". EOL;
}
$tabAnnonces=explode('<div class="hr"><hr/></div>', $page['body']);
for ($j=1; $j<26 && isset($tabAnnonces[$j]); $j++)
$tabAnn[$j-1]=$tabAnnonces[$j];
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
$referer=$url;
for ($i=2; $i<=$nbPages; $i++)
{
if (!$lastJO) {
$data='';
$date1=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',$dateCour));
if ($depotComptes)
$date2=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',getNextDate($dateCour,0)));
else
$date2=str_replace('/', '%2F', WDate::dateT('Ymd', 'd/m/Y',getNextDate($dateCour)));
$url='http://www.journal-officiel.gouv.fr/association/index.php?ctx='.$ctx.'&page='.$i.'&JRE_ID='.urlencode($region).'&JPA_D_D='.$date1.'&JPA_D_F='.$date2;
} else {
$date1='';$date2='';$data='1';
$url='http://www.journal-officiel.gouv.fr/association/index.php?ctx='.$ctx.'&page='.$i;
}
$page=getUrl($url, '', '', $referer, false, 'www.journal-officiel.gouv.fr');
$tabAnnonces=explode('<div class="hr"><hr/></div>', $page['body']);
for ($j=1; $j<26; $j++) {
$k=$j+(25*($i-1))-1;
if ($k<$nbAnnonces)
$tabAnn[$k]=$tabAnnonces[$j];
}
flush();
if ($i==2)
echo date('Y/m/d - H:i:s') ." - Page $i/$nbPages";
else
echo ", $i/$nbPages";
if ($i==$nbPages)
echo '.'.EOL;
else
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
$tabActivites=array();
for ($i=0; $i<$nbAnnonces; $i++) {
$infoAnnBalo=getInfosAnnonceAsso($tabAnn[$i], $depotComptes);
$tabInfos=array();
preg_match_all("|<i>(.*)</i>|U", $infoAnnBalo['Annonce_Html'], $tabInfos);
$tabInfosGlobal=array_unique(array_merge($tabInfosGlobal, $tabInfos[1]));
// On recherche si nous n'avons pas déjà cette annonce en base !
if ($depotComptes) {
$AnnDb=$iDb->select('asso_bilans', 'count(*) AS nb', "Siren=".$infoAnnBalo['Siren']." AND Waldec='".$infoAnnBalo['Waldec']."' AND dateCloture='".$infoAnnBalo['dateCloture']."'", false, MYSQL_ASSOC);
// $AnnDb[0][0]=0;
} else {
$AnnDb=$iDb->select('asso', 'count(*) AS nb', "Num_Annonce='".$infoAnnBalo['Num_Annonce']."' AND Date_Parution='".$infoAnnBalo['Date_Parution']."' AND Num_Parution='".$infoAnnBalo['Num_Parution']."'", false, MYSQL_ASSOC);
$dateAff=$infoAnnBalo['Date_Parution'];
}
$nbAnnDb=$AnnDb[0]['nb'];
$i2=$i+1;
$strRegion=', '. $region;
if ($depotComptes) {
$table='asso_bilans';
// Si le bilan PDF n'est pas déjà sur le disk, on va le chercher !
switch ($region) {
case 'ASSOCIATION%2FCOMPTE': $infoAnnBalo['typeAsso']='ASS'; break;
case 'FONDATION%2FCOMPTE': $infoAnnBalo['typeAsso']='FON'; break;
case 'FONDS+DE+DOTATION%2FCOMPTE': $infoAnnBalo['typeAsso']='FOD'; break;
case 'AUTRE%2FCOMPTE':
default: $infoAnnBalo['typeAsso']='DIV'; break;
}
$dateAff=$dateCour.' ('.$infoAnnBalo['dateCloture'].')';
$infoAnnBalo['Assoc_Date_Declaration']=$dateCour;
$tabPdf=getPdfInfo($repPdfAssoCpt.'/'.basename($infoAnnBalo['pdfLink']));
if (!$tabPdf) {
$page=getUrl('http://www.journal-officiel.gouv.fr/'.$infoAnnBalo['pdfLink'], '', '', '', false);
@mkdir($repPdfAssoCpt);
$fp=@fopen($repPdfAssoCpt.'/'.basename($infoAnnBalo['pdfLink']), 'w');
if (!fwrite($fp, $page['body']) || !$fp)
echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($infoAnnBalo['pdfLink']) ." pour la parution du $dateAff $strRegion, Annonce $i2/$nbAnnonces, Association \"". $infoAnnBalo['Assoc_Nom'] .'" !'.EOL;
@fclose($fp);
$tabPdf=getPdfInfo($repPdfAssoCpt.'/'.basename($infoAnnBalo['pdfLink']));
randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes);
}
$infoAnnBalo['pdfSize'] = $tabPdf['pdfSize'];
$infoAnnBalo['pdfVer'] = $tabPdf['version'];
$infoAnnBalo['pdfPage'] = $tabPdf['nbPages'];
} else {
$table='asso';
$tabTmp=explode('/',$infoAnnBalo['Activite']);
$tabActivites=array_merge($tabActivites, $tabTmp);
}
if ($nbAnnDb==1) {
echo date('Y/m/d - H:i:s') ." - Parution du $dateAff $strRegion, Annonce $i2/$nbAnnonces, Association \"". $infoAnnBalo['Assoc_Nom'] .'" déjà en base !'.EOL;
// L'annonce est déjà en base !
continue;
} else
echo date('Y/m/d - H:i:s') ." - Parution du $dateAff $strRegion, Annonce $i2/$nbAnnonces, Association \"". $infoAnnBalo['Assoc_Nom'] .'"... enregistrement'.EOL;
if (!$iDb->insert($table, $infoAnnBalo))
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . EOL;
}
if ($lastJO) {
print_r($tabInfosGlobal);
echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL;
die();
}
unset($tabAnn);
} // Fin boucle région
if ($depotComptes)
$dateCour=getNextDate($dateCour,1);
else
$dateCour=getNextDate($dateCour);
} // Fin boucle Data
if ($depotComptes) {
//
$AnnDb=$iDb->select('annonces', 'MAX(dateSource) AS dateMAJ', "typeEven=3200", false, MYSQL_ASSOC);
$dateMaj=$AnnDb[0]['dateMAJ'];
// echo date('Y/m/d - H:i:s') ." - Dernière mise à jour des annonces dépots en collecte en date du $dateMaj.".EOL;
$AnnDb=$iDb->select('asso_bilans',
"Assoc_Nom AS raisonSociale, siren, sirenValide, dateCloture AS dateEffetFinP, Assoc_Date_Declaration AS dateJugement, dateInsert AS dateSource,
'3200' AS typeEven, 'DJOFFJ' AS tribunal, 'JS' AS source, Waldec",
"dateInsert>'$dateMaj' ORDER BY dateEffetFinP DESC", false, MYSQL_ASSOC);
$nbAnnonces=count($AnnDb);
echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnonces annonces dépots à mettre en collecte en date du $dateMaj.".EOL;
foreach ($AnnDb as $i=>$tabInsert) {
$tabTmp=$iInsee->getIdentiteLight($tabInsert['siren']);
$tabInsert['adresse'] = $tabTmp['Adresse'];
$tabInsert['codePostal']= $tabTmp['CP'];
$tabInsert['ville'] = $tabTmp['Ville'];
if (trim($tabInsert['Waldec'])<>'')
$tabInsert['complement']= 'Identifiant Waldec : '.$tabInsert['Waldec'];
unset($tabInsert['Waldec']);
//print_r($tabInsert);
//die();
if (!$iDb->insert('annonces', $tabInsert))
echo '';//date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . EOL;
}
}
echo date('Y/m/d - H:i:s') .' - FIN du script.'. EOL;
?>