363 lines
16 KiB
PHP
363 lines
16 KiB
PHP
|
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
|
|||
|
<?php
|
|||
|
|
|||
|
error_reporting(E_ALL & ~E_NOTICE);
|
|||
|
include_once(FWK_PATH.'common/chiffres.php');
|
|||
|
include_once(FWK_PATH.'common/dates.php');
|
|||
|
include_once(INCLUDE_PATH.'insee/classMInsee.php');
|
|||
|
include_once(FWK_PATH.'mail/sendMail.php');
|
|||
|
|
|||
|
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
|
|||
|
Recherche de toutes les activit<EFBFBD>s non mises <EFBFBD> jours sur les entreprises et associations de la base S&D.
|
|||
|
|
|||
|
Options :
|
|||
|
-t Calculer tous les ratios (*)
|
|||
|
-i:XXX Reprendre <EFBFBD> la ligne XXX
|
|||
|
-h Reprendre les activit<EFBFBD>s de l'historique des annonces
|
|||
|
|
|||
|
(*) Option par d<EFBFBD>faut si aucun argument n'est pass<EFBFBD>.
|
|||
|
";/* -e:X Calculer pour les X derniers exercices (3 par d<>faut)
|
|||
|
-f Calculer les scores financiers
|
|||
|
*/
|
|||
|
$iDeb=0;
|
|||
|
$updateCache=$histo=false;
|
|||
|
|
|||
|
for ($i=1; isset($argv[$i]); $i++) {
|
|||
|
if (substr($argv[$i],0,1)=='-') {
|
|||
|
switch (strtolower(substr($argv[$i],1,1))) {
|
|||
|
case 'h':
|
|||
|
$histo=true;
|
|||
|
break;
|
|||
|
case 'i':
|
|||
|
$iDeb=substr($argv[$i],3)*1;
|
|||
|
break;
|
|||
|
case 'c':
|
|||
|
$updateCache=true;
|
|||
|
break;
|
|||
|
case '-':
|
|||
|
case '?':
|
|||
|
die($strInfoScript);
|
|||
|
break;
|
|||
|
default:
|
|||
|
die('Option '. $argv[$i] . ' inconnue !'.EOL);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$iInsee=new MInsee();
|
|||
|
|
|||
|
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de r<>cup<75>ration des Activit<69>s issus de annonces...".EOL;
|
|||
|
|
|||
|
if ($histo) {
|
|||
|
/** Reprise de toutes les activit<EFBFBD>s des annonces de l'historique
|
|||
|
**/
|
|||
|
$iDb =new WDB('historiques');
|
|||
|
$iDb2=new WDB('historiques');
|
|||
|
$iDb3=new WDB();
|
|||
|
$nbRows=$iDb->select( 'siren_uniques', 'siren', "activite IS NULL", false, MYSQL_ASSOC, true);
|
|||
|
//echo mysql_error().EOL;
|
|||
|
if ($nbRows>0)
|
|||
|
echo date('Y/m/d - H:i:s') ." - Il reste $nbRows siren pour lesquels il faut reprendre l'activit<69> en historique Bodacc...".EOL;
|
|||
|
|
|||
|
$k=0;
|
|||
|
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
|
|||
|
//if (date('Hi')*1>=430 && date('Hi')*1<730) die();
|
|||
|
$k++;
|
|||
|
$nbActSiren=0;
|
|||
|
$siren=$entrep['siren'];
|
|||
|
echo date('Y/m/d - H:i:s') ." - $k/$nbRows - $siren ... ";
|
|||
|
$tabInsert=array( 'siren'=>$siren,
|
|||
|
'source'=>'bodaccHisto');
|
|||
|
$bodaccHisto=$iDb2->select( 'entrep e, texte x',//.codEven Code <20>v<EFBFBD>nement du mouvement Bodacc libEven ',
|
|||
|
'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt',
|
|||
|
"e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.DATE<20050101 AND x.annonceTxt LIKE '%ctivit%' GROUP BY e.ANBASE ORDER BY e.DATE ASC", true, MYSQL_ASSOC);
|
|||
|
if (count($bodaccHisto)>0) {
|
|||
|
foreach ($bodaccHisto as $idx=>$ann) {
|
|||
|
if ( ($ann['CODEVE']<20) ||
|
|||
|
($ann['CODEVE']>=30 && $ann['CODEVE']<42) ||
|
|||
|
($ann['CODEVE']>=51 && $ann['CODEVE']<80) ) {
|
|||
|
$strDate='';
|
|||
|
if (preg_match('/(.*)(Date d\'effet|Date.de.d.but d.activit.)(?:.|)\:(.*)(\d\d\d\d)$/Ui', $ann['annonceTxt'], $matches)) {
|
|||
|
$strDate=trim($matches[3].$matches[4]);
|
|||
|
}
|
|||
|
if (preg_match('/(.*)Activit(?:e|<7C>)(?:.|)\:(.*)(?:Adresse(?:.*|)|Commentaires?|Administration|Etablissement principal|Date d\'effet|Date.de.d.but d.activit.|Capital|Nom commercial)(?:.|)\:/Uis', $ann['annonceTxt'], $matches))
|
|||
|
if (strpos(substr($matches[1],-20),'cess') === false &&
|
|||
|
strpos(substr($matches[1],-20),'date') === false) {
|
|||
|
$tabInsert['activite']=$matches[2];
|
|||
|
$tabInsert['idSource']=$ann['ANBASE'];
|
|||
|
$tabInsert['dateSource']=$ann['DATE'];
|
|||
|
$tabInsert['dateEffetTxt']=$strDate;
|
|||
|
$tabInsert['dateEffet']=WDate::dateT('dMY', 'Ymd', $strDate);
|
|||
|
$iDb3->insert('activiteReel', $tabInsert);
|
|||
|
$nbActSiren++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$iDb2->update('siren_uniques', array('activite'=>$nbActSiren), "siren=$siren");
|
|||
|
echo "$nbActSiren activit<69>(s).".EOL;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//'bodaccHisto', 'kbis',
|
|||
|
$tabSrc=array( 'bodacc'=>array('lib'=>'Bodacc',
|
|||
|
'db'=>'jo',
|
|||
|
'table'=>'bodacc_detail',
|
|||
|
'zones'=>"id, siren, Bodacc_Date_Parution AS dateSource, activite, '' AS dateEffetTxt, IF(dateEffet>0, dateEffet, IF(dateDebutActivite>0, dateDebutActivite, IF(dateCessationActivite>0, dateCessationActivite, Bodacc_Date_Parution))) AS dateEffet, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
|
|||
|
'where'=>"siren>1000 AND recupAct=0 AND activite<>'' AND activite<>'Non pr<70>cis<69>e' AND Rubrique NOT IN ('ventes', 'procol') AND dateSuppr=0",
|
|||
|
'go'=>1,
|
|||
|
'idSrc'=>'bodacc'),
|
|||
|
'asso'=>array( 'lib'=>'Associations',
|
|||
|
'db'=>'jo',
|
|||
|
'table'=>'asso',
|
|||
|
'zones'=>"id, siren, Date_Parution AS dateSource, Assoc_Objet AS activite, Assoc_NObjet AS activiteN, Assoc_AObjet AS activiteP, Assoc_Date_Declaration AS dateEffetTxt, Assoc_Date_Declaration2 AS dateEffet, DATE(dateInsert)*1 AS dateInsert, dateUpdate",
|
|||
|
'where'=>"siren>1000 AND recupAct=0 AND (Assoc_Objet<>'' OR Assoc_NObjet<>'' OR Assoc_AObjet<>'') AND dateSuppr=0",
|
|||
|
'go'=>1,
|
|||
|
'idSrc'=>'asso'),
|
|||
|
);
|
|||
|
/*
|
|||
|
case 'a': $tabSrc['adm']['go']=0; break;
|
|||
|
case 'e': $tabSrc['ent']['go']=0; break;
|
|||
|
*/
|
|||
|
$iDb=new WDB('jo');
|
|||
|
$iDb2=new WDB('jo');
|
|||
|
|
|||
|
foreach ($tabSrc as $src=>$tabSrcDet) {
|
|||
|
if ($tabSrcDet['go']==0) {
|
|||
|
echo date('Y/m/d - H:i:s') ." - On ne traite pas les activit<69>s '".$tabSrcDet['lib']."'".EOL;
|
|||
|
continue;
|
|||
|
}
|
|||
|
echo date('Y/m/d - H:i:s') ." - Traitement des activit<69>s '".$tabSrcDet['lib']."'".EOL;
|
|||
|
unset($iDb);
|
|||
|
$iDb=new WDB($tabSrcDet['db']);
|
|||
|
|
|||
|
$nb=$iDb->select($tabSrcDet['table'], $tabSrcDet['zones'],$tabSrcDet['where'], false,MYSQL_ASSOC,true);
|
|||
|
echo date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) d'activit<69>s '".$tabSrcDet['lib']."' <20> mettre <20> jour...".mysql_error().EOL;
|
|||
|
|
|||
|
while ($tabAct=$iDb->fetch(MYSQL_ASSOC)) {
|
|||
|
$activite='';
|
|||
|
$siren=$tabAct['siren'];
|
|||
|
if ($tabSrcDet['idSrc']=='asso') $activite=trim($tabAct['activiteN']);
|
|||
|
if ($activite=='') $activite=trim($tabAct['activite']);
|
|||
|
if ($activite=='' && $tabSrcDet['idSrc']=='asso' && $tabAct['activiteP']<>'') $activite=trim($tabAct['activiteP']);
|
|||
|
$tabInsert=array( 'siren' => $siren,
|
|||
|
'activite' => $activite,
|
|||
|
'source' => $tabSrcDet['idSrc'],
|
|||
|
'idSource' => $tabAct['id'],
|
|||
|
'dateSource' => $tabAct['dateSource'],
|
|||
|
'dateEffetTxt' => $tabAct['dateEffetTxt'],
|
|||
|
'dateEffet' => $tabAct['dateEffet'],
|
|||
|
'dateInsert' => $tabAct['dateInsert']);
|
|||
|
if ($iDb2->insert('activiteReel', $tabInsert, false) || $iDb2->getLastErrorNum()==1062) {
|
|||
|
@$nbInsert[$zone]++;
|
|||
|
$iDb->update($tabSrcDet['table'], array('recupAct'=>1, dateUpdate=>$tabAct['dateUpdate']), "id=".$tabAct['id']);
|
|||
|
} else {
|
|||
|
print_r($tabInsert);
|
|||
|
die($iDb2->getLastError());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
die();
|
|||
|
|
|||
|
|
|||
|
if ($updateCache) {
|
|||
|
include_once(INCLUDE_PATH.'scores/classMRatios.php');
|
|||
|
if (genereCacheRatios())
|
|||
|
echo date('Y/m/d - H:i:s') ." - Le cache des ratios a <20>t<EFBFBD> g<>n<EFBFBD>r<EFBFBD> avec succ<63>s !".EOL;
|
|||
|
else
|
|||
|
echo date('Y/m/d - H:i:s') ." - Erreur lors de la g<>n<EFBFBD>ration du cache des ratios !".EOL;
|
|||
|
die();
|
|||
|
}
|
|||
|
|
|||
|
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de calcul des ratios...".EOL;
|
|||
|
|
|||
|
$tabLast=$iDb->select( 'ratios_formules',
|
|||
|
'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert',
|
|||
|
'1');
|
|||
|
$lastUpdate=$tabLast[0]['lastInsert'];
|
|||
|
if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate'];
|
|||
|
|
|||
|
/** On v<>rifie la pr<70>sence du cache de calcul des ratios **/
|
|||
|
if (!file_exists(INCLUDE_PATH.'tmp/configMRatios.php'))
|
|||
|
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'existe pas !".EOL);
|
|||
|
/** On v<>rifie qu'il n'y a pas de nouvelles formules <20> mettre dans le cache de calcul des ratios **/
|
|||
|
elseif (strtr($lastUpdate, array(':'=>'','-'=>'', ' '=>''))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) {
|
|||
|
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR FATALE, le cache ratio n'est pas <20> jour !", date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas <20> jour (nouvelles formules ?). Relancer <20> l'option -c !");
|
|||
|
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas <20> jour (nouvelles formules ?). Relancer <20> l'option -c !".EOL);
|
|||
|
}
|
|||
|
/** On v<>rifie que le programme de MAJ du cache n'a pas <20>t<EFBFBD> modifi<66> **/
|
|||
|
elseif (date('YmdHis',filectime(INCLUDE_PATH.'scores/classMRatios.php'))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) // Le fichier de cache est d<>pr<70>ci<63>
|
|||
|
die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas <20> jour (programme modifi<66>). Relancer <20> l'option -c !".EOL);
|
|||
|
|
|||
|
include_once(INCLUDE_PATH.'tmp/configMRatios.php');
|
|||
|
|
|||
|
echo date('Y/m/d - H:i:s') ." - Formules de calcul des ratios d<>j<EFBFBD> en cache.".EOL;
|
|||
|
|
|||
|
/** Recherche de la derni<6E>re mise <20> jour des ratios secteurs **/
|
|||
|
$tabLast=$iDb->select( 'ratios_secteurs',
|
|||
|
'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert',
|
|||
|
'1');
|
|||
|
$lastUpdate=$tabLast[0]['lastInsert'];
|
|||
|
if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate'];
|
|||
|
echo(date('Y/m/d - H:i:s') ." - La derni<6E>re mise <20> jour des ratios secteurs date du $lastUpdate...".EOL);
|
|||
|
|
|||
|
$nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate', "1", false, MYSQL_ASSOC, true);
|
|||
|
if ($nbRows>0) {
|
|||
|
$modeSuite=true;
|
|||
|
echo date('Y/m/d - H:i:s') ." - Il reste $nbRows entreprises pour lesquels il faut mettre <20> jour les ratios secteurs...".EOL;
|
|||
|
} else {
|
|||
|
/** On met en table temporaire les siren en cas de plantage du script **/
|
|||
|
$modeSuite=false;
|
|||
|
$nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true);
|
|||
|
$lastDate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>''));
|
|||
|
echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL;
|
|||
|
$iDb2->query('DROP TABLE IF EXISTS ratios_tmp;');
|
|||
|
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la cr<63>ation de la table temporaires, n<>'.mysql_errno().' : '.mysql_error().EOL;
|
|||
|
$strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp ( siren int(9) unsigned zerofill NOT NULL, lastUpdate bigint(14) unsigned zerofill NOT NULL, PRIMARY KEY(siren) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
|
|||
|
$iDb2->query($strSQL);
|
|||
|
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la cr<63>ation de la table temporaires, n<>'.mysql_errno().' : '.mysql_error().EOL;
|
|||
|
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
|
|||
|
$iDb2->insert('ratios_tmp', array('siren'=>$entrep['siren'], 'lastUpdate'=>$lastDate));
|
|||
|
}
|
|||
|
echo date('Y/m/d - H:i:s') ." - Les <20>l<EFBFBD>ments ont <20>t<EFBFBD> mis en table temporaire en cas de reprise sur erreur !".EOL;
|
|||
|
$nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate', "1", false, MYSQL_ASSOC, true);
|
|||
|
}
|
|||
|
|
|||
|
$k=0; // Compteur d'entreprises
|
|||
|
$b=0; // Compteur total de bilans
|
|||
|
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
|
|||
|
if ($modeSuite && $k==0) $lastDate=$entrep['lastUpdate'];
|
|||
|
|
|||
|
$k++;
|
|||
|
if ($k<$iDeb) continue;
|
|||
|
|
|||
|
$siren=$entrep['siren'];
|
|||
|
if ($siren<100) continue;
|
|||
|
// else echo "$siren\n";
|
|||
|
$naf4=$naf5='';
|
|||
|
unset($mBil);
|
|||
|
|
|||
|
$mBil=new MBilans($siren);
|
|||
|
|
|||
|
/** R<>cup<75>ration des informations Identitaires **/
|
|||
|
$tabIdentite=@$iInsee->getIdentiteLight($siren);
|
|||
|
$naf=$tabIdentite['NafEnt'];
|
|||
|
$nafLib=$tabIdentite['NafEntLib'];
|
|||
|
$efftr=$tabIdentite['Effectif'];
|
|||
|
$fj=$tabIdentite['FJ'];
|
|||
|
|
|||
|
/** On Recherche le dernier Bilan mis <20> jour **/
|
|||
|
$tabBilans=$mBil->listeBilans();
|
|||
|
$nbBilansTot=count($tabBilans);
|
|||
|
$tabBilans2=array();
|
|||
|
foreach ($tabBilans as $mil=>$infosBilan) {
|
|||
|
/** On v<>rifie s'il n'y a pas de Bilans vides **/
|
|||
|
if ($infosBilan['dureeExercice']==0) {
|
|||
|
print_r($infosBilan);
|
|||
|
echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL;
|
|||
|
continue(2);
|
|||
|
}
|
|||
|
/** On ne garde que les Bilans dont la date de provenance est > <EFBFBD> la date de derni<EFBFBD>re Mise <EFBFBD> jour
|
|||
|
** car les ratios secteurs des autres bilans on d<EFBFBD>j<EFBFBD> <EFBFBD>t<EFBFBD> calcul<EFBFBD>s ! **/
|
|||
|
if ($infosBilan['dateInsert']>=$lastDate)
|
|||
|
$tabBilans2[$mil]=$infosBilan;
|
|||
|
}
|
|||
|
|
|||
|
$nbBilans=count($tabBilans2);
|
|||
|
$tabBilan=$tabBil=array();
|
|||
|
if ($nbBilans==0) {
|
|||
|
print_r($tabBilans2);
|
|||
|
echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL;
|
|||
|
print_r($tabBilans);
|
|||
|
//die();
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
$tabRatios=@calculRatios($tabBilans2, $tabIdentite, false);
|
|||
|
if (strlen($naf)>4) $naf5=$naf; else $naf4=$naf;
|
|||
|
|
|||
|
if ($tabBilan[0]['CONSOLIDE']=='A') $naf4='ASSU';
|
|||
|
elseif ($tabBilan[0]['CONSOLIDE']=='B') $naf4='BANQ';
|
|||
|
|
|||
|
if ($naf4=='ASSU' || $naf4=='BANQ') {
|
|||
|
sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de Banque ou Assurance", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans));
|
|||
|
}
|
|||
|
|
|||
|
foreach ($tabFormules as $f=>$formule) {
|
|||
|
foreach ($tabRatios as $i=>$R) {
|
|||
|
if ($f==0) $b++;
|
|||
|
$id=$formule['id'];
|
|||
|
// Si on n'est pas une banque/assurance, on ne calcul pas les ratios 700 <20> 799
|
|||
|
if ($naf4<>'ASSU' && $naf4<>'BANQ' && $id>=700 && $id<800)
|
|||
|
continue;
|
|||
|
|
|||
|
$annee=substr($tabBilan[$i]['DATE_CLOTURE'],0,4);
|
|||
|
|
|||
|
if ($R[$id]==='NS' || $R[$id]===false )
|
|||
|
//echo "Le ratio n<>$id est non significatif (".$R[$id].") pour le siren $siren et l'ann<6E>e $annee !".EOL;
|
|||
|
continue;
|
|||
|
|
|||
|
|
|||
|
/** Si c'est un ratio EUR, on le passe en K<> **/
|
|||
|
if ($formule['unite']=='EUR') $mt=$R[$id]/1000;
|
|||
|
else $mt=$R[$id];
|
|||
|
|
|||
|
/** On v<>rifie les bornes MIN et MAX **/
|
|||
|
if ($formule['min']<>'' && $mt<$formule['min']) {
|
|||
|
echo "Ratio n<>$id, borne Mini non nulle (".$formule['min'].") et le montant est inf<6E>rieur : $mt<".$formule['min']." pour le siren $siren et l'ann<6E>e $annee".EOL;
|
|||
|
continue;
|
|||
|
} elseif ($formule['max']<>'' && $mt>$formule['max']) {
|
|||
|
echo "Ratio n<>$id, borne Maxi non nulle (".$formule['max'].") et le montant est sup<75>rieur : $mt>".$formule['max']." pour le siren $siren et l'ann<6E>e $annee".EOL;
|
|||
|
continue;
|
|||
|
} //else
|
|||
|
//echo "Ratio n<>$id compris entre bornes ".$formule['min']." < $mt < ".$formule['max']." pour le siren $siren et l'ann<6E>e $annee".EOL;
|
|||
|
|
|||
|
/** Lecture des chiffres existants dans la table ratios_secteurs **/
|
|||
|
$tabTmp=$iDb2->select( 'ratios_secteurs',
|
|||
|
'montant, nombre, id, naf4, naf5, annee',
|
|||
|
"id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee",
|
|||
|
false, MYSQL_ASSOC);
|
|||
|
if (count($tabTmp)>0) {
|
|||
|
$mt2=$mt+$tabTmp[0]['montant'];
|
|||
|
$nb2=$tabTmp[0]['nombre'] + 1;
|
|||
|
} else {
|
|||
|
$mt2=$mt;
|
|||
|
$nb2=1;
|
|||
|
}
|
|||
|
|
|||
|
$tabUpdate=array( 'montant' => $mt2,
|
|||
|
'nombre' => $nb2,
|
|||
|
);
|
|||
|
if (!$iDb2->update('ratios_secteurs', $tabUpdate, "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee") || $iDb2->getAffectedRows()==0 ) { // getAffectedRows ajout<75> le 14 mai 2009
|
|||
|
$tabInsert=array_merge($tabUpdate, array( 'id'=>$id,
|
|||
|
'naf4'=>$naf4,
|
|||
|
'naf5'=>$naf5,
|
|||
|
'annee'=>$annee,
|
|||
|
'dateInsert'=>date('YmdHis'),
|
|||
|
));
|
|||
|
if (!$iDb2->insert('ratios_secteurs', $tabInsert) && mysql_errno()<>1062) {
|
|||
|
$pct=round(($k/$nbRows)*100,2);
|
|||
|
echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont <20>t<EFBFBD> calcul<75>s pour un total de $b bilans ($siren)...".EOL;
|
|||
|
echo date('Y/m/d - H:i:s') .' - ERREUR SQL n<>'.mysql_errno().' : '.mysql_error().EOL;
|
|||
|
die();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ($k%1000==0 && $f==0 && $i==0) {
|
|||
|
$pct=round(($k/$nbRows)*100,2);
|
|||
|
echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont <20>t<EFBFBD> calcul<75>s pour un total de $b bilans ($siren)...".EOL;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$iDb2->delete('ratios_tmp', "siren=$siren");
|
|||
|
if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la suppression des informations temporaires, n<>'.mysql_errno().' : '.mysql_error().EOL;
|
|||
|
}
|
|||
|
echo date('Y/m/d - H:i:s') ." - Les ratios ont <20>t<EFBFBD> mis <20> jour ; suppression des informations temporaires.".EOL;
|
|||
|
|
|||
|
$iDb2->query('DROP TABLE IF EXISTS jo.ratios_tmp;');
|
|||
|
|
|||
|
die(date('Y/m/d - H:i:s') ." - Fin du programme.".EOL);
|
|||
|
|
|||
|
?>
|