4025 lines
163 KiB
PHP
4025 lines
163 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 return 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 [...]MARCHE
|
||
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 [...]MARCHEp
|
||
elseif (preg_match('/^CA_Y\[(.*)\]/U', $nomVar, $matches2)) {
|
||
return number_format($CA_Y[$matches2[1]]/1000,0,',',' ').' K€';
|
||
}
|
||
// --- Formattage variable CA_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;
|
||
if ($matches2[1]=='+') $forceSigne='+';
|
||
elseif ($matches2[1]=='!') $forceSigne='!';
|
||
else $forceSigne='';
|
||
if ($tmpRatio=='R')
|
||
return formatRatio($R, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rp')
|
||
return formatRatio($Rp, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rp2')
|
||
return formatRatio($Rp2, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rp3')
|
||
return formatRatio($Rp3, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rp4')
|
||
return formatRatio($Rp4, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Ra')
|
||
return formatRatio($Ra, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rap')
|
||
return formatRatio($Rap, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rs')
|
||
return formatRatio($Rs, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rsp')
|
||
return formatRatio($Rsp, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rsp2')
|
||
return formatRatio($Rsp2, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rsp3')
|
||
return formatRatio($Rsp3, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Rsp4')
|
||
return formatRatio($Rsp4, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Revol')
|
||
return formatRatio($Revol, $tmpRatioId, '%', $forceSigne);
|
||
elseif ($tmpRatio=='Rdiff')
|
||
return formatRatio($Rdiff, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
elseif ($tmpRatio=='Revolp')
|
||
return formatRatio($Revolp, $tmpRatioId, '%', $forceSigne);
|
||
elseif ($tmpRatio=='Revolp2')
|
||
return formatRatio($Revolp2, $tmpRatioId, '%', $forceSigne);
|
||
elseif ($tmpRatio=='Revolp3')
|
||
return formatRatio($Revolp3, $tmpRatioId, '%', $forceSigne);
|
||
elseif ($tmpRatio=='regR')
|
||
return formatRatio($regR, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
|
||
|
||
}
|
||
// --- 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($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['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;
|
||
/** @todo Gérer les encours pour les sociétés avec CA ridicule et FP énormes **/
|
||
|
||
// 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) {
|
||
file_put_contents('test.log', print_r($tabTmp,1));
|
||
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
|
||
/**
|
||
@todo
|
||
$CADBAT_SURF_CUM=0; // Cumul Surfaces des batiments à l'addresse
|
||
$CADTER_SURF_CUM=0; // Cumul Surfaces des terrains à l'addresse
|
||
*/
|
||
// Locaux
|
||
$iCadastre = new Metier_Partenaires_MCadastre($siren, $iDb);
|
||
$tabTmp = $iCadastre->getLocaux();
|
||
if(count($tabTmp) > 0) {
|
||
foreach ($tabTmp as $iTmp => $cad) {
|
||
$CADBAT_NB_TOT++;
|
||
if ($cad['localDroit'] == 'P'){
|
||
$CADBAT_NB_PROP++;
|
||
}
|
||
else {
|
||
$CADBAT_NB_NONPROP++;
|
||
}
|
||
$CADBAT_SURF_TOT+= $cad['localSurface'];
|
||
}
|
||
}
|
||
// Parcelles
|
||
$tabTmp = $iCadastre->getParcelles();
|
||
foreach ($tabTmp as $iTmp => $cad) {
|
||
$CADTER_NB_TOT++;
|
||
if ($cad['parcelDroit'] == 'P') {
|
||
$CADTER_NB_PROP++;
|
||
}
|
||
else {
|
||
$CADTER_NB_NONPROP++;
|
||
}
|
||
$CADTER_SURF_TOT+= $cad['parcelSurface'];
|
||
}
|
||
$timer['cadastre'] = microtime(true);
|
||
|
||
/** RPS : Entreprise avec négociations ou accord sur les RPS ? **/
|
||
$tabTmp = $iDb->select(
|
||
'sdv1.gouv_rps',
|
||
'idfent, dateMAJ, negotiations, nbreunions, accordsigne, accorddate, absenceEchec',
|
||
"siren='$SIREN'", INDISCORE_DEBUG, MYSQL_ASSOC
|
||
);
|
||
if (isset($tabTmp[0]) && $tabTmp[0]['idfent']>0) {
|
||
$RPS_NEGO=$RPS_PLAN=false;
|
||
// Date de dernière MAJ dans le répertoire RPS
|
||
$RPS_INFODATE=$tabTmp[0]['dateMAJ'];
|
||
// Négotiations
|
||
if ($tabTmp[0]['negotiations']=='oui') $RPS_NEGO=true;
|
||
// Date de signature de l'accord des RPS qui peut être à 0
|
||
$RPS_ACCORDDATE=$tabTmp[0]['accorddate'];
|
||
// Présence du libellé Plan d'action
|
||
if (!$RPS_NEGO && $RPS_ACCORDDATE*1==0) $RPS_PLAN=true;
|
||
}
|
||
|
||
/** 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='';
|
||
$tabTmp=$iInsee->getActivite($siren, $nic);
|
||
if ($tabTmp)
|
||
$ACTIVREG=$tabTmp['libActivite']; // Libellé de l'activité règlementé
|
||
|
||
$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;
|
||
}
|
||
?>
|