112 lines
4.1 KiB
PHP
112 lines
4.1 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(INCLUDE_PATH.'partenaires/classMGreffes.php');
|
|
include_once(FWK_PATH.'common/dates.php');
|
|
include_once(INCLUDE_PATH.'partenaires/classMBilans.php');
|
|
|
|
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
|
|
Calcul des ratios de toute la base entreprise S&D.
|
|
|
|
Options :
|
|
-t Calculer tous les ratios (*)
|
|
-i:XXX Reprendre à la ligne XXX
|
|
-c Mettre à jour le cache
|
|
|
|
(*) 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
|
|
*/
|
|
$iDeb=0;
|
|
$updateCache=false;
|
|
|
|
for ($i=1; isset($argv[$i]); $i++) {
|
|
if (substr($argv[$i],0,1)=='-') {
|
|
switch (strtolower(substr($argv[$i],1,1))) {
|
|
case 't':
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
//$iDbI=new WDB('insee');
|
|
$iDb=new WDB('jo');
|
|
$iDb2=new WDB('jo');
|
|
$iInsee=new MInsee();
|
|
$limit=1000000;
|
|
$iFin=504;//2/*504*/;
|
|
|
|
$tabFormule=$tabSecteursMt=$tabSecteursNb=array();
|
|
|
|
$tabFormules=$iDb->select( 'ratios_formules',
|
|
'id, libelle, formule, unite, commentaires, deleted, borneMin, borneMax',
|
|
'deleted=0');
|
|
foreach ($tabFormules as $i=>$formule) {
|
|
$id=$formule['id']*1;
|
|
//$tabFormule['f'.$id]['libelle']=$formule['libelle'];
|
|
$tabFormule['f'.$id]['unite']=$formule['unite'];
|
|
$tabFormule['f'.$id]['min']=$formule['borneMin'];
|
|
$tabFormule['f'.$id]['max']=$formule['borneMax'];
|
|
}
|
|
echo date('Y/m/d - H:i:s') ." - Formules mises en mémoire ...".EOL;
|
|
//print_r($tabFormule);die();
|
|
|
|
for ($iDeb=0; $iDeb<=$iFin*$limit; $iDeb+=$limit) {
|
|
$nbRows=$iDb->select( 'ratios_test2', 'siren, id, naf4, naf5, millesime, montant', "1 LIMIT $iDeb,$limit", false, MYSQL_ASSOC, true);
|
|
$iDebAff=$iDeb/$limit;
|
|
echo date('Y/m/d - H:i:s') ." - Tranche de ratios n°$iDebAff/$iFin...".EOL;
|
|
while($entrep=$iDb->fetch(MYSQL_ASSOC)) {
|
|
if ($tabFormule['f'.$entrep['id']]['unite']=='EUR') $mt=$entrep['montant']/1000;
|
|
else $mt=$entrep['montant'];
|
|
if ($tabFormule['f'.$entrep['id']]['min']!==NULL && $mt<$tabFormule['f'.$entrep['id']]['min']) {
|
|
//echo 'Borne Mini non nulle ('.$tabFormule['f'.$entrep['id']]['min'].") et le montant est inférieur : $mt<".$tabFormule['f'.$entrep['id']]['min']."!\n";
|
|
continue;
|
|
} elseif ($tabFormule['f'.$entrep['id']]['max']!==NULL && $mt>$tabFormule['f'.$entrep['id']]['max']) {
|
|
//echo 'Borne Maxi non nulle ('.$tabFormule['f'.$entrep['id']]['max'].") et le montant est supéreiur : $mt>".$tabFormule['f'.$entrep['id']]['max']."!\n";
|
|
continue;
|
|
} /*else
|
|
echo 'Ratio compris entre bornes '.$tabFormule['f'.$entrep['id']]['min']." < $mt < ".$tabFormule['f'.$entrep['id']]['max'].".\n";
|
|
*/
|
|
$tabSecteursMt[$entrep['id'].'-'.$entrep['naf4'].'-'.$entrep['naf5'].'-'.$entrep['millesime']]+=$mt;
|
|
$tabSecteursNb[$entrep['id'].'-'.$entrep['naf4'].'-'.$entrep['naf5'].'-'.$entrep['millesime']]++;
|
|
}
|
|
}
|
|
echo date('Y/m/d - H:i:s') ." - Insertion en base des ".count($tabSecteursMt)." ratios secteurs...".EOL;
|
|
$dateInsert=date('YmdHis');
|
|
foreach ($tabSecteursMt as $cleSecteur=>$mt) {
|
|
$tmp=explode('-', $cleSecteur);
|
|
|
|
$tabInsert=array( 'id' => $tmp[0],
|
|
'naf4' => $tmp[1],
|
|
'naf5' => $tmp[2],
|
|
'annee' => $tmp[3],
|
|
'montant' => $mt,
|
|
'nombre' => $tabSecteursNb[$cleSecteur],
|
|
'dateInsert'=> $dateInsert,
|
|
);
|
|
if (!$iDb->insert('ratios_secteurs', $tabInsert)) {
|
|
echo date('Y/m/d - H:i:s') ." - Erreur MySQL N°".mysql_errno().' : '.mysql_error().EOL;
|
|
print_r($tabInsert);
|
|
}
|
|
}
|
|
echo date('Y/m/d - H:i:s') ." - Fin de l'insertion en base des ratios.".EOL;
|
|
|
|
die();
|
|
?>
|