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 db609fa9b7
commit 22e6344d05
2 changed files with 55 additions and 86 deletions

View File

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

View File

@ -596,7 +596,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
global $tabFormules; global $tabFormules;
global $tabFormulesRatios; global $tabFormulesRatios;
global $mBil; global $mBil;
global $tabBilan;
global $efftr; global $efftr;
global $tabRatiosInfos; global $tabRatiosInfos;
@ -625,7 +624,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
* Récupération des informations identitaire * Récupération des informations identitaire
*/ */
$tabIdentite=$iInsee->getIdentiteEntreprise($siren, $nic, 0, false, $accesDist); $tabIdentite=$iInsee->getIdentiteEntreprise($siren, $nic, 0, false, $accesDist);
$tabBilan=array();
$timer['identite']=microtime(true); $timer['identite']=microtime(true);
if (empty($tabIdentite)) { if (empty($tabIdentite)) {
@ -653,7 +651,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$tabRatiosInfos[$tmpFormule['id']]=array('unite' => $tmpFormule['unite']); $tabRatiosInfos[$tmpFormule['id']]=array('unite' => $tmpFormule['unite']);
} }
$tabRatiosSecteurs = $tabBilansR = $tabRatios2 = $tabRatiosEvol = array(); $tabRatiosSecteurs = $tabRatios2 = $tabRatiosEvol = array();
$NIC=substr($tabIdentite['SiretSiege'],-5); $NIC=substr($tabIdentite['SiretSiege'],-5);
$SIREN=$siren; $SIREN=$siren;
@ -933,49 +931,41 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$DCREN_AA=substr($dateCrea,0,4); $DCREN_AA=substr($dateCrea,0,4);
$AGE=$classWdate->nbMoisEntre($dateCrea, date('Ymd')); $AGE=$classWdate->nbMoisEntre($dateCrea, date('Ymd'));
/** Elements provenant des ratios : $tabBilan = $tabBil = array();
** @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++
}
*/
/** /**
* Bilan - Liste des bilans * Bilan - Liste des bilans
*/ */
$mBil = new MBilans($siren, $iDb); $mBil = new MBilans($siren, $iDb);
$tabBilans = $mBil->listeBilans($accesDist); $tabBilans = $mBil->listeBilans($accesDist);
$NBBILAN = count($tabBilans); $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 * Calcul des ratios
*/ */
$tabBilan=$tabBil=array(); $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesDist);
if ($NBBILAN>0) $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesDist); }
$timer['ratios']=microtime(true); $timer['ratios']=microtime(true);
// Tableau des années de bilans // Tableau des années de bilans
$tabAnnees=array(); $tabAnnees = array();
// Tableau d'infos sur les bilans // Tableau d'infos sur les bilans
$i2=0; $i2=0;
if (count($tabRatios)>0) { if (count($tabRatios)>0)
foreach ($tabRatios as $i=>$Rtmp) { {
$tabBilansR[$i]=array( foreach ($tabRatios as $i=>$Rtmp)
'dateCloture' => $tabBilan[$i]['DATE_CLOTURE'], {
'duree' => $tabBilan[$i]['DUREE_MOIS'],
'devise' => $tabBilan[$i]['MONNAIE'],
'type' => $tabBilan[$i]['CONSOLIDE'],
'unite' => 'U',
);
if (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900){ if (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900){
$tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); $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=''; $MARCHE=$MARCHEp=$MARCHEVOL=$MARCHEPART=$MARCHEPARTp=$MARCHEPARTEVOL='';
$MARCHESAL=$MARCHESALp=$MARCHENBENT=$MARCHENBENTp=''; $MARCHESAL=$MARCHESALp=$MARCHENBENT=$MARCHENBENTp='';
$tabRatiosSecteurs=$Rtot=array(); $tabRatiosSecteurs=$Rtot=array();
if (count($tabAnnees)>0) { if (count($tabAnnees)>0)
{
if (strlen($naf)>4) $strNaf=" AND naf5='$naf' "; if (strlen($naf)>4) $strNaf=" AND naf5='$naf' ";
else $strNaf=" AND naf4='$naf' "; else $strNaf=" AND naf4='$naf' ";
if (count($tabAnnees)>2) $strAnnees='AND annee BETWEEN '.$tabAnnees[2].' AND '.$tabAnnees[0]; 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); $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 // Elements provenant des bilans
$EFFBILAN=$tabBilan[0]['YP']; $EFFBILAN=$tabBilan[0]['YP'];
$nm=$nbMoisBilCumul=$tabBilan[0]['DUREE_MOIS']; $nm=$nbMoisBilCumul=$tabBilan[0]['DUREE_MOIS'];
@ -2015,7 +1989,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['participations']=microtime(true); $timer['participations']=microtime(true);
$tabBil=array(); $tabBil=array();
if ($NBBILAN==0) if ($NBBILAN == 0)
{ {
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100 $noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
/** Pas de bilan mais capital elevé **/ /** Pas de bilan mais capital elevé **/
@ -2035,38 +2009,32 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
} }
else else
{ {
$numBil=0;//sleep(1); $numBil = $i = 0;
foreach ($tabBilan as $item)
for ($i=0; isset($tabBilan[$i]); $i++)
{ {
$i++;
//if (substr($millesime,0,1)=='S') { if ($item['CONSOLIDE']=='S')
// @todo attention au type de bilan S en N et banque assu consolidé !!! {
$tabTmp=$mBil->bilanSimplifie2Normal($item);
if ($tabBilan[$i]['CONSOLIDE']=='S') { $tabBilan[$i] = array_merge($tabTmp, $item);
$tabTmp=$mBil->bilanSimplifie2Normal($tabBilan[$i]);
$tabBilan[$i]=array_merge($tabTmp, $tabBilan[$i]);
$numBil++; $numBil++;
} elseif ($tabBilan[$i]['CONSOLIDE']=='N') }
elseif ($item['CONSOLIDE']=='N')
{
$numBil++; $numBil++;
else { }
/** On ignore les bilans Assurance, Banques et Consolidés **/ else
/*if ($tabBilan[$i]['CONSOLIDE']=='C' && $scoreAltman=='') { {
$icotation = new ICotation($tabBilan[$i], true);
$scoreAltman=round($icotation->scoreAltman(),2);
}*/
continue; continue;
} }
if ($numBil>2) break; if ($numBil>2) break;
unset($icotation); $icotation = new ICotation($item, true);
$icotation = new ICotation($tabBilan[$i], true);
$secteur=$icotation->getSecteurActivite($isolv->getNaf4($naf)); $secteur=$icotation->getSecteurActivite($isolv->getNaf4($naf));
$libSecteur=$icotation->tabLibActivite[$secteur]; $libSecteur=$icotation->tabLibActivite[$secteur];
$chiffeAffaire=$icotation->calculChiffreAffaires($isolv->getNaf4($naf)); $chiffeAffaire=$icotation->calculChiffreAffaires($isolv->getNaf4($naf));
$tabBil[$i]=array( $tabBil[$i] = array(
'Millesime'=>$tabBilan[$i]['DATE_CLOTURE'], 'Millesime'=>$item['DATE_CLOTURE'],
'FraisPerso'=>$icotation->calculFraisPersonnel(), 'FraisPerso'=>$icotation->calculFraisPersonnel(),
'CA'=>$chiffeAffaire, 'CA'=>$chiffeAffaire,
'EBE'=>$icotation->calculEBE(), '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); //sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Structure Score Financier", $strNote);
} }
} }
else { else
{
$noteSolvabilitePre=$noteSD; $noteSolvabilitePre=$noteSD;
$noteFinPre=$noteMoy; $noteFinPre=$noteMoy;
if ($noteSolvabilite>$noteSolvabilitePre) $tendance='Haussière'; if ($noteSolvabilite>$noteSolvabilitePre) $tendance='Haussière';
elseif ($noteSolvabilite==$noteSolvabilitePre) $tendance='Stable'; elseif ($noteSolvabilite==$noteSolvabilitePre) $tendance='Stable';
else $tendance='Baissière'; 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 // 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 (substr($tabIdentite['DateCreaEn'],0,4)*1+2)<date('Y') && // L'entreprise à plus de 2 ans
$FJURPUB ) { // et est soumise à publication $FJURPUB ) { // et est soumise à publication
$SCORECONF-=20; $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 if (!$tabIdentite['TvaAttribue']) { // Entreprise sans numéro de TVA
$TVAINTRA=false; $TVAINTRA=false;
@ -2774,7 +2741,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// Encours estimé = CA Estimé / 72 // Encours estimé = CA Estimé / 72
if ($CAESTIME>0) $encoursEstime=$CAESTIME/36; 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 /** Plafond des encours en fonction de la note / 100
**/ **/