Evaluation : Suppression variables global mais problème de performance avec double requetes sur les postes des bilans

This commit is contained in:
Michael RICOIS 2014-10-15 20:44:05 +00:00
parent 2139e78c77
commit 82fbe77f46
2 changed files with 55 additions and 86 deletions

View File

@ -1,5 +1,5 @@
<?php
$tva=19.6;
$tva=20.0;
/** Donne le taux d'inflation pour une année donnée **/
function getInflation($annee) {
@ -12,12 +12,15 @@ function getTxRendement($annee) {
if (isset($tabTxRendObli[$annee])) return $tabInfla[$annee];
}
function calculRatios($tabBilans, $tabIdentite, $accesPartenaire) {
global $tva, $mBil, $tabBilan, $efftr;
$numBil=0;
$numBilType=array();
foreach ($tabBilans as $millesime=>$bil) {
$tabTmp=@$mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), @$bil['ref'], $accesPartenaire, $nbRatiosMax=5);
function calculRatios($tabBilans, $tabIdentite, $accesPartenaire)
{
global $tva, $mBil, $efftr;
$numBil = 0;
$numBilType = array();
$nbRatiosMax = 5;
foreach ($tabBilans as $millesime => $bil)
{
$tabTmp = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), @$bil['ref'], $accesPartenaire);
$numBilType[substr($millesime,0,1)]++;
if (substr($millesime,0,1)=='S') {
if ($numBilType['S']>$nbRatiosMax) continue;

View File

@ -596,7 +596,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
global $tabFormules;
global $tabFormulesRatios;
global $mBil;
global $tabBilan;
global $efftr;
global $tabRatiosInfos;
@ -625,7 +624,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
* Récupération des informations identitaire
*/
$tabIdentite=$iInsee->getIdentiteEntreprise($siren, $nic, 0, false, $accesDist);
$tabBilan=array();
$timer['identite']=microtime(true);
if (empty($tabIdentite)) {
@ -653,7 +651,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$tabRatiosInfos[$tmpFormule['id']]=array('unite' => $tmpFormule['unite']);
}
$tabRatiosSecteurs = $tabBilansR = $tabRatios2 = $tabRatiosEvol = array();
$tabRatiosSecteurs = $tabRatios2 = $tabRatiosEvol = array();
$NIC=substr($tabIdentite['SiretSiege'],-5);
$SIREN=$siren;
@ -933,49 +931,41 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$DCREN_AA=substr($dateCrea,0,4);
$AGE=$classWdate->nbMoisEntre($dateCrea, date('Ymd'));
/** Elements provenant des ratios :
** @todo Problème sur les comptes consolides avec R et Rs **
$i2=0;
foreach ($tabRatios as $i=>$Rtmp) {
if ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='S'||($tabBilan[$i+1]['CONSOLIDE']=='N'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])))
|| ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='N'||($tabBilan[$i+1]['CONSOLIDE']=='S'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])))
)
$i2++;
// $Rmont=(($R[$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]);
elseif ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='S'||($tabBilan[$i+2]['CONSOLIDE']=='N'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])))
|| ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='N'||($tabBilan[$i+2]['CONSOLIDE']=='S'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE'])))
$i2=$i2+2;
$i2++
}
*/
$tabBilan = $tabBil = array();
/**
* Bilan - Liste des bilans
*/
$mBil = new MBilans($siren, $iDb);
$tabBilans = $mBil->listeBilans($accesDist);
$NBBILAN = count($tabBilans);
if ($NBBILAN > 0)
{
/**
* Postes des bilans
*/
foreach ($tabBilans as $millesime => $item)
{
if(in_array($item['typeBilan'], array('S', 'N')))
{
$tabBilan[] = $mBil->getBilan(substr($millesime,-10), substr($millesime,0,1), '');
}
}
/**
* Calcul des ratios
*/
$tabBilan=$tabBil=array();
if ($NBBILAN>0) $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesDist);
$tabRatios = calculRatios($tabBilans, $tabIdentite, $accesDist);
}
$timer['ratios']=microtime(true);
// Tableau des années de bilans
$tabAnnees=array();
$tabAnnees = array();
// Tableau d'infos sur les bilans
$i2=0;
if (count($tabRatios)>0) {
foreach ($tabRatios as $i=>$Rtmp) {
$tabBilansR[$i]=array(
'dateCloture' => $tabBilan[$i]['DATE_CLOTURE'],
'duree' => $tabBilan[$i]['DUREE_MOIS'],
'devise' => $tabBilan[$i]['MONNAIE'],
'type' => $tabBilan[$i]['CONSOLIDE'],
'unite' => 'U',
);
if (count($tabRatios)>0)
{
foreach ($tabRatios as $i=>$Rtmp)
{
if (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900){
$tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4);
}
@ -1041,8 +1031,8 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$MARCHE=$MARCHEp=$MARCHEVOL=$MARCHEPART=$MARCHEPARTp=$MARCHEPARTEVOL='';
$MARCHESAL=$MARCHESALp=$MARCHENBENT=$MARCHENBENTp='';
$tabRatiosSecteurs=$Rtot=array();
if (count($tabAnnees)>0) {
if (count($tabAnnees)>0)
{
if (strlen($naf)>4) $strNaf=" AND naf5='$naf' ";
else $strNaf=" AND naf4='$naf' ";
if (count($tabAnnees)>2) $strAnnees='AND annee BETWEEN '.$tabAnnees[2].' AND '.$tabAnnees[0];
@ -1153,22 +1143,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['regression']=microtime(true);
/** Bilan des collectivités **/
/*if ($FJUR==7210) {
$lstCom=$iDb->select(
'bilansM14',
'millesime, dep, com, depA, siren, sirenValide, depLib, comLib, popLeg, popInf, fiscalite, popFisc, R01a, R01b, R01c, R02a, R02b, R02c, R02d, R02e, R03a, R03b, R03c, R03d, R03e, R04a, R04b, R04c, R04d, R04e, R05a, R05b, R05c, R06a, R06b, R06c, R06d, R06e, R07a, R07b, R07c, R07d, R07e, R08a, R08b, R08c, R08d, R08e, R09a, R09b, R09c, R09d, R09e, R10a, R10b, R10c, R10d, R10e, R11a, R11b, R11c, R12a, R12b, R12c, R13a, R13b, R13c, R13d, R13e, R14a, R14b, R14c, R14d, R14e, R15a, R15b, R15c, R15d, R15e, R16a, R16b, R16c, R16d, R16e, R17a, R17b, R17c, R18a, R18b, R18c, R18d, R18e, R19a, R19b, R19c, R19d, R19e, R20a, R20b, R20c, R20d, R20e, R21a, R21b, R21c, R21d, R21e, R22a, R22b, R22c, R23a, R23b, R23c, R24a, R24b, R24c, R25a, R25b, R25c, R26a, R26b, R26c, R26d, R26e, R27a, R27b, R27c, R27d, R27e, R28a, R28b, R28c, R28d, R28e, R29a, R29b, R29c, R29d, R29e, R30a, R30b, R30c, R30d, R30e, R31a, R31b, R31c, R31d, R31e, R32a, R32b, R32c, R33a, R33b, R33c, R33d, R33e, R33f, R34a, R34b, R34c, R34d, R34e, R34f, R35a, R35b, R35c, R35d, R35e, R35f, R36a, R36b, R36c, R36d, R36e, R36f, R37a, R37b, R37c, R37d, R37e, R37f, R38a, R38b, R38c, R38d, R38e, R39a, R39b, R39c, R39d, R39e, R40a, R40b, R40c, R40d, R40e, R41a, R41b, R41c, R41d, R41e, R42a, R42b, R42c, R42d, R42e, R43a, R43b, R43c, R43d, R43e, R44a, R44b, R44c, dateInsert',
"siren=$siren ORDER BY millesime DESC LIMIT 0,5", false, MYSQL_ASSOC);
foreach ($lstCom as $i=>$tabCom) {
$tabRatios[]=convertZones('R', $tabCom);
}
$R=$tabRatios[0];
$Rp=$tabRatios[1];
$Rp2=$tabRatios[2];
$Rp3=$tabRatios[3];
$Rp4=$tabRatios[4];
}*/
// Elements provenant des bilans
$EFFBILAN=$tabBilan[0]['YP'];
$nm=$nbMoisBilCumul=$tabBilan[0]['DUREE_MOIS'];
@ -2015,7 +1989,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['participations']=microtime(true);
$tabBil=array();
if ($NBBILAN==0)
if ($NBBILAN == 0)
{
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
/** Pas de bilan mais capital elevé **/
@ -2035,38 +2009,32 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
else
{
$numBil=0;//sleep(1);
for ($i=0; isset($tabBilan[$i]); $i++)
$numBil = $i = 0;
foreach ($tabBilan as $item)
{
//if (substr($millesime,0,1)=='S') {
// @todo attention au type de bilan S en N et banque assu consolidé !!!
if ($tabBilan[$i]['CONSOLIDE']=='S') {
$tabTmp=$mBil->bilanSimplifie2Normal($tabBilan[$i]);
$tabBilan[$i]=array_merge($tabTmp, $tabBilan[$i]);
$i++;
if ($item['CONSOLIDE']=='S')
{
$tabTmp=$mBil->bilanSimplifie2Normal($item);
$tabBilan[$i] = array_merge($tabTmp, $item);
$numBil++;
} elseif ($tabBilan[$i]['CONSOLIDE']=='N')
}
elseif ($item['CONSOLIDE']=='N')
{
$numBil++;
else {
/** On ignore les bilans Assurance, Banques et Consolidés **/
/*if ($tabBilan[$i]['CONSOLIDE']=='C' && $scoreAltman=='') {
$icotation = new ICotation($tabBilan[$i], true);
$scoreAltman=round($icotation->scoreAltman(),2);
}*/
}
else
{
continue;
}
if ($numBil>2) break;
unset($icotation);
$icotation = new ICotation($tabBilan[$i], true);
$icotation = new ICotation($item, true);
$secteur=$icotation->getSecteurActivite($isolv->getNaf4($naf));
$libSecteur=$icotation->tabLibActivite[$secteur];
$chiffeAffaire=$icotation->calculChiffreAffaires($isolv->getNaf4($naf));
$tabBil[$i]=array(
'Millesime'=>$tabBilan[$i]['DATE_CLOTURE'],
$tabBil[$i] = array(
'Millesime'=>$item['DATE_CLOTURE'],
'FraisPerso'=>$icotation->calculFraisPersonnel(),
'CA'=>$chiffeAffaire,
'EBE'=>$icotation->calculEBE(),
@ -2229,14 +2197,14 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Structure Score Financier", $strNote);
}
}
else {
else
{
$noteSolvabilitePre=$noteSD;
$noteFinPre=$noteMoy;
if ($noteSolvabilite>$noteSolvabilitePre) $tendance='Haussière';
elseif ($noteSolvabilite==$noteSolvabilitePre) $tendance='Stable';
else $tendance='Baissière';
}
//Note financière Solvabilite = $icotation->scoreD($naf)
}
// Cas de présence unique de bilan Banque ou Assurance qui ne sont pas géré financièrement
@ -2264,7 +2232,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
(substr($tabIdentite['DateCreaEn'],0,4)*1+2)<date('Y') && // L'entreprise à plus de 2 ans
$FJURPUB ) { // et est soumise à publication
$SCORECONF-=20;
//$tabCommentaires['neg'][]=prepareString("L'entreprise ne respecte pas ses obligations de publication régulière de ses bilans.");
}
if (!$tabIdentite['TvaAttribue']) { // Entreprise sans numéro de TVA
$TVAINTRA=false;
@ -2774,7 +2741,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// Encours estimé = CA Estimé / 72
if ($CAESTIME>0) $encoursEstime=$CAESTIME/36;
}
// debugLog('I', "INDISCORE A $encoursIni $encoursEstime $encours", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
/** Plafond des encours en fonction de la note / 100
**/