batch/library/Metier/scores/classMScores.php

3996 lines
168 KiB
PHP
Raw Normal View History

2013-06-19 09:45:13 +00:00
<?php
2013-06-19 09:45:13 +00:00
require_once 'Metier/partenaires/classMPrivileges.php';
2013-06-19 09:45:13 +00:00
require_once 'Metier/partenaires/classMMarques.php';
2013-09-05 08:32:03 +00:00
require_once 'Metier/scores/classMRegression.php';
2013-09-09 13:34:50 +00:00
require_once 'Metier/partenaires/classMLiens2.php';
2014-02-12 16:35:36 +00:00
require_once 'Metier/scores/classMSolvabilite.php';
2013-09-10 17:11:11 +00:00
require_once 'Metier/scores/Variables/configMRatios.php';
2013-06-19 09:45:13 +00:00
define('INDISCORE_DEBUG', false);
/**
2013-08-27 08:49:35 +00:00
* Return the history of previous stored IndiScores on the companies
2013-06-19 09:45:13 +00:00
* @param string $siren
* Siren number of the company
* @return array
*/
function getIndiscoreHisto($siren)
{
if ($siren<1000) return false;
$query="SELECT siren, actif, procol, naf, indiScore, indiScore20, encours, indiScoreDate, dateBilan, sourceModif, scoreSolv, scoreDir, scoreConf, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, cs, csMoisMaj, csMoisFin, adresseDom, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, dateUpdate
FROM jo.scores_surveillance
WHERE siren=$siren
UNION SELECT siren, actif, procol, naf, indiScore, indiScore20, encours, indiScoreDate, dateBilan, sourceModif, scoreSolv, scoreDir, scoreConf, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, cs, csMoisMaj, csMoisFin, adresseDom, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, dateUpdate
FROM historiques.scores_surveillance
WHERE siren=$siren
GROUP BY indiScoreDate
2013-08-27 08:49:35 +00:00
ORDER BY indiScoreDate DESC";
$iDb = new WDB('jo');
2013-06-19 09:45:13 +00:00
$ret=$iDb->query($query);
$tabRet=array();
while($ret=$iDb->fetch(MYSQL_ASSOC)) {
2013-09-06 06:25:46 +00:00
$tabRet[]=array(
'siren' => $ret['siren'],
'actif' => $ret['actif'],
'procol' => $ret['procol'],
'naf' => $ret['naf'],
'indiScore' => $ret['indiScore'],
'indiScore20' => $ret['indiScore20'],
'encours' => $ret['encours'],
'indiScoreDate' => $ret['indiScoreDate'],
'dateBilan' => $ret['dateBilan'],
'sourceModif' => $ret['sourceModif'],
'scoreSolv' => $ret['scoreSolv'],
'scoreDir' => $ret['scoreDir'],
'scoreConf' => $ret['scoreConf'],
'scoreZ' => $ret['scoreZ'],
'scoreCH' => $ret['scoreCH'],
'scoreAfdcc1' => $ret['scoreAfdcc1'],
//'scoreAfdcc2' => $ret['scoreAfdcc2'],
'scoreAfdcc2note' => $ret['scoreAfdcc2note'],
'scoreAltman' => $ret['scoreAltman'],
'scoreAltmanCote' => $ret['scoreAltmanCote'],
'scoreCCF' => $ret['scoreCCF'],
'cs' => $ret['cs'],
'csMoisMaj' => $ret['csMoisMaj'],
'csMoisFin' => $ret['csMoisFin'],
'adresseDom' => $ret['adresseDom'],
'situFi' => $ret['situFi'],
'infoNote' => $ret['infoNote'],
'noteStruct' => $ret['noteStruct'],
'noteFin' => $ret['noteFin'],
'tendance' => $ret['tendance'],
'nbModifs' => $ret['nbModifs'],
'dateUpdate' => $ret['dateUpdate'],
);
2013-06-19 09:45:13 +00:00
}
return $tabRet;
}
2013-09-05 08:32:03 +00:00
/**
* Récupére les scores dans la table de cache scores_surveillance
* @param string $siren
* @return array
*/
2013-08-27 08:49:35 +00:00
function getIndiscoreCache($siren)
{
if ($siren<1000) return false;
$query="SELECT siren, actif, procol, naf, indiScore, indiScore20, encours, indiScoreDate, dateBilan, sourceModif, scoreSolv, scoreDir, scoreConf, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, cs, csMoisMaj, csMoisFin, adresseDom, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, dateUpdate
FROM jo.scores_surveillance
WHERE siren=$siren
ORDER BY indiScoreDate DESC";
$iDb = new WDB('jo');
$ret=$iDb->query($query);
$tabRet=array();
while($ret=$iDb->fetch(MYSQL_ASSOC))
{
$tabRet[] = array (
'siren' => $ret['siren'],
'actif' => $ret['actif'],
'procol' => $ret['procol'],
'naf' => $ret['naf'],
'indiScore' => $ret['indiScore'],
'indiScore20' => $ret['indiScore20'],
'encours' => $ret['encours'],
'indiScoreDate' => $ret['indiScoreDate'],
'dateBilan' => $ret['dateBilan'],
'sourceModif' => $ret['sourceModif'],
'scoreSolv' => $ret['scoreSolv'],
'scoreDir' => $ret['scoreDir'],
'scoreConf' => $ret['scoreConf'],
'scoreZ' => $ret['scoreZ'],
'scoreCH' => $ret['scoreCH'],
'scoreAfdcc1' => $ret['scoreAfdcc1'],
//'scoreAfdcc2' => $ret['scoreAfdcc2'],
'scoreAfdcc2note' => $ret['scoreAfdcc2note'],
'scoreAltman' => $ret['scoreAltman'],
'scoreAltmanCote' => $ret['scoreAltmanCote'],
'scoreCCF' => $ret['scoreCCF'],
'cs' => $ret['cs'],
'csMoisMaj' => $ret['csMoisMaj'],
'csMoisFin' => $ret['csMoisFin'],
'adresseDom' => $ret['adresseDom'],
'situFi' => $ret['situFi'],
'infoNote' => $ret['infoNote'],
'noteStruct' => $ret['noteStruct'],
'noteFin' => $ret['noteFin'],
'tendance' => $ret['tendance'],
'nbModifs' => $ret['nbModifs'],
'dateUpdate' => $ret['dateUpdate'],
);
}
return $tabRet;
}
2013-06-19 09:45:13 +00:00
/**
* Return the medium indiscore on an activity sector
* @param string $naf5
* @return array
*/
function getScoreSecteur($naf5)
{
if (len($naf)<>5) return false;
$tabTmp=$iDb->select( 'scores_surveillance',
'naf, AVG(indiScore) AS score100moy, AVG(indiScore20) AS score20moy, AVG(encours) AS encoursMoy, MAX(indiScoreDate) AS lastScore, COUNT(siren) AS nbSiren',
"naf='$naf5' AND actif=1", false, MYSQL_ASSOC);
if ( count($tabTmp)>0 ) {
$tabTmp=$tabTmp[0];
return array(
'naf' => $tabTmp['naf'],
'score100moy' => $tabTmp['score100moy'],
'score20moy' => $tabTmp['score20moy'],
'encoursMoy' => $tabTmp['encoursMoy'],
'lastScore' => $tabTmp['lastScore'],
'nbScoresn' => $tabTmp['nbSiren']
);
}
return array();
}
2013-09-06 06:25:46 +00:00
/**
* Enter description here ...
* @param unknown_type $nombre
* @param unknown_type $decimales
* @param unknown_type $sepDec
* @param unknown_type $sepMil
* @param unknown_type $unite
* @param unknown_type $signe
*/
function number_format2($nombre,$decimales,$sepDec,$sepMil,$unite,$signe) {
if (round($nombre,$decimales)==round($nombre)) $decimales=0;
if ($signe=='+') {
if ($nombre>0)
return '+ '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
elseif ($nombre<0)
return '- '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
else
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
} elseif ($signe=='!') return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
else return number_format($nombre,$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
}
2013-06-19 09:45:13 +00:00
/**
2013-09-06 06:25:46 +00:00
* Enter description here ...
* @param unknown_type $ratio
* @param unknown_type $id
* @param unknown_type $unite
* @param unknown_type $forceSigne
* @return string
2013-06-19 09:45:13 +00:00
*/
2013-09-06 06:25:46 +00:00
function formatRatio($ratio, $id, $unite, $forceSigne='')
2013-06-19 09:45:13 +00:00
{
2013-09-06 06:25:46 +00:00
switch (trim(strtoupper($unite))) {
case 'EU':
case 'EUR':
if ($ratio[$id]>=0 && $ratio[$id]<5000 ||
$ratio[$id]>-5000 && $ratio[$id]<=0) return number_format2($ratio[$id],0,',',' ','&euro;', $forceSigne);
elseif ($ratio[$id]<=-10000000 ||
$ratio[$id]>=10000000) return number_format2($ratio[$id]/1000000,0,',',' ','M&euro;', $forceSigne);
else return number_format2($ratio[$id]/1000,0,',',' ','K&euro;', $forceSigne);
break;
case '%':
if ($ratio[$id]>=0 && $ratio[$id]<10) return number_format2($ratio[$id],1,',',' ','%', $forceSigne);
elseif ($ratio[$id]>-10 && $ratio[$id]<0) return number_format2($ratio[$id],1,',',' ','%', $forceSigne);
else return number_format2($ratio[$id],0,',',' ','%', $forceSigne);
break;
case 'AN':
if ($ratio[$id]>=-1 && $ratio[$id]<=1)
return number_format2($ratio[$id],0,',',' ','an', $forceSigne);
else
return number_format2($ratio[$id],0,',',' ','ans', $forceSigne);
break;
case 'JOURS':
if ($ratio[$id]<0) $signe=-1; else $signe=1;
$vabsolue=abs($ratio[$id]);
$an=0;
while ($vabsolue>360) {
$vabsolue=$vabsolue-360;
$an++;
}
if ($an>1)
return number_format2($an*$signe,0,',',' ','ans', $forceSigne);
elseif ($an==1)
return number_format2($an*$signe,0,',',' ','an', $forceSigne);
elseif ($vabsolue<=1)
return number_format2($vabsolue*$signe,0,',',' ','jour', $forceSigne);
else
return number_format2($vabsolue*$signe,0,',',' ','jours', $forceSigne);
break;
case 'PERS': return number_format2($ratio[$id],0,',',' ', 'salarié(s)', $forceSigne);
break;
case 'U': return number_format2($ratio[$id],1,',',' ', '', $forceSigne);
break;
default: break;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
return $ratio[$id].' '.$unite;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Fomattage des variables pour affichage
* @param unknown_type $variable
* @param unknown_type $longeur
* @param unknown_type $fonction
* @return unknown|string|mixed|Ambigous <string, unknown>
*/
function formatValeur($variable, $longeur=0, $fonction='')
{
$classWdate = new WDate();
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$valeur=strtr($variable, array('{'=>'','}'=>''));
$nomVar=strtr($valeur, array('$'=>''));
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
//@todo : Delete
global $tabVariables, $$nomVar;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if ( isset($tabVariables[$nomVar]) )
{
if ($longeur>0) {
return $variable;
} else {
if ($nomVar=='ZEMET') {
2014-05-02 13:00:07 +00:00
global $RPET, $DateNotice80;
if ( substr($DateNotice80,0,4)>=2010 ) {
$tableZemet = 'ZEMET2010';
} else {
$tableZemet = 'ZEMET1994';
}
if (isset($tabVariables[$tableZemet][$RPET.$ZEMET]['art'])) {
return $tabVariables[$tableZemet][$RPET.$ZEMET]['art'];
} else {
return $tabVariables[$tableZemet][$RPET.$ZEMET]['lib'];
}
2013-09-06 06:25:46 +00:00
}
// Cette variable a un libellé associé
$strTmp=eval("return $valeur;");
if (isset($tabVariables[$nomVar][$strTmp]['lib'])){
return $tabVariables[$nomVar][$strTmp]['lib'];
} elseif (isset($tabVariables[$nomVar]['0'.$strTmp]['lib'])){
return $tabVariables[$nomVar]['0'.$strTmp]['lib'];
}
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/DATE$/',$nomVar))
{
$strTmp=eval("return $valeur;");
return preg_replace('/00\//','01/',$classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$strTmp),0,8)));
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/DATEp$/',$nomVar))
{
global $DATEp;
$strTmp=eval("return $valeur;");
return preg_replace('/00\//','01/',$classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$strTmp),0,8)));
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/MMAA$/', $nomVar))
{
//DELAIPAY_MMAA ne marche pas !
$strTmp=eval("return $valeur;");
return $classWdate->dateT('Y-m','M Y', $strTmp);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/_MT$/',$nomVar))
{
$strTmp=eval("return $valeur;");
return number_format($strTmp,2,',',' ').'&nbsp;&euro;';
2013-08-27 08:49:35 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/_NB$/',$nomVar))
{
$strTmp=eval("return $valeur;");
return number_format($strTmp,0,',',' ');
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/_EU$/',$nomVar))
{
$strTmp=eval("return $valeur;");
2013-09-09 06:30:30 +00:00
if ($strTmp>=0 && $strTmp<10 || $strTmp>-10 && $strTmp<=0)
return number_format($strTmp,2,',',' ').'&nbsp;&euro;';
elseif ($strTmp>=10 && $strTmp<5000 || $strTmp>-5000 && $strTmp<=10)
return number_format($strTmp,0,',',' ').'&nbsp;&euro;';
elseif ($strTmp<=-10000000 || $strTmp>=10000000)
return number_format($strTmp/1000000,0,',',' ').'&nbsp;M&euro;';
else
return number_format($strTmp/1000,0,',',' ').'&nbsp;K&euro;';
2013-09-06 06:25:46 +00:00
}
elseif (preg_match('/_POURC$/',$nomVar))
{
$strTmp=eval("return $valeur;");
if ($strTmp>=10 || $strTmp<=-10)
return number_format($strTmp,0,',',' ').'&nbsp;%';
elseif ($strTmp>=1 || $strTmp<=-1)
return number_format($strTmp,1,',',' ').'&nbsp;%';
else
return number_format($strTmp,3,',',' ').'&nbsp;%';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/CAPITAL$/',$nomVar))
{
global $CAPITAL;
return number_format($CAPITAL,0,',', ' ').' &euro;';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/CAPITAL_PRE$/',$nomVar))
{
global $CAPITAL_PRE;
return number_format($CAPITAL_PRE,0,',',' ').'&nbsp;&euro;';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/CAPITAL_MTACTION$/',$nomVar))
{
global $CAPITAL_MTACTION;
return number_format($CAPITAL_MTACTION,0,',',' ').'&nbsp;&euro;';
}
elseif (preg_match('/CAPITAL_NBACTION$/',$nomVar))
{
global $CAPITAL_NBACTION;
return number_format($CAPITAL_NBACTION,0,',',' ');
}
elseif (preg_match('/^CAESTIME$/',$nomVar))
{
global $CAESTIME;
return number_format($CAESTIME/1000,0,',',' ').'&nbsp;k&euro;';
}
elseif (preg_match('/^CABIOUES$/',$nomVar))
{
global $CABIOUES;
return number_format($CABIOUES/1000,0,',',' ').'&nbsp;k&euro;';
}
elseif (preg_match('/DIMMAT$/',$nomVar))
{
global $DIMMAT;
return preg_replace('/00\//','01/',$classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$DIMMAT),0,8)));
}
elseif (preg_match('/DCREN$/',$nomVar))
{
return preg_replace('/00\//','01/',$classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$DCREN),0,8)));
}
elseif (preg_match('/MARCHEVOL$/',$nomVar))
{
global $MARCHEVOL;
if (abs($MARCHEVOL)>=5) return round($MARCHEVOL).' %';
else return number_format($MARCHEVOL,3,',',' ').'&nbsp;%';
}
elseif (preg_match('/MARCHEPART$/',$nomVar))
{
global $MARCHEPART;
if (abs($MARCHEPART)>=5) return round($MARCHEPART).' %';
else return number_format($MARCHEPART,3,',',' ').'&nbsp;%';
}
elseif (preg_match('/MARCHEPARTp$/',$nomVar))
{
global $MARCHEPARTp;
if (abs($MARCHEPARTp)>=5) return round($MARCHEPARTp).' %';
else return number_format($MARCHEPARTp,3,',',' ').'&nbsp;%';
}
elseif (preg_match('/MARCHEPARTEVOL$/',$nomVar))
{
global $MARCHEPARTEVOL;
if (abs($MARCHEPARTEVOL)>=5) return round($MARCHEPARTEVOL).' %';
else return number_format($MARCHEPARTEVOL,3,',',' ').'&nbsp;%';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/MARCHE$/',$nomVar))
{
global $MARCHE;
if ($MARCHE<10000) return number_format($MARCHE,0,',',' ').'&nbsp;&euro;';
elseif ($MARCHE<1000000) return number_format($MARCHE/1000,0,',',' ').'&nbsp;K&euro;';
elseif ($MARCHE<1000000000) return number_format($MARCHE/1000000,0,',',' ').'&nbsp;M&euro;';
else return number_format($MARCHE/1000000000,0,',',' ').' milliards d\'&euro;';
2013-08-27 08:49:35 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/MARCHEp$/',$nomVar))
{
global $MARCHEp;
if ($MARCHEp<10000) return number_format($MARCHEp,0,',',' ').'&nbsp;&euro;';
elseif ($MARCHEp<1000000) return number_format($MARCHEp/1000,0,',',' ').'&nbsp;K&euro;';
elseif ($MARCHEp<1000000000)return number_format($MARCHEp/1000000,0,',',' ').'&nbsp;M&euro;';
else return number_format($MARCHEp/1000000000,0,',',' ').' milliards d\'&euro;';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/^CA_Y\[(.*)\]/U',$nomVar, $matches2))
{
global $CA_Y;
return number_format($CA_Y[$matches2[1]]/1000,0,',',' ').' K&euro;';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/^RCAI_Y\[(.*)\]/U',$nomVar, $matches2))
{
global $RCAI_Y;
return number_format($RCAI_Y[$matches2[1]]/1000,0,',',' ').' K&euro;';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/(_COEF|_TAUX)$/',$nomVar))
{
$strTmp=eval("return $valeur;");
return number_format($strTmp,2,',','').'&nbsp;%';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
elseif (preg_match('/^SIREN$/',$nomVar))
{
global $SIREN;
return sprintf("%09s", $SIREN);
}
elseif (preg_match('/^SIRET$/',$nomVar))
{
global $SIRET;
return sprintf("%09s", substr($SIRET,0,9)).chr(160).substr($SIRET,-5);
}
elseif (preg_match('/^SIRENMERE$/',$nomVar))
{
global $SIRENMERE;
return sprintf("%09s", $SIRENMERE);
}
elseif (preg_match('/^SIRETMERE$/',$nomVar))
{
global $SIRETMERE;
return sprintf("%09s", substr($SIRETMERE,0,9)).chr(160).substr($SIRETMERE,-5);
}
elseif (preg_match('/^SIRENFILLE$/',$nomVar))
{
global $SIRENFILLE;
return sprintf("%09s", $SIRENFILLE);
}
elseif (preg_match('/^SIRETFILLE$/',$nomVar))
{
global $SIRETFILLE;
return sprintf("%09s", substr($SIRETFILLE,0,9)).chr(160).substr($SIRETFILLE,-5);
}
elseif (preg_match('/^TVAINTRA$/',$nomVar))
{
global $TVAINTRA;
return substr($TVAINTRA,0,2).' '.substr($TVAINTRA,2,2).' '.substr($TVAINTRA,4);
}
elseif (preg_match('/^DELAIPAY$/',$nomVar))
{
global $DELAIPAY;
return number_format($DELAIPAY,0,',',' ').' jours';
}
elseif (preg_match('/^DELAIPAYp$/',$nomVar))
{
global $DELAIPAYp;
return number_format($DELAIPAYp,0,',',' ').' jours';
}
elseif (preg_match('/^SCOREDEFTAUX$/',$nomVar))
{
global $SCOREDEFTAUX;
if ($SCOREDEFTAUX>=5) return round($SCOREDEFTAUX).' %';
else return number_format($SCOREDEFTAUX,3,',',' ').'&nbsp;%';
}
elseif (preg_match('/BILANANNEE$/',$nomVar))
{
global $BILANANNEE;
return $BILANANNEE;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
return $variable;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Fonction de callback
function format($matches)
{
//@todo : Delete global
global $R, $Rp, $Rp2, $Rp3, $Rp4;
global $Rs, $Rsp, $Rsp2, $Rsp3, $Rsp4;
global $Revol, $Revolp, $Revolp2, $Revolp3;
global $Ra, $Rap, $Rdiff;
global $regR, $regRs;
global $tabFormulesRatios;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$strRetour='$'.$matches[1];
$strUnite='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if (preg_match("/\{MOY\(R\[(\d+)\],(\d+)\)/Ui", $strRetour, $matches2)) {
$tmpRatioId=$matches2[1]*1;
$tmpAnnees =$matches2[2]*1;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$valeur=$R[$tmpRatioId];
for($iMoy=0; $iMoy<$tmpAnnees; $iMoy++) {
if ($iMoy==1) $valeur+=$Rp[$tmpRatioId];
elseif ($iMoy==2) $valeur+=$Rp2[$tmpRatioId];
elseif ($iMoy==3) $valeur+=$Rp3[$tmpRatioId];
elseif ($iMoy==4) $valeur+=$Rp4[$tmpRatioId];
}
return formatRatio('', $valeur/$tmpAnnees, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']));
} elseif (preg_match('/\{GRAPH\((.*)\)\}/Ui', $strRetour, $matches2)) {
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace Graph", $strRetour);
return $matches[1];
} elseif (preg_match("/PROJEC\((R.*),(.*)\)/Ui", $strRetour, $matches2)) {
if (preg_match('/Rs/', $matches2[2])) $valeur=$regRs6;
else $valeur=$regR6;
switch(strtoupper($matches2[1])) {
//case 'PROJECCOEF': return formatRatio('', PROJECCOEF($valeur, $matches2[2]), strtoupper($tabFormulesRatios[6]['unite'])); break;
case 'PROJEC': return formatRatio('', PROJEC($valeur, $matches2[2]), strtoupper($tabFormulesRatios[6]['unite'])); break;
//case 'PROJECTAUX': return formatRatio('', PROJECTAUX($valeur, $matches2[2]), strtoupper($tabFormulesRatios[6]['unite'])); break;
}
} elseif (preg_match('/\$\{(\+|!|)(Rp4|Rp3|Rp2|Rp|Rs|Rsp|Rap|Ra|Rdiff|Revolp2|Revolp|Revol|R|regR)\[(\d+)\]\}/Ui', $strRetour, $matches2)) {
$tmpRatio=$matches2[2];
$tmpRatioId=$matches2[3]*1;
if ($matches2[1]=='+') $forceSigne='+';
elseif ($matches2[1]=='!') $forceSigne='!';
else $forceSigne='';
if ($tmpRatio=='R')
return formatRatio($R, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rp')
return formatRatio($Rp, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rp2')
return formatRatio($Rp2, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rp3')
return formatRatio($Rp3, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rp4')
return formatRatio($Rp4, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Ra')
return formatRatio($Ra, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rap')
return formatRatio($Rap, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rs')
return formatRatio($Rs, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rsp')
return formatRatio($Rsp, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rsp2')
return formatRatio($Rsp2, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rsp3')
return formatRatio($Rsp3, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Rsp4')
return formatRatio($Rsp4, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Revol')
return formatRatio($Revol, $tmpRatioId, '%', $forceSigne);
elseif ($tmpRatio=='Rdiff')
return formatRatio($Rdiff, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
elseif ($tmpRatio=='Revolp')
return formatRatio($Revolp, $tmpRatioId, '%', $forceSigne);
elseif ($tmpRatio=='Revolp2')
return formatRatio($Revolp2, $tmpRatioId, '%', $forceSigne);
elseif ($tmpRatio=='Revolp3')
return formatRatio($Revolp3, $tmpRatioId, '%', $forceSigne);
elseif ($tmpRatio=='regR')
return formatRatio($regR, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
} elseif (preg_match('/\$\{(.*)\((\d+)\)\}/Ui', $strRetour, $matches2)) {
$tmpVar=$matches2[1];
$tmpVarLen=$matches2[2]*1;
return formatValeur('$'.$tmpVar, $tmpVarLen);
} else {
return formatValeur($strRetour);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
return $strRetour.' '.$strUnite;
}
2013-08-27 08:49:35 +00:00
2013-09-06 06:25:46 +00:00
/**
* Compute the indiScore
* @param string $siren
* @param string $nic
* @param boolean $accesDist
* @param integer $cycleClient
* @param boolean $mailDebug
* @param string $type
* "scores" ou "valo"
*/
function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mailDebug=true, $type = 'scores', $sourceModif='jour')
2013-09-06 06:25:46 +00:00
{
$timer = array('debutIndiscore'=>microtime(true));
if (strlen($siren)>9 || (substr(''.$siren,0,9)*1)<100 ) {
debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
return false;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// @todo : delete global
global $tva;
2013-09-13 05:45:32 +00:00
global $tabInfla;
global $tabFormules;
global $tabFormulesRatios;
2013-09-06 06:25:46 +00:00
global $mBil;
global $tabBilan;
global $efftr;
2013-09-13 05:45:32 +00:00
global $tabRatiosInfos;
global $tabVariables;
// Valorisation
global $tabTxRendObli;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
global $R, $Rp, $Rp2, $Rp3, $Rp4;
global $Rs, $Rsp, $Rsp2, $Rsp3, $Rsp4;
global $Revol, $Revolp, $Revolp2, $Revolp3;
global $regR, $regRs;
global $Ra, $Rap, $Rdiff;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
//Définition du nom des variables
require_once realpath(dirname(__FILE__)).'/globalCommentaires.php';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$NIVEAU=$cycleClient; // 1, 2, 3 ou 5 Niveau de version des commentaires
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$iDb = new WDB();
$iRncs = new MRncs();
$iInsee = new MInsee();
$iInsee->AnnoncesInMemory = true;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Récupération des informations identitaire
*/
$tabIdentite=$iInsee->getIdentiteEntreprise($siren, $nic, 0, false, $accesDist);
$tabBilan=array();
$timer['identite']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if (empty($tabIdentite)) {
debugLog('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
return false;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
if ( !in_array($type, array('scores', 'valo')) ) {
$type = 'scores';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
$genereComment=false;
if ( in_array($cycleClient, array(2, 3, 4, 5)) ) {
$genereComment = true;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
//Chargement des phrases de commentaires - @todo : Mettre en cache
$tabCommentaires = $tabTri = $tabTriAff = array();
switch( $type ) {
case 'scores':
2014-05-02 13:00:07 +00:00
$version = '414';
2013-09-06 06:25:46 +00:00
require_once 'Metier/scores/Variables/CommentsIndiscore'.$version.'.php';
break;
case 'valo':
2013-09-09 13:34:50 +00:00
$version = '26';
2013-09-06 06:25:46 +00:00
require_once 'Metier/scores/Variables/CommentsValo'.$version.'.php';
break;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
$classWdate = new WDate();
2013-09-10 17:11:11 +00:00
//Initialisation tabFormules depuis le cache
$tabVariables = include realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Variables/CacheTabVariables.php';
$tabFormules = include realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Variables/CacheTabFormules.php';
2013-09-06 06:25:46 +00:00
$tabFormulesRatios = array();
foreach ($tabFormules as $tmpFormule) {
$tabFormulesRatios[$tmpFormule['id']] = $tmpFormule;
$tabRatiosInfos[$tmpFormule['id']]=array('unite' => $tmpFormule['unite']);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
$tabRatiosSecteurs = $tabBilansR = $tabRatios2 = $tabRatiosEvol = array();
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$NIC=substr($tabIdentite['SiretSiege'],-5);
$SIREN=$siren;
$SIRET=$tabIdentite['SiretSiege'];
$ANNEE=date('Y')*1;
$ANNEEp3=$ANNEE-3;
$ANNEEp2=$ANNEE-2;
$ANNEEp=$ANNEE-1;
$ANNEE1=$ANNEE+1;
$ANNEE2=$ANNEE+2;
$ANNEE3=$ANNEE+3;
$ANNEE4=$ANNEE+4;
$ANNEE5=$ANNEE+5;
$JOUR_DATE=date('Y-m-d');
$JOUR_HEURE=date('H:i');
$MAX_TEMOINS=99;
// Variables modifiées directement par les commentaires
$TEMOINACT=0; // positionnement de présence d'éléments de commentaires du ACTIVITE
$TEMOINACT_MAX=$MAX_TEMOINS; // Nombre maxi de lignes ACTIVITE
$TEMOINATT=0; // Positionnement de présence d'éléments de commentaires du ATTENUATION DE LA NOTE
$TEMOINATT_MAX=$MAX_TEMOINS; // Nombre maxi de lignes ATTENUATION DE LA NOTE
$TEMOINAVI=0; // Positionnement de présence d'éléments de conclusion
$TEMOINAVI_MAX=$MAX_TEMOINS; // Nombre maxi d'élements de conclusion à afficher
$TEMOINCAPFAIBLE=0; // Nombre de cas de faible capital rencontrés
$TEMOINCAPFAIBLE_MAX=$MAX_TEMOINS; // Nombre maxi de lignes CAPITAL FAIBLE
$TEMOINCLES=0; // positionnement de présence d'éléments de commentaires de CHIFFRES CLES
$TEMOINCLES_MAX=$MAX_TEMOINS; // Nombre maxi de lignes CHIFFRES CLES
$TEMOINCONF=0; // positionnement de présence d'éléments de commentaires de CONFORMITE
$TEMOINCONF_MAX=$MAX_TEMOINS; // Nombre maxi de lignes CONFORMITE
$TEMOINCYANO=0; // Positionnement d'anomalies d'éléments "CYCLES"
$TEMOINCYANO_MAX=$MAX_TEMOINS; // Nombre maxi de lignes "CYCLES"
$TEMOINCYC=0; // Positionnement de présence d'éléments "CYCLE"
$TEMOINCYC_MAX=$MAX_TEMOINS; // Nombre maxi de lignes "CYCLE"
$TEMOINDEF=0; // Nb éléments défavorables
$TEMOINDEF_MAX=$MAX_TEMOINS; // Nombre maxi de lignes défavorables
$TEMOINDIAG=0; // positionnement de présence d'éléments de commentaires de DIAGNOSTIC STRATEGIQUE
$TEMOINDIAG_MAX=$MAX_TEMOINS; // nombre maxi de lignes DIAGNOSTIC STRATEGIQUE
$TEMOINDIR=0; // positionnement de présence d'éléments de commentaires de DIRIGEANCE
$TEMOINDIR_MAX=$MAX_TEMOINS; // Nombre maxi de lignes DIRIGEANCE
$TEMOINEXP=0; // Nb de témoins du § Exploitation (ancien § Chiffres clefs)
$TEMOINEXP_MAX=$MAX_TEMOINS; // nombre maxi de lignes "EXPLOITATION"
$TEMOINFAV=0; // Nb éléments favorables
$TEMOINFAV_MAX=$MAX_TEMOINS; // nombre maxi de lignes favorables
$TEMOINFIL=0; // positionnement de présence d'éléments de commentaires de FILIALES
$TEMOINFIL_MAX=$MAX_TEMOINS; // nombre maxi de lignes FINLIALES
$TEMOINFIN=0; // positionnement de présence d'éléments de commentaires de FINANCEMENT
$TEMOINFIN_MAX=$MAX_TEMOINS; // nombre maxi de lignes FINANCEMENT
$TEMOINFLANO=0; // positionnement d'anomalies d'éléments "FLUX"
$TEMOINFLANO_MAX=$MAX_TEMOINS; // nombre maxi de lignes anomalies "FLUX"
$TEMOINFLUX=0; // Témoins qui contrôle le tableau des flux
$TEMOINFLUX_MAX=$MAX_TEMOINS; // nombre maxi de lignes tableaux de FLUX
$TEMOINGRAPH=0; // positionnement de présence de GRAPHIQUES en niveau 2
$TEMOINGRAPH_MAX=$MAX_TEMOINS; // nombre maxi de GRAPHIQUES en niveau 2
$TEMOINHIST=0; // positionnement de présence d'éléments "HISTOIRE"
$TEMOINHIST_MAX=$MAX_TEMOINS; // nombre maxi de lignes "HISTOIRE"
$TEMOINLOC=0; // positionnement de présence d'éléments "LOCALISATION"
$TEMOINLOC_MAX=$MAX_TEMOINS; // nombre maxi de lignes "LOCALISATION"
$TEMOINMAR=0; // positionnement de présence d'éléments marché
$TEMOINMAR_MAX=$MAX_TEMOINS; // nombre maxi de lignes marche
$TEMOINMARPUB=0; // positionnement de présence d'éléments marchés publics
$TEMOINMARPUB_MAX=$MAX_TEMOINS; // nombre maxi de lignes marchés publics
$TEMOINMOIN=0; // positionnement de présence du tableau de synthese MOINS
$TEMOINMOIN_MAX=$MAX_TEMOINS; // nombre maxi de lignes les MOINS
$TEMOINNORM=0; // Nb éléménts du tableau de synthèse Les Normes
$TEMOINNORM_MAX=$MAX_TEMOINS; // nombre maxi de lignes les NORMES
$TEMOINOBS=0; // Nb observations
$TEMOINOBS_MAX=$MAX_TEMOINS; // nombre maxi de lignes observations
$TEMOINPAY=0; // Nb messages paiements
$TEMOINPAY_MAX=$MAX_TEMOINS; // nombre maxi de lignes les PAIEMENTS
$TEMOINPLUS=0; // Nb éléménts du tableau de synthèse Les Plus
$TEMOINPLUS_MAX=$MAX_TEMOINS; // nombre maxi de lignes les PLUS
$TEMOINPROF=0; // positionnement de présence d'éléments de commentaires du PROFIL JURIDIQUE
$TEMOINPROF_MAX=$MAX_TEMOINS; // nombre maxi de lignes du PROFIL JURIDIQUE
$TEMOINPROJ=0; // positionnement de présence d'éléments "PROJECTION"
$TEMOINPROJ_MAX=$MAX_TEMOINS; // nombre maxi de lignes "PROJECTION"
$TEMOINREPA=0; // positionnement de présence d'éléments "REPARTITION VA"
$TEMOINREPA_MAX=$MAX_TEMOINS; // nombre maxi de lignes "REPARTITION VA"
$TEMOINRES=0; // positionnement de présence de commentaires réserves
$TEMOINRES_MAX=$MAX_TEMOINS; // nombre maxi de lignes réserves
$TEMOINRIS=0; // Nb éléménts de commentaires risques
$TEMOINRIS_MAX=$MAX_TEMOINS; // nombre maxi de lignes risques
$TEMOINSTACTIF=0; // positionnement de présence d'éléments de commentaires des ratios de stucture bilan ACTIF
$TEMOINSTACTIF_MAX=$MAX_TEMOINS; // nombre maxi de lignes les STRUCTURE ACTIF
$TEMOINSTANO=0; // positionnement de présence d'éléments "STRUCTURE BILAN" (ANOMALIES)
$TEMOINSTANO_MAX=$MAX_TEMOINS; // nombre maxi de lignes "STRUCTURE BILAN" (ANOMALIES)
$TEMOINSTPASS=0; // positionnement de présence d'éléments de commentaires des ratios de stucture bilan PASSIF
$TEMOINSTPASS_MAX=$MAX_TEMOINS; // nombre maxi de lignes les STRUCTURE PASSIF
$TEMOINSTRUCT=0; // positionnement de présence d'éléments de commentaires des ratios de stucture bilan
$TEMOINSTRUCT_MAX=$MAX_TEMOINS; // nombre maxi de lignes les STRUCTURE
$TEMOINSTSYNT=0; // Positionnement de présence d'éléments de commentaires des ratios de stucture bilan SYNTHESE
$TEMOINSTSYNT_MAX=$MAX_TEMOINS; // Nombre maxi de lignes les STRUCTURE SYNTHESE
$TEMOINVUL=0; // positionnement de présence d'éléments de commentaires de la VULNERABILITE
$TEMOINVUL_MAX=$MAX_TEMOINS; // Nombre maxi de lignes de la VULNERABILITE
$TEMOINADIZES=0; // positionnement de présence d'éléments de commentaires du MODELE Ichak ADIZES
$TEMOINADIZES_MAX=$MAX_TEMOINS; // nombre maxi de lignes Ichak ADIZES
$TEMOINMRQ=0; // positionnement de présence de marques déposées
$TEMOINMRQ_MAX=$MAX_TEMOINS; // nombre maxi de commentaires marques déposées
$TEMOINMRQLIST=0; // positionnement de ligne de liste des marques déposées
$TEMOINMRQLIST_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
//@todo : Commentaires
$TEMOINVALBIL=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALBIL_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALCONC=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALCONC_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALCR=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALCR_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALDIAG=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALDIAG_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALMETH=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALMETH_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALMRET=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALMRET_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALPATR=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALPATR_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALPOND=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALPOND_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALPRES=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALPRES_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALRESV=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALRESV_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALRETR=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALRETR_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALTABB=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALTABB_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALTABS=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALTABS_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALTABR=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALTABR_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALMINMAX=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALMINMAX_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
$TEMOINVALMAXMIN=0; // positionnement de ligne de liste des marques déposées
$TEMOINVALMAXMIN_MAX=$MAX_TEMOINS; // nombre maxi de lignes des listes des marques déposées
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Zones utilisées dans les calculs **/
$CALCUL1=0;
$CALCUL2=0;
$CALCUL3=0;
$CALCUL4=0;
$CALCUL5=0;
$CALCUL6=0;
$CALCUL7=0;
$CALCUL8=0;
$CALCUL9=0;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ENQUETELIM=6; // 6 mois de validités pour une note en provenance d'une enquête
$ENQUETEMAXI=90; // Score Maximum / 100 en provenance d'une enquête
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$tendance='';
$naf=$tabIdentite['NafEnt'];
$APEETAB=$tabIdentite['NafEtab'];
$TRIBUNAL_ACTUEL=strtr($tabIdentite['TribunalLib'],array('TC '=>'Tribunal de Commerce de '));
$TRIBUNAL_CREATION=$TRIBUNAL_PROCOL='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$nafLib=$tabIdentite['NafEntLib'];
$efftr=$tabIdentite['Effectif']*1;
$fj=$tabIdentite['FJ'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Société côtée en bourse
$SOCIETE_COTE=false;
$SOCIETE_COTE_MARCHE_MERE=''; /** @todo: Nom du marché de l'actionnaire côté **/
$SOCIETE_COTE_ISIN=$tabIdentite['Isin'];
if ($SOCIETE_COTE_ISIN<>'') {
$SOCIETE_COTE=true;
$SOCIETE_COTE_PLACE=$tabIdentite['Bourse']['placeCotation'];
$SOCIETE_COTE_MARCHE=$tabIdentite['Bourse']['marche'];
$SOCIETE_COTE_CAPITALISATION=$tabIdentite['Bourse']['capitalisation']; // Afficher en KE
$SOCIETE_COTE_COURS=$tabIdentite['Bourse']['derCoursCloture'];
$SOCIETE_COTE_COURS_DATE=$tabIdentite['Bourse']['derCoursDate'];
2013-09-06 06:25:46 +00:00
$SOCIETE_COTE_COURS_MIN=0;//@todo:$tabRet['Bourse']['derCoursDate'];
$SOCIETE_COTE_COURS_MAX=0;//@todo:$tabRet['Bourse']['derCoursDate'];
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
// Elements provenant du Notice 80 hors identité
$tabIden80=$iInsee->getInfosNotice($siren,$NIC);
$timer['getInfosNotice'] = microtime(true);
$RECME=$tabIden80['insRECME'];
2014-05-02 13:00:07 +00:00
$ZEMET=$tabIden80['insZEMET'];
$REPET=$tabIden80['insRPET'];
2013-09-06 06:25:46 +00:00
$RPEN=$tabIden80['insRPEN'];
2014-05-02 13:00:07 +00:00
$DateNotice80=$tabIden80['dateNotice'];
$depcomen=$tabIden80['insDEPCOMEN']*1;
2013-09-06 06:25:46 +00:00
$TU=$tabIden80['insTU'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Solvabilité
*/
$isolv = new MSolvabilite($siren, $naf, $tabIdentite['EffEnTr'], $tabIdentite['Effectif']*1, $tabIdentite['CP'],
$fj, $tabIdentite['Capital'], $tabIdentite['CapitalDev'], $tabIdentite['DateCreaEn'],
$tabIdentite['DateCreaEt'], '', $RECME);//, $tabIdentite['Singularite']);
$noteStructure=$isolv->getSolvabilite();
$timer['solv']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Bilan - Liste des bilans
*/
$mBil=new MBilans($siren);
$tabBilans=$mBil->listeBilans($accesDist);
$NBBILAN=count($tabBilans);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Calcul des ratios
*/
$tabBilan=$tabBil=array();
2013-09-10 17:11:11 +00:00
if ($NBBILAN>0) $tabRatios = calculRatios($tabBilans, $tabIdentite, $accesDist);
2013-09-06 06:25:46 +00:00
$timer['ratios']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/**
* Différences INSEE/RNCS
*/
$tabIdentiteRncs=$iRncs->getInfosEntrep($siren);
$ACTIFRNCS=$tabIdentiteRncs['actif'];
$ACTIFINSEE=$tabIdentite['Actif'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$APEENT=$APEINSEE=$naf;
$APERNCS=$tabIdentiteRncs['nafEnt'];
if (strlen($APEENT)==5) $APE5=$APEENT;
elseif (strlen($APEENT)==4) $APE4=$APEENT;
else $APE5=$APE4='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$DIMMAT=$tabIdentiteRncs['dateImma'];
$DIMMAT_AA=substr($tabIdentiteRncs['dateImma'],0,4);
$FJURINSEE=$tabIdentite['FJ']*1;
$FJURINSEE1=substr($FJURINSEE,0,1)*1;
if ($FJURINSEE1==0) $FJURINSEE1=substr($FJURINSEE,0,1)*1;
$FJURINSEE2=substr($FJURINSEE,0,2)*1;
if ($FJURINSEE2==0) $FJURINSEE2=$FJURINSEE;
$FJURRNCS=$tabIdentiteRncs['cj']*1;
$FJURRNCS1=substr($FJURRNCS,0,1)*1;
if ($FJURRNCS1==0) $FFJURRNCS1=substr($FJURRNCS,0,1)*1;
$FJURRNCS2=substr($FJURRNCS,0,2)*1;
if ($FJURRNCS2==0) $FJURRNCS2=$FJURRNCS;
if (trim($tabIdentiteRncs['raisonSociale'])=='') $PRESENTRNCS=false;
else $PRESENTRNCS=true;
if ($tabIdentite['Source']*1<>2) $PRESENTINSEE=false;
else $PRESENTINSEE=true;
$NOMEN=trim(strtr($tabIdentite['Nom'],array('*'=>' ','/'=>' ')));
$ENSEIGNE=$tabIdentite['Enseigne'];
$ENTREP_ALT=$tabIdentite['GeoAlt']; // Altitude de l'établissement
$ACTIVNAT=$tabIdentite['NatureActivite'];
$AUXILT=$tabIdentite['Auxiliaire'];
$ORIGINE=$tabIdentite['OrigineCreation'];
$ACTISURF=$tabIdentite['ACTISURF'];
$EXPLEN=$tabIdentite['EXPLEN'];
$EXPLET=$tabIdentite['EXPLET'];
$LIEUACT=$tabIdentite['LIEUACT'];
$MODEN=$tabIdentite['MODEN'];
$MONOACT=$tabIdentite['MONOACT'];
$MONOREG=$tabIdentite['MONOREG'];
$PRODPART=$tabIdentite['PRODPART'];
// Saisonnalité de l'activité
if ($tabIdentite['Saisonnalite']==1) $SAISONAT='S';
else $SAISONAT='P';
$CAPITAL=$tabIdentite['Capital'];
$CAPITAL_NBACTION=$tabIdentite['CapitalNbActions'];
$CAPITAL_MTACTION=$tabIdentite['CapitalMtActions'];
if ($CAPITAL>0) {
switch ($tabIdentite['CapitalType']) {
case 'V': $CAPITAL_TYPE='variable'; break;
case 'S': $CAPITAL_TYPE='fixe'; break;
default: $CAPITAL_TYPE=''; break;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
} else $CAPITAL_TYPE='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$TCAEXP=$tabIdentite['TrancheCAexp'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Formes Juridique de l'entreprise
$FJUR=$FJUR4=$fj*1;
$FJUR1=substr($fj,0,1)*1;
if ($FJUR1==0) $FJUR1=substr($FJUR,0,1)*1;
$FJUR2=substr($fj,0,2)*1;
if ($FJUR2==0) $FJUR2=$FJUR;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$NBETEXPL=$tabIdentite['NbEtab'];
$REGIMP=$tabIdentite['REGIMP'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if (strtoupper(substr($tabIdentite['AutreId'],0,1))=='W') $WALDEC=$tabIdentite['AutreId'];
else $WALDEC='';
// AGE en mois
if ($tabIdentite['DateCreaEt']>0 && $tabIdentite['DateCreaEt']<$tabIdentite['DateCreaEn'])
$dateCrea=$tabIdentite['DateCreaEt'];
elseif ($tabIdentite['DateCreaEn']>0)
$dateCrea=$tabIdentite['DateCreaEn'];
elseif (str_replace('-','',$DIMMAT)*1>19000101)
$dateCrea=str_replace('-','',$DIMMAT);
else {
$dateCrea=0;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Attention 'dateCrea'",'Corriger les tests de la valeur !');
}
$DCREN=$dateCrea;
$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++
}
*/
// Tableau des années de bilans
$tabAnnees=array();
// Tableau d'infos sur les bilans
$i2=0;
2013-09-09 06:30:30 +00:00
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 (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900){
$tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4);
}
// Utilisation d'un index texte à cause du webservice
foreach ($Rtmp as $Ridx=>$Rmont) {
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']))) ) {
$Rmont=(($tabRatios[$i][$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]);
$Rdiffmont=$tabRatios[$i][$Ridx]-$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']))) ) {
$Rmont=(($tabRatios[$i][$Ridx]-$tabRatios[$i+2][$Ridx])*100)/abs($tabRatios[$i+2][$Ridx]);
$Rdiffmont=$tabRatios[$i][$Ridx]-$tabRatios[$i+1][$Ridx];
} else {
$Rmont='NS';
$Rdiffmont='NS';
}
$tabRatiosEvol[$i2][$Ridx]=$Rmont;
$tabRatiosDiff[$i2][$Ridx]=$Rdiffmont;
2013-06-19 09:45:13 +00:00
}
2013-09-09 06:30:30 +00:00
$tabRatiosNew[$i2]=$tabRatios[$i];
if ($tabBilan[$i]['CONSOLIDE']<>'C') $i2++;
2013-06-19 09:45:13 +00:00
}
}
2013-09-06 06:25:46 +00:00
$timer['anbilans']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$R=$tabRatiosNew[0];
$Rp=$tabRatiosNew[1];
$Rp2=$tabRatiosNew[2]; // Ratios précédents N-2
$Rp3=$tabRatiosNew[3]; // Ratios précédents N-2
$Rp4=$tabRatiosNew[4]; // Ratios précédents N-4
$Rdiff=$tabRatiosDiff[0];
$Revol=$tabRatiosEvol[0];
$Revolp=$tabRatiosEvol[1];
$Revolp2=$tabRatiosEvol[2];
$Revolp3=$tabRatiosEvol[3];
// Régression linéaire : tableau des années - @todo : Delete global
global $tabRegX; // Tableau des années de millesime de bilans
global $Y, $Yaff; // Tableau des années en paramètres + $nbAnnees Projetées
global $PROJECTAUX; // Taux de projection de n à n+$nbAnnees
global $PROJECCOEF;
$tabRegX=array();
foreach ($tabBilans as $tabTmp){
$tabRegX[]=$tabTmp['millesime'];
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
$iMax=count($tabRegX);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$EFFECTIF=$R[24];
if ($EFFECTIF*1==0 && $efftr>0) $EFFECTIF=$efftr;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$CABILAN=$R[6];
/**
* Tableau des ratios secteurs
* Requete BDD
*/
$MARCHE=$MARCHEp=$MARCHEVOL=$MARCHEPART=$MARCHEPARTp=$MARCHEPARTEVOL='';
$MARCHESAL=$MARCHESALp=$MARCHENBENT=$MARCHENBENTp='';
$tabRatiosSecteurs=$Rtot=array();
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];
elseif (count($tabAnnees)>1) $strAnnees='AND annee BETWEEN '.$tabAnnees[1].' AND '.$tabAnnees[0];
else $strAnnees='AND annee='.$tabAnnees[0];
$tabTmp=$iDb->select('ratios_secteurs',
'annee, naf5, naf4, id, (montant/nombre) AS ratio, montant, nombre',
"1 $strNaf $strAnnees ORDER BY annee DESC, id ASC",
INDISCORE_DEBUG, MYSQL_ASSOC);
$anneePre=$tabTmp[0]['annee'];
$iAn=0;
foreach ($tabTmp as $tabTmp2) {
if ($anneePre<>$tabTmp2['annee']){ $iAn++; }
$Ridx=$tabTmp2['id'];
if ($tabRatiosInfos[$Ridx]['unite']=='EUR'){
$montant=round($tabTmp2['ratio']*1000);
} else {
$montant=round($tabTmp2['ratio']);
}
// Gestion des bornes
if ($tabBorneMin[$Ridx]<>'' && $montant<$tabBorneMin[$Ridx]){
$montant='<'.$tabBorneMin[$Ridx];
} elseif ($tabBorneMax[$Ridx]<>'' && $montant>$tabBorneMax[$Ridx]){
$montant='>'.$tabBorneMax[$Ridx];
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
if (substr($montant,0,1)=='N' || substr($montant,0,1)=='<' || substr($montant,0,1)=='>'){
$tabRatiosSecteurs[$iAn][$Ridx]=$montant;
} else {
$tabRatiosSecteurs[$iAn][$Ridx]=round($montant,2);
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$anneePre=$tabTmp2['annee'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Calcul des infos MARCHES
if (date('m')*1>6) // On est courant 2ème semestre
$anneeBaseMarche=-1;
else
$anneeBaseMarche=-2;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
for ($iMarche=0; $iMarche<3; $iMarche++) {
$tmpCalc=($ANNEE-$iMarche+$anneeBaseMarche)*1;
if ($tmpCalc==$tabTmp2['annee']*1) {
switch ($Ridx*1) {
//$nb=$tabTmp2['nombre'];
//case 1: // CA France en M?
//case 3: // CA Export en M?
case 5: // CA Total en M?
$Rtot[$iMarche][0]=$tabTmp2['nombre']; // On ne calcul le nombre d'acteurs pour cette information qu'avec le CA total, information la + renseignée
case 7: // Résultat Net
$Rtot[$iMarche][$Ridx]=round($tabTmp2['montant']*1000); // En euro
break;
case 24:// Effectif
$Rtot[$iMarche][$Ridx]=round($tabTmp2['montant']);
break;
}
2013-06-19 09:45:13 +00:00
}
}
}
2013-09-06 06:25:46 +00:00
// Pour la comparaison
/** @todo
//MARCHEVOLUMEVOL // Le % d'évolution du volume
**/
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$MARCHE=$Rtot[0][5]; // Taille du marché en ME
$MARCHEp=$Rtot[1][5]; // Taille du marché précédent en ME
$MARCHEVOL=(($MARCHE-$MARCHEp)*100)/$MARCHEp; // % évolution du marche N/N-1
$MARCHEPART=$R[5]*100/$MARCHE; // Part de marche en %
$MARCHEPARTp=$Rp[5]*100/$MARCHEp; // Part de marche précédent en %
$MARCHEPARTEVOL=(($MARCHEPART-$MARCHEPARTp)*100)/$MARCHEPARTp; // % évolution de la part de marché N / N-1
$MARCHESAL=$Rtot[0][24]; // Nb salariés du marché
$MARCHESALp=$Rtot[1][24]; // Nb salariés du marché N-1
$MARCHENBENT=$Rtot[0][0]; // Nombre d'entités
$MARCHENBENTp=$Rtot[1][0]; // Nombre d'entités N-1
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$Rs=$tabRatiosSecteurs[0];
$Rsp=$tabRatiosSecteurs[1];
$Rsp2=$tabRatiosSecteurs[2]; // Ratios secteurs précédents N-2
$Rsp3=$tabRatiosSecteurs[3]; // Ratios secteurs précédents N-3
$Rsp4=$tabRatiosSecteurs[4]; // Ratios secteurs précédents N-4
$timer['ratiosecteur']=microtime(true);
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Régression : Ratios
foreach ($tabFormules as $i2=>$Rtmp) {
for ($i=0;$i<=$iMax;$i++) {
if (isset($tabRatios[$i][$Rtmp['id']])) {
$regR[$Rtmp['id']][]=$tabRatios[$i][$Rtmp['id']];
} else {
unset($tabRegX[$i]);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
if (isset($tabRatiosSecteurs[$i][$Rtmp['id']]))
$regRs[$Rtmp['id']][]=$tabRatiosSecteurs[$i][$Rtmp['id']];
}
if ( is_array($regR) && array_key_exists($Rtmp['id'], $regR) ) {
$regR[$Rtmp['id']]=array_reverse($regR[$Rtmp['id']]);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
if ( is_array($regRs) && array_key_exists($Rtmp['id'], $regRs) ) {
$regRs[$Rtmp['id']]=array_reverse($regRs[$Rtmp['id']]);
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
}
// On renverse les tableaux 2008, 2007, 2006... en 2006, 2007, 2008
$tabRegX=array_reverse($tabRegX);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$timer['regression']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** 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'];
$nmp=$tabBilan[0]['DUREE_MOIS_PRE'];
$BILANDATE=$tabBilan[0]['DATE_CLOTURE'];
$tabClotures[$BILANDATE]=$BILANDATE;
$BILANDATEp=$tabBilan[0]['DATE_CLOTURE_PRE'];
if ($BILANDATEp==0) $BILANDATEp=$tabBilan[1]['DATE_CLOTURE'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$BILAN=$BILANp=$BILANp2=$BILANp3=$BILANp4=0;
$BILANANNEE=substr($BILANDATE,0,4)*1;
$BILANANNEEp=substr($BILANDATEp,0,4)*1;
if ($BILANANNEEp>0) {
$BILANp=1;
$nbMoisBilDate=$classWdate->nbMoisEntre($BILANDATEp, $BILANDATE);
$nbMoisBilCumul+=$nmp;
$tabClotures[$BILANDATEp]=$BILANDATEp;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$BILANDATEp2 =$tabBilan[2]['DATE_CLOTURE'];
$BILANANNEEp2=substr($BILANDATEp2,0,4)*1;
$nmp2=$tabBilan[2]['DUREE_MOIS'];
if ($BILANANNEEp2>0) {
$BILANp2=1;
$nbMoisBilDate=$classWdate->nbMoisEntre($BILANDATEp2, $BILANDATE);
$nbMoisBilCumul+=$nmp2;
$tabClotures[$BILANDATEp2]=$BILANDATEp2;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$BILANDATEp3 =$tabBilan[3]['DATE_CLOTURE'];
$BILANANNEEp3=substr($BILANDATEp3,0,4)*1;
$nmp3=$tabBilan[3]['DUREE_MOIS'];
if ($BILANANNEEp3>0) {
$BILANp3=1;
$nbMoisBilDate=$classWdate->nbMoisEntre($BILANDATEp3, $BILANDATE);
$nbMoisBilCumul+=$nmp3;
$tabClotures[$BILANDATEp3]=$BILANDATEp3;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$BILANDATEp4 =$tabBilan[4]['DATE_CLOTURE'];
$BILANANNEEp4=substr($BILANDATEp4,0,4)*1;
$nmp4=$tabBilan[4]['DUREE_MOIS'];
if ($BILANANNEEp4>0) {
$BILANp4=1;
$nbMoisBilDate=$classWdate->nbMoisEntre($BILANDATEp4, $BILANDATE);
//$nbMoisBilCumul+=$nmp4;
$tabClotures[$BILANDATEp4]=$BILANDATEp4;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Liste des années de bilans ultérieurs
$BILANANNEE1=$BILANANNEE+1;
$BILANANNEE2=$BILANANNEE+2;
$BILANANNEE3=$BILANANNEE+3;
$BILANANNEE4=$BILANANNEE+4;
$BILANANNEE5=$BILANANNEE+5;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Détection fine de l'état de fermeture éventuel à l'INSEE **/
$tabTmp=$iDb->select('insee.insee_even', 'insEVE, insDATEVE',
"insSIREN=$siren AND insEVE IN ('400','410','420','425','MPF','MNP') ORDER BY insDATEVE DESC", INDISCORE_DEBUG, MYSQL_ASSOC);
if (count($tabTmp)>0) {
$tabModif=$tabTmp[0];
$ETATINSEE_MMAA=substr($tabModif['insDATEVE'],0,7);
switch(''.$tabModif['insEVE']) {
case '400': // Suppression d'un double
$ACTIFINSEE=false; // On force la désactivation
$ETATINSEE='SUPD';
break;
case '410': // Cessation juridique de l'entreprise
if (!$ACTIFINSEE) $ETATINSEE='JURF';
break;
case '420': // Absence d'activité de l'entreprise (cessation économique de l.entreprise)
case '425': // Absence d'activité d'une entreprise suite à une mise à jour au répertoire //
if (!$ACTIFINSEE) $ETATINSEE='ECOF';
break;
case 'MPF': // Présumé Fermé
$ETATINSEE='PFER'; // Présumé fermé
break;
case 'MNP': // NPAI ?
$ETATINSEE='NPAI'; // Au moins un NPAI
break;
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Eléments provenant des évènements INSEE **/
$tabTmp=$iDb->select('insee.insee_even', 'COUNT(*) AS nb, MAX(insDATEVE) AS dateMaj',
"insSIREN=$siren", INDISCORE_DEBUG, MYSQL_ASSOC);
$tabModif=$tabTmp[0];
$MODIFINSEE=$tabModif['nb'];
$MODIFINSEEDATE=$tabModif['dateMaj'];
if ($tabIdentite['DateMajINSEE']>=$MODIFINSEEDATE)
$MODIFINSEEDATE=$tabIdentite['DateMajINSEE'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Eléments provenant des évènements RNCS **/
$tabTmp=$iDb->select('jo.rncs_modifs', 'COUNT(*) AS nb, MAX(flux) AS dateMaj',
"siren=$siren", INDISCORE_DEBUG, MYSQL_ASSOC);
$tabModif=$tabTmp[0];
$MODIFRNCS=$tabModif['nb'];
$MODIFRNCSDATE=$tabModif['dateMaj'];
if ($tabIdentite['DateMajRCS']>=$MODIFRNCSDATE)
$MODIFRNCSDATE=$tabIdentite['DateMajRCS'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** $ANNONCEBOD **/
$ANNONCEBOD=$ANNONCEBODA=$ANNONCEBODB=$ANNONCEBODC=0;
$ANNONCECAC=$ANNONCECAP=$ANNONCECAPAUG=$ANNONCECAPAUGDIM=$ANNONCECAPDIM=$ANNONCECAPDIMAUG=$ANNONCECAPSIG=0;
$ANNONCECAC2=$ANNONCECAC3=0;
$ANNONCEADR=$ANNONCEDIR=$ANNONCEFJUR=0;
$ANNONCEADRDATE=$ANNONCECACDATE=$ANNONCEPCDATE=$ANNONCEPC_CESDATE=$ANNONCEPLANFINDATE='';
$ANNONCEPC_INT1=$ANNONCEPC_INT1_TIT=$ANNONCEPC_INT2=$ANNONCEPC_INT2_TIT='';
$ANNONCELJ=$ANNONCERJ=$ANNONCESV=$ANNONCEPUB=0;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEFUS=0;
$FUSIONPROJET=''; // Présence d'un projet de fusion, libellé du projet
$FUSIONPROJET_SIREN=''; // Siren concerné par le projet de fusion
$FUSIONPROJET_DATE=''; // Date du projet de fusion
$NOMFUSION='';
$CAPITAL_PRE=''; // Montant du capital Précédent
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEHOM=0; // Nombre d'annonces d'homologation
$ANNONCEHOMDATE=''; // Date de la dernière parution d'annonces d'homologation
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEPLAN=$ANNONCEPLANMODIFDATE=$ANNONCEPLANDATE=$PLAN=$PLANMODIF=$ANNONCEPC='';
$ANNONCEPC_OBS=false;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEOBJET='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** @todo : Prendre la date de changement d'état du dirigeant **/
$ANNONCEINTERDITDATE='';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$timer['even']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Tableau des taux d'inflation et inflations moyennes **/
$tabTmp=$iDb->select('sdv1.inflation', 'annee, infla', "annee<=$BILANANNEE ORDER BY ANNEE DESC LIMIT 0,10", INDISCORE_DEBUG, MYSQL_ASSOC);
$INFLA=array();
foreach ($tabTmp as $iTmp=>$tabTmp2) {
$INFLA[$tabTmp2['annee']]=$tabTmp2['infla'];
if ($iTmp==0) $INFLATION=$tabTmp2['infla'];
elseif ($iTmp==1) { $INFLA1=$tabTmp2['infla']; $INFLAMOY1=($INFLA1+$INFLATION)/2; }
elseif ($iTmp==2) { $INFLA2=$tabTmp2['infla']; $INFLAMOY2=($INFLA2+$INFLA1+$INFLATION)/3; }
elseif ($iTmp==3) { $INFLAMOY3=($tabTmp2['infla']+$INFLA2+$INFLA1+$INFLATION)/4; }
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Divers éléments calculés **/
// Annonces de dépôt des comptes
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, 'C', false, true);
$nbDepotCpt=count($tabDepotCpt);
$nbMoisMax=0;
$ANNONCEBODCMANQDATE=false;
$ANNONCEBODCREGUL=true;
$BILANDERANNEE=0;
$tabAnnBodc=array();
2013-09-10 17:11:11 +00:00
if($nbDepotCpt>0) {
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) {
// On prend la dernière Annonce de dépot de comptes
$ANNONCEPUB=true;
$tabTmp=array();
foreach ($depot['evenements'] as $even)
$tabTmp[]=$even['LibEven'];
// Libellé code Even de la plus récente annonce publiée peu importe la source
$ANNONCEDER=implode(', ', $tabTmp);
$ANNONCEDERDATE=$depot['DateParution'];
switch(substr($depot['BodaccCode'],0,1)) {
case 'B': $ANNONCEDERSOURCE='BODACC'; break;// INPI, Publication Régionale
case 'P': $ANNONCEDERSOURCE='RNCS'; break;
case 'G': $ANNONCEDERSOURCE='GREFFE DU TRIBUNAL'; break;
default: $ANNONCEDERSOURCE='JOURNAL REGIONAL'; break;
}
$ANNONCEDERTEXTE=$depot['texteAnnonce'];// INPI, Publication Régionale
// Date de l'annonce
$ANNONCEDATE=$depot['DateParution'];
$ANNONCEBODCDATE=$depot['DateParution'];
$BILANDERANNEE=date('Y', mktime(0, 0, 0, $classWdate->dateT('Y-m-d', 'm', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'd', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
$ANNONCEBODDATE=$depot['DateParution'];//dateEffet
if ($nbDepotCpt==1 && // 1 seul dépôt des comptes
abs($classWdate->nbMoisEntre(date('Y-m-d'), $dateCrea))<60) // Entreprise de moins de 5 ans (60 mois)
$nbMoisMax=abs($classWdate->nbMoisEntre($dateCrea,$depot['dateEffet']));
} else {
if (abs($classWdate->nbMoisEntre($lastDepot, $depot['dateEffet']))>$nbMoisMax) {
$nbMoisMax=abs($classWdate->nbMoisEntre($lastDepot, $depot['dateEffet']));
if ($nbMoisMax>24 && $ANNONCEBODCMANQDATE==false) {
/** @todo Annomalie Bilans 1 mois sur 976320309
** $ANNONCEBODCREGUL 0 Pas de publication régulière des comptes
* 1 Régulier et 12 mois identiques
* 2 Régulier mais Présence de changements de date d'exercice
** $ANNONCEBODCMANQDATE Date de la dernière cloture manquante
** $ANNONCEBODCMANQ_AA Année de la dernière cloture manquante
** $NBBILANMANQUE Nombre d'années de bilans manquant
** $nmp=$tabBilan[0]['DUREE_MOIS_PRE'];
$nmp2=$tabBilan[2]['DUREE_MOIS'];
$nmp3=$tabBilan[3]['DUREE_MOIS'];
$nmp4
**/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bilans manquant", "$lastDepot, $nbMoisMax, ".$depot['dateEffet'].", $ANNONCEBODCMANQDATE");
$ANNONCEBODCMANQDATE=date('Y-m-d', mktime(0, 0, 0, $classWdate->dateT('Y-m-d', 'm', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'd', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
$ANNONCEBODCMANQ_AA=substr($ANNONCEBODCMANQDATE,0,4);
}
2013-09-06 06:25:46 +00:00
}
}
2013-09-10 17:11:11 +00:00
$tabClotures[str_replace('-','',$depot['dateEffet'])]=str_replace('-','',$depot['DateParution']);
$lastDepot=$depot['dateEffet'];
$ANNONCEBOD++;
$ANNONCEBODC++;
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
sort($tabClotures);
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Publications régulieres et 12 mois identiques
2013-09-10 17:11:11 +00:00
if ( ($nbMoisBilDate+1) == $nbMoisBilCumul
|| $nbMoisBilDate == $nbMoisBilCumul
|| ($nbMoisBilDate-1)==$nbMoisBilCumul ) {
2013-09-06 06:25:46 +00:00
$ANNONCEBODCREGUL=1;
// Annonces BODACC de changement de date d'exercice
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2303), false);
if (count($tabDepotCpt)>0) $ANNONCEBODCREGUL=2;
2013-09-10 17:11:11 +00:00
2013-09-06 06:25:46 +00:00
} else {
2013-09-10 17:11:11 +00:00
// Pas de publication régulière des comptes
2013-09-06 06:25:46 +00:00
$ANNONCEBODCREGUL=0;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if ($BILANDERANNEE==0 && date('m')*1>6) // Pas de Dernière année de bilan et on est en juillet passé
$BILANDERANNEE=date('Y', mktime(0, 0, 0, date('m'), date('d'), date('Y')-1));
elseif ($BILANDERANNEE==0 && date('m')*1<=6) // Pas de Dernière année de bilan et on est au premier semestre
$BILANDERANNEE=date('Y', mktime(0, 0, 0, date('m'), date('d'), date('Y')-2));
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC A
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, 'BODA', false, true);
$nbDepotA=count($tabDepotCpt);
2013-09-10 17:11:11 +00:00
if ($nbDepotA>0) {
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) {
$ANNONCEBODADATE=$depot['DateParution'];
if ($classWdate->dateT('Y-m-d', 'Ymd',$ANNONCEBODADATE)>$classWdate->dateT('Y-m-d', 'Ymd',$ANNONCEBODDATE)) {
$ANNONCEBODDATE=$depot['DateParution'];
$tabTmp=array();
foreach ($depot['evenements'] as $even)
$tabTmp[]=$even['LibEven'];
// Libellé code Even de la plus récente annonce publiée peu importe la source
$ANNONCEDER=implode(', ', $tabTmp);
$ANNONCEDERDATE=$depot['DateParution'];
switch(substr($depot['BodaccCode'],0,1)) {
case 'B': $ANNONCEDERSOURCE='BODACC'; break;// INPI, Publication Régionale
case 'P': $ANNONCEDERSOURCE='RNCS'; break;
case 'G': $ANNONCEDERSOURCE='GREFFE DU TRIBUNAL'; break;
default: $ANNONCEDERSOURCE='JOURNAL REGIONAL'; break;
}
$ANNONCEDERTEXTE=$depot['texteAnnonce'];// INPI, Publication Régionale
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
} elseif ( ($iDep+1)==$nbDepotA ) {
// La première annonce de Bodacc A étant cencée être celle de création
$TRIBUNAL_CREATION=strtr($depot['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
$ANNONCEBOD++;
$ANNONCEBODA++;
2013-09-06 06:25:46 +00:00
}
}
// Annonces BODACC B
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, 'BODB', false, true);
2013-09-10 17:11:11 +00:00
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) {
$ANNONCEBODBDATE=$depot['DateParution'];
if ($classWdate->dateT('Y-m-d', 'Ymd',$ANNONCEBODBDATE)>$classWdate->dateT('Y-m-d', 'Ymd',$ANNONCEBODDATE)) {
$ANNONCEBODDATE=$depot['DateParution'];
$tabTmp=array();
foreach ($depot['evenements'] as $even)
$tabTmp[]=$even['LibEven'];
// Libellé code Even de la plus récente annonce publiée peu importe la source
$ANNONCEDER=implode(', ', $tabTmp);
$ANNONCEDERDATE=$depot['DateParution'];
switch(substr($depot['BodaccCode'],0,1)) {
case 'B': $ANNONCEDERSOURCE='BODACC'; break;// INPI, Publication Régionale
case 'P': $ANNONCEDERSOURCE='RNCS'; break;
case 'G': $ANNONCEDERSOURCE='GREFFE DU TRIBUNAL'; break;
default: $ANNONCEDERSOURCE='JOURNAL REGIONAL'; break;
}
$ANNONCEDERTEXTE=$depot['texteAnnonce'];// INPI, Publication Régionale
2013-06-19 09:45:13 +00:00
}
}
2013-09-10 17:11:11 +00:00
$ANNONCEBOD++;
$ANNONCEBODB++;
2013-09-06 06:25:46 +00:00
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Changement d'adresse
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2300,2301,2901,2902,2903,2904), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0){ $ANNONCEADRDATE = $depot['DateParution']; }
$ANNONCEADR++;
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Changement de dirigeant
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2315), false, true);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
2013-09-10 17:11:11 +00:00
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) { $ANNONCEDIRDATE = $depot['DateParution']; }
$ANNONCEDIR++;
if (preg_match('/Commissaire/i', $depot['texteAnnonce'])) {
$ANNONCECAC++;
/** @todo $ANNONCECAC2 dans les 24 derniers mois
** et $ANNONCECAC3 dans les 36 derniers mois
**/
if ($ANNONCECAC==1)
$ANNONCECACDATE=$depot['DateParution'];
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Changement de FJur
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2307), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
2013-09-10 17:11:11 +00:00
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) { $ANNONCEFJURDATE = $depot['DateParution']; }
// @todo A revoir
$FJUR_PRE='';
//if ($iDep==1 && trim($depot['libFJ'])<>'') $FJUR_PRE=$depot['libFJ'];
$ANNONCEFJUR++;
}
2013-09-06 06:25:46 +00:00
}
// Annonces BODACC Fusion/Absorptions
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2700,2701,2702,2703,2710,2720,2721,2725,2726,2730,2740), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0) { $ANNONCEFUSDATE=$depot['DateParution']; }
$ANNONCEFUS++;
foreach ($depot['evenements'] as $even) {
switch ($even['CodeEven']*1) {
case 2710: // Projet de fusion (entitée absorbante)
case 2726: // Projet de Fusion/Absorption
case 2730: // Projet de fusion (entitée absorbée)
$FUSIONPROJET_DATE=$depot['dateJugement']; // Date du projet de fusion
$FUSIONPROJET=$depot['complement']; // Présence d'un projet de fusion, libellé du projet
$FUSIONPROJET_SIREN='';
if (preg_match_all("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $FUSIONPROJET, $matches)) {
foreach ($matches[1] as $FUSIONPROJET_SIREN) {
$FUSIONPROJET_SIREN=strtr($FUSIONPROJET_SIREN, array('.'=>'','-'=>'', ' '=>''));
if (!$iInsee->valideSiren($FUSIONPROJET_SIREN)) $FUSIONPROJET_SIREN=0;
else break;
}
}
if ($FUSIONPROJET_SIREN*1<100) $FUSIONPROJET_SIREN='';
break;
}
}
/*
2700 Fusion/Absorption (entitée absorbante)
2701 Fusion/Absorption (Entitée absorbante. Entité absorbée inconnue)
2702 Fusion/Absorption (Entitée absorbante. Entité absorbée mal SIRENEE)
2703 Fusion/Absorption (Entitée absorbante. Entité absorbée non SIRENEE)
2720 Fusion/Absorption (entitée absorbée)
2721 Fusion/Absorption (entitée absorbée non identifiée)
2725 Fusion/Absorption
*/
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Changement de capital
$annCapPre=0;
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2100,2101,2102), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
2013-09-10 17:11:11 +00:00
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0)
// Date de la plus récente Annonce changement de capital
$ANNONCECAPDATE=$depot['DateParution'];
if ($iDep==1) {
if ($depot['capitalDev']=='EUR') $CAPITAL_PRE=$depot['capital'];
elseif ($depot['capitalDev']=='FRF') $CAPITAL_PRE=round($depot['capital']/6.55957);
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
foreach ($depot['evenements'] as $even) {
switch ($even['CodeEven']*1) {
case 2100:// Diminution de capital
$ANNONCECAPDIM++;
if ($ANNONCECAPDIM==1) {
// Date de la plus récente Annonce de diminution de capital
$ANNONCECAPDIMDATE=$depot['DateParution'];
// Année de la plus récente Annonce diminution de capital
$ANNONCECAPDIM_AAF=substr($depot['DateParution'],0,4);
} else
// Année de la plus ancienne Annonce diminution de capital
$ANNONCECAPDIM_AAD=substr($depot['DateParution'],0,4);
if ($annCapPre==2102)
$ANNONCECAPAUGDIM++; // Augmentation suivie de diminution de capital
$annCapPre=2100;
break;
case 2102:// Augmentation de capital
$ANNONCECAPAUG++;
if ($ANNONCECAPAUG==1) {
// Date de la plus récente Annonce Augmentation de capital
$ANNONCECAPAUGDATE=$depot['DateParution'];
// Année de la plus récente Annonce Augmentation de capital
$ANNONCECAPAUG_AAF=substr($depot['DateParution'],0,4);
} else
// Année de la plus ancienne Annonce Augmentation de capital
$ANNONCECAPAUG_AAD=substr($depot['DateParution'],0,4);
if ($annCapPre==2100)
$ANNONCECAPDIMAUG++; // Diminution suivie de Augmentation de capital
$annCapPre=2102;
break;
}
}
$ANNONCECAP++;
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
/** @todo : Récupérer le montant du changement et alimenter ou non cette variable
**/
$ANNONCECAPSIG++;
if ($CAPITAL_PRE==0) {
// Rechercher le capital à la création ou dans une annonce précédente !
$CAPITAL_PRE=0;
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Cessation d'activité avec dissolution
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2202,2203,2204,2210,2212), false);
2013-09-10 17:11:11 +00:00
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Annonce de Dissolution avec Bilan A", "Dernier Bilan = $BILANDATE et Annonce de dissolution = ".$depot['DateParution']);
if ($BILANDATE<str_replace('-','',$depot['DateParution'])*1) {
$ANNONCEDISSODATE=$depot['DateParution'];
$ANNONCEDISSO=true;
}// else
// sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Annonce de Dissolution avec Bilan B", "Dernier Bilan = $BILANDATE et Annonce de dissolution = ".$depot['DateParution']);
break;
}
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Poursuite de l'activité malgré la perte de plus de plus de la moitié du capital social
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2314,2319), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
$ANNONCEPOURSDATE= $ANNONCEDISSONONDATE= $depot['DateParution'];
$ANNONCEPOURS= $ANNONCEDISSONON= true;
break;
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Reconsitution de l'actif net ou de la moitié
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2320,2321), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
$ANNONCERECONDATE=$depot['DateParution'];
$ANNONCERECON=true;
break;
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Location gérance reçue
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2800,2880,4355), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
$ANNONCELOCDATE=$depot['DateParution'];
$ANNONCELOC=true;
break;
}
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonces BODACC Mise en sommeil de la société
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(2206), false);
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
$ANNONCESOMMDATE=$depot['DateParution'];
$ANNONCESOMM=true;
break;
}
}
$timer['bodacc']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEOBJET=$tabIdentite['Activite'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if ($tabIdentite['SituationJuridique']=='P') {
$ANNONCEPC='Procédure Collective';
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'P', false);
foreach ($tabProCol as $iProcol=>$procol) {
foreach ($procol['evenements'] as $even) {
if ($iProcol==0) $ANNONCEPC=$even['LibEven'];
switch ($even['CodeEven']*1) {
case 1300: // Conversion Redressement Judiciaire en Liquidation Judiciaire
case 1301: // Ouverture Liquidation Judiciaire
case 1302: // Ouverture Liquidation Judiciaire Simplifiée
case 1305: // Liquidation Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1303: // Ouverture Liquidation Judiciaire sur résolution du plan
case 1304: // Réouverture Liquidation Judiciaire
case 1306: // Liquidation Judiciaire simplifiée
case 1307: // Conversion sauvegarde en Liquidation Judiciaire
case 1311: // Liquidation Judiciaire par extension au(x) gérant(s)
case 1312: // Liquidation Judiciaire avec continuation d'exploitation
case 1313: // Liquidation Judiciaire sans remise des accessoires
case 1417: // Jugement d'extension de liquidation judiciaire
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonce de liquidation judiciaire
$ANNONCELJ=true;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Date de l'annonce LJ
$ANNONCELJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1200: // Redressement Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1201: // Conversion sauvegarde en Redressement Judiciaire
case 1211: // Redressement Judiciaire par extension au(x) gérant(s)
case 1212: // Réforme de Liquidation Judiciaire en Redressement Judiciaire
case 1418: // Jugement d'extension d'une procédure de redressement judiciaire
// Annonce de redressement judiciaire
$ANNONCERJ=true;
// Date de l'annonce RJ
$ANNONCERJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1100: // Ouverture sauvegarde
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1419: // Jugement d'extension d'une procédure de sauvegarde
// Annonce de sauvegarde
$ANNONCESV=true;
// Date de l'annonce Sauv
$ANNONCESVDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1407: // Modification de plan
case 1408: // Modification du plan de cession
case 1409: // Modification du plan de continuation
case 1415: // Prolongement du plan cession
// Modif de plan d'apurement
$PLANMODIF=true;
$ANNONCEPLANMODIFDATE=$ANNONCEDATE=$procol['dateJugement'];
break;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
case 1411: // Arrêt du plan de cession
case 1414: // Arrêt du plan de redressement
$ANNONCEPLANFINDATE=$procol['dateFinObservation'];
if (substr($ANNONCEPLANFINDATE,0,4)*1==0) $ANNONCEPLANFINDATE='';
/** @todo $ANNONCEPLANDUREE='';
**/
case 1412: // Arrêt du plan de cession partielle
case 1413: // Arrêt du plan de continuation
case 1101: // Jugement arrêtant plan de sauvegarde
$PLAN=true; // Présence d'une annonce de plan d'apurement
if ($even['CodeEven']*1==1411) $ANNONCEPLAN='cession';
elseif ($even['CodeEven']*1==1412) $ANNONCEPLAN='cession partielle';
elseif ($even['CodeEven']*1==1413) $ANNONCEPLAN='continuation';
elseif ($even['CodeEven']*1==1414) $ANNONCEPLAN='redressement';
elseif ($even['CodeEven']*1==1101) $ANNONCEPLAN='sauvegarde';
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Date de l'annonce de plan
$ANNONCEPLANDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
break;
case 1600: // Interdictions et Faillites
case 1601:
case 1610:
case 1611:
$ANNONCEINTERDITDATE=$procol['dateJugement'];
break;
case 1202: // Renouvellement de la période d'observation
$ANNONCEPC_OBS=true;
//1430, Jugement autorisant la poursuite d'activité
break;
2013-06-19 09:45:13 +00:00
}
}
}
2013-09-06 06:25:46 +00:00
// Le SIREN est éliminé du scoring
$ELIMINE=true;
} elseif ($tabIdentite['SituationJuridique']=='PL') {
$ANNONCEPCHISTO=true;
$ELIMINE=false;
$ANNONCEPC='Plan de continuation/redressement';
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'P', false);
foreach ($tabProCol as $iProcol=>$procol) {
foreach ($procol['evenements'] as $even) {
if ($iProcol==0) $ANNONCEPC=$even['LibEven'];
switch ($even['CodeEven']*1) {
case 1300: // Conversion Redressement Judiciaire en Liquidation Judiciaire
case 1301: // Ouverture Liquidation Judiciaire
case 1302: // Ouverture Liquidation Judiciaire Simplifiée
case 1305: // Liquidation Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1303: // Ouverture Liquidation Judiciaire sur résolution du plan
case 1304: // Réouverture Liquidation Judiciaire
case 1306: // Liquidation Judiciaire simplifiée
case 1307: // Conversion sauvegarde en Liquidation Judiciaire
case 1311: // Liquidation Judiciaire par extension au(x) gérant(s)
case 1312: // Liquidation Judiciaire avec continuation d'exploitation
case 1313: // Liquidation Judiciaire sans remise des accessoires
case 1417: // Jugement d'extension de liquidation judiciaire
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Annonce de liquidation judiciaire
$ANNONCELJ=true;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
// Date de l'annonce LJ
$ANNONCELJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1200: // Redressement Judiciaire
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1201: // Conversion sauvegarde en Redressement Judiciaire
case 1211: // Redressement Judiciaire par extension au(x) gérant(s)
case 1212: // Réforme de Liquidation Judiciaire en Redressement Judiciaire
case 1418: // Jugement d'extension d'une procédure de redressement judiciaire
// Annonce de redressement judiciaire
$ANNONCERJ=true;
// Date de l'annonce RJ
$ANNONCERJDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1100: // Ouverture sauvegarde
if (substr($procol['dateFinObservation'],0,4)*1>0) $ANNONCEPC_OBS=true;
case 1419: // Jugement d'extension d'une procédure de sauvegarde
// Annonce de sauvegarde
$ANNONCESV=true;
// Date de l'annonce Sauv
$ANNONCESVDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
$TRIBUNAL_PROCOL=strtr($procol['Tribunal'],array('TC '=>'Tribunal de Commerce de '));
break;
case 1407: // Modification de plan
case 1408: // Modification du plan de cession
case 1409: // Modification du plan de continuation
case 1415: // Prolongement du plan cession
// Modif de plan d'apurement
$PLANMODIF=true;
$ANNONCEPLANMODIFDATE=$ANNONCEDATE=$procol['dateJugement'];
break;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
case 1411: // Arrêt du plan de cession
case 1414: // Arrêt du plan de redressement
$ANNONCEPLANFINDATE=$procol['dateFinObservation'];
if (substr($ANNONCEPLANFINDATE,0,4)*1==0) $ANNONCEPLANFINDATE='';
/** @todo $ANNONCEPLANDUREE='';
**/
case 1412: // Arrêt du plan de cession partielle
case 1413: // Arrêt du plan de continuation
case 1101: // Jugement arrêtant plan de sauvegarde
$PLAN=true; // Présence d'une annonce de plan d'apurement
if ($even['CodeEven']*1==1411) $ANNONCEPLAN='cession';
elseif ($even['CodeEven']*1==1412) $ANNONCEPLAN='cession partielle';
elseif ($even['CodeEven']*1==1413) $ANNONCEPLAN='continuation';
elseif ($even['CodeEven']*1==1414) $ANNONCEPLAN='redressement';
elseif ($even['CodeEven']*1==1101) $ANNONCEPLAN='sauvegarde';
// Date de l'annonce de plan
$ANNONCEPLANDATE=$procol['dateJugement'];
$ANNONCEDATE=$ANNONCEPCDATE=$procol['dateJugement'];
break;
case 1600: // Interdictions et Faillites
case 1601:
case 1610:
case 1611:
$ANNONCEINTERDITDATE=$procol['dateJugement'];
break;
case 1202: // Renouvellement de la période d'observation
$ANNONCEPC_OBS=true;
//1430, Jugement autorisant la poursuite d'activité
break;
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
}
} else {
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'PH', false);
if (count($tabProCol)>0) $ANNONCEPCHISTO=true;
else $ANNONCEPCHISTO=false;
if ($tabIdentite['Actif']==0) $ELIMINE=true;
else $ELIMINE=false;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Annonces d'Homologation **/
$tabDepotCpt=$iInsee->getAnnoncesLegales($siren, 0, array(1050,1550), false, true);
2013-09-10 17:11:11 +00:00
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0){
foreach ($tabDepotCpt as $iDep=>$depot) {
if ($iDep==0)
$ANNONCEHOMDATE=$depot['DateParution'];
$ANNONCEHOM++;
}
}
/** Ventes Cessions en tant que vendeur **/
$tabProCol=$iInsee->getAnnoncesLegales($siren, 0, 'V', false);
$ANNONCEVC=0; // Nombre d'annonce de VC (vendeur)
$ANNONCEVC_OBJ=$ANNONCEVCDATE=$ANNONCEVC_MT='';
foreach ($tabProCol as $iProcol=>$procol) {
$ANNONCEVC++;
if ($iProcol==0) {
foreach ($procol['evenements'] as $even)
$ANNONCEVC_OBJ[]=$even['LibEven'];
$ANNONCEVC_OBJ=implode(', ', $ANNONCEVC_OBJ);
$ANNONCEVCDATE=$procol['dateJugement'];
$ANNONCEVC_MT=$procol['montantVente']; // Montant de la vente
}
}
if ($naf=='741J' || $naf=='6420Z' || // Activités des sociétés holding
$R[302]>0 || $R[303]>0 || $R[304]>0 // Holding déclaré au Bilan
) $HOLDING=true;
else $HOLDING=false;
// Présence d'au moins un bilan
if ($NBBILAN>0) $BILAN=true;
else $BILAN=false;
// Département du siège de l'entreprise
if ($depcomen==0) $depcomen=$tabIdentite['CP']*1;
if ($depcomen>99000) $DEPSIE=$depcomen;
elseif ($depcomen>96000) $DEPSIE=substr($depcomen,0,3);
elseif ($depcomen<10000) $DEPSIE=substr($depcomen,0,1);
else $DEPSIE=substr($depcomen,0,2);
$DEPSIE_DE=$iInsee->getDepartement($DEPSIE,true);
$tabStructure['activite']= $isolv->getPtActivite();
$tabStructure['naf4']= $isolv->getNaf4($naf);
$tabStructure['age']= $isolv->getPtAge(date('Y'));
$tabStructure['capital']= $isolv->getPtCapital();
$tabStructure['effectif']= $isolv->getPtEffectif();
$tabStructure['fj']= $isolv->getPtFormeJuridique();
$tabStructure['localite']= $isolv->getPtGeographie();
$tabStructure['singulier']= $isolv->getPtSingularite();
// Le dépôt des comptes annuel est facultatif ?
if ($isolv->doitPublier($fj, $naf)) {
$FJURPUB=true;
$BILANFACULT=false;
} else {
$FJURPUB=false; // L'entreprise n'est pas soumise à publication de ses bilans
$BILANFACULT=true;
}
/** @todo : Attention, variable à charger uniquement si le dernier bilan est non diffusible **/
$BILANNONDIF=false;
/** Classements import Export **/
$tabImportExport=$iInsee->getImportExport($siren);
$EXPORTRANG=$IMPORTRANG=0;
foreach ($tabImportExport as $rangAnnee) {
if ($rangAnnee['importExport']=='I' && $IMPORTRANG==0) {
$IMPORTRANG=$rangAnnee['rangNational']*1;
//$IMPORTRANG_ARR;
switch (strlen($IMPORTRANG)) {
case 1: $IMPORTRANG_ARR=10; break;
case 2: $IMPORTRANG_ARR=100; break;
case 3: $IMPORTRANG_ARR='1 000'; break;
case 4: $IMPORTRANG_ARR='10 000'; break;
default: $IMPORTRANG_ARR='100 000'; break;
2013-06-19 09:45:13 +00:00
}
}
2013-09-10 17:11:11 +00:00
elseif ($rangAnnee['importExport']=='E' && $EXPORTRANG==0) {
$EXPORTRANG=$rangAnnee['rangNational']*1;
switch (strlen($EXPORTRANG)) {
case 1: $EXPORTRANG_ARR=10; break;
case 2: $EXPORTRANG_ARR=100; break;
case 3: $EXPORTRANG_ARR='1 000'; break;
case 4: $EXPORTRANG_ARR='10 000'; break;
default: $EXPORTRANG_ARR='100 000'; break;
2013-06-19 09:45:13 +00:00
}
}
2013-09-10 17:11:11 +00:00
}
$timer['importexport']=microtime(true);
2013-09-09 13:34:50 +00:00
2013-09-10 17:11:11 +00:00
/** Sauvegarde des valeurs propres à l'entreprise, à causes des variables globales de calculRatios **/
$tabSav=array(
'mBil'=> $mBil,
'tabBilan'=>$tabBilan,
'tabBil'=> $tabBil,
'efftr'=> $efftr
);
2013-09-09 13:34:50 +00:00
2013-09-10 17:11:11 +00:00
/** Recherche d'une annonce de RJ sur Actionnaire / Participation **/
$RJMERE=$RJFILLE=false;
$nbBilansA=0;
$SITUACT=$NICMERE=$SIRENMERE=$SIRETMERE=$NOMMERE='';
$lienM = new MLiens2($siren, 'siren');
//Actionnaire
$tabA = $lienM->getActionnaires(null, true);
if (count($tabA)>0) {
foreach ($tabA as $i=>$lien) {
$lienInsee = new MInsee();
if(intval($lien->siren)>100 && ( $lien->MajMin=='+' || $lien->PDetention>50) && $nbBilansA==0) {
$tabIdentiteA=$lienInsee->getIdentiteLight($lien->siren);
if ($NICMERE*1==0) {
$NICMERE=substr($tabIdentiteA['SiretSiege'],-5);
$SIRENMERE=$lien->Siren;
$SIRETMERE=$tabIdentiteA['SiretSiege'];
$NOMMERE=$tabIdentiteA['Nom'];
if ($tabIdentiteA['FJ']<2000)
$TYPEMERE='PP';
else
$TYPEMERE='PM';
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
$mBil=new MBilans($lien->siren);
$tabBilansA=$mBil->listeBilans(false,2);
$nbBilansA=count($tabBilansA);
$tabBilan=$tabBil=array();
if ($nbBilansA>0) {
$tabRatiosA=@calculRatios($tabBilansA, $tabIdentiteA, $accesDist);
$SITUACT=$tabRatiosA[0][19];
$Ra=$tabRatiosA[0];
$Rap=$tabRatiosA[1];
2013-09-06 06:25:46 +00:00
}
}
2013-09-10 17:11:11 +00:00
if ($lien->siren>100 && count($lienInsee->getAnnoncesLegales($lien->siren, 0, 'P', false))>0) {
$RJMERE=true;
break;
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
}
$tabBilanA=$tabBilan;
$tabBilA=$tabBil;
$mBilA=$mBil;
$timer['actionnaires']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
//Participation
$NBFILLE=0;
$NICFILLE=$SIRENFILLE=$SIRETFILLE=$NOMFILLE='';
$tabP=$lienM->getParticipations(null, true);
if (count($tabP)>0) {
foreach ($tabP as $i=>$lien) {
if ($lien->siren>100 && ( $lien->MajMin=='+' || $lien->PDetention>50)) {
$lienInsee = new MInsee();
$NBFILLE++; // Nombre de participations à plus de 50%
if ($NBFILLE==1) {
$tabIdentiteP=$lienInsee->getIdentiteLight($lien->siren);
$NICFILLE=substr($tabIdentiteP['SiretSiege'],-5);
$SIRENFILLE=$lien->Siren;
$SIRETFILLE=$tabIdentiteP['SiretSiege']; // N° SIRET de la sté 1ere fille à plus de 50%
$NOMFILLE=$tabIdentiteP['Nom'];
}
if (count($lienInsee->getAnnoncesLegales($lien->siren, 0, 'P', false))>0)
$RJFILLE=true;
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
}
}
$timer['participations']=microtime(true);
/** Récupération des valeurs propres à l'entreprise, à causes des variables globales de calculRatios **/
$mBil=$tabSav['mBil'];
$tabBilan=$tabSav['tabBilan'];
$tabBil=$tabSav['tabBil'];
$efftr=$tabSav['efftr'];
$tabBil=array();
if ($NBBILAN==0) {
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
/** Pas de bilan mais capital elevé **/
if ($ACTIFRNCS && $FJURRNCS1>1 && $FJURRNCS1<7) {
if ($CAPITAL< 9000) $NOTECAP20=3;
elseif ($CAPITAL< 30000) $NOTECAP20=5;
elseif ($CAPITAL< 150000) $NOTECAP20=7;
elseif ($CAPITAL< 350000) $NOTECAP20=9;
elseif ($CAPITAL< 500000) $NOTECAP20=10;
elseif ($CAPITAL< 750000) $NOTECAP20=11;
elseif ($CAPITAL< 1500000) $NOTECAP20=12;
elseif ($CAPITAL< 2000000) $NOTECAP20=13;
elseif ($CAPITAL< 5000000) $NOTECAP20=15;
elseif ($CAPITAL<10000000) $NOTECAP20=17;
else $NOTECAP20=19;
}
} else {
$numBil=0;//sleep(1);
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
for ($i=0; isset($tabBilan[$i]); $i++) {
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
//if (substr($millesime,0,1)=='S') {
// @todo attention au type de bilan S en N et banque assu consolidé !!!
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
if ($tabBilan[$i]['CONSOLIDE']=='S') {
$tabTmp=$mBil->bilanSimplifie2Normal($tabBilan[$i]);
$tabBilan[$i]=array_merge($tabTmp, $tabBilan[$i]);
$numBil++;
} elseif ($tabBilan[$i]['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);
2013-09-06 06:25:46 +00:00
$scoreAltman=round($icotation->scoreAltman(),2);
2013-09-10 17:11:11 +00:00
}*/
continue;
}
if ($numBil>2) break;
unset($icotation);
$icotation = new ICotation($tabBilan[$i], 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'],
'FraisPerso'=>$icotation->calculFraisPersonnel(),
'CA'=>$chiffeAffaire,
'EBE'=>$icotation->calculEBE(),
'TxInvest'=>$icotation->calculTauxInvestissement(),
'TxEndett'=>$icotation->calculTauxEndettementFinancier(),
'DettesCT'=>$icotation->calculDettesCT(),
'FraisFi'=>$icotation->calculFraisFinanciers(),
'BFR'=>$icotation->calculBFR(),
'FR'=>$icotation->calculFR(),
'FondsPr'=>$icotation->calculFondsPropres(),
'DelaiCli'=>$icotation->calculDelaisClients(),
'DelaiFour'=>$icotation->calculDelaisFournisseurs(),
);
unset($note); unset($noteB); unset($numerateur); unset($denominateur);
$note[0]=$noteB[0]=$numerateur[0]=$denominateur[0]=$noteTot=0;
$tabTmp = $icotation->noteCapitalisation();
$numerateur[1] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[1]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[1] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[1] = $icotation->getNoteBorne($tabTmp['NOTE'], 1, $secteur, $numerateur[1], $denominateur[1]);
// On minimise la note de capitalisation qui est souvent un peu violente
if ($noteB[1]<11 && $CAPITAL>=100000000) $noteB[1]=11;
if ($noteB[1]<6 && $chiffeAffaire>=50000000 && $EFFECTIF>300) $noteB[1]=11;
$NOTECAP20=$noteTot+=$noteB[1];
$tabTmp = $icotation->noteLevierEndettement();
$numerateur[2] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[2]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[2] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[2] = $icotation->getNoteBorne($tabTmp['NOTE'], 2, $secteur, $numerateur[2], $denominateur[2]);
$noteTot+=$noteB[2];
$NOTELED20=$noteB[2];
$tabTmp = $icotation->noteCapaciteRemboursement();
$numerateur[3] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[3]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[3] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[3] = $icotation->getNoteBorne($tabTmp['NOTE'], 3, $secteur, $numerateur[3], $denominateur[3]);
$noteTot+=$noteB[3];
$NOTERBT20=$noteB[3];
$tabTmp = $icotation->noteCouvChargesFi();
$numerateur[4] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[4]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[4] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[4] = $icotation->getNoteBorne($tabTmp['NOTE'], 4, $secteur, $numerateur[4], $denominateur[4]);
$noteTot+=$noteB[4];
$NOTECFI20=$noteB[4];
$tabTmp = $icotation->noteTresorerie($isolv->getNaf4($naf));
$numerateur[5] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[5]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[5] = number_format($tabTmp['NOTE'], 0, ',', '');
$noteB[5] = $icotation->getNoteBorne($tabTmp['NOTE'], 5, $secteur, $numerateur[5], $denominateur[5]);
$noteTot+=$noteB[5];
$NOTETRES20=$noteB[5];
$tabTmp = $icotation->noteMargeExploitation($isolv->getNaf4($naf));
$numerateur[6] = number_format($tabTmp['NUMERATEUR'], 0, ',', '');
$denominateur[6]= number_format($tabTmp['DENOMINATEUR'], 0, ',', '');
$note[6] = number_format($tabTmp['NOTE'], 2, ',', ' ');
$noteB[6] = $icotation->getNoteBorne($tabTmp['NOTE'], 6, $secteur, $numerateur[6], $denominateur[6]);
$noteTot+=$noteB[6];
$NOTEMEX20=$noteB[6];
$noteMoy=number_format($noteTot/6, 2, '.', '');
if ($noteMoy<8 && $chiffeAffaire>=100000000 && $EFFECTIF>=1000) $noteMoy=8;
$noteFinanciere = $icotation->getNotationFin($noteMoy);
$libNoteFinanciere = $icotation->getInfosNotation($noteFinanciere);
$noteSD=round(($noteStructure+$noteMoy)*2.5);
$fondsPropres=$icotation->calculFondsPropresNetsCorriges();
/** MALUS **/
// Limitation de la note si Fonds Propres Négatifs
if ($fondsPropres<0 && $noteSD>50) $noteSD=50;
// Limitation de la note si RJ sur société mère
if ($RJMERE && $noteSD>40) $noteSD=40;
// Limitation de la note si RJ sur société fille
if ($RJFILLE && $noteSD>55) $noteSD=55;
/** BONUS **/
// Major. si entreprise majoritairement contrôlée par l'état
if ($RECME && $noteSD<55) $noteSD=55;
if ((trim(strtr($tabIdentite['DateClotEt'],'-/',' '))*1)>0 ){
$noteSD=0;
$analyseConf='L\'entreprise est radiée depuis le '.$tabIdentite['DateClotEt'];
} else
$analyseConf='L\'analyse de la conformité est correcte.';
if ($numBil==1) {
$caEntrep=$chiffeAffaire;
$noteSolvabilite=$noteSD;
$noteFin=$noteMoy;
$scoreConanH=round($icotation->scoreConanHolder(),1);
$scoreAfdcc1=round($icotation->scoreAfdcc1(),2);
$scoreAfdcc2=round($icotation->scoreAfdcc2($naf, $trancheEffectif),1);
$scoreAfdcc2note=round($icotation->noteAfdcc,2);
$scoreZ =round($icotation->scoreZbis(),1);
$pDef36 =$icotation->evaluationCCF();
$valeurCCF =$icotation->valeurCCF;
$scoreAltman=round($icotation->scoreAltman(),2);
$scoreAltmanB=round($icotation->scoreAltman(true),2);
$tabInfosNotation=$icotation->getInfosNotation($noteFinanciere, 'array');
$SCOREDEFTAUX=$tabInfosNotation['ProbabiliteDefaut'];
// Liste des équivalences de notes
$note20scoreCH=$note20afdcc2=NULL;
// AFDCC1 Pertinant ?
$nbScoresComp=3; // Par défaut on compare 3 scores : BDF, S&D et AFDCC1
$note20afdcc1=($scoreAfdcc1+4)*1.95;
if ($note20afdcc1<0) $note20afdcc1=0;
elseif ($note20afdcc1>20) $note20afdcc1=20;
// BDF Z Pertinant ?
$note20scoreZ=($scoreZ+3)*3;
if ($note20scoreZ<0) $note20scoreZ=0;
elseif ($note20scoreZ>20) $note20scoreZ=20;
// Secteur Industriel : Conan Holder mauvais ?
switch ($secteur) {
case 15: // Industries Alimentaires : Collecte Appro
case 1: // Industries Manufacturières
case 2:
case 3:
case 5: // Industries Alimentaires
case 6: // Industries extractives / Production Distribution : Énergie Eau
if ($caEntrep>=1500000 && $caEntrep<=75000000) {
$nbScoresComp++;
$note20scoreCH=$scoreConanH+4;
if ($note20scoreCH<0) $note20scoreCH=0;
elseif ($note20scoreCH>20) $note20scoreCH=20;
}
break;
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
// Score AFDCC2 mauvais ?
if ($caEntrep>=150000 && $caEntrep<=75000000) {
$nbScoresComp++;
$note20afdcc2=$scoreAfdcc2note+9.5;
if ($note20afdcc2<0) $note20afdcc2=0;
elseif ($note20afdcc2>20) $note20afdcc2=20;
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
if (INDISCORE_DEBUG) {
2013-09-06 06:25:46 +00:00
$strNote="";
2013-09-10 17:11:11 +00:00
$tabTmp=array(
1=>'Capitalisation',
2=>'Levier Endettement',
3=>'CapaciteRemboursement',
4=>'CouvChargesFi',
5=>'Tresorerie',
6=>'MargeExploitation',
);
2013-09-06 06:25:46 +00:00
for($iTmp=1; $iTmp<7; $iTmp++)
$strNote.=$tabTmp[$iTmp]." : ".$numerateur[$iTmp].'/'.$denominateur[$iTmp].'='.$note[$iTmp].' (Borné à '.$noteB[$iTmp].')'.EOL;
2013-09-10 17:11:11 +00:00
$strNote.="Note Financière=$noteFin Conan Holder=$scoreConanH Afdcc1=$scoreAfdcc1 Afdcc2=$scoreAfdcc2note (Classe $scoreAfdcc2) Z=$scoreZ CCF=$valeurCCF ($pDef36) Altman=$scoreAltman AltmanCote=$scoreAltmanB".EOL.print_r($tabInfosNotation,true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Structure Score Financier", $strNote);
2013-09-06 06:25:46 +00:00
}
}
2013-09-10 17:11:11 +00:00
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)
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
// Cas de présence unique de bilan Banque ou Assurance qui ne sont pas géré financièrement
if ($numBil==0 && !isset($noteSD))
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
}
$timer['scorefi']=microtime(true);
// Au cas ou !
if ($noteSolvabilite>90) $noteSolvabilite=90;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Debug Solva1=$noteSolvabilite/100", '...');
$SCORECONF=100;
// Présence d'un bilan mais trop vieux
if ($NBBILAN>0 && $classWdate->nbMoisEntre($BILANDATE,date('Ymd'))>=24) $BILANVIEUX=true;
else $BILANVIEUX=false;
// Présence d'un bilan mais trop vieux et c'est anormal
if ($NBBILAN>0 && $classWdate->nbMoisEntre($BILANDATE,date('Ymd'))>=30) $BILANMANQUE=true;
else $BILANMANQUE=false;
if ( (@$tabBil[0]['Millesime']+20000<date('Ymd')*1) && // Le dernier bilan date de + de 2 ans
(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;
$TVAINTRAFACULT=$tabIdentite['TvaFacultatif']; // 0, 1=MicroEntrep, 2=Dom Tom Etranger, 99=Erreur validation n°TVA
if ($TVAINTRAFACULT==0) $SCORECONF-=10;
} else
$TVAINTRA=$tabIdentite['TvaNumero'];
if ($tabIdentite['NonDiffusible']>0) { // Entreprise FJ=1xxx ayant demandé à sortir du champ de diffusion INSEE
$SCORECONF-=5;
//$tabCommentaires['gen'][]=prepareString("Cette affaire personnelle à demandée son retrait du champs de diffusion commercial de la base SIRENE.");
$PPNONDIFF=true;
} else
$PPNONDIFF=false;
/** Entreprise en Zone Prioritaire ? **/
$ZONEPRI=false;
$ZONEPRIZUS=$ZONEPRIAFR=$ZONEPRICUCS=$ZONEPRIZFU=$ZONEPRIZRR=$ZONEPRIZRU='';
if ($tabIdentite['GeoInfos']['ZUS']=='OUI') $ZONEPRIZUS=$tabIdentite['GeoInfos']['NZUS'];
if ($tabIdentite['GeoInfos']['AFR']=='OUI') $ZONEPRIAFR=$tabIdentite['GeoInfos']['NAFR'];
if ($tabIdentite['GeoInfos']['CUCS']=='OUI')$ZONEPRICUCS=$tabIdentite['GeoInfos']['NCUCS'];
if ($tabIdentite['GeoInfos']['ZFU']=='OUI') $ZONEPRIZFU=$tabIdentite['GeoInfos']['NZFU'];
if ($tabIdentite['GeoInfos']['ZRR']=='OUI') $ZONEPRIZRR=$tabIdentite['GeoInfos']['NZRR'];
if ($tabIdentite['GeoInfos']['ZRU']=='OUI') $ZONEPRIZRU=$tabIdentite['GeoInfos']['NZRU'];
if ($ZONEPRIZUS || $ZONEPRIAFR || $ZONEPRICUCS || $ZONEPRIZFU || $ZONEPRIZRR || $ZONEPRIZRU) {
// Entreprise en Zone Prioritaire
$SCORECONF-=10;
$zonesPri=array();
foreach ($tabIdentite['GeoInfos'] as $zone=>$valeur)
if ($valeur=='OUI')
$zonesPri[]=$zone;
$ZONEPRI=implode(', ', $zonesPri);
//$tabCommentaires['gen'][]=prepareString("Cette entreprise est située en Zone Prioritaire.");
}
/** Domiciliation d'entreprise **/
$ADRDOM=@$tabIdentite['AdresseDom'];
if ($tabIdentite['AdresseDom']==2) $SCORECONF-=50;
elseif ($tabIdentite['AdresseDom']==1) $SCORECONF-=35;
// Nombre d'entrep à l'adresse de domiciliation
$DOM_NB=@$tabIdentite['AdresseDomNb'];
// Nom du domiciliuataire avéré ou suspecté
$DOM_NOM=@$tabIdentite['AdresseDomEnt'][0]['nom'];
// SIREN du domiciliataire avéré ou suspecté
$DOM_SIREN=@$tabIdentite['AdresseDomEnt'][0]['siren'];
/** Calcul du score Dirigeance **/
$SCOREDIRI=100;
$ANNONCEINTERDIT=0;
$dirs=$iInsee->getDirigeants($siren, false);
$timer['getDirigeants'] = microtime(true);
//debugLog('I', 'SCOREDIR = '. print_r($dirs,1), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$DIR_NB=$NBDIRLIENS=$NBDIRSCI=$NBDIRSCIADR=0;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeants", print_r($dirs, true));
foreach ($dirs as $nb=>$dir) {
if ($dir['Ancien']==0 && preg_match('/G.rant|Personne|Pr.sident|Directeur|Repr.sentant/Uisu', $dir['Titre'])) {
$DIR_NB++;
if ($DIR_NB==1) {
$DIR1_NOM=preg_replace('/ +/',' ',$dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']);
$DIR1_AGE=floor($classWdate->nbMoisEntre($classWdate->dateT('d/m/Y','Ymd',$dir['NaissDate']))/12);
$DIR1_FONC=$dir['Titre'];
$DIR1_TYPE='PP';
} elseif ($DIR_NB==2) {
$DIR2_NOM=preg_replace('/ +/',' ',$dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']);
$DIR2_AGE=floor($classWdate->nbMoisEntre($classWdate->dateT('d/m/Y','Ymd',$dir['NaissDate']))/12);
$DIR2_FONC=$dir['Titre'];
$DIR2_TYPE='PP';
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
$activeRechercheDir = true;
if ($activeRechercheDir){
$tabDir = $iInsee->rechercheDir($dir['Nom'], $dir['Prenom'], '', $dir['NaissDate'], '', 0, 200, 200);
$tabDir = $tabDir['reponses'];
$nbFctDir=$nbFctDirSci=$nbFctDirSciAdr=0;
if (count($tabDir)>0){
foreach($tabDir as $iDir=>$tabDiri) {
if ($tabDiri['Actif']==1 && $tabDiri['Siege']==1) {
$nbFctDir++;
if ($tabDiri['FJ']==6540) {
$nbFctDirSci++;
2013-09-06 06:25:46 +00:00
if ($tabDiri['FJ']==6540) {
2013-09-10 17:11:11 +00:00
/* [Adresse] => 0001 RUE DU CHAMP FLEURI
[Adresse2] =>
[CP] => 49770
[Ville] => LA MEIGNANNE
*/
$nbFctDirSciAdr++;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $DIR_NB", print_r($tabDiri, true).EOL.print_r($tabIdentite,true));
2013-09-06 06:25:46 +00:00
}
}
}
}
}
2013-09-10 17:11:11 +00:00
}
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
// Nombre d'entreprises maximum dirigé par un des dirigeants
if ($nbFctDir>$NBDIRLIENS) $NBDIRLIENS=$nbFctDir;
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
// Nombre de SCI maximum dirigé par un des dirigeants (inclus dans NBDIRLIENS)
if ($nbFctDirSci>$NBDIRSCI) $NBDIRSCI=$nbFctDirSci;
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
// Nombre de SCI maximum dirigé par un des dirigeants à l'adresse (inclus dans les autres NBDIR...)
if ($nbFctDirSciAdr>$NBDIRSCIADR) $NBDIRSCIADR=$nbFctDirSciAdr;
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $DIR_NB", print_r($tabDir, true));
}
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
switch ($dir['Cinf']) {
case 11:
case 12: // Interdiction de gérer ou FP en cours
if ($dir['Ancien']==0) {
$noteSolvabilite=5;
$SCORECONF=0;
$SCOREDIRI=0;
} elseif ($dir['Ancien']==1) {
if ($SCORECONF>50) $SCORECONF=50;
$SCOREDIRI=30;
if ($noteSolvabilite>35) $noteSolvabilite=35;
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
}
$ANNONCEINTERDIT++;
$ANNONCEINTERDITDATE=$classWdate->dateT('d/m/Y','Y-m-d', $dir['DateFct']);
break(2);
case 15:
case 16: // Procédure collective dans l'historique du dirigeant
if ($dir['Ancien']==0 && preg_match('/G.rant|Personne|Pr.sident|Directeur|Repr.sentant/Uisu', $dir['Titre'])) {
$SCORECONF-=20;
$SCOREDIRI-=60;
if ($noteSolvabilite>45) $noteSolvabilite=45;
} elseif ($dir['Ancien']==1 && preg_match('/G.rant|Personne|Pr.sident|Directeur|Repr.sentant/Uisu', $dir['Titre'])) {
$SCORECONF-=10;
$SCOREDIRI-=30;
if ($noteSolvabilite>55) $noteSolvabilite=55;
} else {
$SCOREDIRI-=20;
if ($noteSolvabilite>60) $noteSolvabilite=60;
}
break(2);
case 19:
if ($dir['Ancien']==0 && preg_match('/G.rant|Personne|Pr.sident|Directeur|Repr.sentant/Uisu', $dir['Titre'])) {
$SCOREDIRI-=50;
if ($noteSolvabilite>40) $noteSolvabilite=40;
}
elseif ($dir['Ancien']==1 && preg_match('/G.rant|Personne|Pr.sident|Directeur|Repr.sentant/Uisu', $dir['Titre'])) {
$SCOREDIRI-=20;
if ($noteSolvabilite>52) $noteSolvabilite=52;
} else {
$SCOREDIRI-=10;
if ($noteSolvabilite>65) $noteSolvabilite=65;
}
break(2);
default:
break;
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
}
2013-09-06 06:25:46 +00:00
$timer['traitementDirigeants'] = microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
/** On vérifie s'il y a un cuteoff
* @todo Attention, si modif après dateInsert/dateUpdate (procol, impayé, etc...) ne plus
* prendre en compte le cuteoff
*
**/
$ENQUETE='';
$tabTmp=$iDb->select('scores_cutoff', 'encours, scoreSolv, scoreDir, scoreConf, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate', "siren=$siren", INDISCORE_DEBUG, MYSQL_ASSOC);
$timer['scores_cutoff'] = microtime(true);
if (isset($tabTmp[0]['encours'])) {
if($tabTmp[0]['dateUpdate']>$tabTmp[0]['dateInsert'])
$dateMaj=$tabTmp[0]['dateUpdate'];
else
$dateMaj=$tabTmp[0]['dateInsert'];
if ($classWdate->nbMoisEntre($dateMaj, date('Ymd'))<=$ENQUETELIM) {
$encoursForce=$tabTmp[0]['encours'];
if ($tabTmp[0]['scoreConf']<>null) $SCORECONF=$tabTmp[0]['scoreConf'];
if ($SCORECONF>$ENQUETEMAXI) $SCORECONF=$ENQUETEMAXI;
if ($tabTmp[0]['scoreDir'] <>null) $SCOREDIRI=$tabTmp[0]['scoreDir'];
if ($SCOREDIRI>$ENQUETEMAXI) $SCOREDIRI=$ENQUETEMAXI;
if ($tabTmp[0]['scoreSolv']<>null) $ENQUETE=$noteSolvabilite=$tabTmp[0]['scoreSolv'];
if ($ENQUETE>$ENQUETEMAXI) $ENQUETE=$ENQUETEMAXI;
// Permet de supprimer la prise en compte de la procol
if ($ENQUETE>0) {
$tabIdentite['SituationJuridique']=$ANNONCEPC='';
$ANNONCELJ=$ANNONCERJ=$ANNONCESV=$PLANMODIF=$PLAN=$ANNONCEPC_OBS=$ELIMINE=false;
2013-09-06 06:25:46 +00:00
}
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
/** Grand Groupe **/
$tabTmp=$iDb->select('jo.surveillances_site', 'count(*) as nb',
"login IN ('dgfipb', 'dgfipc', 'dgfipifu1', 'dgfipifu10', 'dgfipifu11', 'dgfipifu12', 'dgfipifu13', 'dgfipifu14', 'dgfipifu2', 'dgfipifu3', 'dgfipifu4', 'dgfipifu5', 'dgfipifu6', 'dgfipifu7', 'dgfipifu8', 'dgfipifu9') AND siren=$siren AND dateSuppr=0",
INDISCORE_DEBUG, MYSQL_ASSOC);
$timer['GrandGroupe'] = microtime(true);
$tabTmp=$tabTmp[0];
if ($tabTmp['nb']>0) $GRANDGROUPE=true;
else $GRANDGROUPE=false;
/** Affichage des informations de paiement dans le score **/
$COTEOK_MMAA=$IMPAYE_MMAA=$PRIVILEGES_MMAA=$RISQUEGROUPE_MMAA='';
$DEFAUT_MMAA=$LCASSUR_MMAA=$RISQUEIMPAYE_MMAA=$CSFACTO_MMAA='';
$COTEOK=$IMPAYE=$PRIVILEGES=$RISQUEGROUPE=$DEFAUT=$LCASSUR=$RISQUEIMPAYE=$CSFACTO=false;
$MODIFPAIDATE=0;
require_once 'Metier/partenaires/classMFacto.php';
$iFacto=new MFacto();
$infoFacto=$iFacto->getCoteSpeciale($siren);
$timer['factoCS']=microtime(true);
$libProfilPayeur=trim($iFacto->getProfilPayeur($siren));
$profilPayeur=$iFacto->profilPayeur;
$timer['factoProfil']=microtime(true);
$DELAIPAY=$iFacto->DELAIPAY;
$DELAIPAYp=$iFacto->DELAIPAYp;
$DELAIPAY_MMAA=$iFacto->DELAIPAY_MMAA;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Facto", print_r($infoFacto, true).EOL."Profil payeur='$libProfilPayeur'".EOL);
if (isset($infoFacto[0])) {
$nivRisquePaiement=$infoFacto[0]['risque'];
$MODIFPAIDATE=$infoFacto[0]['DateEven'];
switch ($infoFacto[0]['CodeRisque']) {
case 'OK': $COTEOK=true;
$COTEOK_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
if ($noteSolvabilite>=40 && $noteSolvabilite<=45) $noteSolvabilite+=5;
$CSFACTO=0;
break;
case 'IP': $IMPAYE=true;
$IMPAYE_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
$CSFACTO='I';
$profilPayeur=5;
break;
case 'PR': $PRIVILEGES=true;
$PRIVILEGES_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
$CSFACTO='P';
$profilPayeur=5;
break;
case 'RG': $RISQUEGROUPE=true;
$RISQUEGROUPE_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
$CSFACTO=24; $SCOREDIRI-=10;
break;
case 'DEF': $DEFAUT=true;
$DEFAUT_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
$CSFACTO='D';
break;
case 'LC': $LCASSUR=true;
$LCASSUR_MMAA=$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
$CSFACTO='T';
break;
case 'KO': $noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$CSFACTO=50;
2013-09-06 06:25:46 +00:00
$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
2013-09-10 17:11:11 +00:00
break;
default:
if ($iFacto->risqueImpaye) {
$RISQUEIMPAYE_MMAA=$iFacto->risqueImpayeMois;
$RISQUEIMPAYE=true;
} else {
$CSFACTO=$infoFacto[0]['CoteCS']*1;
$CSFACTO_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
}
break;
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
$CSFACTOFIN_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $infoFacto[0]['DateFin']);
if ($infoFacto[0]['CoteCS']*1>0)
$libInfoPaiement='Courant '.$classWdate->dateT('Y-m-d', 'M Y', $infoFacto[0]['DateEven']).' : '.$infoFacto[0]['LibCS'];
else {
$libInfoPaiement=trim('Depuis '.$classWdate->dateT('Y-m-d', 'M Y', $infoFacto[0]['DateEven']).' : '.$infoFacto[0]['LibCS'].' '.$libProfilPayeur);
$encoursCS=7500;
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
} else {
$nivRisquePaiement=0;
if ($libProfilPayeur<>'')
$libInfoPaiement=$libProfilPayeur;
else
$libInfoPaiement='Aucun retard de paiement significatif n\'a été porté à notre connaissance par l\'ensemble de nos partenaires.';
if ($iFacto->risqueImpaye) {
$RISQUEIMPAYE_MMAA=$classWdate->dateT('Y-m', 'Ym', $iFacto->risqueImpayeDate);
if ((''.$iFacto->risqueImpayeDate.'-01')>$MODIFPAIDATE)
$MODIFPAIDATE=''.$iFacto->risqueImpayeDate.'-01';
}
}
$timer['factoImpaye']=microtime(true);
// Tableaux des Paiements
$tabPaiements=$iFacto->getTabPaiements($siren);
$timer['factoPaiements']=microtime(true);
// Présence de Privilèges
$PRIVILEGESECU=$PRIVILEGESECU_MT=$PRIVILEGETRES=$PRIVILEGETRES_MT=0;
$iPriv=new MPrivileges();
$tabPriv=$iPriv->getPrivilegesCumul($siren);
$noteSolvMax=100;
if (isset($tabPriv['03']['nb'])) {
$PRIVILEGES=true;
$PRIVILEGESECU=$tabPriv['03']['nb'];
$PRIVILEGESECU_MT=$tabPriv['03']['insCumul'];
$PRIVILEGES_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $tabPriv['03']['dateFraiche']);
if ($tabPriv['03']['dateFraiche']>$MODIFPAIDATE)
$MODIFPAIDATE=$tabPriv['03']['dateFraiche'];
if ($infoFacto[0]['CoteCS']*1==0)
$libInfoPaiement=trim('Depuis le '.$classWdate->dateT('Y-m-d', 'd/m/Y', $tabPriv['03']['dateFraiche'])." : $PRIVILEGESECU inscription(s) URSSAF pour un montant de ".number_format($PRIVILEGESECU_MT,2,',',' ')." euros. $libProfilPayeur");
if ($PRIVILEGESECU==1 && $PRIVILEGESECU_MT<15000) {
if (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=42;
elseif (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL>=750000) $noteSolvMax=45;
else $noteSolvMax=49;
} elseif ($PRIVILEGESECU>0) {
if (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=37;
elseif (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL>=750000) $noteSolvMax=38;
else $noteSolvMax=39;
}
//if ($noteSolvabilite>$noteSolvMax) $noteSolvabilite=$noteSolvMax;
}
if (isset($tabPriv['04']['nb'])) {
$PRIVILEGES=true;
$PRIVILEGETRES=$tabPriv['04']['nb'];
$PRIVILEGETRES_MT=$tabPriv['04']['insCumul'];
$PRIVILEGES_MMAA=$classWdate->dateT('Y-m-d', 'Ym', $tabPriv['04']['dateFraiche']);
if ($tabPriv['04']['dateFraiche']>$MODIFPAIDATE)
$MODIFPAIDATE=$tabPriv['04']['dateFraiche'];
if ($infoFacto[0]['CoteCS']*1==0)
if ($PRIVILEGESECU<1)
$libInfoPaiement=trim('Depuis le '.$classWdate->dateT('Y-m-d', 'd/m/Y', $tabPriv['04']['dateFraiche'])." : $PRIVILEGETRES inscription(s) TRESOR pour un montant de ".number_format($PRIVILEGETRES_MT,2,',',' ')." euros. $libProfilPayeur");
else
$libInfoPaiement.='<br/>'.trim('Depuis le '.$classWdate->dateT('Y-m-d', 'd/m/Y', $tabPriv['04']['dateFraiche'])." : $PRIVILEGETRES inscription(s) TRESOR pour un montant de ".number_format($PRIVILEGETRES_MT,2,',',' ')." euros. $libProfilPayeur");
if ($PRIVILEGETRES==1 && $PRIVILEGETRES_MT<15000) {
if ($PRIVILEGESECU>0) $seuil=45;
else $seuil=55;
if (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=$seuil-10;
elseif (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL>=750000) $noteSolvMax=$seuil-5;
else $noteSolvMax=$seuil;
} elseif ($PRIVILEGETRES>0) {
if ($PRIVILEGESECU>0) $seuil=46;
else $seuil=56;
if (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=$seuil-11;
elseif (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL>=750000) $noteSolvMax=$seuil-6;
else $noteSolvMax=$seuil;
}
}
if ($PRIVILEGES) {
$SCORECONF-=20;
if ($noteSolvMax==100) {
if (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=40;
elseif (($NBBILAN==0||$BILANVIEUX||$BILANMANQUE) && $CAPITAL>=750000) $noteSolvMax=46;
else $noteSolvMax=50;
}
}
if ($IMPAYE) {
$SCORECONF-=10;
if ($PRIVILEGES) $noteSolvMax-=10;
elseif ($SOCIETE_COTE) $noteSolvMax=61;
elseif ($NBBILAN==0 && $FJURPUB && $CAPITAL<750000) $noteSolvMax=40;
elseif ($NBBILAN==0 && !$FJURPUB && $CAPITAL<750000) $noteSolvMax=42;
elseif ($NBBILAN==0 && $FJURPUB && $CAPITAL<1500000) $noteSolvMax=45;
elseif ($NBBILAN==0 && !$FJURPUB && $CAPITAL<1500000) $noteSolvMax=47;
elseif ($NBBILAN==0 && $FJURPUB ) $noteSolvMax=50;
elseif ($NBBILAN==0 && !$FJURPUB) $noteSolvMax=51;
elseif ($NBBILAN>0 && $FJURPUB && ($BILANVIEUX||$BILANMANQUE) && $CAPITAL<750000) $noteSolvMax=45;
elseif ($NBBILAN>0 && $FJURPUB && ($BILANVIEUX||$BILANMANQUE) && $CAPITAL<1500000) $noteSolvMax=50;
elseif ($NBBILAN>0 && $FJURPUB && ($BILANVIEUX||$BILANMANQUE)) $noteSolvMax=52;
elseif ($CAPITAL<750000) $noteSolvMax=47;
elseif ($CAPITAL<1500000) $noteSolvMax=50;
else $noteSolvMax=52;
}
if ($ANNONCEHOM>0) {
//$SCORECONF+=10;
if ($PRIVILEGES || $IMPAYE || $DEFAUT) $noteSolvMax=46;
elseif ($CAPITAL<750000) $noteSolvMax=48;
elseif ($CAPITAL<1500000) $noteSolvMax=53;
else $noteSolvMax=56;
}
if ($DEFAUT) {
if (($NBBILAN==0 || $BILANVIEUX) && $CAPITAL<750000) $noteSolvMax=41;
elseif (($NBBILAN==0 || $BILANVIEUX) && $CAPITAL<1500000) $noteSolvMax=48;
elseif (($NBBILAN==0 || $BILANVIEUX)) $noteSolvMax=51;
else $noteSolvMax=54;
}
if ($RISQUEGROUPE) {
if ($RJMERE) $noteSolvMax=39;
elseif ($RJFILLE) $noteSolvMax=49;
else $noteSolvMax=56;
}
//ICI//
//$noteSolvabilite
if ($tabIdentite['SituationJuridique']=='PL') {
$SCOREDIRI-=20;
$SCORECONF+=10;
if (($NBBILAN==0 || $BILANVIEUX) && $CAPITAL<750000) $noteSolvMax=39;
elseif (($NBBILAN==0 || $BILANVIEUX) && $CAPITAL<1500000) $noteSolvMax=41;
elseif (($NBBILAN==0 || $BILANVIEUX)) $noteSolvMax=48;
else $noteSolvMax=51;
}
if ($noteSolvabilite>$noteSolvMax) $noteSolvabilite=$noteSolvMax;
$timer['privileges']=microtime(true);
/**/
$MODIFDERDATE=$MODIFINSEEDATE;
// Rcs
if ($MODIFRNCSDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFRNCSDATE;
// Annonces
if ($ANNONCEDERDATE>$MODIFDERDATE) $MODIFDERDATE=$ANNONCEDERDATE;
// Bilans
/** @todo if ($MODIFBILDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFBILDATE;**/
// Paiements
if ($MODIFPAIDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFPAIDATE;
/** Commentaire Dirigeance **/
if ($SCOREDIRI>=70)
$analyseDir='L\'étude de la dirigeance ne relève aucun problème.';
elseif ($SCOREDIRI>=40)
$analyseDir='L\'étude de la dirigeance retient notre attention.';
elseif ($SCOREDIRI>0)
$analyseDir='L\'étude de la dirigeance attire toute notre attention.';
else {
$analyseDir='L\'étude de la dirigeance révèle des anomalies.';
$SCOREDIRI=0;
}
/** Commentaire Conformité **/
if ($tabIdentite['SituationJuridique']=='P'){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise est en procédure collective';
} elseif ($tabIdentite['SituationJuridique']=='D'){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise est dissoute';
} /*elseif ($tabIdentite['SituationJuridique']=='R'){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise est radiée';
} */elseif ($tabIdentite['Actif']==0){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise n\'est pas en activité';
} elseif ($SCORECONF>=70)
$analyseConf='L\'analyse de la conformité est correcte.';
elseif ($SCORECONF>=40)
$analyseConf='L\'analyse de la conformité est acceptable.';
elseif ($SCORECONF>0)
$analyseConf='L\'analyse de la conformité est sensible.';
else {
$analyseConf='L\'analyse de la conformité est très sensible.';
$SCORECONF=0;
}
/** Commentaire Solvabilité **/
if ($noteFin>0) $noteSolv=($noteStructure+$noteFin)/2;
else $noteSolv=($noteStructure+$noteFin)/5;
if ($noteSolv>=15) $analyseSolv='Excellente';
elseif ($noteSolv>=12) $analyseSolv='Bonne';
elseif ($noteSolv>=10) $analyseSolv='Correcte';
elseif ($noteSolv>=8) $analyseSolv='Moyenne';
elseif ($noteSolv>=6) $analyseSolv='Délicate';
else $analyseSolv='Inquiétante';
if ($noteSolvabilite>=40 && $analyseSolv=='Inquiétante') $analyseSolv='Correcte';
/** CA Moyen par salarié pour un secteur donné
**/
/*$tabTmp=$iDb->select('ratios_secteurs', 'id, naf5, annee, SUM(montant), SUM(nombre), SUM(montant)/SUM(nombre) AS moyenne', "naf5='$naf' AND id=267 AND ANNEE>(SELECT MAX(annee) FROM ratios_secteurs WHERE naf5='$naf' AND id=267)-2 GROUP BY id, naf5", true, MYSQL_ASSOC);
$caSecteur=round($tabTmp[0]['moyenne']*1000);
// Encours moyen secteur * nb salariés
if ($EFFECTIF>0) $CAESTIME=$caSecteur*$EFFECTIF;
else $CAESTIME=$caSecteur;
*/
$CAESTIME=$iInsee->getCAnafEffectif($naf, $EFFECTIF);
if ($CABILAN>0) $CABIOUES=$CABILAN;
else $CABIOUES=$CAESTIME;
// L'encours de départ est à 10% du capital
$encoursIni=$tabIdentite['Capital']/10;
// Ou à l'encours ini CS car pas d'informations négatives
if ($encoursCS>$encoursIni) $encoursIni=$encoursCS;
$ENCOURS=$encoursIni;
$encoursEstime=0;
$timer['camoyen']=microtime(true);
// L'encours de trésorerie prend 1/6è de 1/12è de la Trésorerie
if ($R[63]>0) $encoursTR=$R[63]/72;
if ($noteSolvabilite>=40) {
if ($HOLDING) {
// Cas des Holding
$ENCOURS=$tabIdentite['Capital']/12;
if (@$tabBil[0]['FondsPr']>0) {
$encoursFP=(($tabBil[0]['FondsPr'])/72);
if ($encoursFP>$ENCOURS) $ENCOURS=$encoursFP;
} elseif ($encoursTR>$ENCOURS) $ENCOURS=$encoursTR;
} elseif (isset($tabBil[0])) {
/** SI BILAN : L'encours théorique de base est plafonnée au CA/36
**/
if ($tabBil[0]['CA']>0) $ENCOURS=(($tabBil[0]['CA'])/36);
if ($encoursCS>$ENCOURS) $ENCOURS=$encoursCS;
/** @todo Gérer les encours pour les sociétés avec CA ridicule et FP énormes **/
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
/** Plafond à 25% des fonds propres ou à 1000 ? si FP<0
**/
if ($tabBil[0]['FondsPr']>0) $plafond=$tabBil[0]['FondsPr']/4;
elseif ($R[63]>0) $plafond=$R[63]/12;
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
if ($ENCOURS>$plafond) $ENCOURS=$plafond;
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
} else {
/** Détermination de l'encours sans bilans
**/
// Encours estimé = CA Estimé / 72
if ($CAESTIME>0) $encoursEstime=$CAESTIME/36;
}
// debugLog('I', "INDISCORE A $encoursIni $encoursEstime $encours", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
/** Plafond des encours en fonction de la note / 100
**/
if ($noteSolvabilite> 65) $plafond=500000;
elseif ($noteSolvabilite> 60) $plafond=350000;
elseif ($noteSolvabilite> 55) $plafond=250000;
elseif ($noteSolvabilite>=50) $plafond=150000;
elseif ($noteSolvabilite>=45) $plafond=30000;
else $plafond=15000;
if ($ENCOURS>$plafond) $ENCOURS=$plafond;
/** Plafond si encours estimé
**/
if ($noteSolvabilite<50) $plafondEstime=$plafond/10;
else $plafondEstime=$plafond/25;
if ($encoursEstime>$plafondEstime) $encoursEstime=$plafondEstime;
// debugLog('I', "INDISCORE B $encoursIni $encoursEstime $encours", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
// Si l'entreprise à moins de 12 mois, on divise son encours estimé par 2
if ($encoursEstime>0) {
$dateCre=$tabIdentite['DateCreaEn']*1;
if ($dateCre==0 || ( ($tabIdentite['DateCreaEt']*1)>0 &&
$dateCre>$tabIdentite['DateCreaEt']*1) )
$dateCre=$tabIdentite['DateCreaEt']*1;
if ($dateCre+10000>date('Ymd')*1) {
$encoursEstime=$encoursEstime/2;
$libEncours='Encours limité étant donné la jeunesse de la structure.';
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
}
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
// Si encours sans bilan, l'encours donné est la moyenne de l'encours capital + l'encours estimé
if ($encoursEstime>0 && $ENCOURS>0)
$ENCOURS=($ENCOURS+$encoursEstime)/2;
// Si l'encours est forcé, on en tiens compte !
if ($encoursForce<>NULL)
$ENCOURS=$encoursForce;
switch ($FJUR2) {
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 19:
if ($ENCOURS==0 &&
!$IMPAYE && !$PRIVILEGES && !$RISQUEGROUPE && !$DEFAUT &&
!$LCASSUR && $CSFACTO<>50 && !$RISQUEIMPAYE) {
//if ($FJUR2==16) $ENCOURS=4000; // CA estimé par défaut pour agriculteur : 150000
//else
$ENCOURS=$CAESTIME/36;
if ($noteSolvabilite>=50 && $AGE>=120) $plafond=7000;
elseif ($noteSolvabilite>=45 && $AGE>=60) $plafond=5000;
elseif ($noteSolvabilite>=45 && $AGE>=36) $plafond=3000;
elseif ($noteSolvabilite>=55) $plafond=2000;
if ( $DELAIPAY>$DELAIPAYp && $DELAIPAYp>0 && $DELAIPAY<=90 )
$plafond=$plafond/2;
elseif ($DELAIPAY>90) $plafond=0;
if ($ENCOURS>$plafond) $ENCOURS=$plafond;
2013-06-19 09:45:13 +00:00
}
2013-09-10 17:11:11 +00:00
break;
case 18: // Associé Gérant de société
case 27: // Paroisse hors zone concordataire
case 29: // Autre groupement de droit privé non doté de la personnalité morale
//case 31: // Personne morale de droit étranger, immatriculée au RCS
//case 32: // Personne morale de droit étranger, non immatriculée au RCS
$ENCOURS='N/A';
$libEncours='Il est préférable de demander un enquête commerciale sur cette entité.';
break;
case 81: // Organisme gérant un régime de protection sociale à adhésion obligatoire
case 82: // Organisme mutualiste
case 83: // Comité d'entreprise
case 84: // Organisme professionnel
case 91: // Syndicat de propriétaires
case 92: // Association loi 1901 ou assimilé
case 93: // Fondation
case 99: // Fondation
$tabTmp=$iDb->select('jo.asso_bilans', 'dateCloture, dateCloture*1 as dateClotureNum', "siren=$siren ORDER BY dateCloture DESC LIMIT 0,5", INDISCORE_DEBUG, MYSQL_ASSOC);
$NBBILAN=count($tabTmp);
$BILANDATE=$tabTmp[0]['dateClotureNum'];
if ($BILANDATE>0 && $tabIdentite['SituationJuridique']=='' && $tabIdentite['Actif']==1) {
$BILAN=true;
if ($classWdate->nbMoisEntre($BILANDATE,date('Ymd'))>=24) $BILANVIEUX=true;
else $BILANVIEUX=false;
if ($classWdate->nbMoisEntre($BILANDATE,date('Ymd'))>=30) $BILANMANQUE=true;
else $BILANMANQUE=false;
$ENCOURS=$CAESTIME/72;
if ($noteSolvabilite>=40 && $ENCOURS<5000) $ENCOURS=5000;
if ($noteSolvabilite> 65) $plafond=200000;
elseif ($noteSolvabilite> 60) $plafond=150000;
elseif ($noteSolvabilite> 55) $plafond=100000;
elseif ($noteSolvabilite>=50) $plafond=50000;
elseif ($noteSolvabilite>=45) $plafond=10000;
else $plafond=5000;
if ($ENCOURS>$plafond) $ENCOURS=$plafond;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : ASSOCIATION", print_r($tabTmp,true)."$EFFECTIF=$EFFECTIF\n$CAESTIME=$caSecteur*$EFFECTIF ($efftr)");
$libEncours='Il est préférable de demander un enquête commerciale sur les organisations, associations et fondations.';
} else {
2013-09-06 06:25:46 +00:00
$ENCOURSCALC=$ENCOURS;
$ENCOURS='N/A';
2013-09-10 17:11:11 +00:00
$libEncours='Il est préférable de demander un enquête commerciale sur les organisations, associations et fondations.';
}
break;
case 99: // Autre personne morale de droit privé
case 41: // Établissement public ou régie à caractère industriel ou commercial
case 71: // Administration de l'état
case 72: // Collectivité territoriale
case 73: // Établissement public administratif
case 74: // Autre personne morale de droit public administratif
$ENCOURSCALC=$ENCOURS;
$ENCOURS='N/A';
$libEncours='Aucun risque de défaillance sur les administrations ou institutions.';
break;
2013-09-06 06:25:46 +00:00
}
2013-09-10 17:11:11 +00:00
} else {
// Encours à 0 car score < 40
$ENCOURSCALC=$ENCOURS;
$ENCOURS=0;
$libEncours='Aucun encours conseillé par rapport à notre évaluation.';
}
/** Pondération de l'encours en fonction des informations de paiement GE **/
if ($ENCOURS<>'N/A' && $ENCOURS*1>0 && $nivRisquePaiement>0) {
$plafond=7500;
switch ($nivRisquePaiement) {
case 4: // Défaut avéré
$ENCOURS=0;
break;
case 3: // Impayés
if ($noteSolvabilite>=50 && $caEntrep>=3000000) $plafond=30000;
elseif ($noteSolvabilite>=50 && $caEntrep< 3000000) $plafond=20000;
elseif ($noteSolvabilite<50 && $caEntrep>=3000000) $plafond=10000;
else $plafond=7500;
2013-06-19 09:45:13 +00:00
2013-09-10 17:11:11 +00:00
break;
case 2: // Risque d'impayés
if ($noteSolvabilite>=50 && $caEntrep>=3000000) $plafond=65000;
elseif ($noteSolvabilite>=50 && $caEntrep< 3000000) $plafond=45000;
elseif ($noteSolvabilite<50 && $caEntrep>=3000000) $plafond=25000;
else $plafond=15000;
break;
case 1: // Fin d'activité
$ENCOURS=0;
break;
default: break;
}
if ($ENCOURS>$plafond) $ENCOURS=$plafond;
}
if ($tendance=='') $tendance='Stable';
/** Avis à 3 ans
**/
if ($noteSolvabilite>=50) {
if ($valeurCCF>2160) $AVIS3ANS=true;
elseif($valeurCCF>0 && $valeurCCF<2160) $AVIS3ANS=false;
}
/** Etalonage pour l'indiscore sur 20 **/
if ($noteSolvabilite<5) $indiscore20=0;
elseif ($noteSolvabilite<20) $indiscore20=1;
elseif ($noteSolvabilite<30) $indiscore20=2;
elseif ($noteSolvabilite<35) $indiscore20=3;
elseif ($noteSolvabilite<36) $indiscore20=4;
elseif ($noteSolvabilite<39) $indiscore20=5;
elseif ($noteSolvabilite<41) $indiscore20=6;
elseif ($noteSolvabilite<45) $indiscore20=7;
elseif ($noteSolvabilite<46) $indiscore20=8;
elseif ($noteSolvabilite<50) $indiscore20=9;
elseif ($noteSolvabilite<51) $indiscore20=10;
elseif ($noteSolvabilite<55) $indiscore20=11;
elseif ($noteSolvabilite<57) $indiscore20=12;
elseif ($noteSolvabilite<60) $indiscore20=13;
elseif ($noteSolvabilite<62) $indiscore20=14;
elseif ($noteSolvabilite<65) $indiscore20=15;
elseif ($noteSolvabilite<69) $indiscore20=16;
elseif ($noteSolvabilite<73) $indiscore20=17;
elseif ($noteSolvabilite<80) $indiscore20=18;
else $indiscore20=19;
/** Classe de risque **/
if ($indiscore20>=15) $classeRisque=5;
elseif ($indiscore20>=12) $classeRisque=4;
elseif ($indiscore20>=10) $classeRisque=3;
elseif ($indiscore20>=8) $classeRisque=2;
else $classeRisque=1;
if ( ($ACTIFRNCS*1==0 && $ACTIFINSEE*1==0)
|| $tabIdentite['SituationJuridique'] == 'P'
|| $tabIdentite['SituationJuridique'] == 'PL')
2013-09-10 17:11:11 +00:00
$classeRisque=9;
2014-04-03 15:28:00 +00:00
elseif ($ENCOURS==='N/A') $classeRisque=8;
2013-09-10 17:11:11 +00:00
/** Fin note **/
$NOTE100=$noteSolvabilite; // Note finale sur 100
$NOTESBRUTE=$NOTE100; // Note du score sur 100 originale (de type bancaire)
$NOTESCORE=$noteFin*5; // Note du score financier sur 100
$timer['encours']=microtime(true);
//Si NIVEAU avec generation des commentaires
if ($genereComment)
{
2013-09-06 06:25:46 +00:00
// NBNIC
$tabTmp=$iDb->select('jo.etablissements', 'MAX(NIC) as NBNIC', "SIREN=$SIREN", INDISCORE_DEBUG, MYSQL_ASSOC);
$NBNIC=$tabTmp[0]['NBNIC'];
$timer['nbNic']=microtime(true);
if ($ANNONCEPC<>'') {
// Intervenants
$tabInter=$iRncs->getIntervenants($SIREN);
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : INTERVENANTS", print_r($tabInter,true));
$ANNONCEPC_INT1_TIT=$tabInter[0]['admfonction']; // Titre de l'intervenant
$ANNONCEPC_INT1=$tabInter[0]['admnom']; // NOM Prénom et adresse complète
$ANNONCEPC_INT2_TIT=$tabInter[1]['admfonction'];
$ANNONCEPC_INT2=$tabInter[1]['admnom'];
/* ANNONCEPC_INT2 NOM Prénom et adresse complète
ANNONCEPC_INT2TIT Titre de l'intervenant n°2
'admadrNum', 'admadrInd', 'admadrVoie','admadrCP','admadrVille' */
}
$timer['intervenants']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** N°ordre de l'entreprise dans le classement des CA pour le marché de l'entreprise **/
$caTmp=round($CABIOUES,0);
$tabTmp=$iDb->select('etablissements_act', 'count(*) AS nb', "/*siren=$siren AND */siege=1 AND ape_entrep='$naf' AND bilFL>=$caTmp", INDISCORE_DEBUG, MYSQL_ASSOC);
$MARCHEPLACE=@$tabTmp[0]['nb']*1;
$tabTmp=$iDb->select('etablissements_act', 'count(*) AS nb', "/*siren=$siren AND */siege=1 AND ape_entrep='$naf' AND bilFL>=$caTmp AND adr_dep='".$tabIdentite['Dept']."'", INDISCORE_DEBUG, MYSQL_ASSOC);
$MARCHEPLACE_DEP=@$tabTmp[0]['nb']*1;
$tabTmp=$iDb->select('etablissements_act', 'count(*) AS nb', "siege=1 AND ape_entrep='$naf' AND adr_dep='".$tabIdentite['Dept']."' AND adr_com=".$tabIdentite['codeCommune'], INDISCORE_DEBUG, MYSQL_ASSOC);
$MARCHENBENT_VILLE=@$tabTmp[0]['nb']*1;
$tabTmp=$iDb->select('etablissements_act', 'count(*) AS nb', "siege=1 AND ape_entrep='$naf' AND adr_dep='".$tabIdentite['Dept']."'", INDISCORE_DEBUG, MYSQL_ASSOC);
$MARCHENBENT_DEP=@$tabTmp[0]['nb']*1;
$timer['marcheEntrepPosition']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Liste des communes couvertes **/
$tabTmp=$iDb->select( 'jo.etablissements',
'siren, nic, adr_dep, adr_com',
"siren=$siren AND nic>0 AND actif=1 ORDER BY siege DESC, teff_etab DESC LIMIT 0,50", INDISCORE_DEBUG, MYSQL_ASSOC);
$tabCommunes=array();
foreach ($tabTmp as $iTmp=>$tabArret) {
$dep=$tabArret['adr_dep']*1;
$com=$tabArret['adr_com'];
if ($dep==20) {
$tabCommunes[]='20'.$com;
$tabCommunes[]='2A'.$com;
$tabCommunes[]='2B'.$com;
} elseif ($dep>96)
$tabCommunes[]=''.substr($tabArret['adr_dep'],0,2).$com;
elseif ($dep<10)
$tabCommunes[]='0'.$dep.$com;
else
$tabCommunes[]=''.$dep.$com;
}
$strCom=implode("','", $tabCommunes);
$timer['risquesCommunes']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Liste des risques Géo **/
$RISQUEGEO_NB=0; // Nombre d'établissements concernés: neutraliser si >= 10
$RISQUEGEO=array();
$tabTmp=$iDb->select( 'pollutions.prim_Risques',
'libCommune, risque',
"codeInsee IN ('$strCom') ORDER BY risque", INDISCORE_DEBUG, MYSQL_ASSOC);
foreach ($tabTmp as $iTmp=>$tabArret) {
$RISQUEGEO[]=$tabArret['risque']; // Libellé risque lié à la localisation l'un des etablissements (INNONDATION, TREMBLEMENT DE TERRE etc..)
$RISQUEGEO_NB++;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$RISQUEGEO=array_unique($RISQUEGEO);
$RISQUEGEO=implode(', ', $RISQUEGEO);
$timer['risquesGeo']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Liste des arretes de cata **/
$RISQUEGEOARRETE_NB=0; // Nombre d'Arrété de catastrophe naturelle sur la commune de l'un des étab depuis 1982
$RISQUEGEOARRETE_VILLE=$RISQUEGEOARRETE=$RISQUEGEOARRETE_DATE=$RISQUEGEOARRETE_JODATE=$RISQUEGEOARRETE_EVTDATE=$RISQUEGEOARRETE_AA='';
$tabTmp=$iDb->select( 'pollutions.prim_Arrets',
'libCommune, risque, dateDeb, dateFin, dateArret, dateJO',
"codeInsee IN ('$strCom') ORDER BY dateFin DESC", INDISCORE_DEBUG, MYSQL_ASSOC);
foreach ($tabTmp as $iTmp=>$tabArret) {
$RISQUEGEOARRETE_NB++;
if ($iTmp==0) {
$RISQUEGEOARRETE_VILLE=$tabArret['libCommune'];
$RISQUEGEOARRETE=$tabArret['risque']; // Plus récent Arrété de catastrophe naturelle sur la commune de l'un des étab
$RISQUEGEOARRETE_DATE=$tabArret['dateArret']; // DATE du plus récent Arrété de catastrophe naturelle sur la commune de l'un des étab
$RISQUEGEOARRETE_AA=substr($RISQUEGEOARRETE_DATE,0,4);
$RISQUEGEOARRETE_JODATE=$tabArret['dateJO']; // Date du JO Arrété de catastrophe naturelle sur la commune de l'un des étab
$RISQUEGEOARRETE_EVTDATE=$tabArret['dateDeb']; // Date de début de l'événement, cité dans l'Arrété de catastrophe naturelle sur la commune de l'un des étab
}
}
$timer['risquesArret']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Liste des établissements polluants **/
$sirenDeb=$siren.'00000';
$sirenFin=$siren.'99999';
$tabTmp=$iDb->select( 'pollutions.iREP_etablissements e, pollutions.iREP_rejets_etablissements r',
'e.codecommune, e.nom, e.codesiret, e.idetab, r.idrejet, r.coderejet, r.libellerejet, r.codeouvragedepollution, r.codeentitehydro, r.nomstep, r.nommilieu',
"e.codesiret BETWEEN $sirenDeb AND $sirenFin AND e.idetab=r.idetab GROUP BY e.codesiret, r.libellerejet LIMIT 0,50", INDISCORE_DEBUG, MYSQL_ASSOC);
// Nombre d'établissements concernés: neutraliser si >= 10
$RISQUEACT_NB=count($tabTmp);
$RISQUEACT=array();
foreach ($tabTmp as $iTmp=>$tabArret) {
$RISQUEACT[]=$tabArret['libellerejet']; // Libellé risque lié à la l'activité de l'un des etablissements "l'entreprise à au moins l'un de ses établissements figurant au registre francais des émissions polluantes" (AIR, EAU ou et SOL)
}
$RISQUEACT=array_unique($RISQUEACT);
$RISQUEACT=implode(', ', $RISQUEACT);
$timer['risquesPollu']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Bassin hydro : Le ou les libellés des bassins hydrographiques concernés
**/
$tabTmp=$iDb->select( 'pollutions.bassins',
'codeBassin',
"codeInsee IN ('$strCom') GROUP BY codeBassin", INDISCORE_DEBUG, MYSQL_ASSOC);
$RISQUEACTBASSIN=array();
$tabBassins=array(
'A' =>'Artois-Picardie', // 01 Escaut, Somme et cours d'eau côtiers de la Manche et Mer du Nord
'B1'=>'Meuse', // 02 La Meuse
'B2'=>'Sambre', // 02 La Sambre
'C'=>'Rhin', // 02 Le Rhin
'D'=>'Rhone-Méditerranée', // 06 Le Rhône et les cours d'eau côtiers méditeranéens
'E'=>'Corse', // 06 Les cours d'eau de la Corse
'F'=>'Adour-Garonne', // 05 La Garonne, l'Adour, la Dordogne, la Charente et les cours d'eau côtiers charentais et aquitains
'G'=>'Loire-Bretagne', // 04 La Loire, les cours d'eau côtiers vendéens et bretons
'H'=>'Seine-Normandie', // 03 La Seine et les cours d'eau côtiers normands
'I'=>'Guadeloupe', // 07 Les cours d'eau de la Guadeloupe
'J'=>'Martinique', // 08 Les cours d'eau de la Martinique
'K'=>'Guyane', // 09 Les fleuves et cours d'eau côtiers de la Guyane
'L'=>'Réunion', // 10 Les cours d'eau de la Réunion
'M'=>'Mayotte', // Les cours d'eau de Mayotte
);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
foreach ($tabTmp as $iTmp=>$tabArret) {
$RISQUEACTBASSIN[]=$tabBassins[$tabArret['codeBassin']]; // Libellé risque lié à la localisation l'un des etablissements (INNONDATION, TREMBLEMENT DE TERRE etc..)
}
$RISQUEACTBASSIN=trim(implode(', ', $RISQUEACTBASSIN)); // Le ou les libellés des bassins hydrographiques concernés
/*@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bassins", print_r($tabTmp, true).EOL.
$strCom.EOL.
print_r($tabBassins, true).EOL);*/
$timer['risquesBassins']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** INFOS Orias **/
require_once 'Metier/partenaires/classMOrias.php';
$iOrias=new MOrias(false);
$tabTmp=$iOrias->getInfosOrias($SIREN);
$ORIASID=$ORIASCAT=$ORIASID_DATE='';
if (count($tabTmp)>0) {
$ORIASID=$tabTmp['numOrias'];
$ORIASCAT='';
$ORIASID_DATE='';
foreach ($tabTmp['categories'] as $tabTmp) {
$ORIASCAT.=$tabTmp['categorie'].', ';
// On prend la première date
if ($ORIASID_DATE=='') $ORIASID_DATE=$tabTmp['dateInscription'];
}
$ORIASCAT=preg_replace('/, $/','', $ORIASCAT);
}
$timer['orias']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 1",'');
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Liste des marques **/
$MARQUENB_INT=0; // Nombre de marques déposées à l'international
$MARQUENB_EUR=0; // Nombre de marques déposées en EUROPE
$MARQUENB_FR=0; // Nombre de marques déposées en FRANCE
$tabMarques['WW']=$tabMarques['EU']=$tabMarques['FR']=array();
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marques", print_r($ret,true));
2013-09-09 06:30:30 +00:00
$iMarque=new MMarques();
$ret=$iMarque->getMarques($siren);
if ($ret!==false && count($ret)>0) {
foreach ($ret as $i=>$marque) {
switch ($marque['rayonMarque']) {
case 'Marque communautaire':
$MARQUENB_EUR++;
if ($MARQUENB_EUR<11 && $marque['nomMarque']<>'(figurative)') $tabMarques['EU'][]=$marque['nomMarque'];
break;
case 'Marque française':
$MARQUENB_FR++;
if ($MARQUENB_FR<11 && $marque['nomMarque']<>'(figurative)') $tabMarques['FR'][]=$marque['nomMarque'];
break;
case 'Marque internationale':
$MARQUENB_INT++;
if ($MARQUENB_INT<11 && $marque['nomMarque']<>'(figurative)') $tabMarques['WW'][]=$marque['nomMarque'];
break;
}
2013-09-06 06:25:46 +00:00
}
}
$MARQUENB=$MARQUENB_EUR+$MARQUENB_FR+$MARQUENB_INT; // Nombre de marques déposées en tout
$MARQUELISTE_INT=implode(', ', $tabMarques['WW']); // Liste en ligne des 10 dernières marques déposées à l'internationale séparées par des virgules
$MARQUELISTE_EUR=implode(', ', $tabMarques['EU']); // Liste en ligne des 10 dernières marques déposées à l'europe séparées par des virgules
$MARQUELISTE_FR =implode(', ', $tabMarques['FR']); // Liste en ligne des 10 dernières marques déposées à la France séparées par des virgules
$timer['marques']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Marchés publics **/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marchés Publiques", print_r($ret,true));
$MARCHEPUBLIC3_NB=0; // Nombre de marchés public / 3 dernières années
$MARCHEPUBLIC3_MT=0; // Montant cumulé des marchés public / 3 dernières années
$MARCHEPUBLICDER_OBJ=''; // Objet du dernier MP remporté
$MARCHEPUBLICDER_CLI=''; // Nom complet de l'acheteur du dernier MP
$MARCHEPUBLICDER_MT=false; // Montant
$MARCHEPUBLICDER_ANNEE=0; // Année du dernier marché public remporté
$MARCHEPUBLICDER_DATE=0; // Date du dernier marché public remporté
2013-09-09 06:30:30 +00:00
$ret=$iInsee->getAnnoncesBoamp($siren);
if (count($ret)>0) {
foreach ($ret as $i=>$mp) {
if (substr($mp['id'],0,1)=='A' || $mp['BodaccCode']=='BOMP C') {
if ($MARCHEPUBLICDER_MT===false) {
$MARCHEPUBLICDER_MT =$mp['Montant'];
$MARCHEPUBLICDER_CLI=$mp['Organisme'];
$MARCHEPUBLICDER_OBJ=$mp['Objet'];
$MARCHEPUBLICDER_ANNEE=substr($mp['DateParution'],0,4)*1;
$MARCHEPUBLICDER_DATE=$mp['DateParution'];
}
if (substr($mp['DateParution'],0,4)*1>=$ANNEEp3) {
$MARCHEPUBLIC3_NB++;
$MARCHEPUBLIC3_MT+=$mp['Montant'];
}
2013-09-06 06:25:46 +00:00
}
}
}
// % du CA du dernier Bilan de la moyenne des 3 dernières années de MP
$MARCHEPUBLIC3_POURC=($MARCHEPUBLIC3_MT*100)/$CABIOUES;
$timer['marchesPublics']=microtime(true);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Recherche de Franchise si enseigne **/
$FRANCHISE='';
if ($ENSEIGNE<>'') {
$tmp=addslashes($ENSEIGNE);
$tabTmp=$iDb->select( 'sdv1.franchiseurs',
"id, enseigne, MATCH (enseigne) AGAINST ('$tmp') as score",
"MATCH (enseigne) AGAINST ('$tmp')
HAVING score>1 ORDER BY score DESC", INDISCORE_DEBUG, MYSQL_ASSOC);
// Nombre d'établissements concernés: neutraliser si >= 10
foreach ($tabTmp as $iTmp=>$tabArret) {
$lev=levenshtein(strtoupper($ENSEIGNE), strtoupper($tabArret['enseigne']));
if ($lev<7) {
$FRANCHISE=$tabArret['enseigne'].' ('.$tabArret['score']." / $lev)"; // Nom du réseau des franchisés
break;
}
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
/** Population commune **/
$codeCommuneInsee=$tabIdentite['Dept'].$tabIdentite['codeCommune'];
$tabTmp = $iDb->select(
'insee.insee_tabVilles', 'Pop_mun_2007, popMunZFU, popMunZUS',
"CODGEO='$codeCommuneInsee'", INDISCORE_DEBUG, MYSQL_ASSOC
);
2013-09-09 06:30:30 +00:00
// Nombre d'habitants de la commune du siège
$POPULATION = (is_array($tabTmp) && count($tabTmp)>0) ? $tabTmp[0]['Pop_mun_2007'] : null ;
// % d'effectif salarié sur la population communale
2013-09-06 06:25:46 +00:00
if (!empty($POPULATION)){
$EFFECTIF_POPU=($EFFECTIF/$POPULATION)*100;
} else {
$EFFECTIF_POPU = null;
}
/** Ventes par villes, départements et France **/
// Attention, arrondissements pour Paris, Lyon & Marseille
//if ($codeCommuneInsee>=75000 && $codeCommuneInsee<76000)
$VILLE=$tabIdentite['Ville']; // Ville ou ville + arrondissement de l'entreprise
$ya2ans=$ANNEEp2.'-'.date('m-d');
$ret=$iDb->query("SELECT MIN(b.VenteMt) AS vtMin, AVG(b.VenteMt) AS vtMoy, MAX(b.VenteMt) AS vtMax, COUNT(b.id) AS vtNb
FROM (
SELECT v.id, v.VenteMt
FROM scores_ventes v
WHERE v.nafEt LIKE '$APEETAB'
AND v.codeCommune LIKE '$codeCommuneInsee'
AND v.Bodacc_Date_Parution>='$ya2ans'
AND v.VenteMt>1 AND v.VenteDev='EUR'
GROUP BY v.id)b");
2013-09-09 06:30:30 +00:00
if (count($ret)>0) {
while($ret=$iDb->fetch(MYSQL_ASSOC)) {
$VENTEMAX_MT= $VENTEMAX_VILLE_MT=$ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
$VENTEMOY_VILLE_MT=$ret['vtMoy'];
$VENTEMIN_MT= $VENTEMIN_VILLE_MT=$ret['vtMin']; // Plus petit montant de vente annonce VC niveau "ville"
$VENTE_NB= $VENTE_VILLE_NB=$ret['vtNb']; // Nombre de ventes dans le niveau statistique "ville" dans les 24 derniers mois
}
2013-09-06 06:25:46 +00:00
}
// Par département
$DEPARTEMENT=$iInsee->getDepartement($tabIdentite['Dept']);
$DEPARTEMENT_DE=$iInsee->getDepartement($tabIdentite['Dept'], true);
$ret=$iDb->query("SELECT MIN(b.VenteMt) AS vtMin, AVG(b.VenteMt) AS vtMoy, MAX(b.VenteMt) AS vtMax, COUNT(b.id) AS vtNb
FROM (
SELECT v.id, v.VenteMt
FROM scores_ventes v
WHERE v.nafEt LIKE '$APEETAB'
AND v.codeCommune LIKE '".$tabIdentite['Dept']."%'
AND v.Bodacc_Date_Parution>='$ya2ans'
AND v.VenteMt>1 AND v.VenteDev='EUR'
GROUP BY v.id)b");
while($ret=$iDb->fetch(MYSQL_ASSOC)) {
$VENTEMAX_DEP_MT=$ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
$VENTEMOY_DEP_MT=$ret['vtMoy'];
$VENTEMIN_DEP_MT=$ret['vtMin']; // Plus petit montant de vente annonce VC niveau "ville"
$VENTE_DEP_NB=$ret['vtNb']; // Nombre de ventes dans le niveau statistique "ville" dans les 24 derniers mois
}
// France entière
$ret=$iDb->query("SELECT MIN(b.VenteMt) AS vtMin, AVG(b.VenteMt) AS vtMoy, MAX(b.VenteMt) AS vtMax, COUNT(b.id) AS vtNb
FROM (
SELECT v.id, v.VenteMt
FROM scores_ventes v
WHERE v.nafEt LIKE '$APEETAB'
AND v.Bodacc_Date_Parution>='$ya2ans'
AND v.VenteMt>1 AND v.VenteDev='EUR'
GROUP BY v.id)b");
while($ret=$iDb->fetch(MYSQL_ASSOC)) {
$VENTEMAX_FRA_MT=$ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
$VENTEMOY_FRA_MT=$ret['vtMoy'];
$VENTEMIN_FRA_MT=$ret['vtMin']; // Plus petit montant de vente annonce VC niveau "ville"
$VENTE_FRA_NB=$ret['vtNb']; // Nombre de ventes dans le niveau statistique "ville" dans les 24 derniers mois
}
$timer['ventes']=microtime(true);
/** Cadastre **/
$CADBAT_NB_TOT=0; // nombre de postes BATIMENT du SIREN toutes adresses
$CADTER_NB_TOT=0; // nombre de postes TERRAIN du SIREN toutes adresses
$CADBAT_NB_PROP=0; // nombre de postes BATIMENT à l'adresse dont elle est propriétaire
$CADTER_NB_PROP=0; // nombre de postes TERRAIN à l'adresse dont elle est propriétaire
$CADBAT_NB_NONPROP=0; // nombre de postes BATIMENT à l'adresse dont elle n'est pas propriétaire
$CADTER_NB_NONPROP=0; // nombre de postes TERRAINS à l'adresse dont elle n'est pas propriétaire
$CADBAT_SURF_TOT=0; // Surface totale des batiments du SIREN
$CADTER_SURF_TOT=0; // Surface totale des terrains du SIREN
/**
@todo
$CADBAT_SURF_CUM=0; // Cumul Surfaces des batiments à l'addresse
$CADTER_SURF_CUM=0; // Cumul Surfaces des terrains à l'addresse
*/
// Locaux
2013-09-09 06:30:30 +00:00
require_once 'Metier/partenaires/classMCadastre.php';
$iCadastre=new MCadastre();
2013-09-06 06:25:46 +00:00
$tabTmp=$iCadastre->getLocaux($siren);
2013-09-09 06:30:30 +00:00
if(count($tabTmp)>0 ) {
foreach ($tabTmp as $iTmp=>$cad) {
$CADBAT_NB_TOT++;
if ($cad['localDroit']=='P') $CADBAT_NB_PROP++;
else $CADBAT_NB_NONPROP++;
$CADBAT_SURF_TOT+=$cad['localSurface'];
}
2013-09-06 06:25:46 +00:00
}
// Parcelles
$tabTmp=$iCadastre->getParcelles($siren);
foreach ($tabTmp as $iTmp=>$cad) {
$CADTER_NB_TOT++;
if ($cad['parcelDroit']=='P') $CADTER_NB_PROP++;
else $CADTER_NB_NONPROP++;
$CADTER_SURF_TOT+=$cad['parcelSurface'];
}
$timer['cadastre']=microtime(true);
/** RPS : Entreprise avec négociations ou accord sur les RPS ? **/
$tabTmp = $iDb->select(
'sdv1.gouv_rps',
'idfent, dateMAJ, negotiations, nbreunions, accordsigne, accorddate, absenceEchec',
"siren='$SIREN'", INDISCORE_DEBUG, MYSQL_ASSOC
);
if (isset($tabTmp[0]) && $tabTmp[0]['idfent']>0) {
$RPS_NEGO=$RPS_PLAN=false;
// Date de dernière MAJ dans le répertoire RPS
$RPS_INFODATE=$tabTmp[0]['dateMAJ'];
// Négotiations
if ($tabTmp[0]['negotiations']=='oui') $RPS_NEGO=true;
// Date de signature de l'accord des RPS qui peut être à 0
$RPS_ACCORDDATE=$tabTmp[0]['accorddate'];
// Présence du libellé Plan d'action
if (!$RPS_NEGO && $RPS_ACCORDDATE*1==0) $RPS_PLAN=true;
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Recherche de la liste des Produits / NAF **/
$LISTEPRODUIT=implode(', ', $iInsee->listeProduits($naf));
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Taux de défaillance secteur **/
// Nb Entrep actives
$tabTmp=$iDb->select(
'jo.scores_secteurs',"sum(nbEntrep) AS nb",
"annee=YEAR(NOW()) AND mois=MONTH(NOW())", INDISCORE_DEBUG, MYSQL_ASSOC
);
$nbEntrep=$tabTmp[0]['nb'];
// Nb en défaut sur 12 mois glissant
$tabTmp=$iDb->select(
'jo.scores_secteurs',
"sum(nbProcol) AS nb",
"annee=YEAR(NOW())-1 AND mois>=MONTH(NOW()) OR annee=YEAR(NOW())",
INDISCORE_DEBUG, MYSQL_ASSOC
);
$nbEntrepProcol=$tabTmp[0]['nb'];
// Nb en défaut sur 12 mois glissant
$tabTmp=$iDb->select(
'jo.scores_secteurs',
"MAX(nbEntrep) as nbSecteur, SUM(nbProcol) AS nb",
"naf5='$APEENT' AND (annee=YEAR(NOW())-1 AND mois>=MONTH(NOW()) OR annee=YEAR(NOW()))",
INDISCORE_DEBUG, MYSQL_ASSOC
);
$nbEntrepSecteur=$tabTmp[0]['nbSecteur'];
$nbEntrepSecteurProcol=$tabTmp[0]['nb'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$txDefautTotal=$nbEntrepProcol/$nbEntrep;
$txDefautSecteur=$nbEntrepSecteurProcol/$nbEntrepSecteur;
$NOTEDEFSEC=round(50+(1-($txDefautSecteur/$txDefautTotal))*50);
if ($NOTEDEFSEC>100) $NOTEDEFSEC=100;
elseif ($NOTEDEFSEC<50)
$NOTEDEFSEC=round(50+(1-($txDefautSecteur/$txDefautTotal))*10);
if ($NOTEDEFSEC<0) $NOTEDEFSEC=0;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Date de cessation des paiements et dernier numéro de jugement **/
$tabTmp=$iDb->select(
'jo.annonces',
"MIN(dateCessationPaiement) AS cessPai, MAX(numero) AS numPC",
"siren=$siren", INDISCORE_DEBUG, MYSQL_ASSOC
);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$ANNONCEPC_CESDATE=$tabTmp[0]['cessPai'];
$ANNONCEPC_NUM=$tabTmp[0]['numPC'];
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Activite réglementée **/
$ACTIVREG='';
$tabTmp=$iInsee->getActivite($siren, $nic);
if ($tabTmp)
$ACTIVREG=$tabTmp['libActivite']; // Libellé de l'activité règlementé
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 3",'');
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$NBSUIVICLI=0; // Nombre de clients suivants cette entreprise
$NBSOCSEC=0; // Nombre de siren composants les ratios secteurs
$NBSOCSECPUB=0; // Nombre de siren du secteurs devant publier
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$NBINTERRO1=0;
$NBINTERRO3=0;
$NBINTERRO6=0;
$NBINTERRO12=0;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if ( $type == 'valo' ) {
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$TAUXRA=$tabTxRendObli;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
/** Tableau des taux de rendement **/
$tabTmp=$tabTxRendObli;
krsort($tabTmp);
foreach ($tabTmp as $iTmp=>$tabTmp2) {
if ($iTmp==0) { $tmpTxN=$tabTmp2; }
elseif ($iTmp==1) { $tmpTxN1=$tabTmp2; $TAUXRAMOY1=($tmpTxN+$tabTmp2)/2; }
elseif ($iTmp==2) { $tmpTxN2=$tabTmp2; $TAUXRAMOY2=($tmpTxN+$tmpTxN1+$tabTmp2)/3; }
elseif ($iTmp==3) { $TAUXRAMOY3=($tmpTxN+$tmpTxN1+$tmpTxN2+$tabTmp2)/4; }
}
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$VALCOEFMINCA=0;
$VALCOEFMAXCA=0;
$naf2=substr($APEENT,0,2);
$naf3=substr($APEENT,0,3);
$naf4=substr($APEENT,0,4);
$tabTmp=$iDb->select('jo.tabNafValo', 'naf5, MINI, MAXI, TYPE, LENGTH(naf5) AS naf5len',
"naf5 LIKE '$naf2%' OR naf5 LIKE '$naf3%' OR naf5 LIKE '$naf4%' OR naf5='$APEENT' ORDER BY naf5len DESC LIMIT 0,1", INDISCORE_DEBUG, MYSQL_ASSOC);
// On prend le 1er secteur trouvé le + précis
$tabTmp=$tabTmp[0];
$VALCOEFMINCA=$tabTmp['MINI'];
$VALCOEFMAXCA=$tabTmp['MAXI'];
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
// Inclusion du fichier généré lors de la compilation
if ($type == 'scores') {
$fileIndiscore = 'FormulesIndiscore'.$version.'.php';
} elseif ( $type == 'valo' ) {
$fileIndiscore = 'FormulesValo'.$version.'.php';
}
require_once 'Metier/scores/Variables/'.$fileIndiscore;
2013-09-06 06:25:46 +00:00
asort($tabTri);
asort($tabTriAff);
$tabCommentairesATrier=array();
$tabCommentairesTmp=array();
global $idx;
$timer['calculcommentaires']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace1", print_r($C,true));
$numC=0;
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 4",'');
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
foreach ($C as $idx=>$value){
$numC++;
if ($value) {
$commentaires=@implode('<br/>',$tabCommentaires[$idx][$cycleClient]);
$commentaires=preg_replace('/\[0+/', '[', $commentaires);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if(INDISCORE_DEBUG) $fp=fopen(LOG_PATH.'/debugFmt.log', 'a');
if(INDISCORE_DEBUG) fwrite($fp, EOL.date("Y/m/d H:i:s")." - formule 0=$idx : $commentaires".EOL);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
if (preg_match_all('/(\{.*\})/Us',$commentaires, $tabTmp)) {
foreach ($tabTmp[1] as $valeur) {
$set=false;
$valeur2=strtr($valeur, array('{'=>'', '}'=>''));
if(INDISCORE_DEBUG) fwrite($fp, date("Y/m/d H:i:s")." - formule A=$idx : $valeur".EOL);
}
}
if(INDISCORE_DEBUG) fclose($fp);
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
$strCommentaire=strtr(preg_replace_callback('/(\{.*\})/U', 'format', $commentaires), array('"'=>'\''));
$tabCommentairesTmp[$idx]=$strCommentaire;
2013-06-19 09:45:13 +00:00
2013-09-06 06:25:46 +00:00
//echo "<b>$idx</b>";
2013-09-10 17:11:11 +00:00
//eval('echo "'.$strCommentaire.'";');
2013-09-06 06:25:46 +00:00
//echo '<br/><br/>';
// Gestion de la balise <Dxx> signifiant un espacement obligatoire de xx
if (preg_match('/\<D(\d+)\>/Ui', $strCommentaire, $matches)){
$strCommentaire=str_repeat('_', $matches[1]).preg_match('/\<D(\d+)\>/', '', $strCommentaire);
}
/*if (preg_match('/\<li\+\>(.*)$/Ui', $strCommentaire, $matches))
$strCommentaire='+&nbsp;'.$matches[1];
elseif (preg_match('/\<li\-\>(.*)$/Ui', $strCommentaire, $matches))
$strCommentaire='-&nbsp;'.$matches[1];
elseif (preg_match('/\<li>(.*)$/Ui', $strCommentaire, $matches))
$strCommentaire='*&nbsp;'.$matches[1];*/
// Gestion de la balise <C> pour concaténation à la ligne précédente
if (preg_match('/\<href\>(.*)$/Ui', $strCommentaire, $matches))
$strCommentaire=$matches[1];
if (preg_match('/^\<C\.\>(.*)$/', trim($strCommentaire), $matches2)) {
if (substr(trim($tabCommentairesATrier[$idxPre]),-1)=='.')
$tabCommentairesATrier[$idxPre]=substr(trim($tabCommentairesATrier[$idxPre]),0,-1).//' '.
$matches2[1];
else
$tabCommentairesATrier[$idxPre].=$matches2[1];
}
elseif (preg_match('/^\<C\:\>(.*)$/', trim($strCommentaire), $matches2)) {
if (substr(trim($tabCommentairesATrier[$idxPre]),-1)==':')
$tabCommentairesATrier[$idxPre]=substr(trim($tabCommentairesATrier[$idxPre]),0,-1).//' '.
$matches2[1];
else
$tabCommentairesATrier[$idxPre].=$matches2[1];
}
elseif (preg_match('/^\<C;\>(.*)$/', trim($strCommentaire), $matches2)) {
if (substr(trim($tabCommentairesATrier[$idxPre]),-1)==';')
$tabCommentairesATrier[$idxPre]=substr(trim($tabCommentairesATrier[$idxPre]),0,-1).//' '.
$matches2[1];
else
$tabCommentairesATrier[$idxPre].=$matches2[1];
}
elseif (preg_match('/^\<C,\>(.*)$/', trim($strCommentaire), $matches2)) {
if (substr(trim($tabCommentairesATrier[$idxPre]),-1)==',')
$tabCommentairesATrier[$idxPre]=substr(trim($tabCommentairesATrier[$idxPre]),0,-1).//' '.
$matches2[1];
else
$tabCommentairesATrier[$idxPre].=$matches2[1];
}
elseif (preg_match('/^\<C\>(.*)$/', trim($strCommentaire), $matches2))
$tabCommentairesATrier[$idxPre].=$matches2[1];
else {
$tabCommentairesATrier[$idx]=$strCommentaire;
$idxPre=$idx;
}
// sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace1.$numC = $idx", $commentaires);
}
// else
// echo $idx.'<br/>';
}
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace10", 'ici');
//echo '<hr/>';
$tabComment=array();
$tableau=false;
foreach ($tabTriAff as $idxC=>$ordre) {
$idxC=floor($idxC);
if (isset($tabCommentairesATrier[$idxC])) {
// echo "<b>$idxC</b>";
// Gérer les parenthèses
//$strTmp2=strtr($tabCommentairesATrier[$idxC], array('(4)'=>''));
$strTmp2=$tabCommentairesATrier[$idxC];
$debLigne=$finLigne='';
if (preg_match('/(<table|<tr|<th|<td)/i', $strTmp2)) {
$strTmp2=strtr($strTmp2, array('<br/>'=>'','<br>'=>'','<BR/>'=>'','<BR>'=>''));
$tableau=true;
} else {
$tableau=false;
if ($tableauPre) $debLigne.='</table>';
}
if (preg_match('/<i>(.*)/Uis', $strTmp2, $matchesTmp)) {
if (!preg_match('/<\/i>/Uis', $matchesTmp[1]))
// Il manque la fin de l'italique
$finLigne.='</i>';
}
if (preg_match('/<h(\d)>(.*)($|<br\/>.*$)/Uis', $strTmp2, $matchesTmp)) {
$nivH=$matchesTmp[1];
$strTmp2="<h$nivH>".$matchesTmp[2]."</h$nivH>".$matchesTmp[3];
}
if (preg_match('/^(.*)\{GRAPH\((.*)\)\}(.*)$/Uis', $strTmp2, $matchesTmp)) {
$strTmp='ERREUR DE FORMULE LORS DE LA GENERATION DU GRAPHIQUE no '.$idxC;
$strTmp2=trim(str_replace('$','',$matchesTmp[1]))."[GRAPHIQUE id=$idxC titre=".$matchesTmp[2].']'.trim($matchesTmp[3]);
// $matchesTmp[3];
//{GRAPH("Marge brute d'exploitation/secteur",R[506]#H,Rs[506]#H)}
} else
$strTmp='ERREUR DE FORMULE LORS DE LA GENERATION DU COMMENTAIRE no '.$idxC;
2013-09-13 05:45:32 +00:00
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace10,$idxC=$strTmp2", 'ici');
2013-09-06 06:25:46 +00:00
//@eval('\$strTmp="'.$strTmp2.'";');
$strTmp=eval("return \"$strTmp2\";");
$tabComment[$idxC]=preg_replace('/<\/i>(?:<br\/>)<\/i>/i','</i>', $debLigne.prepareString($strTmp).$finLigne);//." ($idxC, $ordre)";
if (substr($strTmp,0,17)=='ERREUR DE FORMULE') {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : $strTmp","Formules : ".EOL.$strTmp2);
}
// echo " ($ordre)<br/>";
$tableauPre=$tableau;
}
}
// Si le dernier commentaire est une fin de tableau, on gère le cas !
if ($tableau) $tabComment[$idxC].='</table>';
$timer['finIndiscore']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace20", 'ici');
/** @todo
$NOMFUSION Nom de l'entrep concernée par la fusion
$GERANTMAJ
$ANNONCELIM Annonce en cours
$ANNONCELJDELAI Délai pour rescorer après annonce de LJ
$ANNONCECLODELAI Délai pour rescorer après annonce de cloture
$APEAGRICPAC
$NOTEDEFPRO Note de la probabilité de défaillance du profil sur 100
$SOCIETE_COTE_MARCHE_MERE Nom du marché de l'actionnaire côté
GEOACT1K_NB nombre Nb entrep du même secteur (APE 4ch) à moins de 1km
GEOACT5K_NB nombre Nb entrep du même secteur (APE 4ch) à moins de 5km
GEOACT10K_NB nombre Nb entrep du même secteur (APE 4ch) à moins de 10km
RISQUEGEOEAU_DIS nombre distance d'un point d'eau en metres
RISQUEGEOEAU_MIL libellé milieu: classification du point d'eau en metre ex: rivière, pland'eau etc…
RISQUEGEOEAU_ALT nombre altitude du point d'eau en metres
RISQUEGEOEAU_PRELS nombre M3 par an; prélèvement eau en surface
RISQUEGEOEAU_PRELF nombre M3 par an; prélèvement eau souterraine par forage
$MOY(R[512],3)
**/
2013-09-10 17:11:11 +00:00
$variables="\n\$NIVEAU=$NIVEAU\n\$numBil=$numBil\n\$noteSD=$noteSD\n\t-----";
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
foreach ($tabVar as $var){
if (isset(${$var})) $variables.="$var='${$var}'".EOL;
else $variables.="$var='${$var}' NON DEFINIE !!!".EOL;
}
2013-09-06 06:25:46 +00:00
/*
2013-09-10 17:11:11 +00:00
if(ENV<>'PRD' && $mailDebug)
2013-09-06 06:25:46 +00:00
sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com,jm.champeau@recocash.com', "Indiscore sur $siren : Variables",
'CA_COEF='.$CA_COEF.EOL.
'CA_Y='.print_r($CA_Y,true).EOL.
EOL.
'RCAI_COEF='.$RCAI_COEF.EOL.
'RCAI_Y='.print_r($RCAI_Y,true).EOL.
"rcai TAUX=$PROJECTAUX".EOL.
"y aff=".print_r($Yaff,true).EOL.
"x=".print_r($tabRegX,true).EOL.
EOL.
print_r($tabComment, true).EOL.EOL.
$variables.EOL."Liste des Ratios :\n".print_r($tabRatios, true).EOL.
"Liste des ratios Evolutions :\n". print_r($tabRatiosEvol, true).EOL.
"Liste des commentaires Debug :\n".print_r($tabCommentairesTmp, true));
*/
/*sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com',
"Indiscore sur $siren : Commentaires",
"Liste des variables :\n$variables".EOL.
print_r($tabComment, true).EOL.
"Liste des variables :\n".print_r($tabVariables, true).EOL.
"Liste des commentaires Debug :\n".print_r($tabCommentairesTmp, true).EOL.
"Liste des commentaires a trier :\n".print_r($tabCommentairesATrier,true).EOL.
"Tableau des codes de tri pour calcul :\n".print_r($tabTri,true).EOL.
"Tableau des codes de tri pour affichage :\n".print_r($tabTriAff,true).EOL.
$debugFormule.EOL.'-----------------------'.EOL.
"Liste des Bilans :\n".print_r($tabBilans, true).EOL.
//"Détail des postes Bilans :\n".print_r($tabBilan, true).EOL.
//
//"Liste des Formules Ratios :\n".print_r($tabFormulesRatios, true).EOL.
//"Debug variables :\n".file_get_contents('/var/www/log/debugFmt.log').EOL.
"\$tabBil=\n".print_r($tabBil,true).EOL
);*/
2013-09-10 17:11:11 +00:00
} // Fin Génération des commentaires
2013-09-06 06:25:46 +00:00
if(INDISCORE_DEBUG)
file_put_contents('test.log',
"Indiscore sur $siren : Commentaires".EOL.
"Liste des variables :\n$variables".EOL.
print_r($tabComment, true).EOL.
"Liste des variables :\n".print_r($tabVariables, true).EOL.
"Liste des commentaires Debug :\n".print_r($tabCommentairesTmp, true).EOL.
"Liste des commentaires a trier :\n".print_r($tabCommentairesATrier,true).EOL.
"Tableau des codes de tri pour calcul :\n".print_r($tabTri,true).EOL.
"Tableau des codes de tri pour affichage :\n".print_r($tabTriAff,true).EOL.
$debugFormule.EOL.'-----------------------'.EOL.
"Liste des Bilans :\n".print_r($tabBilans, true).EOL.
//"Détail des postes Bilans :\n".print_r($tabBilan, true).EOL.
//
//"Liste des Formules Ratios :\n".print_r($tabFormulesRatios, true).EOL.
//"Debug variables :\n".file_get_contents('/var/www/log/debugFmt.log').EOL.
"\$tabBil=\n".print_r($tabBil,true).EOL
);
// EntActiveRCS
if ($ACTIFRNCS || $ACTIFINSEE)
$actif=1;
else
$actif=0;
if ($libInfoPaiement<>'' && $tabIdentite['SituationJuridique']=='P')
$libInfoPaiement='En procédure collective';
$tabRet = array(
'id' => $tabIdentite['id'],
'Siret' => $tabIdentite['SiretSiege'],
'Actif' => $actif,//$tabIdentite['Actif'],
'AutreId' => $tabIdentite['AutreId'],
'Nom' => $tabIdentite['Nom'],
'Sigle' => $tabIdentite['Sigle'],
'Enseigne' => $tabIdentite['Enseigne'],
'Adresse' => $tabIdentite['Adresse'],
'Adresse2' => $tabIdentite['Adresse2'],
'AdresseNum' => $tabIdentite['AdresseNum'],
'AdresseBtq' => $tabIdentite['AdresseBtq'],
'AdresseVoie' => $tabIdentite['AdresseVoie'],
'AdresseRue' => $tabIdentite['AdresseRue'],
'CP' => $tabIdentite['CP'],
'Ville' => $tabIdentite['Ville'],
'Civilite' => $tabIdentite['Civilite'],
'NbEtab' => $tabIdentite['NbEtab'],
'Tel' => $tabIdentite['Tel'],
'Fax' => $tabIdentite['Fax'],
'Web' => $tabIdentite['Web'],
'Mail' => $tabIdentite['Mail'],
'FJ' => $fj,
'FJ_lib' => $tabIdentite['FJ_lib'],
'Siren' => $tabIdentite['Siren'],
'Nic' => $tabIdentite['Nic'],
'NafEtab' => $tabIdentite['NafEtab'],
'NafEnt' => $tabIdentite['NafEnt'],
'NafEntLib' => $tabIdentite['NafEntLib'],
'Activite' => $tabIdentite['Activite'],
'Capital' => $tabIdentite['Capital'],
'CapitalDev' => $tabIdentite['CapitalDev'],
'DateCreaEt' => $tabIdentite['DateCreaEt'],
'DateCreaEn' => $tabIdentite['DateCreaEn'],
'DateClotEt' => $tabIdentite['DateClotEt'],
'EffEnTr' => $tabIdentite['EffEnTr'],
'EffEnTrLib' => $tabIdentite['EffEnTrLib'],
'Effectif' => $tabIdentite['Effectif'],
'Dept' => $tabIdentite['Dept'],
'codeCommune' => $tabIdentite['codeCommune'],
'TrancheCA' => $tabIdentite['TrancheCA'],
'TrancheCALib' => $tabIdentite['TrancheCALib'],
'dir1Titre' => $tabIdentite['dir1Titre'],
'dir1NomPrenom' => $tabIdentite['dir1NomPrenom'],
'dir1DateFct' => $tabIdentite['dir1DateFct'],
'dir2Titre' => $tabIdentite['dir2Titre'],
'dir2NomPrenom' => $tabIdentite['dir2NomPrenom'],
'dir2DateFct' => $tabIdentite['dir2DateFct'],
'Rivoli' => $tabIdentite['Rivoli'],
'NbBilansScore' => $NBBILAN,
'Bilans' => $tabBil,
'Note_Structure' => $noteStructure,
'Notes_Structure' => $tabStructure,
'Note_Financiere' => $noteFin,
'Indiscore' => $noteSolvabilite,
'Indiscore20' => $indiscore20,
'TendanceIndiscore' => $tendance,
'DevraitPublier' => $FJURPUB,
'ScoreSolvabilite' => $noteSolvabilite,
'AnalyseSolvabilite'=> $analyseSolv,
'ScoreDirigeance' => $SCOREDIRI,
'AnalyseDirigeance' => $analyseDir,
'ScoreConfor' => $SCORECONF,
'AnalyseConfor' => $analyseConf,
'LibSecteur' => $libSecteur,
'tabBilans' => $tabBilans,
'tabBilan' => $tabBilan,
'tabRatios' => $tabRatiosNew,
'tabRatiosDiff' => $tabRatiosDiff,
'tabRatiosEvol' => $tabRatiosEvol,
'encours' => $ENCOURS,
'encoursIni' => $encoursIni,
'encoursStat' => $encoursEstime,
'infoEncours' => $libEncours,
'infoPaiement' => $libInfoPaiement,
'profilPayeur' => $profilPayeur,
'classeRisque' => $classeRisque,
'AdresseDom' => $tabIdentite['AdresseDom'],
'scores' => array(
2013-09-06 06:25:46 +00:00
'ConanH'=> $scoreConanH,
'Afdcc1'=> $scoreAfdcc1,
'Afdcc2'=> $scoreAfdcc2,
'Afdcc2note'=>$scoreAfdcc2note,
'Z' => $scoreZ,
'Altman'=> $scoreAltman,
'AltmanCote'=> $scoreAltmanB,
2013-09-06 06:25:46 +00:00
'36mois'=> $pDef36,
'CCF' => $valeurCCF,
'NOTECAP'=> $NOTECAP20, // Capitalisation
'NOTELED'=> $NOTELED20, // Levier Endettement
'NOTERBT'=> $NOTERBT20, // Capa. Remboursement
'NOTECFI'=> $NOTECFI20, // Couv. Charges Finan.
'NOTETRES'=> $NOTETRES20,// Tresorerie
'NOTEMEX'=> $NOTEMEX20, // Marge Exploitation
2013-09-06 06:25:46 +00:00
),
'paiements' => $tabPaiements,
'cs' => $CSFACTO,
'csMoisMaj' => $CSFACTO_MMAA,
'csMoisFin' => $CSFACTOFIN_MMAA,
'SituationJuridique'=> $tabIdentite['SituationJuridique'],
'tabInfosNotations' => $tabInfosNotation,
'tabImportExport' => $tabImportExport,
'tabCommentaires' => $tabComment,
'tabVariables' => array('CA_Y'=>$Yaff),
2013-09-06 06:25:46 +00:00
);
$indiScore = $tabRet['Indiscore']*1;
$ENCOURS = round($tabRet['encours']);
2013-09-06 06:25:46 +00:00
/** Historisation du score **/
$tabTmp=$iDb->select(
'scores_surveillance s',
"s.siren, s.actif, s.procol, s.indiScore, s.indiScore20, s.encours, s.indiScoreDate, scoreSolv, scoreConf, scoreDir, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, s.dateUpdate, s.cs, s.csMoisMaj, s.csMoisFin",
"s.siren=$siren",
false, MYSQL_ASSOC);
//Déjà en surveillance score => il faut faire un update dans la base
if (count($tabTmp)>0) {
$entrep = $tabTmp[0];
2013-09-06 06:25:46 +00:00
$indiScorePre = $entrep['indiScore']*1;
$encoursPre = $entrep['encours']*1;
$dateScore = str_replace('-','',$entrep['indiScoreDate'])*1;
$procol = $entrep['procol'];
if ($entrep['nbModifs']==0) $sourceModif='ajout';
$nbModifs = ($entrep['nbModifs']*1)+1;
$actionHisto = 'update';
2013-09-06 06:25:46 +00:00
} else {
$entrep=array();
$indiScorePre=$encoursPre=null;
2013-09-06 06:25:46 +00:00
$dateScore=0;
$sourceModif='ajout';
$nbModifs = 1;
$actionHisto = 'insert';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
/** Si un score a déjà été calculé, on affine la variable "TendanceIndiscore" **/
if ($dateScore>0) {
if ($indiScore>$indiScorePre) $tabRet['TendanceIndiscore']='Haussiere';
elseif ($indiScore<$indiScorePre) $tabRet['TendanceIndiscore']='Baissiere';
else $tabRet['TendanceIndiscore']='Stable';
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
//Scores identique au précedent, simple mise à jour
2013-09-06 06:25:46 +00:00
if ($indiScore==$indiScorePre && $ENCOURS==$encoursPre && $dateScore<>0 )
2013-06-19 09:45:13 +00:00
{
$tabUpdate2 = array('sourceModif'=>$sourceModif, 'nbModifs'=>$nbModifs);
2013-09-06 06:25:46 +00:00
if (!$iDb->update('scores_surveillance', $tabUpdate2, "siren=$siren", false, 0, true)) {
debugLog('W', 'Erreur lors de la MAJ du score en surveillance pour '. $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
else
2013-06-19 09:45:13 +00:00
{
//Calcul de l'effectif réel
$EffectifEn = $tabIdentite['Effectif'];
$bilanAgeMax = 3 * 12; //Age maximum du dernier bilan en mois
if (!empty($tabIdentite['bilanDate']) && intval($tabIdentite['bilanYP'])>0 ) {
Zend_Date::setOptions(array('extend_month' => true));
$dateBilan = new Zend_Date($tabIdentite['bilanDate'], 'yyyyMMdd');
$dateNow = new Zend_Date();
$difference = $dateNow->sub($dateBilan);
$measure = new Zend_Measure_Time($difference->toValue(), Zend_Measure_Time::SECOND);
$measure->convertTo(Zend_Measure_Time::MONTH);
$nbMonth = $measure->getValue();
if ( $nbMonth < $bilanAgeMax ) {
$EffectifEn = $tabIdentite['bilanYP'];
}
}
//Insertion ou mise à jour du score
$tabUpdate = array(
2013-09-09 06:30:30 +00:00
'siren' => $siren,
'naf' => $naf,
'CJ' => $tabIdentite['FJ'],
'dateImmat' => $tabIdentite['dateImmat'],
'dateCrea' => $tabIdentite['DateCreaEn'],
'effectif' => $EffectifEn,
2013-09-09 06:30:30 +00:00
'actif' => $tabRet['Actif'],
'procol' => $tabRet['SituationJuridique'],
'indiScore' => $tabRet['Indiscore'],
'indiScore20' => $tabRet['Indiscore20'],
'encours' => $tabRet['encours'],
'indiScoreDate' => $JOUR_DATE,
'dateBilan' => @$tabRet['Bilans'][0]['Millesime'],
'scoreSolv' => $tabRet['ScoreSolvabilite'],
'scoreConf' => $tabRet['ScoreConfor'],
'scoreDir' => $tabRet['ScoreDirigeance'],
'scoreZ' => $tabRet['scores']['Z'],
'scoreCH' => $tabRet['scores']['ConanH'],
'scoreAfdcc1' => $tabRet['scores']['Afdcc1'],
'scoreAfdcc2' => $tabRet['scores']['Afdcc2'],
'scoreAfdcc2note' => $tabRet['scores']['Afdcc2note'],
'scoreAltman' => $tabRet['scores']['Altman'],
'scoreAltmanCote' => $tabRet['scores']['AltmanCote'],
'scoreCCF' => $tabRet['scores']['CCF'],
'situFi' => $tabRet['tabInfosNotations']['SituationFinanciere'],
'infoNote' => $tabRet['tabInfosNotations']['Notation'],
'noteStruct' => $tabRet['Note_Structure'],
'noteFin' => $tabRet['Note_Financiere'],
'tendance' => $tabRet['TendanceIndiscore'],
'cs' => $tabRet['cs'],
'csMoisMaj' => $tabRet['csMoisMaj'],
'csMoisFin' => $tabRet['csMoisFin'],
'adresseDom' => $tabRet['AdresseDom'],
'sourceModif' => $sourceModif,
'indiScorePre' => $entrep['indiScore'],
'indiScore20Pre' => $entrep['indiScore20'],
'indiScoreDatePre' => $entrep['indiScoreDate'],
'encoursPre' => $entrep['encours'],
'scoreSolvPre' => $entrep['scoreSolv'],
'scoreConfPre' => $entrep['scoreConf'],
'scoreDirPre' => $entrep['scoreDir'],
'scoreZPre' => $entrep['scoreZ'],
'scoreCHPre' => $entrep['scoreCH'],
'scoreAfdcc1Pre' => $entrep['scoreAfdcc1'],
'scoreAfdcc2Pre' => $entrep['scoreAfdcc2'],
'scoreAfdcc2notePre'=> $entrep['scoreAfdcc2note'],
'scoreAltmanPre' => $entrep['scoreAltman'],
'scoreAltmanCotePre'=> $entrep['scoreAltmanCote'],
'scoreCCFPre' => $entrep['scoreCCF'],
'situFiPre' => $entrep['situFi'],
'infoNotePre' => $entrep['infoNote'],
'noteStructPre' => $entrep['noteStruct'],
'noteFinPre' => $entrep['noteFin'],
'tendancePre' => $entrep['tendance'],
'csPre' => $entrep['cs'],
'csMoisMajPre' => $entrep['csMoisMaj'],
'csMoisFinPre' => $entrep['csMoisFin'],
'adresseDomPre' => $entrep['adresseDom'],
'nbModifs' => $nbModifs,
);
if ( $actionHisto == 'insert' )
{
2013-09-10 17:11:11 +00:00
if (!$iDb->insert('scores_surveillance', $tabUpdate, false, true)) {
echo "Erreur lors de l'ajout"; echo mysql_error().EOL;
debugLog('W', "Erreur lors de l'ajout du score en surveillance pour ". $tabIdentite['Nom']." - ".mysql_error(), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
2013-09-10 17:11:11 +00:00
}
}
else
{
2013-09-10 17:11:11 +00:00
if (!$iDb->update('scores_surveillance', $tabUpdate, "siren=$siren", false, 0, true)) {
echo "Erreur lors de l'update";
2013-09-10 17:11:11 +00:00
debugLog('W', "Erreur lors de mise à jour du score en surveillance pour ". $tabIdentite['Nom']." - ".mysql_error(), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
}
2013-06-19 09:45:13 +00:00
}
2013-09-06 06:25:46 +00:00
// Historisation du score
2013-09-10 17:11:11 +00:00
$iDbHisto=new WDB('historiques');
2013-09-06 06:25:46 +00:00
if (!$iDbHisto->insert('scores_surveillance', $tabUpdate)) {
echo "Erreur lors de l'historique";
2013-09-06 06:25:46 +00:00
//print_r($tabUpdate);
echo mysql_error().EOL;
echo date ('Y/m/d - H:i:s') . " - Erreur SQL sur l'historisation du score pour le siren $siren".EOL;
debugLog('W', "Erreur lors de l'historisation du score pour ". $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
2013-06-19 09:45:13 +00:00
}
}
2013-09-06 06:25:46 +00:00
2013-09-10 17:11:11 +00:00
if (INDISCORE_DEBUG) {
$i=0; $strTime='';
foreach ($timer as $lib=>$time) {
$strTime.="$lib : ";
$duree=round($time-$timePre,3);
if ($i==0) { $strTime.="0 s"; $timeDeb=$time; }
else $strTime.="$duree s";
$strTime.="\n";
$timePre=$time;
$i++;
}
$duree=round($time-$timeDeb,3);
$strTime.="---------------------\nTOTAL : $duree secondes\n";
file_put_contents('time.log', "Indiscore sur $siren : Durées ".ENV, $strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
//sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com', "Indiscore sur $siren : Durées ".ENV, $strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
2013-09-06 06:25:46 +00:00
}
debugLog('I', 'Etablissement retourné FIN = '. $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
return $tabRet;
2013-06-19 09:45:13 +00:00
}
?>