4469 lines
196 KiB
PHP
4469 lines
196 KiB
PHP
<?php
|
||
define('INDISCORE_DEBUG', false);
|
||
|
||
/**
|
||
* Return the history of previous stored IndiScores on the companies
|
||
* @param string $siren
|
||
* Siren number of the company
|
||
* @return array
|
||
*/
|
||
function getIndiscoreHisto($siren)
|
||
{
|
||
if (intval($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
|
||
ORDER BY indiScoreDate DESC";
|
||
$iDb = new Metier_Util_Db();
|
||
$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;
|
||
}
|
||
|
||
/**
|
||
* Récupére les scores dans la table de cache scores_surveillance
|
||
* @param string $siren
|
||
* @return array
|
||
*/
|
||
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 Metier_Util_Db();
|
||
$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;
|
||
}
|
||
|
||
|
||
/**
|
||
* 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('jo.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();
|
||
}
|
||
|
||
/**
|
||
* Taux de tva
|
||
* @param string $date AAAAMM
|
||
* @return double
|
||
*/
|
||
function getTxTva($date)
|
||
{
|
||
$tabTxTva = include __DIR__ . '/Data/Tva.php';
|
||
foreach ($tabTxTva as $ym => $v) {
|
||
if ($ym > $date) {
|
||
break;
|
||
}
|
||
$tva = $v;
|
||
}
|
||
return $tva;
|
||
}
|
||
|
||
/**
|
||
* Donne le taux de rendement des actions pour une année donnée
|
||
* @param unknown $annee
|
||
* @return unknown
|
||
*/
|
||
function getTxRendement($annee)
|
||
{
|
||
$tabTxRendObli = include __DIR__ . '/Data/RendObli.php';
|
||
if (isset($tabTxRendObli[$annee])) {
|
||
return $tabTxRendObli[$annee];
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Formattage élément numéraire en texte
|
||
* @param number $nombre
|
||
* @param int $decimales
|
||
* @param string $sepDec
|
||
* @param string $sepMil
|
||
* @param string $unite
|
||
* @param string $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).' '.$unite;
|
||
} elseif ($nombre < 0) {
|
||
return '- '.number_format(abs($nombre), $decimales, $sepDec, $sepMil).' '.$unite;
|
||
} else {
|
||
return number_format(abs($nombre), $decimales, $sepDec, $sepMil).' '.$unite;
|
||
}
|
||
} elseif ($signe == '!') {
|
||
return number_format(abs($nombre), $decimales, $sepDec, $sepMil).' '.$unite;
|
||
} else {
|
||
return number_format($nombre, $decimales, $sepDec, $sepMil).' '.$unite;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Formatte les entités Ratio en mode texte
|
||
* @param array $ratio
|
||
* @param string $id
|
||
* @param string $unite
|
||
* @param string $forceSigne
|
||
* @return string
|
||
*/
|
||
function formatRatio($ratio, $id, $unite, $forceSigne='')
|
||
{
|
||
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, ',', ' ', '€', $forceSigne);
|
||
} elseif ($ratio[$id] <= -10000000 || $ratio[$id] >= 10000000) {
|
||
return number_format2($ratio[$id]/1000000, 0, ',', ' ', 'M€', $forceSigne);
|
||
} else {
|
||
return number_format2($ratio[$id]/1000, 0, ',', ' ', 'K€', $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;
|
||
}
|
||
|
||
return $ratio[$id].' '.$unite;
|
||
}
|
||
|
||
/**
|
||
* Formattage des variables pour affichage
|
||
* @param string $variable
|
||
* @param int $longeur
|
||
* @param string $fonction
|
||
* @return mixed
|
||
*/
|
||
function formatValeur($variable, $longeur=0, $fonction='')
|
||
{
|
||
$valeur = strtr($variable, array('{'=>'', '}'=>''));
|
||
$nomVar = strtr($valeur, array('$'=>''));
|
||
|
||
//@todo : Delete
|
||
global $tabVariables, $$nomVar;
|
||
|
||
// --- Gestion des valeurs présentent dans un tableau de variables
|
||
if (isset($tabVariables[$nomVar])) {
|
||
if ($longeur>0) {
|
||
return $variable;
|
||
} else {
|
||
// Tableau ZEMET
|
||
if ($nomVar == 'ZEMET') {
|
||
global $RPET, $DateNotice80;
|
||
if (substr($DateNotice80, 0, 4) >= 2010) {
|
||
$tableZemet = 'ZEMET2010';
|
||
} else {
|
||
$tableZemet = 'ZEMET1994';
|
||
}
|
||
// Cette variable a un libellé associé
|
||
if (isset($tabVariables[$tableZemet][$RPET.$ZEMET]['art'])) {
|
||
return $tabVariables[$tableZemet][$RPET.$ZEMET]['art'];
|
||
} else {
|
||
return $tabVariables[$tableZemet][$RPET.$ZEMET]['lib'];
|
||
}
|
||
}
|
||
// 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'];
|
||
}
|
||
}
|
||
}
|
||
// --- Formattage variable [...]DATE
|
||
elseif (preg_match('/DATE$/', $nomVar)) {
|
||
$strTmp = eval("return $valeur;");
|
||
return preg_replace('/00\//', '01/', Metier_Util_Date::dateT('Ymd', 'd/m/Y', substr(str_replace('-', '', $strTmp), 0, 8)));
|
||
}
|
||
// --- Formattage variable [...]DATEp[NNNN]
|
||
elseif (preg_match('/DATEp[0-9]{0,}$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
return preg_replace('/00\//', '01/', Metier_Util_Date::dateT('Ymd', 'd/m/Y', substr(str_replace('-', '', $strTmp), 0, 8)));
|
||
}
|
||
// --- Formattage variable [...]MMAA
|
||
elseif (preg_match('/MMAA$/', $nomVar)) {
|
||
//DELAIPAY_MMAA ne marche pas !
|
||
$strTmp=eval("return $valeur;");
|
||
return Metier_Util_Date::dateT('Y-m', 'M Y', $strTmp);
|
||
}
|
||
// --- Formattage variable [...]_MT
|
||
elseif (preg_match('/_MT$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
return number_format($strTmp, 2, ',', ' ').' €';
|
||
}
|
||
// --- Formattage variable [...]_NB
|
||
elseif (preg_match('/_NB$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
return number_format($strTmp, 0, ',', ' ');
|
||
}
|
||
// --- Formattage variable [...]_EU
|
||
elseif (preg_match('/_EU$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
if ($strTmp>=0 && $strTmp<10 || $strTmp>-10 && $strTmp<=0) {
|
||
return number_format($strTmp, 2, ',', ' ').' €';
|
||
} elseif ($strTmp>=10 && $strTmp<5000 || $strTmp>-5000 && $strTmp<=10) {
|
||
return number_format($strTmp, 0, ',', ' ').' €';
|
||
} elseif ($strTmp<=-10000000 || $strTmp>=10000000) {
|
||
return number_format($strTmp/1000000, 0, ',', ' ').' M€';
|
||
} else {
|
||
return number_format($strTmp/1000, 0, ',', ' ').' K€';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]_POURC
|
||
elseif (preg_match('/_POURC$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
if ($strTmp>=10 || $strTmp<=-10) {
|
||
return number_format($strTmp, 0, ',', ' ').' %';
|
||
} elseif ($strTmp>=1 || $strTmp<=-1) {
|
||
return number_format($strTmp, 1, ',', ' ').' %';
|
||
} else {
|
||
return number_format($strTmp, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]CAPITAL
|
||
elseif (preg_match('/CAPITAL$/', $nomVar)) {
|
||
return number_format($CAPITAL, 0, ',', ' ').' €';
|
||
}
|
||
// --- Formattage variable [...]CAPITAL_PRE
|
||
elseif (preg_match('/CAPITAL_PRE$/', $nomVar)) {
|
||
return number_format($CAPITAL_PRE, 0, ',', ' ').' €';
|
||
}
|
||
// --- Formattage variable [...]CAPITAL_MTACTION
|
||
elseif (preg_match('/CAPITAL_MTACTION$/', $nomVar)) {
|
||
return number_format($CAPITAL_MTACTION, 0, ',', ' ').' €';
|
||
}
|
||
// --- Formattage variable [...]CAPITAL_NBACTION
|
||
elseif (preg_match('/CAPITAL_NBACTION$/', $nomVar)) {
|
||
return number_format($CAPITAL_NBACTION, 0, ',', ' ');
|
||
}
|
||
// --- Formattage variable CAESTIME
|
||
elseif (preg_match('/^CAESTIME$/', $nomVar)) {
|
||
return number_format($CAESTIME/1000, 0, ',', ' ').' k€';
|
||
}
|
||
// --- Formattage variable CABIOUES
|
||
elseif (preg_match('/^CABIOUES$/', $nomVar)) {
|
||
return number_format($CABIOUES/1000, 0, ',', ' ').' k€';
|
||
}
|
||
// --- Formattage variable [...]DIMMAT
|
||
elseif (preg_match('/DIMMAT$/', $nomVar)) {
|
||
return preg_replace('/00\//', '01/',
|
||
Metier_Util_Date::dateT('Ymd', 'd/m/Y', substr(str_replace('-', '', $DIMMAT), 0, 8)));
|
||
}
|
||
// --- Formattage variable [...]DCREN
|
||
elseif (preg_match('/DCREN$/', $nomVar)) {
|
||
return preg_replace('/00\//', '01/',
|
||
Metier_Util_Date::dateT('Ymd', 'd/m/Y', substr(str_replace('-', '', $DCREN), 0, 8)));
|
||
}
|
||
// --- Formattage variable [...]MARCHEVOL
|
||
elseif (preg_match('/MARCHEVOL$/', $nomVar)) {
|
||
if (abs($MARCHEVOL)>=5) {
|
||
return round($MARCHEVOL).' %';
|
||
} else {
|
||
number_format($MARCHEVOL, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]MARCHEPART
|
||
elseif (preg_match('/MARCHEPART$/', $nomVar)) {
|
||
if (abs($MARCHEPART)>=5) {
|
||
return round($MARCHEPART).' %';
|
||
} else {
|
||
return number_format($MARCHEPART, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]MARCHEPARTp
|
||
elseif (preg_match('/MARCHEPARTp$/', $nomVar)) {
|
||
if (abs($MARCHEPARTp)>=5) {
|
||
return round($MARCHEPARTp).' %';
|
||
} else {
|
||
return number_format($MARCHEPARTp, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]MARCHEPARTEVOL
|
||
elseif (preg_match('/MARCHEPARTEVOL$/', $nomVar)) {
|
||
if (abs($MARCHEPARTEVOL)>=5) {
|
||
return round($MARCHEPARTEVOL).' %';
|
||
} else {
|
||
return number_format($MARCHEPARTEVOL, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable [...]MARCHE
|
||
elseif (preg_match('/MARCHE$/', $nomVar)) {
|
||
if ($MARCHE<10000) {
|
||
return number_format($MARCHE, 0, ',', ' ').' €';
|
||
} elseif ($MARCHE<1000000) {
|
||
return number_format($MARCHE/1000, 0, ',', ' ').' K€';
|
||
} elseif ($MARCHE<1000000000) {
|
||
return number_format($MARCHE/1000000, 0, ',', ' ').' M€';
|
||
} else {
|
||
return number_format($MARCHE/1000000000, 0, ',', ' ')." milliards d'€";
|
||
}
|
||
}
|
||
// --- Formattage variable [...]MARCHEp
|
||
elseif (preg_match('/MARCHEp$/', $nomVar)) {
|
||
if ($MARCHEp<10000) {
|
||
return number_format($MARCHEp, 0, ',', ' ').' €';
|
||
} elseif ($MARCHEp<1000000) {
|
||
return number_format($MARCHEp/1000, 0, ',', ' ').' K€';
|
||
} elseif ($MARCHEp<1000000000) {
|
||
return number_format($MARCHEp/1000000, 0, ',', ' ').' M€';
|
||
} else {
|
||
return number_format($MARCHEp/1000000000, 0, ',', ' ')." milliards d'€";
|
||
}
|
||
}
|
||
// --- Formattage variable CA_Y[*]
|
||
elseif (preg_match('/^CA_Y\[(.*)\]/U', $nomVar, $matches2)) {
|
||
return number_format($CA_Y[$matches2[1]]/1000, 0, ',', ' ').' K€';
|
||
}
|
||
// --- Formattage variable RCAI_Y[*]
|
||
elseif (preg_match('/^RCAI_Y\[(.*)\]/U', $nomVar, $matches2)) {
|
||
return number_format($RCAI_Y[$matches2[1]]/1000, 0, ',', ' ').' K€';
|
||
}
|
||
// --- Formattage variable [...]_MT || [...]_TAUX
|
||
elseif (preg_match('/(_COEF|_TAUX)$/', $nomVar)) {
|
||
$strTmp=eval("return $valeur;");
|
||
return number_format($strTmp, 2, ',', '').' %';
|
||
}
|
||
// --- Formattage variable SIREN
|
||
elseif (preg_match('/^SIREN$/', $nomVar)) {
|
||
return sprintf("%09s", $SIREN);
|
||
}
|
||
// --- Formattage variable SIRET
|
||
elseif (preg_match('/^SIRET$/', $nomVar)) {
|
||
return sprintf("%09s", substr($SIRET, 0, 9)).chr(160).substr($SIRET, -5);
|
||
}
|
||
// --- Formattage variable SIRENMERE
|
||
elseif (preg_match('/^SIRENMERE$/', $nomVar)) {
|
||
return sprintf("%09s", $SIRENMERE);
|
||
}
|
||
// --- Formattage variable SIRETMERE
|
||
elseif (preg_match('/^SIRETMERE$/', $nomVar)) {
|
||
return sprintf("%09s", substr($SIRETMERE, 0, 9)).chr(160).substr($SIRETMERE, -5);
|
||
}
|
||
// --- Formattage variable SIRENFILLE
|
||
elseif (preg_match('/^SIRENFILLE$/', $nomVar)) {
|
||
return sprintf("%09s", $SIRENFILLE);
|
||
}
|
||
// --- Formattage variable SIRETFILLE
|
||
elseif (preg_match('/^SIRETFILLE$/', $nomVar)) {
|
||
return sprintf("%09s", substr($SIRETFILLE, 0, 9)).chr(160).substr($SIRETFILLE, -5);
|
||
}
|
||
// --- Formattage variable TVAINTRA
|
||
elseif (preg_match('/^TVAINTRA$/', $nomVar)) {
|
||
return substr($TVAINTRA, 0, 2).' '.substr($TVAINTRA, 2, 2).' '.substr($TVAINTRA, 4);
|
||
}
|
||
// --- Formattage variable DELAIPAY
|
||
elseif (preg_match('/^DELAIPAY$/', $nomVar)) {
|
||
return number_format($DELAIPAY, 0, ',', ' ').' jours';
|
||
}
|
||
// --- Formattage variable DELAIPAYp
|
||
elseif (preg_match('/^DELAIPAYp$/', $nomVar)) {
|
||
return number_format($DELAIPAYp, 0, ',', ' ').' jours';
|
||
}
|
||
// --- Formattage variable SCOREDEFTAUX
|
||
elseif (preg_match('/^SCOREDEFTAUX$/', $nomVar)) {
|
||
if ($SCOREDEFTAUX>=5) {
|
||
return round($SCOREDEFTAUX).' %';
|
||
} else {
|
||
return number_format($SCOREDEFTAUX, 3, ',', ' ').' %';
|
||
}
|
||
}
|
||
// --- Formattage variable BILANANNEE
|
||
elseif (preg_match('/BILANANNEE$/', $nomVar)) {
|
||
return $BILANANNEE;
|
||
}
|
||
|
||
return $variable;
|
||
}
|
||
|
||
// 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, $Y, $Yaff, $PROJEC, $PROJECTAUX, $PROJECCOEF;
|
||
global $tabFormulesRatios, $tabRegX;
|
||
|
||
$strRetour='$'.$matches[1];
|
||
$strUnite='';
|
||
|
||
// --- Moyenne
|
||
if (preg_match("/\{MOY\(R\[(\d+)\],(\d+)\)/Ui", $strRetour, $matches2)) {
|
||
$tmpRatioId = $matches2[1]*1;
|
||
$tmpAnnees = $matches2[2]*1;
|
||
$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']));
|
||
}
|
||
// --- Graphique
|
||
elseif (preg_match('/\{GRAPH\((.*)\)\}/Ui', $strRetour, $matches2)) {
|
||
return $matches[1];
|
||
}
|
||
// --- Ratios
|
||
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;
|
||
$unite = strtoupper($tabFormulesRatios[$tmpRatioId]['unite']);
|
||
if ($matches2[1]=='+') {
|
||
$forceSigne='+';
|
||
} elseif ($matches2[1]=='!') {
|
||
$forceSigne='!';
|
||
} else {
|
||
$forceSigne='';
|
||
}
|
||
if ($tmpRatio=='R') {
|
||
return formatRatio($R, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rp') {
|
||
return formatRatio($Rp, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rp2') {
|
||
return formatRatio($Rp2, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rp3') {
|
||
return formatRatio($Rp3, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rp4') {
|
||
return formatRatio($Rp4, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Ra') {
|
||
return formatRatio($Ra, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rap') {
|
||
return formatRatio($Rap, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rs') {
|
||
return formatRatio($Rs, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rsp') {
|
||
return formatRatio($Rsp, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rsp2') {
|
||
return formatRatio($Rsp2, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rsp3') {
|
||
return formatRatio($Rsp3, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Rsp4') {
|
||
return formatRatio($Rsp4, $tmpRatioId, $unite, $forceSigne);
|
||
} elseif ($tmpRatio=='Revol') {
|
||
return formatRatio($Revol, $tmpRatioId, '%', $forceSigne);
|
||
} elseif ($tmpRatio=='Rdiff') {
|
||
return formatRatio($Rdiff, $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, $unite, $forceSigne);
|
||
}
|
||
}
|
||
// --- Valeur
|
||
elseif (preg_match('/\$\{(.*)\((\d+)\)\}/Ui', $strRetour, $matches2)) {
|
||
$tmpVar = $matches2[1];
|
||
$tmpVarLen = $matches2[2]*1;
|
||
return formatValeur('$'.$tmpVar, $tmpVarLen);
|
||
} else {
|
||
return formatValeur($strRetour);
|
||
}
|
||
|
||
return $strRetour.' '.$strUnite;
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param unknown $valeur
|
||
* @param unknown $nbAnnees
|
||
*/
|
||
function PROJEC($valeur, $nbAnnees)
|
||
{
|
||
global $tabRegX, $Y, $Yaff, $PROJECCOEF, $PROJECTAUX;
|
||
$projec = new Metier_Scores_Projection();
|
||
$projec->tabRegX = $tabRegX;
|
||
$result = $projec->calc($valeur, $nbAnnees);
|
||
if ($result !== false) {
|
||
$Y = $projec->getY(); //@todo : ?????
|
||
$Yaff = $projec->getYaff();
|
||
$PROJECTAUX = $projec->getProjecTaux();
|
||
$PROJECCOEF = $projec->getProjecCoeff();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 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', $db = null)
|
||
{
|
||
$timer = array('debutIndiscore'=>microtime(true));
|
||
if (strlen($siren)>9 || (substr(''.$siren, 0, 9)*1)<100) {
|
||
Metier_Util_Log::write('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
return false;
|
||
}
|
||
|
||
// @todo : delete global
|
||
global $tva;
|
||
global $tabInfla;
|
||
global $tabFormules;
|
||
global $tabFormulesRatios;
|
||
global $tabRatiosInfos;
|
||
|
||
global $tabVariables;
|
||
|
||
// Valorisation
|
||
global $tabTxRendObli;
|
||
|
||
global $R, $Rp, $Rp2, $Rp3, $Rp4;
|
||
global $Rs, $Rsp, $Rsp2, $Rsp3, $Rsp4;
|
||
global $Revol, $Revolp, $Revolp2, $Revolp3;
|
||
global $regR, $regRs;
|
||
global $Ra, $Rap, $Rdiff;
|
||
|
||
//Définition du nom des variables
|
||
$GlobalVars = include realpath(dirname(__FILE__)).'/GlobalVars.php';
|
||
foreach ($GlobalVars as $var) {
|
||
global $$var;
|
||
}
|
||
|
||
$NIVEAU = $cycleClient; // 1, 2, 3 ou 5 Niveau de version des commentaires
|
||
|
||
if ($db === null) {
|
||
$iDb = new Metier_Util_Db();
|
||
} else {
|
||
$iDb = $db;
|
||
}
|
||
|
||
$iInsee = new Metier_Insee_MInsee($iDb);
|
||
|
||
/**
|
||
* Récupération des informations identitaire
|
||
*/
|
||
$tabIdentite = $iInsee->getIdentiteEntreprise($siren, $nic, 0, false, false);
|
||
$timer['identite']=microtime(true);
|
||
|
||
if (empty($tabIdentite)) {
|
||
Metier_Util_Log::write('W', "Siren $siren non présent en base", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
return false;
|
||
}
|
||
|
||
$tva = getTxTva(date('Ym'));
|
||
|
||
if (!in_array($type, array('scores', 'valo'))) {
|
||
$type = 'scores';
|
||
}
|
||
|
||
$genereComment=false;
|
||
if (in_array($cycleClient, array(2, 3, 4, 5))) {
|
||
$genereComment = true;
|
||
}
|
||
|
||
//Initialisation tabFormules depuis le cache
|
||
$tabVariables = include __DIR__ . '/Data/Variables.php';
|
||
$tabFormules = include __DIR__ . '/Data/Formules.php';
|
||
$tabFormulesRatios = array();
|
||
foreach ($tabFormules as $tmpFormule) {
|
||
$tabFormulesRatios[$tmpFormule['id']] = $tmpFormule;
|
||
$tabRatiosInfos[$tmpFormule['id']]=array('unite' => $tmpFormule['unite']);
|
||
}
|
||
|
||
$tabRatiosSecteurs = $tabRatios2 = $tabRatiosEvol = array();
|
||
|
||
$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
|
||
|
||
/** Zones utilisées dans les calculs **/
|
||
$CALCUL1=0;
|
||
$CALCUL2=0;
|
||
$CALCUL3=0;
|
||
$CALCUL4=0;
|
||
$CALCUL5=0;
|
||
$CALCUL6=0;
|
||
$CALCUL7=0;
|
||
$CALCUL8=0;
|
||
$CALCUL9=0;
|
||
|
||
$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
|
||
|
||
$tendance='';
|
||
$naf=$tabIdentite['NafEnt'];
|
||
$APEETAB = $tabIdentite['NafEtab'];
|
||
$TRIBUNAL_ACTUEL = strtr($tabIdentite['TribunalLib'], array('TC '=>'Tribunal de Commerce de '));
|
||
$TRIBUNAL_CREATION = $TRIBUNAL_PROCOL='';
|
||
|
||
$nafLib=$tabIdentite['NafEntLib'];
|
||
$efftr=$tabIdentite['Effectif']*1;
|
||
$fj=$tabIdentite['FJ'];
|
||
|
||
// 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'];
|
||
$SOCIETE_COTE_COURS_MIN=0;//@todo:$tabRet['Bourse']['derCoursDate'];
|
||
$SOCIETE_COTE_COURS_MAX=0;//@todo:$tabRet['Bourse']['derCoursDate'];
|
||
}
|
||
|
||
// Elements provenant du Notice 80 hors identité
|
||
$tabIden80=$iInsee->getInfosNotice($siren, $NIC);
|
||
$timer['getInfosNotice'] = microtime(true);
|
||
$RECME = $tabIden80['insRECME'];
|
||
$ZEMET = $tabIden80['insZEMET'];
|
||
$RPET = $tabIden80['insRPET'];
|
||
$RPEN = $tabIden80['insRPEN'];
|
||
$DateNotice80 = $tabIden80['dateNotice'];
|
||
$depcomen = $tabIden80['insDEPCOMEN']*1;
|
||
$TU = $tabIden80['insTU'];
|
||
|
||
/**
|
||
* Différences INSEE/RNCS
|
||
*/
|
||
$iRncs = new Metier_Partenaires_MRncs($iDb);
|
||
$tabIdentiteRncs=$iRncs->getInfosEntrep($siren);
|
||
$ACTIFRNCS = $tabIdentiteRncs['actif'];
|
||
$ACTIFINSEE = $tabIdentite['Actif'];
|
||
|
||
$APEENT = $APEINSEE=$naf;
|
||
$APERNCS = $tabIdentiteRncs['nafEnt'];
|
||
if (strlen($APEENT)==5) {
|
||
$APE5 = $APEENT;
|
||
} elseif (strlen($APEENT)==4) {
|
||
$APE4 = $APEENT;
|
||
} else {
|
||
$APE5 = $APE4='';
|
||
}
|
||
|
||
$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;
|
||
}
|
||
} else {
|
||
$CAPITAL_TYPE = '';
|
||
}
|
||
|
||
$TCAEXP=$tabIdentite['TrancheCAexp'];
|
||
|
||
// 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;
|
||
}
|
||
|
||
$NBETEXPL=$tabIdentite['NbEtab'];
|
||
$REGIMP=$tabIdentite['REGIMP'];
|
||
|
||
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;
|
||
}
|
||
$DCREN=$dateCrea;
|
||
$DCREN_AA=substr($dateCrea, 0, 4);
|
||
$AGE=Metier_Util_Date::nbMoisEntre($dateCrea, date('Ymd'));
|
||
|
||
// --- Liste des bilans
|
||
$tabBilan = $tabBil = $tabRegX = array();
|
||
$mBil = new Metier_Partenaires_MBilans($siren, $iDb);
|
||
$tabBilans = $mBil->listeBilans($accesDist);
|
||
$NBBILAN = count($tabBilans);
|
||
if ($NBBILAN > 0) {
|
||
$BILAN = $BILANp = $BILANp2 = $BILANp3 = $BILANp4 = 0;
|
||
|
||
// --- Postes des bilans
|
||
$i = 0;
|
||
foreach ($tabBilans as $millesime => $item) {
|
||
if ($i > 4) {
|
||
break;
|
||
}
|
||
if ($item['typeBilan'] == 'N') {
|
||
$tabBilan[] = $mBil->getBilan(substr($millesime, -10), substr($millesime, 0, 1), '');
|
||
$i++;
|
||
} elseif ($item['typeBilan'] == 'S') {
|
||
$tabN = $mBil->getBilan(substr($millesime, -10), substr($millesime, 0, 1), '');
|
||
$tabS = $mBil->bilanSimplifie2Normal($tabN);
|
||
$tabBilan[] = array_merge($tabN, $tabS);
|
||
$i++;
|
||
}
|
||
|
||
$tabRegX[] = $item['millesime'];
|
||
}
|
||
|
||
// --- Bilan le plus récent disponible
|
||
if (isset($tabBilan[0])) {
|
||
$EFFBILAN = $tabBilan[0]['YP'];
|
||
$nm = $nbMoisBilCumul = $tabBilan[0]['DUREE_MOIS'];
|
||
$BILANDATE = $tabBilan[0]['DATE_CLOTURE'];
|
||
$BILANDATEp = $tabBilan[0]['DATE_CLOTURE_PRE'];
|
||
if ($BILANDATEp == 0 && isset($tabBilan[1])) {
|
||
$BILANDATEp = $tabBilan[1]['DATE_CLOTURE'];
|
||
$BILANANNEEp = substr($BILANDATEp, 0, 4)*1;
|
||
}
|
||
$BILANANNEE = substr($BILANDATE, 0, 4)*1;
|
||
$nmp = $tabBilan[0]['DUREE_MOIS_PRE'];
|
||
if ($BILANANNEEp > 0) {
|
||
$BILANp = 1;
|
||
$nbMoisBilDate = Metier_Util_Date::nbMoisEntre($BILANDATEp, $BILANDATE);
|
||
$nbMoisBilCumul += $nmp;
|
||
}
|
||
}
|
||
|
||
// --- Elements des 5 bilans les plus récent
|
||
if (isset($tabBilan[2])) {
|
||
$BILANDATEp2 = $tabBilan[2]['DATE_CLOTURE'];
|
||
$BILANANNEEp2 = substr($BILANDATEp2, 0, 4)*1;
|
||
$nmp2=$tabBilan[2]['DUREE_MOIS'];
|
||
if ($BILANANNEEp2 > 0) {
|
||
$BILANp2 = 1;
|
||
$nbMoisBilDate = Metier_Util_Date::nbMoisEntre($BILANDATEp2, $BILANDATE);
|
||
$nbMoisBilCumul += $nmp2;
|
||
}
|
||
}
|
||
|
||
if (isset($tabBilan[3])) {
|
||
$BILANDATEp3 = $tabBilan[3]['DATE_CLOTURE'];
|
||
$BILANANNEEp3 = substr($BILANDATEp3, 0, 4)*1;
|
||
$nmp3 = $tabBilan[3]['DUREE_MOIS'];
|
||
if ($BILANANNEEp3 > 0) {
|
||
$BILANp3 = 1;
|
||
$nbMoisBilDate = Metier_Util_Date::nbMoisEntre($BILANDATEp3, $BILANDATE);
|
||
$nbMoisBilCumul += $nmp3;
|
||
}
|
||
}
|
||
|
||
if (isset($tabBilan[4])) {
|
||
$BILANDATEp4 = $tabBilan[4]['DATE_CLOTURE'];
|
||
$BILANANNEEp4 = substr($BILANDATEp4, 0, 4)*1;
|
||
$nmp4=$tabBilan[4]['DUREE_MOIS'];
|
||
if ($BILANANNEEp4 > 0) {
|
||
$BILANp4 = 1;
|
||
$nbMoisBilDate = Metier_Util_Date::nbMoisEntre($BILANDATEp4, $BILANDATE);
|
||
//$nbMoisBilCumul+=$nmp4;
|
||
}
|
||
}
|
||
|
||
// Liste des années de bilans ultérieurs
|
||
$BILANANNEE1 = $BILANANNEE + 1;
|
||
$BILANANNEE2 = $BILANANNEE + 2;
|
||
$BILANANNEE3 = $BILANANNEE + 3;
|
||
$BILANANNEE4 = $BILANANNEE + 4;
|
||
$BILANANNEE5 = $BILANANNEE + 5;
|
||
|
||
// --- Calcul des ratios
|
||
$mRatios = new Metier_Scores_MRatios();
|
||
$mRatios->setTrancheEffectif($efftr);
|
||
$tabRatios = $mRatios->calcul($tabBilan);
|
||
}
|
||
$timer['ratios']=microtime(true);
|
||
|
||
// Tableau des années de bilans
|
||
$tabAnnees = array();
|
||
// Tableau d'infos sur les bilans
|
||
$i2=0;
|
||
if (count($tabRatios)>0) {
|
||
foreach ($tabRatios as $i => $Ritem) {
|
||
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 ($Ritem 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 = 0;
|
||
if (abs($tabRatios[$i+1][$Ridx]) > 0) {
|
||
$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 = 0;
|
||
if (abs($tabRatios[$i+2][$Ridx]) > 0) {
|
||
$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;
|
||
}
|
||
$tabRatiosNew[$i2] = $tabRatios[$i];
|
||
if ($tabBilan[$i]['CONSOLIDE']!='C') {
|
||
$i2++;
|
||
}
|
||
}
|
||
|
||
$R = $tabRatiosNew[0];
|
||
$Rp = $tabRatiosNew[1]; // Ratios précédents N-1
|
||
$Rp2 = $tabRatiosNew[2]; // Ratios précédents N-2
|
||
$Rp3 = $tabRatiosNew[3]; // Ratios précédents N-3
|
||
$Rp4 = $tabRatiosNew[4]; // Ratios précédents N-4
|
||
|
||
$Rdiff = $tabRatiosDiff[0];
|
||
|
||
$Revol = $tabRatiosEvol[0];
|
||
$Revolp = $tabRatiosEvol[1];
|
||
$Revolp2 = $tabRatiosEvol[2];
|
||
$Revolp3 = $tabRatiosEvol[3];
|
||
}
|
||
$timer['anbilans']=microtime(true);
|
||
|
||
// Régression : Ratios
|
||
$iMax = count($tabRegX);
|
||
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 {
|
||
if (array_key_exists($i, $tabRegX)) {
|
||
//unset($tabRegX[$i]);
|
||
}
|
||
}
|
||
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']]);
|
||
}
|
||
|
||
if (is_array($regRs) && array_key_exists($Rtmp['id'], $regRs)) {
|
||
$regRs[$Rtmp['id']] = array_reverse($regRs[$Rtmp['id']]);
|
||
}
|
||
}
|
||
// On renverse les tableaux 2008, 2007, 2006... en 2006, 2007, 2008
|
||
$tabRegX = array_reverse($tabRegX);
|
||
|
||
global $Y, $Yaff; // Tableau des années en paramètres + $nbAnnees Projetées
|
||
global $PROJECTAUX; // Taux de projection de n à n+$nbAnnees
|
||
global $PROJECCOEF;
|
||
|
||
$EFFECTIF=$R[24];
|
||
if ($EFFECTIF*1==0 && $efftr>0) {
|
||
$EFFECTIF=$efftr;
|
||
}
|
||
|
||
$CABILAN=$R[6];
|
||
|
||
// Ratios Secteur en fonction des dernières années de bilans
|
||
$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('jo.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];
|
||
}
|
||
|
||
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);
|
||
}
|
||
|
||
$anneePre=$tabTmp2['annee'];
|
||
|
||
|
||
// Calcul des infos MARCHES
|
||
if (date('m')*1>6) { // On est courant 2ème semestre
|
||
$anneeBaseMarche=-1;
|
||
} else {
|
||
$anneeBaseMarche=-2;
|
||
}
|
||
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$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
|
||
|
||
$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);
|
||
}
|
||
|
||
$timer['regression']=microtime(true);
|
||
|
||
// --- 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']) {
|
||
// Suppression d'un double
|
||
case '400':
|
||
$ACTIFINSEE = false;
|
||
$ETATINSEE = 'SUPD';
|
||
break;
|
||
// Cessation juridique de l'entreprise
|
||
case '410':
|
||
if (!$ACTIFINSEE) {
|
||
$ETATINSEE = 'JURF';
|
||
}
|
||
break;
|
||
// Absence d'activité de l'entreprise (cessation économique de l.entreprise)
|
||
case '420':
|
||
// Absence d'activité d'une entreprise suite à une mise à jour au répertoire
|
||
case '425':
|
||
if (!$ACTIFINSEE) {
|
||
$ETATINSEE='ECOF';
|
||
}
|
||
break;
|
||
// Présumé Fermé
|
||
case 'MPF':
|
||
$ETATINSEE = 'PFER';
|
||
break;
|
||
// NPAI
|
||
case 'MNP':
|
||
$ETATINSEE = 'NPAI';
|
||
break;
|
||
}
|
||
}
|
||
|
||
/** 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'];
|
||
}
|
||
|
||
/** 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'];
|
||
}
|
||
|
||
/** $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;
|
||
|
||
$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
|
||
|
||
$ANNONCEHOM=0; // Nombre d'annonces d'homologation
|
||
$ANNONCEHOMDATE=''; // Date de la dernière parution d'annonces d'homologation
|
||
|
||
$ANNONCEPLAN=$ANNONCEPLANMODIFDATE=$ANNONCEPLANDATE=$PLAN=$PLANMODIF=$ANNONCEPC='';
|
||
$ANNONCEPC_OBS=false;
|
||
|
||
$ANNONCEOBJET='';
|
||
|
||
/** @todo : Prendre la date de changement d'état du dirigeant **/
|
||
$ANNONCEINTERDITDATE='';
|
||
|
||
$timer['even']=microtime(true);
|
||
|
||
/** Tableau des taux d'inflation et inflations moyennes **/
|
||
$tabInfla = include __DIR__ . '/Data/Infla.php';
|
||
if (is_array($tabInfla) && count($tabInfla) > 0) {
|
||
krsort($tabInfla);
|
||
$i = 0;
|
||
foreach ($tabInfla as $itemAnnee => $itemInfla) {
|
||
if ($i > 10) {
|
||
break;
|
||
}
|
||
if ($itemAnnee > $BILANANNEE) {
|
||
continue;
|
||
}
|
||
$INFLA[$itemAnnee] = $itemInfla;
|
||
if ($i==0) {
|
||
$INFLATION = $itemInfla;
|
||
} elseif ($i==1) {
|
||
$INFLA1 = $itemInfla;
|
||
$INFLAMOY1 = ($INFLA1 + $INFLATION) / 2;
|
||
} elseif ($i==2) {
|
||
$INFLA2 = $itemInfla;
|
||
$INFLAMOY2 = ($INFLA2 + $INFLA1 + $INFLATION) / 3;
|
||
} elseif ($i==3) {
|
||
$INFLAMOY3 = ($itemInfla + $INFLA2 + $INFLA1 + $INFLATION) / 4;
|
||
}
|
||
$i++;
|
||
}
|
||
}
|
||
|
||
/** Divers éléments calculés **/
|
||
$iInsee->AnnoncesLegalesVisu = true;
|
||
$companyAnnonces = $iInsee->getAnnoncesLegales($siren);
|
||
$iInsee->AnnoncesLegalesVisu = false;
|
||
|
||
// Annonces de dépôt des comptes
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, 'C');
|
||
$nbDepotCpt = count($tabDepotCpt);
|
||
$nbMoisMax = 0;
|
||
$ANNONCEBODCMANQDATE = false;
|
||
$ANNONCEBODCREGUL = true;
|
||
$BILANDERANNEE = 0;
|
||
$tabAnnBodc = array();
|
||
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, Metier_Util_Date::dateT('Y-m-d', 'm', $depot['dateEffet']), Metier_Util_Date::dateT('Y-m-d', 'd', $depot['dateEffet']), Metier_Util_Date::dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
|
||
$ANNONCEBODDATE = $depot['DateParution']; //dateEffet
|
||
if ($nbDepotCpt==1 && // 1 seul dépôt des comptes
|
||
abs(Metier_Util_Date::nbMoisEntre(date('Y-m-d'), $dateCrea))<60) {
|
||
// Entreprise de moins de 5 ans (60 mois)
|
||
$nbMoisMax=abs(Metier_Util_Date::nbMoisEntre($dateCrea, $depot['dateEffet']));
|
||
}
|
||
} else {
|
||
if (abs(Metier_Util_Date::nbMoisEntre($lastDepot, $depot['dateEffet']))>$nbMoisMax) {
|
||
$nbMoisMax=abs(Metier_Util_Date::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
|
||
**/
|
||
$ANNONCEBODCMANQDATE=date('Y-m-d', mktime(0, 0, 0, Metier_Util_Date::dateT('Y-m-d', 'm', $depot['dateEffet']), Metier_Util_Date::dateT('Y-m-d', 'd', $depot['dateEffet']), Metier_Util_Date::dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
|
||
$ANNONCEBODCMANQ_AA=substr($ANNONCEBODCMANQDATE, 0, 4);
|
||
}
|
||
}
|
||
}
|
||
$lastDepot=$depot['dateEffet'];
|
||
$ANNONCEBOD++;
|
||
$ANNONCEBODC++;
|
||
}
|
||
}
|
||
|
||
// Publications régulieres et 12 mois identiques
|
||
if (($nbMoisBilDate+1) == $nbMoisBilCumul || $nbMoisBilDate == $nbMoisBilCumul || ($nbMoisBilDate-1) == $nbMoisBilCumul) {
|
||
$ANNONCEBODCREGUL = 1;
|
||
// Annonces BODACC de changement de date d'exercice
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2303));
|
||
if (count($tabDepotCpt)>0) {
|
||
$ANNONCEBODCREGUL = 2;
|
||
}
|
||
}
|
||
// Pas de publication régulière des comptes
|
||
else {
|
||
$ANNONCEBODCREGUL = 0;
|
||
}
|
||
|
||
// Pas de Dernière année de bilan et on est en juillet passé
|
||
if ($BILANDERANNEE==0 && date('m')*1>6) {
|
||
$BILANDERANNEE=date('Y', mktime(0, 0, 0, date('m'), date('d'), date('Y')-1));
|
||
}
|
||
// Pas de Dernière année de bilan et on est au premier semestre
|
||
elseif ($BILANDERANNEE==0 && date('m')*1<=6) {
|
||
$BILANDERANNEE=date('Y', mktime(0, 0, 0, date('m'), date('d'), date('Y')-2));
|
||
}
|
||
|
||
// Annonces BODACC A
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, 'BODA');
|
||
$nbDepotA = count($tabDepotCpt);
|
||
if ($nbDepotA > 0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
if ($iDep == 0) {
|
||
$ANNONCEBODADATE=$depot['DateParution'];
|
||
if (Metier_Util_Date::dateT('Y-m-d', 'Ymd', $ANNONCEBODADATE) > Metier_Util_Date::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
|
||
}
|
||
}
|
||
// La première annonce de Bodacc A étant cencée être celle de création
|
||
elseif (($iDep+1)==$nbDepotA) {
|
||
$TRIBUNAL_CREATION = strtr($depot['Tribunal'], array('TC '=>'Tribunal de Commerce de '));
|
||
}
|
||
$ANNONCEBOD++;
|
||
$ANNONCEBODA++;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC B
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, 'BODB');
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt) > 0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
if ($iDep == 0) {
|
||
$ANNONCEBODBDATE = $depot['DateParution'];
|
||
if (Metier_Util_Date::dateT('Y-m-d', 'Ymd', $ANNONCEBODBDATE) > Metier_Util_Date::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
|
||
}
|
||
}
|
||
$ANNONCEBOD++;
|
||
$ANNONCEBODB++;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Changement d'adresse
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2300, 2301, 2901, 2902, 2903, 2904));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt) > 0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
if ($iDep == 0) {
|
||
$ANNONCEADRDATE = $depot['DateParution'];
|
||
}
|
||
$ANNONCEADR++;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Changement de dirigeant
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2315));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt) > 0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
if ($iDep==0) {
|
||
$ANNONCEDIRDATE = $depot['DateParution'];
|
||
}
|
||
$ANNONCEDIR++;
|
||
if (preg_match('/Commissaire/iu', $depot['texteAnnonce'])) {
|
||
$ANNONCECAC++;
|
||
if ($ANNONCECAC == 1) {
|
||
$ANNONCECACDATE = $depot['DateParution'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Changement de FJur
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2307));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt) > 0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
if ($iDep==0) {
|
||
$ANNONCEFJURDATE = $depot['DateParution'];
|
||
}
|
||
$FJUR_PRE='';
|
||
$ANNONCEFJUR++;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Fusion/Absorptions
|
||
/**
|
||
* 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
|
||
*/
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2700, 2701, 2702, 2703, 2710, 2720, 2721, 2725, 2726, 2730, 2740));
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Changement de capital
|
||
$annCapPre = 0;
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2100, 2101, 2102));
|
||
$tabDepotCpt = array_reverse($tabDepotCpt);
|
||
$CAPITAL_PRE = 0;
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
// Date de la plus récente Annonce changement de capital
|
||
$ANNONCECAPDATE = $depot['DateParution'];
|
||
if (count($tabDepotCpt)>1 && $iDep == count($tabDepotCpt)-2) {
|
||
if ($depot['capitalDev']=='FRF') {
|
||
$CAPITAL_PRE = round($depot['capital']/6.55957);
|
||
} else {
|
||
$CAPITAL_PRE = $depot['capital'];
|
||
}
|
||
}
|
||
// Boucle sur les evenements
|
||
foreach ($depot['evenements'] as $even) {
|
||
// Evenement 2101 : Modificaition de capital
|
||
if ($even['CodeEven'] == 2101) {
|
||
if ($iDep > 0 && $CAPITAL_PRE > 0) {
|
||
if ($depot['capitalDev']=='FRF') {
|
||
$annonceCapital = round($depot['capital']/6.55957);
|
||
} else {
|
||
$annonceCapital = $depot['capital'];
|
||
}
|
||
// Augmentation
|
||
if ($annonceCapital > $CAPITAL_PRE) {
|
||
$even['CodeEven'] = 2102;
|
||
}
|
||
// Diminution
|
||
elseif ($annonceCapital < $CAPITAL_PRE) {
|
||
$even['CodeEven'] = 2100;
|
||
}
|
||
}
|
||
}
|
||
switch ($even['CodeEven']*1) {
|
||
// Diminution de capital
|
||
case 2100:
|
||
$ANNONCECAPDIM++;
|
||
if ($ANNONCECAPDIM == 1) {
|
||
// Année de la plus ancienne Annonce diminution de capital
|
||
$ANNONCECAPDIM_AAD = substr($depot['DateParution'], 0, 4);
|
||
} else {
|
||
// 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);
|
||
}
|
||
// Augmentation suivie de diminution de capital
|
||
if ($annCapPre == 2102) {
|
||
$ANNONCECAPAUGDIM++;
|
||
}
|
||
$annCapPre = 2100;
|
||
break;
|
||
// Augmentation de capital
|
||
case 2102:
|
||
$ANNONCECAPAUG++;
|
||
if ($ANNONCECAPAUG == 1) {
|
||
// Année de la plus ancienne Annonce Augmentation de capital
|
||
$ANNONCECAPAUG_AAD = substr($depot['DateParution'], 0, 4);
|
||
} else {
|
||
// 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);
|
||
}
|
||
// Diminution suivie de Augmentation de capital
|
||
if ($annCapPre == 2100) {
|
||
$ANNONCECAPDIMAUG++;
|
||
}
|
||
$annCapPre = 2102;
|
||
break;
|
||
}
|
||
}
|
||
$ANNONCECAP++;
|
||
$ANNONCECAPSIG++;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Cessation d'activité avec dissolution
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2202, 2203, 2204, 2210, 2212));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep=>$depot) {
|
||
if ($BILANDATE<str_replace('-', '', $depot['DateParution'])*1) {
|
||
$ANNONCEDISSODATE = $depot['DateParution'];
|
||
$ANNONCEDISSO = true;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Poursuite de l'activité malgré la perte de plus de la moitié du capital social
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2314, 2319));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
$ANNONCEPOURSDATE = $ANNONCEDISSONONDATE = $depot['DateParution'];
|
||
$ANNONCEPOURS = $ANNONCEDISSONON = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Reconsitution de l'actif net ou de la moitié
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2320, 2321));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
$ANNONCERECONDATE = $depot['DateParution'];
|
||
$ANNONCERECON = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Location gérance reçue
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2800, 2880, 4355));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
$ANNONCELOCDATE = $depot['DateParution'];
|
||
$ANNONCELOC = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Annonces BODACC Mise en sommeil de la société
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2206));
|
||
if (is_array($tabDepotCpt) && count($tabDepotCpt)>0) {
|
||
foreach ($tabDepotCpt as $iDep => $depot) {
|
||
$ANNONCESOMMDATE = $depot['DateParution'];
|
||
$ANNONCESOMM = true;
|
||
break;
|
||
}
|
||
}
|
||
$timer['bodacc']=microtime(true);
|
||
|
||
$ANNONCEOBJET = $tabIdentite['Activite'];
|
||
|
||
if ($tabIdentite['SituationJuridique']=='P') {
|
||
$ANNONCEPC='Procédure Collective';
|
||
$tabProCol = $iInsee->annoncesFilter($companyAnnonces, 'P');
|
||
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
|
||
// Annonce de liquidation judiciaire
|
||
$ANNONCELJ=true;
|
||
// 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;
|
||
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
// Le SIREN est éliminé du scoring
|
||
$ELIMINE=true;
|
||
} elseif ($tabIdentite['SituationJuridique']=='PL') {
|
||
$ANNONCEPCHISTO = true;
|
||
$ELIMINE = false;
|
||
$ANNONCEPC = 'Plan de continuation/redressement';
|
||
$tabProCol = $iInsee->annoncesFilter($companyAnnonces, 'P');
|
||
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
|
||
// Annonce de liquidation judiciaire
|
||
$ANNONCELJ = true;
|
||
// 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;
|
||
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='';
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// --- Ni P, Ni PL
|
||
else {
|
||
$tabProCol = $iInsee->annoncesFilter($companyAnnonces, 'PH');
|
||
if (count($tabProCol) > 0) {
|
||
$ANNONCEPCHISTO = true;
|
||
} else {
|
||
$ANNONCEPCHISTO = false;
|
||
}
|
||
if ($tabIdentite['Actif'] == 0) {
|
||
$ELIMINE = true;
|
||
} else {
|
||
$ELIMINE = false;
|
||
}
|
||
}
|
||
|
||
/** Annonces d'Homologation **/
|
||
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(1050, 1550));
|
||
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->annoncesFilter($companyAnnonces, 'V');
|
||
$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);
|
||
|
||
/**
|
||
* Solvabilité
|
||
*/
|
||
$isolv = new Metier_Scores_MSolvabilite(
|
||
$siren,
|
||
$naf,
|
||
$tabIdentite['EffEnTr'],
|
||
$tabIdentite['Effectif']*1,
|
||
$tabIdentite['CP'],
|
||
$fj,
|
||
$tabIdentite['Capital'],
|
||
$tabIdentite['CapitalDev'],
|
||
$tabIdentite['DateCreaEn'],
|
||
$tabIdentite['DateCreaEt'],
|
||
'',
|
||
$RECME,
|
||
$iDb
|
||
);
|
||
$noteStructure=$isolv->getSolvabilite();
|
||
$timer['solv']=microtime(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;
|
||
}
|
||
} 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;
|
||
}
|
||
}
|
||
}
|
||
$timer['importexport']=microtime(true);
|
||
|
||
/** Recherche d'une annonce de RJ sur Actionnaire / Participation **/
|
||
$RJMERE=$RJFILLE=false;
|
||
$SITUACT=$NICMERE=$SIRENMERE=$SIRETMERE=$NOMMERE='';
|
||
|
||
$lienM = new Metier_Liens_Base();
|
||
$lienM->setId($siren, 'siren');
|
||
|
||
//Actionnaire
|
||
$tabA = $lienM->getActionnaires(null, true);
|
||
if (count($tabA)>0) {
|
||
foreach ($tabA as $i=>$lien) {
|
||
$lienInsee = new Metier_Insee_MInsee($iDb);
|
||
if (intval($lien->siren)>100 && ($lien->MajMin=='+' || $lien->PDetention>50)) {
|
||
$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';
|
||
}
|
||
}
|
||
$mBilA = new Metier_Partenaires_MBilans($lien->siren, $iDb);
|
||
$tabBilansA = $mBilA->listeBilans(false, 2);
|
||
$nbBilansA = count($tabBilansA);
|
||
if ($nbBilansA > 0) {
|
||
$mRatiosA = new Metier_Scores_MRatios();
|
||
$mRatiosA->setTrancheEffectif($tabIdentiteA['EffEnTr']);
|
||
$tabRatiosA = $mRatiosA->calcul($tabBilansA);
|
||
$SITUACT=$tabRatiosA[0][19];
|
||
$Ra=$tabRatiosA[0];
|
||
$Rap=$tabRatiosA[1];
|
||
}
|
||
if ($lien->siren>100 && count($lienInsee->getAnnoncesLegales($lien->siren, 0, 'P', false))>0) {
|
||
$RJMERE=true;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
$timer['actionnaires']=microtime(true);
|
||
|
||
//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 Metier_Insee_MInsee($iDb);
|
||
$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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$timer['participations']=microtime(true);
|
||
|
||
$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 = $i = 0;
|
||
foreach ($tabBilan as $item) {
|
||
if ($item['CONSOLIDE']=='S') {
|
||
$tabTmp = $mBil->bilanSimplifie2Normal($item);
|
||
$tabBilan[$i] = array_merge($tabTmp, $item);
|
||
$numBil++;
|
||
} elseif ($item['CONSOLIDE']=='N') {
|
||
$numBil++;
|
||
} else {
|
||
continue;
|
||
}
|
||
if ($numBil>2) {
|
||
break;
|
||
}
|
||
|
||
$icotation = new Metier_Scores_ICotation($item, true, $iDb);
|
||
$secteur=$icotation->getSecteurActivite($isolv->getNaf4($naf));
|
||
$libSecteur=$icotation->tabLibActivite[$secteur];
|
||
$chiffeAffaire=$icotation->calculChiffreAffaires($isolv->getNaf4($naf));
|
||
$tabBil[$i] = array(
|
||
'Millesime'=>$item['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;
|
||
}
|
||
|
||
// Score AFDCC2 mauvais ?
|
||
if ($caEntrep>=150000 && $caEntrep<=75000000) {
|
||
$nbScoresComp++;
|
||
$note20afdcc2=$scoreAfdcc2note+9.5;
|
||
if ($note20afdcc2<0) {
|
||
$note20afdcc2=0;
|
||
} elseif ($note20afdcc2>20) {
|
||
$note20afdcc2=20;
|
||
}
|
||
}
|
||
|
||
if (INDISCORE_DEBUG) {
|
||
$strNote="";
|
||
$tabTmp=array(
|
||
1=>'Capitalisation',
|
||
2=>'Levier Endettement',
|
||
3=>'CapaciteRemboursement',
|
||
4=>'CouvChargesFi',
|
||
5=>'Tresorerie',
|
||
6=>'MargeExploitation',
|
||
);
|
||
for ($iTmp=1; $iTmp<7; $iTmp++) {
|
||
$strNote.=$tabTmp[$iTmp]." : ".$numerateur[$iTmp].'/'.$denominateur[$iTmp].'='.$note[$iTmp].' (Borné à '.$noteB[$iTmp].')'.PHP_EOL;
|
||
}
|
||
$strNote.="Note Financière=$noteFin Conan Holder=$scoreConanH Afdcc1=$scoreAfdcc1 Afdcc2=$scoreAfdcc2note (Classe $scoreAfdcc2) Z=$scoreZ CCF=$valeurCCF ($pDef36) Altman=$scoreAltman AltmanCote=$scoreAltmanB".PHP_EOL.print_r($tabInfosNotation, true);
|
||
}
|
||
} else {
|
||
$noteSolvabilitePre=$noteSD;
|
||
$noteFinPre=$noteMoy;
|
||
if ($noteSolvabilite>$noteSolvabilitePre) {
|
||
$tendance='Haussière';
|
||
} elseif ($noteSolvabilite==$noteSolvabilitePre) {
|
||
$tendance='Stable';
|
||
} else {
|
||
$tendance='Baissière';
|
||
}
|
||
}
|
||
|
||
$i++;
|
||
}
|
||
|
||
// 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
|
||
}
|
||
$timer['scorefi']=microtime(true);
|
||
|
||
// Au cas ou !
|
||
if ($noteSolvabilite>90) {
|
||
$noteSolvabilite=90;
|
||
}
|
||
|
||
$SCORECONF=100;
|
||
|
||
// Présence d'un bilan mais trop vieux
|
||
if ($NBBILAN>0 && Metier_Util_Date::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 && Metier_Util_Date::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;
|
||
}
|
||
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;
|
||
$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);
|
||
}
|
||
|
||
/** 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);
|
||
//Metier_Util_Log::write('I', 'SCOREDIR = '. print_r($dirs,1), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
$DIR_NB=$NBDIRLIENS=$NBDIRSCI=$NBDIRSCIADR=0;
|
||
if (count($dirs) > 0) {
|
||
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(Metier_Util_Date::nbMoisEntre(Metier_Util_Date::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(Metier_Util_Date::nbMoisEntre(Metier_Util_Date::dateT('d/m/Y', 'Ymd', $dir['NaissDate']))/12);
|
||
$DIR2_FONC=$dir['Titre'];
|
||
$DIR2_TYPE='PP';
|
||
}
|
||
|
||
$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++;
|
||
if ($tabDiri['FJ']==6540) {
|
||
/* [Adresse] => 0001 RUE DU CHAMP FLEURI
|
||
[Adresse2] =>
|
||
[CP] => 49770
|
||
[Ville] => LA MEIGNANNE
|
||
*/
|
||
$nbFctDirSciAdr++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Nombre d'entreprises maximum dirigé par un des dirigeants
|
||
if ($nbFctDir>$NBDIRLIENS) {
|
||
$NBDIRLIENS=$nbFctDir;
|
||
}
|
||
|
||
// Nombre de SCI maximum dirigé par un des dirigeants (inclus dans NBDIRLIENS)
|
||
if ($nbFctDirSci>$NBDIRSCI) {
|
||
$NBDIRSCI=$nbFctDirSci;
|
||
}
|
||
|
||
// Nombre de SCI maximum dirigé par un des dirigeants à l'adresse (inclus dans les autres NBDIR...)
|
||
if ($nbFctDirSciAdr>$NBDIRSCIADR) {
|
||
$NBDIRSCIADR=$nbFctDirSciAdr;
|
||
}
|
||
}
|
||
|
||
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;
|
||
}
|
||
}
|
||
$ANNONCEINTERDIT++;
|
||
$ANNONCEINTERDITDATE=Metier_Util_Date::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;
|
||
}
|
||
}
|
||
}
|
||
$timer['traitementDirigeants'] = microtime(true);
|
||
|
||
/** 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;
|
||
$iFacto = new Metier_Partenaires_MFacto($iDb);
|
||
$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;
|
||
if (isset($infoFacto[0])) {
|
||
$nivRisquePaiement=$infoFacto[0]['risque'];
|
||
$MODIFPAIDATE=$infoFacto[0]['DateEven'];
|
||
switch ($infoFacto[0]['CodeRisque']) {
|
||
case 'OK':
|
||
$COTEOK=true;
|
||
$COTEOK_MMAA=$CSFACTO_MMAA=Metier_Util_Date::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=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
$CSFACTO='I';
|
||
$profilPayeur=5;
|
||
break;
|
||
case 'PR':
|
||
$PRIVILEGES=true;
|
||
$PRIVILEGES_MMAA=$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
$CSFACTO='P';
|
||
$profilPayeur=5;
|
||
break;
|
||
case 'RG':
|
||
$RISQUEGROUPE=true;
|
||
$RISQUEGROUPE_MMAA=$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
$CSFACTO=24; $SCOREDIRI-=10;
|
||
break;
|
||
case 'DEF':
|
||
$DEFAUT=true;
|
||
$DEFAUT_MMAA=$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
$CSFACTO='D';
|
||
break;
|
||
case 'LC':
|
||
$LCASSUR=true;
|
||
$LCASSUR_MMAA=$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
$CSFACTO='T';
|
||
break;
|
||
case 'KO':
|
||
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
|
||
$CSFACTO=50;
|
||
$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
break;
|
||
default:
|
||
if ($iFacto->risqueImpaye) {
|
||
$RISQUEIMPAYE_MMAA=$iFacto->risqueImpayeMois;
|
||
$RISQUEIMPAYE=true;
|
||
} else {
|
||
$CSFACTO=$infoFacto[0]['CoteCS']*1;
|
||
$CSFACTO_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateEven']);
|
||
}
|
||
break;
|
||
}
|
||
$CSFACTOFIN_MMAA=Metier_Util_Date::dateT('Y-m-d', 'Ym', $infoFacto[0]['DateFin']);
|
||
if ($infoFacto[0]['CoteCS']*1>0) {
|
||
$libInfoPaiement='Courant '.Metier_Util_Date::dateT('Y-m-d', 'M Y', $infoFacto[0]['DateEven']).' : '.$infoFacto[0]['LibCS'];
|
||
} else {
|
||
$libInfoPaiement=trim('Depuis '.Metier_Util_Date::dateT('Y-m-d', 'M Y', $infoFacto[0]['DateEven']).' : '.$infoFacto[0]['LibCS'].' '.$libProfilPayeur);
|
||
$encoursCS=7500;
|
||
}
|
||
} 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=Metier_Util_Date::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 Metier_Partenaires_MPrivileges($iDb);
|
||
$tabPriv = $iPriv->getPrivilegesCumul($siren);
|
||
$noteSolvMax=100;
|
||
if (isset($tabPriv['03']['nb'])) {
|
||
$PRIVILEGES=true;
|
||
$PRIVILEGESECU=$tabPriv['03']['nb'];
|
||
$PRIVILEGESECU_MT=$tabPriv['03']['insCumul'];
|
||
$PRIVILEGES_MMAA=Metier_Util_Date::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 '.Metier_Util_Date::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=Metier_Util_Date::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 '.Metier_Util_Date::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 '.Metier_Util_Date::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;
|
||
}
|
||
}
|
||
|
||
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);
|
||
|
||
// Paiements
|
||
$MODIFDERDATE = $MODIFINSEEDATE;
|
||
if ($MODIFPAIDATE > $MODIFDERDATE) {
|
||
$MODIFDERDATE = $MODIFPAIDATE;
|
||
}
|
||
// Rcs
|
||
if ($MODIFRNCSDATE > $MODIFDERDATE) {
|
||
$MODIFDERDATE = $MODIFRNCSDATE;
|
||
}
|
||
// Annonces
|
||
if ($ANNONCEDERDATE > $MODIFDERDATE) {
|
||
$MODIFDERDATE = $ANNONCEDERDATE;
|
||
}
|
||
|
||
// --- Cut Off
|
||
$ENQUETE='';
|
||
$tabTmp = $iDb->select('jo.scores_cutoff',
|
||
'encours, scoreSolv, scoreDir, scoreConf, paiement, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate',
|
||
"siren=$siren", INDISCORE_DEBUG, MYSQL_ASSOC);
|
||
$timer['scores_cutoff'] = microtime(true);
|
||
if (count($tabTmp) > 0) {
|
||
if ($tabTmp[0]['dateUpdate'] > $tabTmp[0]['dateInsert']) {
|
||
$dateMaj = $tabTmp[0]['dateUpdate'];
|
||
} else {
|
||
$dateMaj = $tabTmp[0]['dateInsert'];
|
||
}
|
||
// Si pas plus vieux que 6 mois
|
||
if (Metier_Util_Date::nbMoisEntre($dateMaj, date('Ymd')) <= $ENQUETELIM) {
|
||
$tabLibCS = $iFacto->getLibInfoCS($tabTmp[0]['paiement']);
|
||
$libInfoPaiement = $tabLibCS['LibCS'];
|
||
$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;
|
||
}
|
||
}
|
||
}
|
||
|
||
// --- 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'] == 'CL') {
|
||
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
|
||
$analyseConf = "Cloture après la procédure";
|
||
} elseif ($tabIdentite['SituationJuridique'] == 'D') {
|
||
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
|
||
$analyseConf = "L'entreprise est dissoute";
|
||
} elseif ($tabIdentite['SituationJuridique'] == 'A') {
|
||
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
|
||
$analyseConf = "L'entreprise est absorbée";
|
||
} elseif ($tabIdentite['SituationJuridique'] == 'RR' && $FJUR1 != 1) {
|
||
$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é
|
||
$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;
|
||
}
|
||
// Plafond à 25% des fonds propres ou à 1000 euros si FP<0
|
||
if ($tabBil[0]['FondsPr']>0) {
|
||
$plafond=$tabBil[0]['FondsPr']/4;
|
||
} elseif ($R[63]>0) {
|
||
$plafond=$R[63]/12;
|
||
}
|
||
|
||
if ($ENCOURS>$plafond) {
|
||
$ENCOURS=$plafond;
|
||
}
|
||
} else {
|
||
// Encours estimé = CA Estimé / 72 - sans bilans
|
||
if ($CAESTIME>0) {
|
||
$encoursEstime=$CAESTIME/36;
|
||
}
|
||
}
|
||
|
||
// 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;
|
||
}
|
||
|
||
// Metier_Util_Log::write('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.';
|
||
}
|
||
}
|
||
|
||
// 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 && $ENCOURS <= 2000 && !$IMPAYE && !$PRIVILEGES && !$RISQUEGROUPE &&
|
||
!$DEFAUT && !$LCASSUR && $CSFACTO != 50 && !$RISQUEIMPAYE) {
|
||
$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;
|
||
}
|
||
}
|
||
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 (Metier_Util_Date::nbMoisEntre($BILANDATE, date('Ymd'))>=24) {
|
||
$BILANVIEUX=true;
|
||
} else {
|
||
$BILANVIEUX=false;
|
||
}
|
||
if (Metier_Util_Date::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;
|
||
}
|
||
$libEncours='Il est préférable de demander un enquête commerciale sur les organisations, associations et fondations.';
|
||
} else {
|
||
$ENCOURSCALC=$ENCOURS;
|
||
$ENCOURS='N/A';
|
||
$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;
|
||
}
|
||
}
|
||
// Encours à 0 car score < 40
|
||
else {
|
||
$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;
|
||
}
|
||
|
||
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') {
|
||
$classeRisque=9;
|
||
} elseif ($ENCOURS==='N/A') {
|
||
$classeRisque=8;
|
||
}
|
||
|
||
/** 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) {
|
||
// --- 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;
|
||
}
|
||
|
||
// 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);
|
||
$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);
|
||
|
||
/** N° d'ordre de l'entreprise dans le classement des CA pour le marché de l'entreprise **/
|
||
$caTmp = round($CABIOUES, 0);
|
||
$tabTmp = $iDb->select('jo.etablissements_act', 'count(*) AS nb', "siege=1 AND ape_entrep='$naf' AND bilFL>=$caTmp", INDISCORE_DEBUG, MYSQL_ASSOC);
|
||
if (count($tabTmp) > 0) {
|
||
$MARCHEPLACE = $tabTmp[0]['nb']*1;
|
||
}
|
||
$tabTmp = $iDb->select('jo.etablissements_act', 'count(*) AS nb', "siege=1 AND ape_entrep='$naf' AND bilFL>=$caTmp AND adr_dep='".$tabIdentite['Dept']."'", INDISCORE_DEBUG, MYSQL_ASSOC);
|
||
if (count($tabTmp) > 0) {
|
||
$MARCHEPLACE_DEP = $tabTmp[0]['nb']*1;
|
||
}
|
||
$tabTmp = $iDb->select('jo.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);
|
||
if (count($tabTmp) > 0) {
|
||
$MARCHENBENT_VILLE = $tabTmp[0]['nb']*1;
|
||
}
|
||
$tabTmp = $iDb->select('jo.etablissements_act', 'count(*) AS nb', "siege=1 AND ape_entrep='$naf' AND adr_dep='".$tabIdentite['Dept']."'", INDISCORE_DEBUG, MYSQL_ASSOC);
|
||
if (count($tabTmp) > 0) {
|
||
$MARCHENBENT_DEP = $tabTmp[0]['nb']*1;
|
||
}
|
||
$timer['marcheEntrepPosition']=microtime(true);
|
||
|
||
/** 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);
|
||
|
||
/** 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++;
|
||
}
|
||
|
||
$RISQUEGEO=array_unique($RISQUEGEO);
|
||
$RISQUEGEO=implode(', ', $RISQUEGEO);
|
||
$timer['risquesGeo']=microtime(true);
|
||
|
||
/** 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);
|
||
|
||
/** 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", true, MYSQL_ASSOC);
|
||
// Nombre d'établissements concernés: neutraliser si >= 10
|
||
$RISQUEACT_NB = count($tabTmp);
|
||
$RISQUEACT = array();
|
||
if ($RISQUEACT_NB > 0) {
|
||
foreach ($tabTmp as $iTmp => $tabArret) {
|
||
// 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[] = $tabArret['libellerejet'];
|
||
}
|
||
$RISQUEACT = array_unique($RISQUEACT);
|
||
$RISQUEACT = implode(', ', $RISQUEACT);
|
||
}
|
||
$timer['risquesPollu']=microtime(true);*/
|
||
|
||
/** 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
|
||
);
|
||
|
||
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
|
||
$timer['risquesBassins']=microtime(true);
|
||
|
||
/** INFOS Orias **/
|
||
$iOrias = new Metier_Partenaires_MOrias(false, $iDb);
|
||
$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);
|
||
|
||
/** 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();
|
||
$iMarque = new Metier_Partenaires_MMarques($iDb);
|
||
$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;
|
||
}
|
||
}
|
||
}
|
||
$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);
|
||
|
||
/** Marchés publics **/
|
||
$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é
|
||
$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'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// % 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);
|
||
|
||
/** 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;
|
||
}
|
||
}
|
||
}
|
||
|
||
/** Population commune **/
|
||
$codeCommuneInsee=$tabIdentite['Dept'].$tabIdentite['codeCommune'];
|
||
$tabTmp = $iDb->select(
|
||
'insee.insee_tabVilles', 'Pop_mun_2007, popMunZFU, popMunZUS',
|
||
"CODGEO='$codeCommuneInsee'", INDISCORE_DEBUG, MYSQL_ASSOC
|
||
);
|
||
// 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
|
||
if (!empty($POPULATION)) {
|
||
$EFFECTIF_POPU=($EFFECTIF/$POPULATION)*100;
|
||
} else {
|
||
$EFFECTIF_POPU = null;
|
||
}
|
||
|
||
// On filtre les ventes sur les entit<69>s similaires en terme de CA et effectif
|
||
$filtreCAEff="";
|
||
if ($tabIdentite['TrancheCA']*1==0) {
|
||
$filtreCAEff.=" AND (v.tca=0 OR v.tca IS NULL) ";
|
||
} else {
|
||
$filtreCAEff.=" AND v.tca=".$tabIdentite['TrancheCA'].' ';
|
||
}
|
||
|
||
if ($tabIdentite['EffEnTr']*1==0) {
|
||
$filtreCAEff.=" AND (v.teffEn=0 OR v.teffEn IS NULL) ";
|
||
} else {
|
||
$filtreCAEff.=" AND v.teffEn=".$tabIdentite['EffEnTr'].' ';
|
||
}
|
||
|
||
/** 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 jo.scores_ventes v
|
||
WHERE v.nafEn LIKE '$APEENT'
|
||
AND v.codeCommune LIKE '$codeCommuneInsee'
|
||
AND v.Bodacc_Date_Parution>='$ya2ans'
|
||
AND v.VenteMt>1 AND v.VenteDev='EUR' $filtreCAEff
|
||
GROUP BY v.id)b", INDISCORE_DEBUG);
|
||
if (count($ret)>0) {
|
||
while ($ret=$iDb->fetch(MYSQL_ASSOC)) {
|
||
$VENTEMAX_MT = $VENTEMAX_VILLE_MT = $VENTEMAX_VILLE_EU = $ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
|
||
$VENTEMOY_VILLE_MT = $VENTEMOY_VILLE_EU = $ret['vtMoy'];
|
||
$VENTEMIN_MT = $VENTEMIN_VILLE_MT = $VENTEMIN_VILLE_EU = $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
|
||
}
|
||
}
|
||
|
||
// 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 jo.scores_ventes v
|
||
WHERE v.nafEn LIKE '$APEENT'
|
||
AND v.codeCommune LIKE '".$tabIdentite['Dept']."%'
|
||
AND v.Bodacc_Date_Parution>='$ya2ans'
|
||
AND v.VenteMt>1 AND v.VenteDev='EUR' $filtreCAEff
|
||
GROUP BY v.id)b", INDISCORE_DEBUG);
|
||
while ($ret=$iDb->fetch(MYSQL_ASSOC)) {
|
||
$VENTEMAX_DEP_MT = $VENTEMAX_DEP_EU = $ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
|
||
$VENTEMOY_DEP_MT = $VENTEMOY_DEP_EU = $ret['vtMoy'];
|
||
$VENTEMIN_DEP_MT = $VENTEMIN_DEP_EU = $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 jo.scores_ventes v
|
||
WHERE v.nafEn LIKE '$APEENT'
|
||
AND v.Bodacc_Date_Parution>='$ya2ans'
|
||
AND v.VenteMt>1 AND v.VenteDev='EUR' $filtreCAEff
|
||
GROUP BY v.id)b", INDISCORE_DEBUG);
|
||
while ($ret=$iDb->fetch(MYSQL_ASSOC)) {
|
||
$VENTEMAX_FRA_MT = $VENTEMAX_FRA_EU = $ret['vtMax']; // Plus grand montant de vente annonce VC niveau "ville"
|
||
$VENTEMOY_FRA_MT = $VENTEMOY_FRA_EU = $ret['vtMoy'];
|
||
$VENTEMIN_FRA_MT = $VENTEMIN_FRA_EU = $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
|
||
$iCadastre = new Metier_Partenaires_MCadastre();
|
||
$iCadastre->setId($siren);
|
||
// Locaux
|
||
$batimentP = $iCadastre->getSurfaceTotal('local');
|
||
if (count($batimentP) > 0) {
|
||
$CADBAT_NB_PROP = $batimentP['itemTotal'];
|
||
$CADBAT_SURF_TOT+= $batimentP['surfaceTotal'];
|
||
}
|
||
$batimentL = $iCadastre->getSurfaceTotal('local', 'L');
|
||
if (count($batiment) > 0) {
|
||
$CADBAT_NB_NONPROP = $batimentL['itemTotal'];
|
||
$CADBAT_SURF_TOT+= $batimentL['surfaceTotal'];
|
||
}
|
||
$CADBAT_NB_TOT = $CADBAT_NB_PROP + $CADBAT_NB_NONPROP;
|
||
// Parcelles
|
||
$terrainP = $iCadastre->getSurfaceTotal('parcelle');
|
||
if (count($terrainP) > 0) {
|
||
$CADTER_NB_PROP = $batimentP['itemTotal'];
|
||
$CADTER_SURF_TOT+= $batimentP['surfaceTotal'];
|
||
}
|
||
$terrainL = $iCadastre->getSurfaceTotal('parcelle', 'L');
|
||
if (count($terrainL) > 0) {
|
||
$CADTER_NB_NONPROP = $batimentL['itemTotal'];
|
||
$CADTER_SURF_TOT+= $batimentL['surfaceTotal'];
|
||
}
|
||
$CADTER_NB_TOT = $CADTER_NB_PROP + $CADTER_NB_NONPROP;
|
||
$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;
|
||
}
|
||
}
|
||
|
||
/** Recherche de la liste des Produits / NAF **/
|
||
$LISTEPRODUIT=implode(', ', $iInsee->listeProduits($naf));
|
||
|
||
/** 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'];
|
||
|
||
$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;
|
||
}
|
||
|
||
/** 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
|
||
);
|
||
|
||
$ANNONCEPC_CESDATE=$tabTmp[0]['cessPai'];
|
||
$ANNONCEPC_NUM=$tabTmp[0]['numPC'];
|
||
|
||
/** Activite réglementée **/
|
||
$ACTIVREG = '';
|
||
// Libellé de l'activité règlementé
|
||
$tabTmp = $iInsee->getActivite($siren, $nic);
|
||
if ($tabTmp) {
|
||
$ACTIVREG = $tabTmp['libActivite'];
|
||
}
|
||
|
||
$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
|
||
|
||
$NBINTERRO1=0;
|
||
$NBINTERRO3=0;
|
||
$NBINTERRO6=0;
|
||
$NBINTERRO12=0;
|
||
|
||
|
||
if ($type == 'valo') {
|
||
$tabTxRendObli = getTxRendement(date('Y'));
|
||
$TAUXRA = $tabTxRendObli;
|
||
|
||
/** 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;
|
||
}
|
||
}
|
||
|
||
$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
|
||
if (count($tabTmp) > 0) {
|
||
$tabTmp=$tabTmp[0];
|
||
$VALCOEFMINCA=$tabTmp['MINI'];
|
||
$VALCOEFMAXCA=$tabTmp['MAXI'];
|
||
}
|
||
}
|
||
|
||
//Chargement des phrases de commentaires - @todo : mettre en valeur de config
|
||
$tabCommentaires = $tabTriAff = array();
|
||
switch ($type) {
|
||
case 'scores':
|
||
$version = '414';
|
||
$tabCommentaires = include __DIR__ . '/Comment/ScoreTxt'.$version.'N'.$NIVEAU.'.php';
|
||
$tabTriAff = include __DIR__ . '/Comment/ScoreTri'.$version.'N'.$NIVEAU.'.php';
|
||
require_once 'Metier/Scores/Formule/Score_'.$version.'.php';
|
||
break;
|
||
case 'valo':
|
||
$version = 'v209';
|
||
$tabCommentaires = include __DIR__ . '/Comment/ValoTxt'.$version.'N'.$NIVEAU.'.php';
|
||
$tabTriAff = include __DIR__ . '/Comment/ValoTri'.$version.'N'.$NIVEAU.'.php';
|
||
require_once 'Metier/Scores/Formule/Valo_'.$version.'.php';
|
||
break;
|
||
}
|
||
|
||
asort($tabTriAff);
|
||
$tabCommentairesATrier=array();
|
||
$timer['calculcommentaires']=microtime(true);
|
||
$numC=0;
|
||
foreach ($C as $idx=>$value) {
|
||
$numC++;
|
||
if ($value) {
|
||
$commentaires=@implode('<br/>', $tabCommentaires[$idx]);
|
||
$commentaires=preg_replace('/\[0+/', '[', $commentaires);
|
||
|
||
if (INDISCORE_DEBUG) {
|
||
file_put_contents(LOG_PATH.'/debugFmt.log', date("Y/m/d H:i:s")." - formule 0=$idx : $commentaires\n", FILE_APPEND);
|
||
if (preg_match_all('/(\{.*\})/Us', $commentaires, $tabTmp)) {
|
||
foreach ($tabTmp[1] as $valeur) {
|
||
$valeur2=strtr($valeur, array('{'=>'', '}'=>''));
|
||
file_put_contents(LOG_PATH.'/debugFmt.log', date("Y/m/d H:i:s")." - formule A=$idx : $valeur\n", FILE_APPEND);
|
||
}
|
||
}
|
||
}
|
||
|
||
$strCommentaire=strtr(preg_replace_callback('/(\{.*\})/U', 'format', $commentaires), array('"'=>'\''));
|
||
|
||
// 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='+ '.$matches[1];
|
||
elseif (preg_match('/\<li\-\>(.*)$/Ui', $strCommentaire, $matches))
|
||
$strCommentaire='- '.$matches[1];
|
||
elseif (preg_match('/\<li>(.*)$/Ui', $strCommentaire, $matches))
|
||
$strCommentaire='* '.$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;
|
||
}
|
||
}
|
||
}
|
||
|
||
//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;
|
||
}
|
||
|
||
//@eval('\$strTmp="'.$strTmp2.'";');
|
||
$strTmp=eval("return \"$strTmp2\";");
|
||
|
||
$tabComment[$idxC]=preg_replace('/<\/i>(?:<br\/>)<\/i>/i', '</i>', $debLigne.$strTmp.$finLigne);//." ($idxC, $ordre)";
|
||
if (substr($strTmp, 0, 17)=='ERREUR DE FORMULE') {
|
||
}
|
||
// 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);
|
||
} // Fin Génération des commentaires
|
||
|
||
if (INDISCORE_DEBUG) {
|
||
$variables="\n\$NIVEAU=$NIVEAU\n\$numBil=$numBil\n\$noteSD=$noteSD\n\t-----\n";
|
||
|
||
foreach ($tabVar as $var) {
|
||
if (isset(${$var})) {
|
||
if (is_array(${$var})) {
|
||
$variables.="$var=".print_r(${$var}).PHP_EOL;
|
||
} else {
|
||
$variables.="$var='${$var}'".PHP_EOL;
|
||
}
|
||
} else {
|
||
$variables.="$var='${$var}' NON DEFINIE !!!".PHP_EOL;
|
||
}
|
||
}
|
||
|
||
file_put_contents($SIREN.'_'.$type.'.log',
|
||
"Indiscore sur $siren : Commentaires".PHP_EOL.
|
||
"Liste des variables :\n$variables".PHP_EOL.
|
||
'CA_COEF='.$CA_COEF.PHP_EOL.
|
||
'CA_Y='.print_r($CA_Y, true).PHP_EOL.PHP_EOL.
|
||
'RCAI_COEF='.$RCAI_COEF.PHP_EOL.
|
||
'RCAI_Y='.print_r($RCAI_Y, true).PHP_EOL.
|
||
"PROJECCOEF=$PROJECCOEF".PHP_EOL.
|
||
"PROJECTAUX=$PROJECTAUX".PHP_EOL.
|
||
"Y=".print_r($Y, true).PHP_EOL.
|
||
"Yaff=".print_r($Yaff, true).PHP_EOL.
|
||
"tabRegX=".print_r($tabRegX, true).PHP_EOL.
|
||
print_r($tabComment, true).PHP_EOL.
|
||
"Liste des commentaires a trier :\n".print_r($tabCommentairesATrier, true).PHP_EOL.
|
||
"Tableau des codes de tri pour calcul :\n".print_r($tabTri, true).PHP_EOL.
|
||
"Tableau des codes de tri pour affichage :\n".print_r($tabTriAff, true).PHP_EOL.
|
||
$debugFormule.PHP_EOL.'-----------------------'.PHP_EOL.
|
||
"Liste des Bilans :\n".print_r($tabBilans, true).PHP_EOL.
|
||
"tabBil=".print_r($tabBil, true).PHP_EOL.
|
||
"Liste des Ratios :\n".print_r($tabRatios, true).PHP_EOL.
|
||
"Liste des ratios Evolutions :\n". print_r($tabRatiosEvol, true).PHP_EOL
|
||
);
|
||
|
||
$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 ".$strTime.PHP_EOL.$strNote.PHP_EOL.$variables.PHP_EOL.print_r($tabRatiosInfos, true));
|
||
}
|
||
|
||
// EntActiveRCS
|
||
if ($ACTIFRNCS || $ACTIFINSEE) {
|
||
$actif=1;
|
||
} else {
|
||
$actif=0;
|
||
}
|
||
|
||
//Libellé Information de paiemet - Procédure collective
|
||
if ($libInfoPaiement<>'' && $tabIdentite['SituationJuridique']=='P') {
|
||
$libInfoPaiement='En procédure collective';
|
||
}
|
||
|
||
//Retour
|
||
$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(
|
||
'ConanH'=> $scoreConanH,
|
||
'Afdcc1'=> $scoreAfdcc1,
|
||
'Afdcc2'=> $scoreAfdcc2,
|
||
'Afdcc2note'=>$scoreAfdcc2note,
|
||
'Z' => $scoreZ,
|
||
'Altman'=> $scoreAltman,
|
||
'AltmanCote'=> $scoreAltmanB,
|
||
'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
|
||
),
|
||
'paiements' => $tabPaiements,
|
||
'cs' => $CSFACTO,
|
||
'csMoisMaj' => $CSFACTO_MMAA,
|
||
'csMoisFin' => $CSFACTOFIN_MMAA,
|
||
|
||
'SituationJuridique'=> $tabIdentite['SituationJuridique'],
|
||
'tabInfosNotations' => $tabInfosNotation,
|
||
'tabImportExport' => $tabImportExport,
|
||
'tabCommentaires' => $tabComment,
|
||
'tabVariables' => array('CA_Y'=>$Yaff),
|
||
);
|
||
|
||
$indiScore = $tabRet['Indiscore']*1;
|
||
$ENCOURS = round($tabRet['encours']);
|
||
|
||
/** Historisation du score **/
|
||
$tabTmp = $iDb->select(
|
||
'jo.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];
|
||
$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';
|
||
} else {
|
||
$entrep=array();
|
||
$indiScorePre=$encoursPre=null;
|
||
$dateScore=0;
|
||
$sourceModif='ajout';
|
||
$nbModifs = 1;
|
||
$actionHisto = 'insert';
|
||
}
|
||
|
||
/** 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';
|
||
}
|
||
}
|
||
|
||
// --- Scores identique au précedent, simple mise à jour
|
||
if ($indiScore==$indiScorePre && $ENCOURS==$encoursPre && $dateScore<>0) {
|
||
$tabUpdate2 = array('sourceModif'=>$sourceModif, 'nbModifs'=>$nbModifs);
|
||
if (!$iDb->update('jo.scores_surveillance', $tabUpdate2, "siren=$siren", false, 0, true)) {
|
||
Metier_Util_Log::write('W', 'Erreur lors de la MAJ du score en surveillance pour '. $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
}
|
||
} else {
|
||
// --- 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) {
|
||
$dateBilan = DateTime::createFromFormat('Ymd', $tabIdentite['bilanDate']);
|
||
$dateCompare = new DateTime();
|
||
$dateCompare->sub(new DateInterval('P'.$bilanAgeMax.'M'));
|
||
if ($dateBilan > $dateCompare) {
|
||
$EffectifEn = $tabIdentite['bilanYP'];
|
||
}
|
||
}
|
||
|
||
//Insertion ou mise à jour du score
|
||
$tabUpdate = array(
|
||
'siren' => $siren,
|
||
'naf' => $naf,
|
||
'CJ' => $tabIdentite['FJ'],
|
||
'dateImmat' => $tabIdentite['dateImmat'],
|
||
'dateCrea' => $tabIdentite['DateCreaEn'],
|
||
'effectif' => $EffectifEn,
|
||
'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,
|
||
);
|
||
|
||
// --- Sauvegarde et Historisation du score
|
||
if ($actionHisto == 'insert') {
|
||
if (!$iDb->insert('jo.scores_surveillance', $tabUpdate, false, true)) {
|
||
Metier_Util_Log::write('W', "Erreur lors de l'ajout du score en surveillance pour ". $tabIdentite['Nom']." - ".mysql_error(), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
}
|
||
} else {
|
||
if (!$iDb->update('jo.scores_surveillance', $tabUpdate, "siren=$siren", false, 0, true)) {
|
||
Metier_Util_Log::write('W', "Erreur lors de mise à jour du score en surveillance pour ". $tabIdentite['Nom']." - ".mysql_error(), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
}
|
||
}
|
||
|
||
// --- Historisation du score
|
||
if (!$iDb->insert('historiques.scores_surveillance', $tabUpdate)) {
|
||
Metier_Util_Log::write('W', "Erreur lors de l'historisation du score pour ". $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
}
|
||
}
|
||
|
||
Metier_Util_Log::write('I', 'Etablissement retourné FIN = '. $tabIdentite['Nom'], __LINE__, __FILE__, __FUNCTION__, __CLASS__);
|
||
|
||
return $tabRet;
|
||
}
|