Merge from branch 1.2

This commit is contained in:
Michael RICOIS 2016-02-09 12:55:31 +00:00
commit 798907e7cf
23 changed files with 5211 additions and 3894 deletions

View File

@ -1,6 +1,49 @@
<?php
class Metier_Common_Mail
{
/**
* Envoi un email
* @param unknown $from
* @param unknown $to
* @param unknown $subject
* @param string $text
* @param string $html
* @param array $tabAttachedFiles
*/
public function send($from, $to, $subject, $text='', $html='', $tabAttachedFiles=array())
{
$to = preg_split("/[\s,;]+/", $to);
$mail = new Scores_Mail_Method();
$mail->setFrom($from);
if ( count($to) > 0 ) {
foreach ( $to as $item ) {
$mail->addTo($item);
}
}
$mail->setSubject($subject);
if ($text!='') {
$mail->setBodyText($text);
}
if ($html!='') {
$mail->setBodyHtml($html);
}
if ( count($tabAttachedFiles) > 0 ) {
foreach ($tabAttachedFiles as $file) {
$at = new Zend_Mime_Part( file_get_contents( $file ) );
$mail->addAttachment($at);
}
}
try {
$mail->execute();
} catch (Zend_Mail_Transport_Exception $e) {
file_put_contents(LOG_PATH.'/sendMailError.log', date('Y-m-d H:i:s')." - ".$e->getMessage()."\n", FILE_APPEND);
} catch (Zend_Mail_Protocol_Exception $e) {
file_put_contents(LOG_PATH.'/sendMailError.log', date('Y-m-d H:i:s')." - ".$e->getMessage()."\n", FILE_APPEND);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -2618,4 +2618,18 @@ return array(
'Version' => 18,
'LienEtab' => 0,
),
'1120' => array(
'libEven' => "Exécution du plan de sauvegarde",
'Bodacc_Code' => "BODA",
'Rubrique' => "procol",
'Version' => 18,
'LienEtab' => 0,
),
'3500' => array(
'libEven' => "Dépôt des comptes annuels (entreprise du secteur Bancaire)",
'Bodacc_Code' => "BODC",
'Rubrique' => "comptes",
'Version' => 18,
'LienEtab' => 0,
),
);

View File

@ -41,48 +41,3 @@ class MBalo
return $even;
}
}
class MBoamp
{
public function getCodEvenSd($codEvenBoamp, $strEvenBoamp='')
{
$codEvenBoamp=str_replace('R','',$codEvenBoamp)*1;
switch ($codEvenBoamp) {
case 10: $libEvenSd='Annulation'; break;
case 11: $libEvenSd='Annulation - Rectificatif'; break;
case 20: $libEvenSd='Rectificatif'; break;
case 22: $libEvenSd='Procédures accélérées'; break;
case 30: $libEvenSd='Avis d\'appel public à la concurrence - Délai d\'urgence'; break;
case 33: $libEvenSd='Avis de mise en concurrence'; break;
case 44: $libEvenSd='Concessions'; break;
case 50: $libEvenSd='Avis d\'appel public à la concurrence'; break;
case 51: $libEvenSd='Avis informatifs'; break;
case 55: $libEvenSd='Avis d\'appel public à la concurrence'; break;
case 6 : $libEvenSd='Avis d\'attribution'; break;
case 8 : $libEvenSd='Avis d\'attribution'; break;
case 81: $libEvenSd='Avis d\'attribution - Annulation'; break;
case 82: $libEvenSd='Avis d\'attribution - Rectificatif'; break;
case 83: $libEvenSd='Avis d\'attribution - Rectificatif'; break;
case 84: $libEvenSd='Avis d\'attribution comportant des lots infructueux'; break;
case 9 : $libEvenSd='Résultat de marché'; break;
case 91: $libEvenSd='Résultat de marché - Annulation'; break;
case 92: $libEvenSd='Résultat de marché - Rectificatif'; break;
case 93: $libEvenSd='Résultat de marché Infructueux/Sans suite'; break;
case 94: $libEvenSd='Résultat de marché comportant des lots infructueux'; break;
case 96: $libEvenSd='Annulation/Rectificatif/Sans suite/Infructueux'; break;
default: $libEvenSd=$strEvenBoamp; break;
}
if ($strEvenBoamp<>'') return $libEvenSd;
return substr('95'.$codEvenBoamp.'00',0,4)*1;
}
public function getLibEvenBoamp($codEvenBoamp, $strEvenBoamp='')
{
return $this->getCodEvenSd($codEvenBoamp, $strEvenBoamp);
}
}
?>

View File

@ -0,0 +1,42 @@
<?php
class MBoamp
{
public function getCodEvenSd($codEvenBoamp, $strEvenBoamp='')
{
$codEvenBoamp=str_replace('R','',$codEvenBoamp)*1;
switch ($codEvenBoamp) {
case 10: $libEvenSd='Annulation'; break;
case 11: $libEvenSd='Annulation - Rectificatif'; break;
case 20: $libEvenSd='Rectificatif'; break;
case 22: $libEvenSd='Procédures accélérées'; break;
case 30: $libEvenSd='Avis d\'appel public à la concurrence - Délai d\'urgence'; break;
case 33: $libEvenSd='Avis de mise en concurrence'; break;
case 44: $libEvenSd='Concessions'; break;
case 50: $libEvenSd='Avis d\'appel public à la concurrence'; break;
case 51: $libEvenSd='Avis informatifs'; break;
case 55: $libEvenSd='Avis d\'appel public à la concurrence'; break;
case 6 : $libEvenSd='Avis d\'attribution'; break;
case 8 : $libEvenSd='Avis d\'attribution'; break;
case 81: $libEvenSd='Avis d\'attribution - Annulation'; break;
case 82: $libEvenSd='Avis d\'attribution - Rectificatif'; break;
case 83: $libEvenSd='Avis d\'attribution - Rectificatif'; break;
case 84: $libEvenSd='Avis d\'attribution comportant des lots infructueux'; break;
case 9 : $libEvenSd='Résultat de marché'; break;
case 91: $libEvenSd='Résultat de marché - Annulation'; break;
case 92: $libEvenSd='Résultat de marché - Rectificatif'; break;
case 93: $libEvenSd='Résultat de marché Infructueux/Sans suite'; break;
case 94: $libEvenSd='Résultat de marché comportant des lots infructueux'; break;
case 96: $libEvenSd='Annulation/Rectificatif/Sans suite/Infructueux'; break;
default: $libEvenSd=$strEvenBoamp; break;
}
if ($strEvenBoamp<>'') return $libEvenSd;
return substr('95'.$codEvenBoamp.'00',0,4)*1;
}
public function getLibEvenBoamp($codEvenBoamp, $strEvenBoamp='')
{
return $this->getCodEvenSd($codEvenBoamp, $strEvenBoamp);
}
}

View File

@ -545,7 +545,7 @@ class MBodacc
'Secr.taires?'=>1600,
'Liquidateurs?'=>1900,
);
protected $iDb;
public function __construct($db = null)
@ -555,7 +555,7 @@ class MBodacc
} else {
$this->iDb = $db;
}
/** Charge toute la table des tribunaux pour ne pas lancer systématiquement des requètes sur le serveur MySQL
** lors des intégrations de Bodacc
**/
@ -1067,7 +1067,7 @@ class MBodacc
/** Détermine les NOMs et PRENOMs dans une chaine de caractère
**/
function getNomPrenomGenre($strNomPrenom) {
public function getNomPrenomGenre($strNomPrenom) {
$noms=$prenoms=$genre='';
$tabMots=preg_split('/( +|\.+)/', $strNomPrenom);
//print_r($tabMots);
@ -1094,7 +1094,7 @@ class MBodacc
}
function getNumPageAnnonce($bodaccCode, $annee, $num)
public function getNumPageAnnonce($bodaccCode, $annee, $num)
{
$tabRet=array();
$bodacc=$this->iDb->select('jo.bodacc',
@ -1123,7 +1123,7 @@ class MBodacc
** @param int $jjJug Jour du jugement dans le mois
** @return bool
**/
function isAudienceCivile($tribunal, $dateJug, $jourJug, $jjJug, $texteAnnonce) {
public function isAudienceCivile($tribunal, $dateJug, $jourJug, $jjJug, $texteAnnonce) {
//echo "Tribunal=$tribunal, Date='$dateJug', Jour de la semaine='$jourJug', Jour du mois='$jjJug'".EOL;
$tribunal=trim($tribunal);
$droitLocal=false;
@ -1175,7 +1175,7 @@ class MBodacc
return 0;
}
function getJALparDep($dep)
public function getJALparDep($dep)
{
$tabRet=array();
$rep=$this->iDb->select('jo.tabJAL', 'id, dep, nomJal, siteWeb, email, adresse, cp, ville, tel, fax, parution, aboAnnuel, infos',
@ -1186,7 +1186,7 @@ class MBodacc
return $tabRet;
}
function getListeJalCollecte()
public function getListeJalCollecte()
{
$tabRet=array();
$rep=$this->iDb->select('jo.tabJAL', 'id, nomJal', 'sedDateAbo<>0 GROUP BY nomJal ORDER BY nomJal ASC', false, MYSQL_ASSOC);
@ -1196,7 +1196,7 @@ class MBodacc
return $tabRet;
}
function getActiviteReelle($siren, $fj)
public function getActiviteReelle($siren, $fj)
{
$strEvenVtLg=" AND Rubrique<>'ventes' AND typeEven NOT LIKE '%2700%' AND typeEven NOT LIKE '%2701%' AND typeEven NOT LIKE '%2702%' AND typeEven NOT LIKE '%2703%' AND typeEven NOT LIKE '%2710%' AND typeEven NOT LIKE '%2720%' AND typeEven NOT LIKE '%2721%' AND typeEven NOT LIKE '%2725%' AND typeEven NOT LIKE '%2730%' AND typeEven NOT LIKE '%2740%' AND typeEven NOT LIKE '%2750%' AND typeEven NOT LIKE '%2800%' AND typeEven NOT LIKE '%2840%' AND typeEven NOT LIKE '%2850%' AND typeEven NOT LIKE '%2851%' AND typeEven NOT LIKE '%2860%' AND typeEven NOT LIKE '%2870%' AND typeEven NOT LIKE '%2875%' AND typeEven NOT LIKE '%2880%' AND typeEven NOT LIKE '%2881%' AND typeEven NOT LIKE '%2885%' AND typeEven NOT LIKE '%2890%' AND typeEven NOT LIKE '%2891%' AND typeEven NOT LIKE '%2892%' ";
/** Recherche de l'activité réelle **/
@ -1240,16 +1240,10 @@ class MBodacc
return $tabRet['Activite'];
}
function getCodeFormeJur($strFJ)
public function getCodeFormeJur($strFJ)
{
global $tabCjBodacc;
if (count($tabCjBodacc)<1)
require_once 'Metier/bodacc/configMBodacc.php';
$strFJ=strtoupper(trim(preg_replace('/[^a-z]/i','',$strFJ)));
return @$tabCjBodacc[$strFJ];
$tabCjBodacc = include 'Metier/bodacc/BodaccCJ.php';
$strFJ = strtoupper(trim(preg_replace('/[^a-z]/i','',$strFJ)));
return $tabCjBodacc[$strFJ];
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@ global $timer;
require_once 'Metier/bodacc/classMBodacc.php';
require_once 'Metier/bodacc/classMBalo.php';
require_once 'Metier/bodacc/classMBoamp.php';
require_once 'Metier/partenaires/classMTva.php';
require_once 'Metier/partenaires/classMMap.php';
require_once 'Metier/partenaires/classMAmabis.php';
@ -3171,7 +3172,9 @@ class MInsee
// --- Situation Juridique
if (intval($siren) > 100) {
if ($this->debug) file_put_contents('procol.log', "Debut"."\n");
$tabProcol = $this->getAnnoncesLegales($siren, 0, 'P', false);
if ($this->debug) file_put_contents('procol.log', print_r($tabProcol,1)."\n", FILE_APPEND);
if ( count($tabProcol) > 0 ) {
$tabDates = array();
foreach ($tabProcol as $iProcol => $procol) {
@ -3179,11 +3182,14 @@ class MInsee
}
rsort($tabDates);
$dateProcol = str_replace('-','',$tabDates[0])*1;
// Plan
if ($this->dureePlan>0 && date('Ymd')<$this->finPlan) {
if ($this->debug) file_put_contents('procol.log', "Plan (PL) : ".$this->dureePlan."-".$this->finPlan."\n", FILE_APPEND);
$tabRet['SituationJuridique'] = 'PL';
}
// Plan révolu
elseif ($this->dureePlan>0 && date('Ymd')>=$this->finPlan) {
if ($this->debug) file_put_contents('procol.log', "Plan revolu : ".$this->dureePlan."-".$this->finPlan."\n", FILE_APPEND);
$tabRet['SituationJuridique'] = '';
}
// Appel de jugement
@ -3192,6 +3198,7 @@ class MInsee
}
// En cours de procédure
else {
if ($this->debug) file_put_contents('procol.log', "Procol (P) "."\n", FILE_APPEND);
$tabRet['SituationJuridique'] = 'P';
}
$tabTmp = $this->iDb->select('jo.scores_cutoff', 'encours, scoreSolv, scoreDir, scoreConf, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate', "siren=$siren", false, MYSQL_ASSOC);
@ -3214,12 +3221,12 @@ class MInsee
}
}
}
} elseif (count($this->getAnnoncesLegales($siren, 0, 'A', false)) > 0) {
$tabRet['SituationJuridique'] = 'A';
} elseif (count($this->getAnnoncesLegales($siren, 0, 'D', false)) > 0) {
$tabRet['SituationJuridique'] = 'D';
$tabRet['SituationJuridique'] = 'D';
}
if ($this->debug) file_put_contents('procol.log', "SituationJuridique = ".$tabRet['SituationJuridique']."\n", FILE_APPEND);
// Fin Situation Juridique
// Date de dernière mise à jour
@ -3234,9 +3241,8 @@ class MInsee
$timer['getAnnoncesLegales']=microtime(true);
}
if ( ($tabInsee['CJ']>0 && $tabInsee['CJ']<20 || $tabInsee['CJ']>999 && $tabInsee['CJ']<2000) &&
$tabInsee['DIR_FCT']=='') {
$tabRet['dir1Titre'] = self::$tabFct['PP'];
if ( ($tabInsee['CJ']>0 && $tabInsee['CJ']<20 || $tabInsee['CJ']>999 && $tabInsee['CJ']<2000) && $tabInsee['DIR_FCT']=='') {
$tabRet['dir1Titre'] = self::$tabFct['PP'];
}
if ($tabInsee['CIVILITE']>0 && $tabRet['dir1NomPrenom']=='') {
@ -4900,8 +4906,9 @@ class MInsee
if ($type == 'bodacc') {
$tabEven = explode(';', $annonce['typeEven']);
foreach ($tabEven as $even) {
if ( intval($even)!=0 ) {
if ( intval($even) != 0 ) {
if ( ($this->dureePlan==0 || $this->dureePlan==120) && in_array($even, $evenDetect) ) {
if ($this->debug) file_put_contents('procol.log', "BODACC MATCH DUREE PLAN \n", FILE_APPEND);
//file_put_contents('plan.log', "MATCH DUREE PLAN : ", FILE_APPEND);
// --- Lecture dureePlan dans annonce
$this->debutPlan = str_replace('-','',$annonce['dateJugement']); // SSAAMMJJ
@ -4929,6 +4936,7 @@ class MInsee
$this->debutPlan = $annonce['DATE']; // SSAAMMJJ
if (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+ans?/Uisu', $annonce['annonceTxt'], $matches)) {
$this->dureePlan = $matches[1]*12; // 10 ans = 120 mois
if ($this->debug) file_put_contents('procol.log', "HISTO MATCH DUREE PLAN \n", FILE_APPEND);
}
// --- Duree du Plan par défaut sur FJ et par défaut
if ($this->dureePlan<1 || $this->dureePlan>120 ) {
@ -5424,7 +5432,7 @@ class MInsee
);
}
}
// --- Detection procédure collective
// --- Detection plan
if ($visualisation === false) {
$this->getAnnoncesLegalesPlan('bodacc', $fj, $ann);
}
@ -5442,7 +5450,9 @@ class MInsee
}
}
if ($ann['Rubrique']=='procol') $procol = true;
if ($ann['Rubrique']=='procol') {
$procol = true;
}
$dateCes=str_replace('-','', $ann['dateCessationActivite'])*1;
$dateDeb=str_replace('-','', $ann['dateDebutActivite'])*1;
@ -5501,7 +5511,9 @@ class MInsee
if ($ann['JAL']==1) $Bodacc_Code='BODA';
elseif ($ann['JAL']==200) $Bodacc_Code='BODB';
if ($ann['CODEVE']>49 && $ann['CODEVE']<80) $procol=true;
if ($ann['CODEVE']>49 && $ann['CODEVE']<80) {
$procol = true;
}
if ($ann['CODEVE']<20) $rub='creations'; // 4xxx
elseif ($ann['CODEVE']<=25) $rub='ventes'; // 5xxx
@ -5533,7 +5545,7 @@ class MInsee
'LibEven' => $this->iBodacc->getEvenement($newCodeEven)
);
// --- Detection procédure collective
// --- Detection plan
if ($visualisation === false) {
$this->getAnnoncesLegalesPlan('histo', $fj, $ann);
}
@ -5736,7 +5748,7 @@ class MInsee
}
}
// --- Detection procédure collective
// --- Detection plan
if ($visualisation === false) {
$this->getAnnoncesLegalesPlan('annonce', $fj, $ann);
}
@ -5817,45 +5829,50 @@ class MInsee
// --- Gestions des conditions pour l'affichage de l'indicateur procédure collectives
if ($rubrique=='P') {
// Si plan recherche des annonces suivantes
if ($this->dureePlan > 0) {
if ($this->dureePlan > 0) {
if ($this->debug) file_put_contents('procol.log', "Elimination du plan\n", FILE_APPEND);
ksort($tabJugements);
// Tableau chronologique des dates de jugement => code jugement
foreach ($tabJugements as $dateJuge => $codeJuge) {
$dateCompare = intval(str_replace('-', '', $dateJuge));
if ($this->debug) file_put_contents('procol.log', $dateJuge.'>'.$this->debutPlan."\n", FILE_APPEND);
// Si plan suivi de SV, RJ, LJ ou clôture alors pas de plan
if ($dateJuge>$this->debutPlan & (
if ($dateCompare>$this->debutPlan & (
($codeJuge>=1100 && $codeJuge<=1101)|| // Sauvegarde
($codeJuge>=1200 && $codeJuge<=1202)|| $codeJuge==1211|| // RJ
($codeJuge>=1300 && $codeJuge<=1313)|| // LJ
($codeJuge>=1500 && $codeJuge<=1504) ) ) { // Cloture
$this->dureePlan = 0;
}
}
}
if ($this->debug) file_put_contents('procol.log', "Durée du plan :".$this->dureePlan."\n", FILE_APPEND);
}
// Tableau ante-chronologique des dates de jugement ==> code jugement
// --- Tableau ante-chronologique des dates de jugement ==> code jugement
krsort($tabJugements);
$evenFirst = current($tabJugements);
$derProcol = str_replace('-','', key($tabJugements))*1;
//@todo : Mettre en cache
// --- Evenements effaçant l'indicateur P dans Situation Juridique
$tabNoProcol = array();
$tmp = $this->iDb->select('jo.tabEvenements', 'codEven, affProcol', 'affProcol>0', false, MYSQL_ASSOC);
foreach ($tmp as $tmp2) {
$tabNoProcol[$tmp2['codEven']] = $tmp2['affProcol'];
}
// --- Evenements effaçant l'indicateur P dans Situation Juridique
if (array_key_exists($evenFirst, $tabNoProcol)) {
switch ($tabNoProcol[$evenFirst]) {
// PAS DE MENTION DE LA PROCOL
case 1:
if ($this->debug) file_put_contents('procol.log', "affProcol = 1\n", FILE_APPEND);
$tabRet = array();
break;
// Ne pas mentionner la procol si CJ=1xxx
case 2:
if (substr($tabId['FJ'],0,1)*1==1) {
if ($this->debug) file_put_contents('procol.log', "affProcol = 2\n", FILE_APPEND);
$tabRet = array();
} elseif ($tabId['Actif']*1 > 0 && substr($tabId['FJ'],0,1)*1 != 9) {
if ($this->debug) file_put_contents('procol.log', "affProcol = 2", FILE_APPEND);
$maxLatence = date('Ymd',mktime(0,0,0,(substr($derProcol,4,2)*1)+1,substr($derProcol,6,2),substr($derProcol,0,4)));
if (date('Ymd') > $maxLatence) {
$tabRet = array();
@ -5865,11 +5882,13 @@ class MInsee
// Pas Procol si actif RCS
case 3:
if ($tabId['Actif']*1>0) {
if ($this->debug) file_put_contents('procol.log', "affProcol = 3\n", FILE_APPEND);
$tabRet = array();
}
break;
// Le dernier jugement est un appel => Procol Suspendu
case 4:
if ($this->debug) file_put_contents('procol.log', "affProcol = 4\n", FILE_APPEND);
$this->appelJugement = true;
break;
}
@ -5880,6 +5899,7 @@ class MInsee
if ($derProcol < $dateTropAncienne && $tabId['Actif']*1 > 0) {
$derPr = $classWDate->dateT('Ymd','d/m/Y', $derProcol);
$tabRet = array();
if ($this->debug) file_put_contents('procol.log', "Procédure trop ancienne plus de 12 ans et actif\n", FILE_APPEND);
}
// --- En Procol mais présence d'une annonce de cloture ou LJ avec Bilan publié ultérieurement
elseif ( ($evenFirst>=1300 && $evenFirst<=1313 && $evenFirst!=1310) || ($evenFirst>=1500 && $evenFirst<=1504)) {
@ -5892,6 +5912,7 @@ class MInsee
}
}
if ($derExercice>$derProcol) {
if ($this->debug) file_put_contents('procol.log', "En Procol mais présence d'une annonce de cloture ou LJ avec Bilan publié ultérieurement\n", FILE_APPEND);
$derEx = $classWDate->dateT('Ymd', 'd/m/Y', $derExercice);
$derPr = $classWDate->dateT('Ymd', 'd/m/Y', $derProcol);
$tabRet = array();
@ -6441,25 +6462,10 @@ class MInsee
if (($tabRet['isin']<>'' || trim($tmp[0])<>'') && trim($tmp[0])<>$tabRet['isin']) {
if (trim($tmp[0])<>'' && $tabRet['isin']=='')
$tabRet['isin']=$isin;
// else
// @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "MInsee::getIdentitePart sur $siren ISIN différents", "Les codes ISIN du siren $siren sont différents en base et chez notre partenaire : ".$tabRet['isin'].' différent de '.trim($tmp[0]).EOL.print_r($tabRet, true));
} elseif ($isin<>'') $tabRet['isin']=$isin;
$tabRet['bourseIsin']=$tabRet['isin'];
/*
$infosDispo=trim(@getTextInHtml($this->body, '<b>Liste Produits</b><br></td>', '<br></td><td class="menu3"><img src="../images/vide.gif" border="0"><br></td><td colspan="2" class="menu3">', 'Un secteur ou une région en France</a><br></td>'));
$tabTmp=explode('<a href="', $infosDispo);
foreach ($tabTmp as $k=>$lien) {
preg_match('/^(.*)">(.*)<\/a>/i', $lien, $matches);
if ($matches[2]<>'') $this->tabInfos[$matches[2]]=$matches[1];
if (substr($matches[2], 0, 12)=='rapport éco.') $this->infoEco='http://www.cofacerating.fr/portail/entreprise_identite/'.$matches[1];
elseif (substr($matches[2], 0, 6)=='bilan ') $this->tabBilans[]=substr($matches[2], 6,strlen($matches[2])-6);
}*
$tabRet['activite']=trim(str_replace(chr(160), ' ', html_entity_decode(utf8_encode(@getTextInHtml($this->body, '<td WIDTH="40%" bgcolor="#F3E5CC" class="tabligne" valign="top"><b>Libellé code activité </b></td>', '<td WIDTH="60%" bgcolor="#FFF3DE" class="tabval">', '</td>')))));
$tabRet['naf']=trim(@getTextInHtml($this->body, '<a href="../chaineeco_dynaeco/DynaEco.asp?cnaf=', 'cnaf=', '&'));
//$tabRet=array();
*/
if ($tabRet['web']=='' || $tabRet['web']=='http://') {
$tabRet['web']=trim($this->findSiteWeb($rs));
}
@ -6494,8 +6500,6 @@ class MInsee
$tabInsert=array_merge($tabUpdate,array('siren'=>$siren));
if (!$this->iDb->insert('jo.infos_entrep', $tabInsert))
$this->iDb->update('jo.infos_entrep', $tabUpdate, "siren=$siren");
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "MInsee::getIdentitePart sur $siren après accès Distant", print_r($tabRet, true));
}
return $tabRet;
}
@ -6757,9 +6761,6 @@ class MInsee
'id, libActivite, listeActivite, naf5, naf4, codAn8, listeCJ, nomAutorite',
"naf5='$naf5en' OR naf5='$naf5et' OR naf4='$naf4en' OR
naf4='$naf4et' OR codAn8='$an8en' OR codAn8='$an8et'", false, MYSQL_ASSOC);
/* @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Activités réglementées sur $siren",
"naf5='$naf5en' OR naf5='$naf5et' OR naf4='$naf4en' OR naf4='$naf4et' OR codAn8='$an8en' OR codAn8='$an8et'".EOL.
print_r($ret, true));*/
foreach ($ret as $iRet=>$tabAct) {
// Filtre 'listeActivite' : Si défini, on recherche la présence de mots dans l'activité
if (trim($tabAct['listeActivite'])<>'') {
@ -7053,7 +7054,6 @@ class MInsee
foreach ($ret as $iRet=>$tabCpf) {
$tabRet[$tabCpf['codCpf']]=$tabCpf['libCpf'];
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::listeProduits sur $naf", print_r($tabRet, true));
return $tabRet;
}
@ -7131,8 +7131,6 @@ class MInsee
}
}
//die();
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::listeProduits sur $naf", print_r($tabRet, true));
return false;
}
@ -7292,13 +7290,6 @@ class MInsee
break;
}
}
if (!$trouve) {
/*@sendMail( 'production@scores-decisions.com', 'ylenaour@scores-decisions.com',
"classMInsee::getInfosIris sur $codeCommune pas de RIVOLI sur $adrNum $adrIndRep $adrTypVoie $adrLibVoie (cas 1a)",
"Plusieurs codes IRIS pour un même rivoli".EOL.print_r($ret, true));
print_r($ret);*/
// die("TROP DE RIVOLI POUR '$codeCommune' et '$adrLibVoie2' ($adrNum, $adrIndRep, $adrTypVoie)");
}
} else
return $tabRet;
}
@ -7339,9 +7330,8 @@ class MInsee
}
}
if (count($ret2)<>1) {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::getInfosIris sur $codeCommune/$codeRivoli IRIS multiple KO sur $adrNum $adrIndRep $adrTypVoie $adrLibVoie (cas 1a)", "Plusieurs codes IRIS pour le même rivoli".EOL.print_r($ret, true));
} else {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::getInfosIris sur $codeCommune/$codeRivoli IRIS multiple ok sur $adrNum $adrIndRep $adrTypVoie $adrLibVoie (cas 1b)", "Plusieurs codes IRIS pour le même rivoli".EOL.print_r($ret2, true).EOL.print_r($ret, true));
$ret=$ret2;
}
}
@ -7365,7 +7355,6 @@ class MInsee
} else {
//typVoie, libVoie, rivoli, typeNum 1:chiffres impaires, 2:chiffres paires
//numd, indd, numf, indf
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMInsee::getInfosIris sur $codeCommune/$codeRivoli IRIS multiple KO sur $adrNum $adrIndRep $adrTypVoie $adrLibVoie (cas 2)", "Plusieurs codes IRIS pour le même rivoli".EOL.print_r($ret, true));
}
return $tabRet;
}

View File

@ -323,8 +323,6 @@ class MFacto
}
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Paiements", $libProfil.EOL.'Profil payeur = '. $this->profilPayeur .EOL.print_r($tabPaie, true).EOL);
return $libProfil;
}
@ -391,7 +389,6 @@ class MFacto
}
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Tableaux des Paiements", 'Paiements par montants :'.EOL.print_r($tabMtAn2, true).EOL.EOL.'Paiements par trimestres :'.EOL.print_r($tabNbr2, true).EOL.print_r($tabNbr, true).EOL.print_r($tabMtAn, true).EOL);
return array(
'parMont'=>$tabMtAn2,
'parTrim'=>$tabNbr2

View File

@ -1168,6 +1168,7 @@ $tabGreffe2Sd=array(
require_once 'framework/common/curl.php';
require_once 'framework/common/mysql.php';
require_once 'Metier/Common/Mail.php';
class MGreffes
{
@ -3026,12 +3027,13 @@ class MGreffes
$sirenReponse=$matches[1];
/** Réponse pour un autre siren, sans erreur ! **/
$mail = new Metier_Common_Mail();
if ($sirenQuery<>$sirenReponse && strlen($xml)>=200)
sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com',
$mail->send('debug@scores-decisions.com', 'ylenaour@scores-decisions.com',
"classMGreffes.php : Debug requete $siren,$idCommande,$type, $vecteur, $option",
"Debug requete $siren,$idCommande,$type, $vecteur, $option \nQUERY: $query \nREPONSE: $xml");
elseif ($type=='BS' && strlen($xml)>=200 && $option<>'' && ENV<>'PRD')
sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com',
$mail->send('debug@scores-decisions.com', 'ylenaour@scores-decisions.com',
"classMGreffes.php : Debug requete $siren,$idCommande,$type, $vecteur, $option",
"Debug requete $siren,$idCommande,$type, $vecteur, $option \nQUERY: $query \nREPONSE:$xml");
@ -3232,7 +3234,8 @@ class MGreffes
elseif (($typeCpt=='sociaux' || $typeCpt=='') && $liasse==2033) $type='S';
elseif (($typeCpt=='sociaux' || $typeCpt=='') && ($liasse=='A' || $liasse=='B') ) $type=$liasse;
else {
sendMail('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Type de bilan inconnue pour $siren", $xml);
$mail = new Metier_Common_Mail();
$mail->send('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Type de bilan inconnue pour $siren", $xml);
}
$title = $xpath->query ('date_cloture', $annonce);
$millesime=strtolower(trim($title->item(0)->nodeValue));
@ -3368,12 +3371,14 @@ class MGreffes
elseif ($typeCpt=='consolides' && $liasse==2050)
$tabRet['TYPE_BILAN']=$tabRet['CONSOLIDE']='C';
else {
sendMail('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Type de bilan inconnue pour $siren", $xml);
$mail = new Metier_Common_Mail();
$mail->send('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Type de bilan inconnue pour $siren", $xml);
}
$title = $xpath->query ('//bilanSaisi/num_siren');
$tabRet['SIREN']=trim($title->item(0)->nodeValue);
if ($siren*1<>$tabRet['SIREN']*1) {
sendMail('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Siren différents dans le bilan reçu $siren<>".$tabRet['SIREN'], $xml);
$mail = new Metier_Common_Mail();
$mail->send('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', " classMGreffes.php : Siren différents dans le bilan reçu $siren<>".$tabRet['SIREN'], $xml);
return array();
}
$title = $xpath->query ('//bilanSaisi/codeAPE');
@ -3394,18 +3399,13 @@ class MGreffes
)
$tabPostes[''.$poste]=round($valeur/6.55957);
}
} else//if ($liasse<>'A' && $liasse<>'B')
sendMail('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Devise '".$tabRet['MONNAIE_ORI']."' inconnue pour $siren", $xml);
} else {
$mail = new Metier_Common_Mail();
$mail->send('erreur@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Devise '".$tabRet['MONNAIE_ORI']."' inconnue pour $siren", $xml);
}
}
$tabRet['MONNAIE']='EUR';
$tabBilan['SOURCE']=10; // 167 avant
/*
<denomination>AUTOMOBILES PEUGEOT</denomination>
<adresse>75 AV DE LA GRANDE ARMEE</adresse>
<code_postal>75016</code_postal>
<ville>PARIS</ville>
<pays />
*/
}
return $tabRet;
}
@ -3640,7 +3640,6 @@ class MGreffes
'dateInsert' => date('YmdHis'),
);
@$iDb->insert('jo.greffes_actes', $tabInsert);
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes::Debug getListeActes($siren)", print_r($tabInsert,true).mysql_error()) ;
}
}
}
@ -3842,7 +3841,6 @@ class MGreffes
}
}
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes::getListeBilans sur $siren", $xml.EOL.print_r($tabRet, true));
return $tabRet;
}
@ -3851,8 +3849,10 @@ class MGreffes
$ret=$this->iDb->select('jo.greffes_cessions', 'id, siren, nom, libGreffe, inscrit, etat, dateImmat, dateJuge, dateConv, dateLJS, dateInventaire, dateBodacc, caDeclare, effectif, descriptif, pdfLink, pdfSize, pdfVer, pdfPage, descDateDepot, dateLimite, mandataire, dateInsert', "siren=$siren", false, MYSQL_ASSOC);
if (count($ret)>0) {
$tabCes=$ret[0];
if (count($ret)>1)
sendMail('debug@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Debug getInfosCessions $siren", "Plus de 1 cession pour ce siren");
if (count($ret)>1) {
$mail = new Metier_Common_Mail();
$mail->send('debug@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMGreffes.php : Debug getInfosCessions $siren", "Plus de 1 cession pour ce siren");
}
//id, siren, nom, libGreffe, inscrit, etat, dateImmat,
//pdfLink, pdfSize, pdfVer, pdfPage, ,
// dateLimite, mandataire, dateInsert

View File

@ -59,7 +59,6 @@ class MLiens
'Siren1, ActionPart, Pmin, Pmax, MajMin, PpPm, Siren2, RaisonSociale, Pays, actif, source, dateLien*1 AS dateLien, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate',
"Siren1='$siren' AND ActionPart=1 ORDER BY source DESC, actif DESC, Pmin DESC", true, MYSQL_ASSOC);
//$tabActiDB=mysql_select('dbo_liens_fi', 'SirenEntite, NomAdresse, PourcentageDetenu, Ville, Lien, MAJLien, MAJImport', "Siren='$siren' AND CodeLien='AC' ORDER BY PourcentageDetenu DESC");
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug $siren ($actifsUniquement)", print_r($tab,true)) ;
$sourcePre=$unique=false;
$pctTot=0;
$tabRet=array();
@ -269,7 +268,6 @@ class MLiens
$sirenCom='23'.$dept3.'00'.$iSir2;
if ($this->iInsee->valideSiren($sirenCom)) {
if ($this->iInsee->sirenExiste($sirenCom)) {
// @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement) $sirenCom existe !", '') ;
break;
}
}
@ -460,7 +458,6 @@ class MLiens
}
}*/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Fin $siren ($actifsUniquement)", print_r($tabRet,true)) ;
return $tabRet;
}
@ -608,7 +605,6 @@ class MLiens
break;
}
// }
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug Liens $siren", print_r($tabRet,true)) ;
return $tabRet;
}

View File

@ -8,7 +8,7 @@ class MOrias
private $codeRetour = 0;
private $accesDist=true;
private $iDb;
public $enCache=false;
public $force=false;
public $annee=0;
@ -17,7 +17,7 @@ class MOrias
function __construct($accesDist = true, $db = null)
{
$this->accesDist = $accesDist;
if ( $db === null ) {
$this->iDb = new WDB();
} else {
@ -39,12 +39,12 @@ class MOrias
$strWhere='1';
$this->annee=date('Y')*1;
}
$ret=$this->iDb->select('sdv1.orias','MAX(numOrias) AS numOrias', $strWhere, false, MYSQL_ASSOC);
//die($strWhere);
return sprintf('%08d',$ret[0]['numOrias']);
}
public function getInfosOrias($siren, $numOrias=0)
{
//die('numOrias 1:"'.$numOrias.'"');
@ -57,7 +57,7 @@ class MOrias
// die($strWhere);
//die('numOrias 2:"'.$numOrias.'"');
} else return false;
/* echo "=================================================================================================".EOL;
echo "==== SELECT siren, id, nom, cp, ville, adresse, numOrias FROM orias WHERE $strWhere;".EOL;
echo "=================================================================================================".EOL;
@ -88,7 +88,7 @@ class MOrias
return false;
}
} else return false;
if ($numOrias>0) {
$url='http://www.orias.fr/orias/public/index.html';
$post=array('menu%3AiasSearchForm'=>'menu%3AiasSearchForm',
@ -127,7 +127,7 @@ class MOrias
}
return false;
}
if ($url=='http://www.orias.fr/orias/public/intermediaire.html') {
$page=getUrl($url, $this->cookie, '', $this->referer, false, '', '', 24);
$this->referer=$url;
@ -135,28 +135,27 @@ class MOrias
echo "Recherche par Orias : url=$url".EOL;
die(print_r($page));
} /* else { */
// Liste contenant l'entreprise
$url='http://www.orias.fr/orias/public/list.html';
randsleep(1,2);
$page=getUrl($url, $this->cookie, '', $this->referer, false, '', '', 24);
$this->referer=$url;
$this->body=$page['body'];
if (preg_match('/<td>R\&eacute\;sultat\(s\) de votre recherche \:(?:.*)<strong>(.*)<(?:.*)Interm\&eacute\;diaire\(s\)/Uis',$this->body, $matches)) {
$nbInter=trim($matches[1])*1;
if ($nbInter==0) return false;
if ($nbInter>1) {
@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "classMOrias::getInfosOrias sur $siren", "Plus de 1 intermédiaire recensé... Merci de gérer le cas !");
return false;
}
}
// Initalisation du tableau retour
$tabRet=array('siren'=>$siren);
//id="formResult:intermediariesList:13910
if (preg_match('/<td class="dr-table-cell rich-table-cell haut " id="formResult\:intermediariesList\:(.*)\:j_id_id117">(?:.*)<center>(.*)<\/center>/Uis',$this->body, $matches)) {
$tabRet['id']=trim($matches[1]);
$tabRet['nom']=html_entity_decode(trim($matches[2]));
@ -169,7 +168,7 @@ class MOrias
}
if (preg_match('/<td class="dr-table-cell rich-table-cell r.adresse " id="formResult\:intermediariesList\:(?:.*)\:j_id_id133">(.*)<\/td>/Uis',$this->body, $matches))
$tabRet['adresse']=html_entity_decode(trim($matches[1]));
$tabRet['actif']=1;
$tabRet['numOriasAttribue']=1;
if (preg_match('/<td class="dr-table-cell rich-table-cell r.immat " id="formResult\:intermediariesList\:(?:.*)\:j_id_id138">(?:.*|)(<span style="white-space\: no-wrap;">|Radi\&eacute\; le \:)(.*)(?:<\/span>|<\/td>)/Uis',$this->body, $matches)) {
@ -188,7 +187,7 @@ class MOrias
$tabTmp=explode("<a href=\"#\" onclick=\"if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('formResult'),{'", $this->body);
// die($this->body);
foreach ($tabTmp as $i=>$strCat) {
if ($i==0) {
if (count($tabTmp)==1) {
@ -203,13 +202,13 @@ class MOrias
//echo "$i:$strCat";
//die();
//:formResult:intermediariesList:107501:j_id_id159:0:j_id_id166':'formResult:intermediariesList:107501:j_id_id159:0:j_id_id166','intermediaryIdParam':'107501','intermediaryRoleIdParam':'Mia'},'');}return false">
if (preg_match('/<span style="text-align\: left">(.*)<\/span>/Ui',$strCat, $matches))
$tabCat['categorie']=html_entity_decode(trim($matches[1]));
if (preg_match('/intermediaryRoleIdParam\'\:\'(.*)\'/Uis',$strCat, $matches))
$tabCat['cat']=$matches[1];
//print_r($tabCat);
if ($i==1) { // Tout est dans la même page Html
// Construction du lien vers la fiche d'identité de l'entreprise
$url='http://www.orias.fr/orias/public/list.html';
@ -232,7 +231,7 @@ class MOrias
$tmpCat=explode('class="dr-tbpnl-cntnt-pstn rich-tabpanel-content-position"', $page['body']);
//die(print_r($page,1));
}
if (preg_match('/<dd class="col3">Date d\'inscription \: <strong>(.*)<\/strong><\/dd>/Uis',$tmpCat[$i], $matches))
$tabCat['dateInscription']=/*Wdate::dateT('d/m/y', 'Y-m-d', */trim($matches[1]);//);
if (preg_match('/<td align="right"(?: |)>Statut \:<\/td>(.*)<\/strong>/Uis',$tmpCat[$i], $matches))
@ -263,18 +262,18 @@ class MOrias
$tabCat['encaissement']=0;
else
$tabCat['encaissement']=1;
if (preg_match('/<span class="txt_ssTitre">(?:.*)Nature de l\'activit\&eacute\; d\'interm\&eacute\;diation(.*)<\/dd>/Uis',$tmpCat[$i], $matches))
$tabCat['nature']=html_entity_decode(trim(strip_tags($matches[1])));
if (preg_match('/<td width="50%" valign="top" align="left">\- Etats dans lesquels cet interm\&eacute\;diaire exerce en libre prestation de service(.*)<\/table>(.*)<\/tr>/Uis',$tmpCat[$i], $matches))
$tabCat['paysPresta']=trim(strip_tags($matches[1]));
if (preg_match('/<td width="222" align="left">\- Etats dans lesquels cet interm\&eacute\;diaire exerce en libert\&eacute\; d\'\&eacute\;tablissement(.*)<\/table>(.*)<\/tr>/Uis',$tmpCat[$i], $matches))
$tabCat['paysEtab']=trim(strip_tags($matches[1]));
$tabRet['categories'][]=$tabCat;
$tabInsert=$tabRet;
unset($tabInsert['categories']);
$tabInsert=array_merge($tabInsert, $tabCat, array('dateInsert'=>date('YmdHis')));

View File

@ -74,7 +74,6 @@ class MTva
$page=getUrl($url, '', $postData, $referer, false, 'ec.europa.eu', '', 15);
$duree = round(microtime_float()-$tdeb, 3);
//sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com', "classMTva sur $siren en $duree", print_r($page, true));
if ($page['err_num']<>0) {
debugLog('W', 'TVA Erreur CURL n°'. $page['err_num'] .', '. $page['err_msg'] ." sur le Siren $siren, numéro de TVA = FR $cle $siren. Durée = $duree s !", __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$this->vatNumber="FR$cle$siren";

View File

@ -28,10 +28,10 @@ class ICotation
} else {
$this->iDb = $db;
}
$this->reTrtAuto = $retraitementAutomatique;
$this->tabBilan = $tabBilan;
$this->tabNaf21['0162Z']='927C';
$this->tabNaf21['0210Z']='020A';
$this->tabNaf21['0220Z']='020B';
@ -725,9 +725,9 @@ class ICotation
$this->tabNaf21['9604Z']='930K';
$this->tabNaf21['9609Z']='930N';
$this->tabNaf21['9900Z']='990Z';
/** Tableau des CA moyens / Salariés, Pondérations et effectifs moyens
**/
$this->tabMedians=array('000Z'=>array('CAm'=>180, 'Coef'=>0, 'YPm'=>22),
@ -1467,8 +1467,8 @@ class ICotation
'930N'=>array('CAm'=>3670, 'Coef'=>0, 'YPm'=>4),
'950Z'=>array('CAm'=>10, 'Coef'=>0, 'YPm'=>0),
);
/** Situat° Remarque Notation Equiv. Grades Probabilité de
** financière BDF Moody's Grades S&P défaillance
**/
@ -1487,7 +1487,7 @@ class ICotation
$this->tabNotation['E-']=array('Mauvaise', 'Très mauvais', '8', 'Ca C', 'CC C', '17.00');
$this->tabNotation['F'] =array('Mauvaise', 'Signe de défaut', '8 9', 'D', 'D', 'En défaut');
$this->tabNotation['Z'] =array('Mauvaise', 'Signe de défaut', 'P', '', '', 'En défaut');
$this->tabLibActivite[0]='';
$this->tabLibActivite[15]='Industries Alimentaires : Collecte Appro';
$this->tabLibActivite[3]='Industries Alimentaires : Collecte et 1ère transformation';
@ -1506,7 +1506,7 @@ class ICotation
$this->tabLibActivite[11]='Hôtellerie et Loisirs / Activités immobilières';
$this->tabLibActivite[16]='Banques. Assurances. Activités financières';
$this->tabLibActivite[17]='Agriculture. Sylviculture. Pêche. Aquaculture';
$this->tabActivite[15]=array('512A');
$this->tabActivite[3]=array('151A','151C','152','153E','155','157','159G','159J','159N','159Q');
$this->tabActivite[5]=array('159A','159F');
@ -1524,7 +1524,7 @@ class ICotation
$this->tabActivite[11]=array('923','925','926','927','551','552','553','554','555','702');
$this->tabActivite[16]=array('651','660','672','652E','652A','652C','652F','671');
$this->tabActivite[17]=array('751','990','752','990','701');
$this->tabR[1][0]=array();
$this->tabR[1][1]=array('0:15.5','15.5:21.7','21.7:25','25:29.1','29.1:33.4','33.4:37','37:40','40:42.6','42.6:44.9','44.9:100');
$this->tabR[1][2]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100');
@ -1543,7 +1543,7 @@ class ICotation
$this->tabR[1][15]=array('0:15.5','15.5:21.7','21.7:25','25:29.1','29.1:33.4','33.4:37','37:40','40:42.6','42.6:44.9','44.9:100');
$this->tabR[1][16]=array('0:6.8','6.8:8.9','8.9:10','10:11.4','11.4:12.8','12.8:14','14:15','15:15.9','15.9:16.6','16.6:100');
$this->tabR[1][17]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100');
$this->tabR[2][0]=array();
$this->tabR[2][1]=array('1.8:','1.6:1.8','1.5:1.6','1.4:1,5','1.2:1.4','1.0:1.2','0.9:1.0','0.8:0,9','0.7:0,8','0:0.7');
$this->tabR[2][2]=array('2.2:','1.9:2.2','1.8:1.9','1.6:1.8','1.4:1.6','1.2:1.4','1.0:1.2','0.9:1.0','0.7:0.9','0:0.7');
@ -1562,7 +1562,7 @@ class ICotation
$this->tabR[2][15]=array('2.2:','1.9:2.2','1.7:1.9','1.5:1.7','1.2:1.5','1.0:1.2','0.8:1.0','0.7:0.8','0.5:0.7','0:0.5');
$this->tabR[2][16]=array('10.1:','8.8:10.1','8:8.8','7:8','5.8:7','4.8:5.8','4:4.8','3.3:4','2.8:3.3','0:2.8');
$this->tabR[2][17]=array('2.2:','1.9:2.2','1.8:1.9','1.6:1.8','1.4:1.6','1.2:1.4','1:1.2','0.9:1','0.7:0.9','0:0.7');
$this->tabR[3][0]=array();
$this->tabR[3][1]=array('4.4:','4:4.4','3.8:4','3.5:3.8','3.1:3.5','2.8:3.1','2.5:2.8','2.2:2.5','2:2.2','0:2');
$this->tabR[3][2]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4');
@ -1581,7 +1581,7 @@ class ICotation
$this->tabR[3][15]=array('6.9:','6.3:6.9','6.0:6.3','5.5:6.0','5.0:5.5','4.5:5.0','4.0:4.5','3.6:4.0','3.2:3.6','0:3.2');
$this->tabR[3][16]=array('10.9:','9.7:10.9','9:9.7','8:9','6.8:8','5.8:6.8','5:5.8','4.3:5','3.7:4.3','0:3.7');
$this->tabR[3][17]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4');
$this->tabR[4][0]=array();
$this->tabR[4][1]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:');
$this->tabR[4][2]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:');
@ -1600,7 +1600,7 @@ class ICotation
$this->tabR[4][15]=array('0:2.9','2.9:3.4','3.4:3.7','3.7:4.3','4.3:5.2','5.2:6.2','6.2:7.5','7.5:9.1','9.1:10.9','10.9:');
$this->tabR[4][16]=array('0:1.1','1.1:1.2','1.2:1.3','1.3:1.4','1.4:1.6','1.6:1.8','1.8:2','2:2.2','2.2:2.5','2.5:');
$this->tabR[4][17]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:');
$this->tabR[5][0]=array();
$this->tabR[5][1]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:');
$this->tabR[5][2]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:');
@ -1619,7 +1619,7 @@ class ICotation
$this->tabR[5][15]=array('-99:-38.3','-38.3:-36.3','-36.3:-35.0','-35:-33','-33.0:-30','-30:-27.7','-27.7:-25.0','-25.0:-22.3','-22.3:-19.7','-19.7:');
$this->tabR[5][16]=array('-99:-41.7','-41.7:-34.7','-34.7:-30','-30:-23','-23:-13.7','-13.7:-4.3','-4.3:5','5:14.3','14.3:23.7','23.7:');
$this->tabR[5][17]=array(':-58.3','-58.3:53.3','-53.3:-50','-50:-45','-45:-38.3','-38.3:-31.7','-31.7:-25','-25:-18.3','-18.3:-11.7','-11.7:');
$this->tabR[6][0]=array();
$this->tabR[6][1]=array('0:6','6:6.6','6.6:7','7:7.6','7.6:8.4','8.4:9.2','9.2:10','10:10.8','10.8:11.6','11.6:');
$this->tabR[6][2]=array('0:6','6:6.6','6.6:7','7:7.6','7.6:8.4','8.4:9.2','9.2:10','10:10.8','10.8:11.6','11.6:');
@ -1729,10 +1729,10 @@ class ICotation
}
/** Retourne la marge commerciale
** Elle est <EFBFBD>gale <EFBFBD> la diff<EFBFBD>rence entre les ventes de marchandises et le co<EFBFBD>t d'achat des marchandises vendues.
** Attention : La marge commerciale concerne seulement les entreprises commerciales (activit<EFBFBD> = revente de marchandises en l'<EFBFBD>tat).
** Elle est égale à la différence entre les ventes de marchandises et le cout d'achat des marchandises vendues.
** Attention : La marge commerciale concerne seulement les entreprises commerciales (activité = revente de marchandises en l'<EFBFBD>tat).
**
** @param $exPre Exercice pr<EFBFBD>c<EFBFBD>dent ?
** @param $exPre Exercice précédent ?
** @return double Marge Commerciale en unit<EFBFBD> du bilan
**/
function calculMargeCommerciale ($exPre=false) {
@ -1757,22 +1757,22 @@ class ICotation
else
return @$this->tabBilan['FF'] + @$this->tabBilan['FI'] + @$this->tabBilan['FM'] + @$this->tabBilan['FN'] ;
}
/** Retourne la Valeur ajout<EFBFBD>e
** La VA repr<EFBFBD>sente la cr<EFBFBD>ation de valeur lors de l'exercice
/** Retourne la Valeur ajoutée
** La VA représente la création de valeur lors de l'exercice
** VA = Production + Marge Commerciale - consommations de biens et services en provenance des tiers
** Plus la valeur ajout<EFBFBD>e est importante et moins grand est le recours aux tiers.
** La valeur ajout<EFBFBD>e donne une indication de l'activit<69> de l'entreprise <EFBFBD> laquelle elle se rapporte.
** Le ratio : Valeur ajout<EFBFBD>e / Chiffre d'affaire ou Production, s'il se rapproche de 1, indique une entreprise "int<EFBFBD>gr<EFBFBD>e", c'est <EFBFBD> dire qui fait peu appel <EFBFBD> des tiers.
** La diff<EFBFBD>rence entre la production et la consommation accro<EFBFBD>t la valeur de la production nationale.
** De ce fait, on peut d<EFBFBD>finir la valeur ajout<EFBFBD>e comme une contribution que l'entreprise et son personnel apporte <EFBFBD> l'<EFBFBD>conomie du pays.
** La valeur ajout<EFBFBD>e est partag<EFBFBD>e entre :
** Plus la valeur ajoutée est importante et moins grand est le recours aux tiers.
** La valeur ajoutée donne une indication de l'activit<69> de l'entreprise à laquelle elle se rapporte.
** Le ratio : Valeur ajout<EFBFBD>e / Chiffre d'affaire ou Production, s'il se rapproche de 1, indique une entreprise "intégrée", c'est à dire qui fait peu appel <EFBFBD> des tiers.
** La différence entre la production et la consommation accroît la valeur de la production nationale.
** De ce fait, on peut définir la valeur ajoutée comme une contribution que l'entreprise et son personnel apporte à l'économie du pays.
** La valeur ajoutée est partaée entre :
** - le personnel de l'entreprise, aux moyens de salaires et de prestations sociales,
** - les fournisseurs de capitaux, aussi bien de capitaux emprunt<EFBFBD>s par l'interm<72>diaire de banques, que de fournisseurs de capitaux propres par l'interm<EFBFBD>diaire de paiement de dividendes,
** - l'Etat et les collectivit<EFBFBD>s locales par l'interm<EFBFBD>diaire de l'imp<EFBFBD>t,
** - les fournisseurs de capitaux, aussi bien de capitaux empruntés par l'intermédiaire de banques, que de fournisseurs de capitaux propres par l'interm<EFBFBD>diaire de paiement de dividendes,
** - l'Etat et les collectivités locales par l'intermédiaire de l'imp<EFBFBD>t,
** - l'Entreprise pour compenser l'usure des actifs et pour s'autofinancer.
**
** @param $exPre Exercice pr<EFBFBD>c<EFBFBD>dent ?
** @return double Valeur ajout<EFBFBD>e en unit<EFBFBD> du bilan
** @param $exPre Exercice précédent ?
** @return double Valeur ajoutée en unité du bilan
**/
function calculValeurAjoutee ($exPre=false) {
if ($exPre)
@ -1783,7 +1783,7 @@ class ICotation
- ( @$this->tabBilan['FU'] + @$this->tabBilan['FV'] + @$this->tabBilan['FW'] ) ;
}
/** Score Zbis pr<EFBFBD>sum<EFBFBD> de la BDF
/** Score Zbis présumé de la BDF
**
**/
function scoreZbis() {
@ -1917,23 +1917,12 @@ class ICotation
if ($r6<-100) $r6=-100; elseif ($r6>150) $r6=150;
$t=0.57 + $r1*-0.0635 + r2*0.0183 + $r3*0.0471 + $r4*-0.0246 + $r5*0.0115 + $r6*-0.0096;
/*sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Afdcc1",
"Score Afdcc = $t
t=0.57 + $r1*-0.0635 + r2*0.0183 + $r3*0.0471 + $r4*-0.0246 + $r5*0.0115 + $r6*-0.0096
Avec
r1=$r1
r2=$r2
r3=$r3
r4=$r4
r5=$r5
r6=$r6
".EOL.print_r($this->tabBilan, true));*/
return $t;
}
function scoreAfdcc2($naf, $trancheEffectif) {
/** Ind<EFBFBD>pendance financi<63>re */
/** Indépendance financière */
$denom= @$this->tabBilan['DL'] + @$this->tabBilan['DO'] + @$this->tabBilan['DR'] + @$this->tabBilan['DS']
+ @$this->tabBilan['DT'] + @$this->tabBilan['DU'] + @$this->tabBilan['DV'] - @$this->tabBilan['EH']
+ @$this->tabBilan['ED'] + @$this->tabBilan['BK'] - @$this->tabBilan['AA'] - @$this->tabBilan['CM'];
@ -2195,19 +2184,6 @@ class ICotation
$enBourse='Coci<63>t<EFBFBD> non c<>t<EFBFBD>';
}
/*sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Altman $enBourse",
"Score Altman = $t
t=1.2*$x1 + 1.4*$x2 + 3.3*$x3 + 0.6*$x4 + $x5;
Avec
x1=$x1
x2=$x2
x3=$x3
x4=$x4
x5=$x5
".EOL.
print_r($bourse, true).EOL.
print_r($this->tabBilan, true));*/
return $t;
}
@ -2679,13 +2655,14 @@ class ICotation
$this->tabNotation[$notation][5] .';'; // Probbilit<69> de d<>faillance
break;
case 'array':
$str = array( 'SituationFinanciere' =>utf8_encode($this->tabNotation[$notation][0]), // Situation financi<63>re
'Notation' =>utf8_encode($this->tabNotation[$notation][1]), // Notation
//'EquivalenceBDF' =>$this->tabNotation[$notation][2], // Equivalence BDF
//$this->tabNotation[$notation][3] .';'. // Grades Moody's
//$this->tabNotation[$notation][4] .';'. // Grades S&P
'ProbabiliteDefaut' =>utf8_encode($this->tabNotation[$notation][5]), // Probbilit<69> de d<>faillance
);
$str = array(
'SituationFinanciere' =>$this->tabNotation[$notation][0], // Situation financiére
'Notation' =>$this->tabNotation[$notation][1], // Notation
//'EquivalenceBDF' =>$this->tabNotation[$notation][2], // Equivalence BDF
//$this->tabNotation[$notation][3] .';'. // Grades Moody's
//$this->tabNotation[$notation][4] .';'. // Grades S&P
'ProbabiliteDefaut' =>$this->tabNotation[$notation][5], // Probbilité de défaillance
);
break;
}
return $str;

View File

@ -3,7 +3,6 @@
require_once 'Metier/partenaires/classMPrivileges.php';
require_once 'Metier/partenaires/classMMarques.php';
require_once 'Metier/scores/classMRegression.php';
require_once 'Metier/partenaires/classMLiens2.php';
require_once 'Metier/scores/classMSolvabilite.php';
require_once 'Metier/scores/classMRatios.php';
@ -189,23 +188,23 @@ function getTxRendement($annee)
* @param string $unite
* @param string $signe
*/
function number_format2($nombre,$decimales,$sepDec,$sepMil,$unite,$signe)
function number_format2($nombre, $decimales, $sepDec, $sepMil, $unite, $signe)
{
if (round($nombre,$decimales) == round($nombre)) {
$decimales = 0;
}
if ($signe == '+') {
if ($nombre > 0) {
return '+ '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return '+ '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} elseif ($nombre<0) {
return '- '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return '- '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} else {
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
}
} elseif ($signe=='!') {
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} else {
return number_format($nombre,$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format($nombre,$decimales,$sepDec,$sepMil).' '.$unite;
}
}
@ -282,11 +281,11 @@ function formatRatio($ratio, $id, $unite, $forceSigne='')
}
/**
* Fomattage des variables pour affichage
* Formattage des variables pour affichage
* @param string $variable
* @param int $longeur
* @param string $fonction
* @return unknown|string|mixed|Ambigous <string, unknown>
* @return mixed
*/
function formatValeur($variable, $longeur=0, $fonction='')
{
@ -327,140 +326,175 @@ function formatValeur($variable, $longeur=0, $fonction='')
}
}
}
// --- Formattage variable [...]DATE
elseif (preg_match('/DATE$/', $nomVar)) {
$strTmp = eval("return $valeur;");
return preg_replace('/00\//','01/', $classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$strTmp),0,8)));
}
// --- Formattage variable [...]DATEp[NNNN]
elseif (preg_match('/DATEp[0-9]{0,}$/', $nomVar)) {
$strTmp=eval("return $valeur;");
return preg_replace('/00\//','01/', $classWdate->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 $classWdate->dateT('Y-m','M Y', $strTmp);
}
// --- Formattage variable [...]_MT
elseif (preg_match('/_MT$/', $nomVar)) {
$strTmp=eval("return $valeur;");
return number_format($strTmp,2,',',' ').'&nbsp;&euro;';
return number_format($strTmp,2,',',' ').' &euro;';
}
// --- 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,',',' ').'&nbsp;&euro;';
return number_format($strTmp,2,',',' ').' &euro;';
elseif ($strTmp>=10 && $strTmp<5000 || $strTmp>-5000 && $strTmp<=10)
return number_format($strTmp,0,',',' ').'&nbsp;&euro;';
return number_format($strTmp,0,',',' ').' &euro;';
elseif ($strTmp<=-10000000 || $strTmp>=10000000)
return number_format($strTmp/1000000,0,',',' ').'&nbsp;M&euro;';
return number_format($strTmp/1000000,0,',',' ').' M&euro;';
else
return number_format($strTmp/1000,0,',',' ').'&nbsp;K&euro;';
return number_format($strTmp/1000,0,',',' ').' K&euro;';
}
// --- Formattage variable [...]_POURC
elseif (preg_match('/_POURC$/', $nomVar)) {
$strTmp=eval("return $valeur;");
if ($strTmp>=10 || $strTmp<=-10)
return number_format($strTmp,0,',',' ').'&nbsp;%';
return number_format($strTmp,0,',',' ').' %';
elseif ($strTmp>=1 || $strTmp<=-1)
return number_format($strTmp,1,',',' ').'&nbsp;%';
return number_format($strTmp,1,',',' ').' %';
else
return number_format($strTmp,3,',',' ').'&nbsp;%';
return number_format($strTmp,3,',',' ').' %';
}
// --- Formattage variable [...]CAPITAL
elseif (preg_match('/CAPITAL$/', $nomVar)) {
return number_format($CAPITAL,0,',', ' ').' &euro;';
}
// --- Formattage variable [...]CAPITAL_PRE
elseif (preg_match('/CAPITAL_PRE$/', $nomVar)) {
return number_format($CAPITAL_PRE,0,',',' ').'&nbsp;&euro;';
return number_format($CAPITAL_PRE,0,',',' ').' &euro;';
}
// --- Formattage variable [...]CAPITAL_MTACTION
elseif (preg_match('/CAPITAL_MTACTION$/', $nomVar)) {
return number_format($CAPITAL_MTACTION,0,',',' ').'&nbsp;&euro;';
return number_format($CAPITAL_MTACTION,0,',',' ').' &euro;';
}
// --- 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,',',' ').'&nbsp;k&euro;';
return number_format($CAESTIME/1000,0,',',' ').' k&euro;';
}
// --- Formattage variable CABIOUES
elseif (preg_match('/^CABIOUES$/', $nomVar)) {
return number_format($CABIOUES/1000,0,',',' ').'&nbsp;k&euro;';
return number_format($CABIOUES/1000,0,',',' ').' k&euro;';
}
// --- Formattage variable [...]DIMMAT
elseif (preg_match('/DIMMAT$/', $nomVar)) {
return preg_replace('/00\//','01/', $classWdate->dateT('Ymd','d/m/Y', substr(str_replace('-','',$DIMMAT),0,8)));
}
// --- Formattage variable [...]DCREN
elseif (preg_match('/DCREN$/',$nomVar)) {
return preg_replace('/00\//','01/', $classWdate->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,',',' ').'&nbsp;%';
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,',',' ').'&nbsp;%';
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,',',' ').'&nbsp;%';
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,',',' ').'&nbsp;%';
else return number_format($MARCHEPARTEVOL,3,',',' ').' %';
}
// --- Formattage variable [...]MARCHE
elseif (preg_match('/MARCHE$/', $nomVar)) {
if ($MARCHE<10000) return number_format($MARCHE,0,',',' ').'&nbsp;&euro;';
elseif ($MARCHE<1000000) return number_format($MARCHE/1000,0,',',' ').'&nbsp;K&euro;';
elseif ($MARCHE<1000000000) return number_format($MARCHE/1000000,0,',',' ').'&nbsp;M&euro;';
else return number_format($MARCHE/1000000000,0,',',' ').' milliards d\'&euro;';
if ($MARCHE<10000) return number_format($MARCHE,0,',',' ').' &euro;';
elseif ($MARCHE<1000000) return number_format($MARCHE/1000,0,',',' ').' K&euro;';
elseif ($MARCHE<1000000000) return number_format($MARCHE/1000000,0,',',' ').' M&euro;';
else return number_format($MARCHE/1000000000,0,',',' ')." milliards d'&euro;";
}
// --- Formattage variable [...]MARCHE
elseif (preg_match('/MARCHEp$/', $nomVar)) {
if ($MARCHEp<10000) return number_format($MARCHEp,0,',',' ').'&nbsp;&euro;';
elseif ($MARCHEp<1000000) return number_format($MARCHEp/1000,0,',',' ').'&nbsp;K&euro;';
elseif ($MARCHEp<1000000000)return number_format($MARCHEp/1000000,0,',',' ').'&nbsp;M&euro;';
else return number_format($MARCHEp/1000000000,0,',',' ').' milliards d\'&euro;';
if ($MARCHEp<10000) return number_format($MARCHEp,0,',',' ').' &euro;';
elseif ($MARCHEp<1000000) return number_format($MARCHEp/1000,0,',',' ').' K&euro;';
elseif ($MARCHEp<1000000000)return number_format($MARCHEp/1000000,0,',',' ').' M&euro;';
else return number_format($MARCHEp/1000000000,0,',',' ')." milliards d'&euro;";
}
// --- Formattage variable [...]MARCHEp
elseif (preg_match('/^CA_Y\[(.*)\]/U', $nomVar, $matches2)) {
return number_format($CA_Y[$matches2[1]]/1000,0,',',' ').' K&euro;';
}
// --- Formattage variable CA_Y[*]
elseif (preg_match('/^RCAI_Y\[(.*)\]/U', $nomVar, $matches2)) {
return number_format($RCAI_Y[$matches2[1]]/1000,0,',',' ').' K&euro;';
}
// --- Formattage variable [...]_MT || [...]_TAUX
elseif (preg_match('/(_COEF|_TAUX)$/', $nomVar)) {
$strTmp=eval("return $valeur;");
return number_format($strTmp,2,',','').'&nbsp;%';
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,',',' ').'&nbsp;%';
else return number_format($SCOREDEFTAUX,3,',',' ').' %';
}
// --- Formattage variable BILANANNEE
elseif (preg_match('/BILANANNEE$/', $nomVar)) {
return $BILANANNEE;
}
@ -482,6 +516,7 @@ function format($matches)
$strRetour='$'.$matches[1];
$strUnite='';
// --- Moyenne
if (preg_match("/\{MOY\(R\[(\d+)\],(\d+)\)/Ui", $strRetour, $matches2)) {
$tmpRatioId=$matches2[1]*1;
$tmpAnnees =$matches2[2]*1;
@ -494,9 +529,13 @@ function format($matches)
elseif ($iMoy==4) $valeur+=$Rp4[$tmpRatioId];
}
return formatRatio('', $valeur/$tmpAnnees, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']));
} elseif (preg_match('/\{GRAPH\((.*)\)\}/Ui', $strRetour, $matches2)) {
}
// --- Graphique
elseif (preg_match('/\{GRAPH\((.*)\)\}/Ui', $strRetour, $matches2)) {
return $matches[1];
} elseif (preg_match('/\$\{(\+|!|)(Rp4|Rp3|Rp2|Rp|Rs|Rsp|Rap|Ra|Rdiff|Revolp2|Revolp|Revol|R|regR)\[(\d+)\]\}/Ui', $strRetour, $matches2)) {
}
// --- 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='+';
@ -539,11 +578,14 @@ function format($matches)
elseif ($tmpRatio=='regR')
return formatRatio($regR, $tmpRatioId, strtoupper($tabFormulesRatios[$tmpRatioId]['unite']), $forceSigne);
} elseif (preg_match('/\$\{(.*)\((\d+)\)\}/Ui', $strRetour, $matches2)) {
}
// --- Valeur
elseif (preg_match('/\$\{(.*)\((\d+)\)\}/Ui', $strRetour, $matches2)) {
$tmpVar=$matches2[1];
$tmpVarLen=$matches2[2]*1;
return formatValeur('$'.$tmpVar, $tmpVarLen);
} else {
}
else {
return formatValeur($strRetour);
}
@ -1120,15 +1162,11 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$CABILAN=$R[6];
/**
* Tableau des ratios secteurs
* Requete BDD
*/
// 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 (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];
@ -1191,10 +1229,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
}
}
// Pour la comparaison
/** @todo
//MARCHEVOLUMEVOL // Le % d'évolution du volume
**/
$MARCHE=$Rtot[0][5]; // Taille du marché en ME
$MARCHEp=$Rtot[1][5]; // Taille du marché précédent en ME
@ -1217,7 +1251,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['regression']=microtime(true);
/** Détection fine de l'état de fermeture éventuel à l'INSEE **/
// --- 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);
@ -1225,22 +1259,28 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$tabModif=$tabTmp[0];
$ETATINSEE_MMAA=substr($tabModif['insDATEVE'],0,7);
switch(''.$tabModif['insEVE']) {
case '400': // Suppression d'un double
$ACTIFINSEE=false; // On force la désactivation
// Suppression d'un double
case '400':
$ACTIFINSEE=false;
$ETATINSEE='SUPD';
break;
case '410': // Cessation juridique de l'entreprise
// Cessation juridique de l'entreprise
case '410':
if (!$ACTIFINSEE) $ETATINSEE='JURF';
break;
case '420': // Absence d'activité de l'entreprise (cessation économique de l.entreprise)
case '425': // Absence d'activité d'une entreprise suite à une mise à jour au répertoire //
// 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;
case 'MPF': // Présumé Fermé
$ETATINSEE='PFER'; // Présumé fermé
// Présumé Fermé
case 'MPF':
$ETATINSEE='PFER';
break;
case 'MNP': // NPAI ?
$ETATINSEE='NPAI'; // Au moins un NPAI
// NPAI
case 'MNP':
$ETATINSEE='NPAI';
break;
}
}
@ -1368,7 +1408,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$nmp3=$tabBilan[3]['DUREE_MOIS'];
$nmp4
**/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bilans manquant", "$lastDepot, $nbMoisMax, ".$depot['dateEffet'].", $ANNONCEBODCMANQDATE");
$ANNONCEBODCMANQDATE=date('Y-m-d', mktime(0, 0, 0, $classWdate->dateT('Y-m-d', 'm', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'd', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
$ANNONCEBODCMANQ_AA=substr($ANNONCEBODCMANQDATE,0,4);
}
@ -1381,9 +1420,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
// Publications régulieres et 12 mois identiques
if ( ($nbMoisBilDate+1) == $nbMoisBilCumul
|| $nbMoisBilDate == $nbMoisBilCumul
|| ($nbMoisBilDate-1) == $nbMoisBilCumul ) {
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));
@ -1991,7 +2028,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$RJMERE=$RJFILLE=false;
$SITUACT=$NICMERE=$SIRENMERE=$SIRETMERE=$NOMMERE='';
$lienM = new MLiens2($siren, 'siren');
$lienM = new SdMetier_Liens_Base($siren, 'siren');
//Actionnaire
$tabA = $lienM->getActionnaires(null, true);
@ -2057,9 +2094,8 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['participations']=microtime(true);
$tabBil=array();
if ($NBBILAN == 0)
{
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
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;
@ -2075,8 +2111,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
else $NOTECAP20=19;
}
}
else
{
else {
$numBil = $i = 0;
foreach ($tabBilan as $item)
{
@ -2261,7 +2296,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
for($iTmp=1; $iTmp<7; $iTmp++)
$strNote.=$tabTmp[$iTmp]." : ".$numerateur[$iTmp].'/'.$denominateur[$iTmp].'='.$note[$iTmp].' (Borné à '.$noteB[$iTmp].')'.EOL;
$strNote.="Note Financière=$noteFin Conan Holder=$scoreConanH Afdcc1=$scoreAfdcc1 Afdcc2=$scoreAfdcc2note (Classe $scoreAfdcc2) Z=$scoreZ CCF=$valeurCCF ($pDef36) Altman=$scoreAltman AltmanCote=$scoreAltmanB".EOL.print_r($tabInfosNotation,true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Structure Score Financier", $strNote);
}
}
else
@ -2285,7 +2319,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// Au cas ou !
if ($noteSolvabilite>90) $noteSolvabilite=90;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Debug Solva1=$noteSolvabilite/100", '...');
$SCORECONF=100;
@ -2355,7 +2388,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['getDirigeants'] = microtime(true);
//debugLog('I', 'SCOREDIR = '. print_r($dirs,1), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$DIR_NB=$NBDIRLIENS=$NBDIRSCI=$NBDIRSCIADR=0;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeants", print_r($dirs, true));
if (count($dirs) > 0 ) {
foreach ($dirs as $nb => $dir)
{
@ -2391,7 +2423,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
[Ville] => LA MEIGNANNE
*/
$nbFctDirSciAdr++;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $DIR_NB", print_r($tabDiri, true).EOL.print_r($tabIdentite,true));
}
}
}
@ -2407,8 +2438,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// Nombre de SCI maximum dirigé par un des dirigeants à l'adresse (inclus dans les autres NBDIR...)
if ($nbFctDirSciAdr>$NBDIRSCIADR) $NBDIRSCIADR=$nbFctDirSciAdr;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $DIR_NB", print_r($tabDir, true));
}
switch ($dir['Cinf']) {
@ -2462,36 +2491,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
$timer['traitementDirigeants'] = microtime(true);
/** On vérifie s'il y a un cuteoff
* @todo Attention, si modif après dateInsert/dateUpdate (procol, impayé, etc...) ne plus
* prendre en compte le cuteoff
*
**/
$ENQUETE='';
$tabTmp=$iDb->select('jo.scores_cutoff', 'encours, scoreSolv, scoreDir, scoreConf, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate', "siren=$siren", INDISCORE_DEBUG, MYSQL_ASSOC);
$timer['scores_cutoff'] = microtime(true);
if (isset($tabTmp[0]['encours'])) {
if($tabTmp[0]['dateUpdate']>$tabTmp[0]['dateInsert']) {
$dateMaj=$tabTmp[0]['dateUpdate'];
} else {
$dateMaj=$tabTmp[0]['dateInsert'];
}
if ($classWdate->nbMoisEntre($dateMaj, date('Ymd'))<=$ENQUETELIM) {
$encoursForce=$tabTmp[0]['encours'];
if ($tabTmp[0]['scoreConf']<>null) $SCORECONF=$tabTmp[0]['scoreConf'];
if ($SCORECONF>$ENQUETEMAXI) $SCORECONF=$ENQUETEMAXI;
if ($tabTmp[0]['scoreDir'] <>null) $SCOREDIRI=$tabTmp[0]['scoreDir'];
if ($SCOREDIRI>$ENQUETEMAXI) $SCOREDIRI=$ENQUETEMAXI;
if ($tabTmp[0]['scoreSolv']<>null) $ENQUETE=$noteSolvabilite=$tabTmp[0]['scoreSolv'];
if ($ENQUETE>$ENQUETEMAXI) $ENQUETE=$ENQUETEMAXI;
// Permet de supprimer la prise en compte de la procol
if ($ENQUETE>0) {
$tabIdentite['SituationJuridique']=$ANNONCEPC='';
$ANNONCELJ=$ANNONCERJ=$ANNONCESV=$PLANMODIF=$PLAN=$ANNONCEPC_OBS=$ELIMINE=false;
}
}
}
/** Affichage des informations de paiement dans le score **/
$COTEOK_MMAA=$IMPAYE_MMAA=$PRIVILEGES_MMAA=$RISQUEGROUPE_MMAA='';
$DEFAUT_MMAA=$LCASSUR_MMAA=$RISQUEIMPAYE_MMAA=$CSFACTO_MMAA='';
@ -2509,7 +2508,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$DELAIPAY=$iFacto->DELAIPAY;
$DELAIPAYp=$iFacto->DELAIPAYp;
$DELAIPAY_MMAA=$iFacto->DELAIPAY_MMAA;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Facto", print_r($infoFacto, true).EOL."Profil payeur='$libProfilPayeur'".EOL);
if (isset($infoFacto[0])) {
$nivRisquePaiement=$infoFacto[0]['risque'];
$MODIFPAIDATE=$infoFacto[0]['DateEven'];
@ -2686,9 +2684,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
else $noteSolvMax=56;
}
//ICI//
//$noteSolvabilite
if ($tabIdentite['SituationJuridique']=='PL') {
$SCOREDIRI-=20;
$SCORECONF+=10;
@ -2701,69 +2696,87 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
if ($noteSolvabilite>$noteSolvMax) $noteSolvabilite=$noteSolvMax;
$timer['privileges']=microtime(true);
/**/
$MODIFDERDATE=$MODIFINSEEDATE;
// Rcs
if ($MODIFRNCSDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFRNCSDATE;
// Annonces
if ($ANNONCEDERDATE>$MODIFDERDATE) $MODIFDERDATE=$ANNONCEDERDATE;
// Bilans
/** @todo if ($MODIFBILDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFBILDATE;**/
// Paiements
if ($MODIFPAIDATE>$MODIFDERDATE) $MODIFDERDATE=$MODIFPAIDATE;
/** Commentaire Dirigeance **/
if ($SCOREDIRI>=70)
$analyseDir='L\'étude de la dirigeance ne relève aucun problème.';
elseif ($SCOREDIRI>=40)
$analyseDir='L\'étude de la dirigeance retient notre attention.';
elseif ($SCOREDIRI>0)
$analyseDir='L\'étude de la dirigeance attire toute notre attention.';
else {
$analyseDir='L\'étude de la dirigeance révèle des anomalies.';
$SCOREDIRI=0;
$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, 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'];
}
if ($classWdate->nbMoisEntre($dateMaj, date('Ymd'))<=$ENQUETELIM) {
$encoursForce=$tabTmp[0]['encours'];
if ($tabTmp[0]['scoreConf']<>null) $SCORECONF=$tabTmp[0]['scoreConf'];
if ($SCORECONF>$ENQUETEMAXI) $SCORECONF=$ENQUETEMAXI;
if ($tabTmp[0]['scoreDir'] <>null) $SCOREDIRI=$tabTmp[0]['scoreDir'];
if ($SCOREDIRI>$ENQUETEMAXI) $SCOREDIRI=$ENQUETEMAXI;
if ($tabTmp[0]['scoreSolv']<>null) $ENQUETE=$noteSolvabilite=$tabTmp[0]['scoreSolv'];
if ($ENQUETE>$ENQUETEMAXI) $ENQUETE=$ENQUETEMAXI;
// Permet de supprimer la prise en compte de la procol
if ($ENQUETE>0) {
$tabIdentite['SituationJuridique']=$ANNONCEPC='';
$ANNONCELJ=$ANNONCERJ=$ANNONCESV=$PLANMODIF=$PLAN=$ANNONCEPC_OBS=$ELIMINE=false;
}
}
}
/** Commentaire Conformité **/
if ($tabIdentite['SituationJuridique']=='P'){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise est en procédure collective';
} elseif ($tabIdentite['SituationJuridique']=='D'){
$noteSolvabilite=$SCORECONF=$SCOREDIRI=0;
$analyseConf='L\'entreprise est dissoute';
} elseif ($tabIdentite['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 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 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';
// --- Commentaire Conformité
if ($tabIdentite['SituationJuridique']=='P') {
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
$analyseConf = "L'entreprise est en procédure collective";
} elseif ($tabIdentite['SituationJuridique']=='D') {
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
$analyseConf = "L'entreprise est dissoute";
} elseif ($tabIdentite['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;
}
/** CA Moyen par salarié pour un secteur donné
**/
/*$tabTmp=$iDb->select('jo.ratios_secteurs', 'id, naf5, annee, SUM(montant), SUM(nombre), SUM(montant)/SUM(nombre) AS moyenne', "naf5='$naf' AND id=267 AND ANNEE>(SELECT MAX(annee) FROM ratios_secteurs WHERE naf5='$naf' AND id=267)-2 GROUP BY id, naf5", true, MYSQL_ASSOC);
$caSecteur=round($tabTmp[0]['moyenne']*1000);
// Encours moyen secteur * nb salariés
if ($EFFECTIF>0) $CAESTIME=$caSecteur*$EFFECTIF;
else $CAESTIME=$caSecteur;
*/
// --- 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;
@ -2774,45 +2787,45 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// Ou à l'encours ini CS car pas d'informations négatives
if ($encoursCS>$encoursIni) $encoursIni=$encoursCS;
$ENCOURS=$encoursIni;
$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 ($R[63] > 0) {
$encoursTR=$R[63]/72;
}
if ($noteSolvabilite>=40) {
if ($noteSolvabilite >= 40) {
if ($HOLDING) {
// Cas des Holding
$ENCOURS=$tabIdentite['Capital']/12;
$ENCOURS = $tabIdentite['Capital'] / 12;
if (@$tabBil[0]['FondsPr']>0) {
$encoursFP=(($tabBil[0]['FondsPr'])/72);
if ($encoursFP>$ENCOURS) $ENCOURS=$encoursFP;
} elseif ($encoursTR>$ENCOURS) $ENCOURS=$encoursTR;
$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
**/
// 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 ? si FP<0
**/
// 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 {
/** Détermination de l'encours sans bilans
**/
// Encours estimé = CA Estimé / 72
// Encours estimé = CA Estimé / 72 - sans bilans
if ($CAESTIME>0) $encoursEstime=$CAESTIME/36;
}
/** Plafond des encours en fonction de la note / 100
**/
// Plafond des encours en fonction de la note / 100
if ($noteSolvabilite> 65) $plafond=500000;
elseif ($noteSolvabilite> 60) $plafond=350000;
elseif ($noteSolvabilite> 55) $plafond=250000;
@ -2831,9 +2844,9 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
// 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) )
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.';
@ -2841,12 +2854,13 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
// 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;
if ($encoursEstime > 0 && $ENCOURS > 0) {
$ENCOURS = ($ENCOURS + $encoursEstime) / 2;
}
// Si l'encours est forcé, on en tiens compte !
if ($encoursForce<>NULL)
$ENCOURS=$encoursForce;
if ($encoursForce != null) {
$ENCOURS = $encoursForce;
}
switch ($FJUR2) {
case 11:
case 12:
@ -3040,7 +3054,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
if ($ANNONCEPC<>'') {
// Intervenants
$tabInter = $iRncs->getIntervenants($SIREN);
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : INTERVENANTS", print_r($tabInter,true));
$ANNONCEPC_INT1_TIT=$tabInter[0]['admfonction']; // Titre de l'intervenant
$ANNONCEPC_INT1=$tabInter[0]['admnom']; // NOM Prénom et adresse complète
$ANNONCEPC_INT2_TIT=$tabInter[1]['admfonction'];
@ -3171,9 +3184,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$RISQUEACTBASSIN[]=$tabBassins[$tabArret['codeBassin']]; // Libellé risque lié à la localisation l'un des etablissements (INNONDATION, TREMBLEMENT DE TERRE etc..)
}
$RISQUEACTBASSIN=trim(implode(', ', $RISQUEACTBASSIN)); // Le ou les libellés des bassins hydrographiques concernés
/*@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bassins", print_r($tabTmp, true).EOL.
$strCom.EOL.
print_r($tabBassins, true).EOL);*/
$timer['risquesBassins']=microtime(true);
/** INFOS Orias **/
@ -3194,14 +3204,11 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
$timer['orias']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 1",'');
/** Liste des marques **/
$MARQUENB_INT=0; // Nombre de marques déposées à l'international
$MARQUENB_EUR=0; // Nombre de marques déposées en EUROPE
$MARQUENB_FR=0; // Nombre de marques déposées en FRANCE
$tabMarques['WW']=$tabMarques['EU']=$tabMarques['FR']=array();
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marques", print_r($ret,true));
$iMarque = new MMarques($iDb);
$ret = $iMarque->getMarques($siren);
if ($ret!==false && count($ret)>0) {
@ -3229,7 +3236,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$timer['marques']=microtime(true);
/** Marchés publics **/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marchés Publiques", print_r($ret,true));
$MARCHEPUBLIC3_NB=0; // Nombre de marchés public / 3 dernières années
$MARCHEPUBLIC3_MT=0; // Montant cumulé des marchés public / 3 dernières années
$MARCHEPUBLICDER_OBJ=''; // Objet du dernier MP remporté
@ -3469,8 +3475,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
if ($tabTmp)
$ACTIVREG=$tabTmp['libActivite']; // Libellé de l'activité règlementé
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 3",'');
$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
@ -3636,14 +3640,12 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
} else
$strTmp='ERREUR DE FORMULE LORS DE LA GENERATION DU COMMENTAIRE no '.$idxC;
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace10,$idxC=$strTmp2", 'ici');
//@eval('\$strTmp="'.$strTmp2.'";');
$strTmp=eval("return \"$strTmp2\";");
$tabComment[$idxC]=preg_replace('/<\/i>(?:<br\/>)<\/i>/i','</i>', $debLigne.prepareString($strTmp).$finLigne);//." ($idxC, $ordre)";
if (substr($strTmp,0,17)=='ERREUR DE FORMULE') {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : $strTmp","Formules : ".EOL.$strTmp2);
}
// echo " ($ordre)<br/>";
$tableauPre=$tableau;
@ -3653,7 +3655,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
if ($tableau) $tabComment[$idxC].='</table>';
$timer['finIndiscore']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace20", 'ici');
} // Fin Génération des commentaires
@ -3711,7 +3712,6 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
$duree=round($time-$timeDeb,3);
$strTime.="---------------------\nTOTAL : $duree secondes\n";
file_put_contents('time.log', "Indiscore sur $siren : Durées ".$strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
//sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com', "Indiscore sur $siren : Durées ".ENV, $strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
}
// EntActiveRCS
@ -3870,7 +3870,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
else $tabRet['TendanceIndiscore']='Stable';
}
//Scores identique au précedent, simple mise à jour
// --- Scores identique au précedent, simple mise à jour
if ($indiScore==$indiScorePre && $ENCOURS==$encoursPre && $dateScore<>0 )
{
$tabUpdate2 = array('sourceModif'=>$sourceModif, 'nbModifs'=>$nbModifs);
@ -3879,7 +3879,7 @@ function calculIndiScore($siren, $nic=0, $accesDist=false, $cycleClient=2, $mail
}
}
else {
//Calcul de l'effectif réel
// --- 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 ) {

View File

@ -992,7 +992,7 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
e.actif,
e.ape_etab,
e.ape_entrep
FROM dirigeants d, etablissements e LEFT OUTER JOIN tabPays ON codePaysInsee = IF(adr_dep=99,adr_com,null), bodacc_fonctions l
FROM jo.dirigeants d, jo.etablissements e LEFT OUTER JOIN jo.tabPays ON codePaysInsee = IF(adr_dep=99,adr_com,null), jo.bodacc_fonctions l
WHERE d.fonction_code=l.codeFct AND d.id IN (";
$i = 0;
@ -1002,7 +1002,7 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
$i++;
}
$requeteDB .= ") AND e.id = (";
$requeteDB .= "SELECT tmp.id FROM etablissements tmp ";
$requeteDB .= "SELECT tmp.id FROM jo.etablissements tmp ";
$requeteDB .= "WHERE tmp.siren=d.siren ORDER by tmp.actif DESC, tmp.siege DESC LIMIT 1";
$requeteDB .= ") ORDER BY e.actif DESC, e.siege DESC, e.rang DESC";
@ -1012,6 +1012,10 @@ function rechercheDir(&$formR, $deb, $nbRep, $max)
debugln("requeteDB='$requeteDB'");
$resDB = $gDatabaseJO->query($requeteDB);
if (!$resDB) {
file_put_contents(LOG_PATH . '/mysql.log', $gDatabaseJO->error, FILE_APPEND);
}
// Reponse
$ligneDir = array();

View File

@ -0,0 +1,542 @@
<?php
class SdMetier_Liens_Base
{
/**
* Company Reference id
* @var int
*/
protected $idRef = null;
/**
* Company SIREN
* @var string
*/
protected $siren = null;
/**
* @var Zend_Db_Adapter_Abstract
*/
protected $db;
/**
* Array to list id find during list of childrens
* @var array
*/
protected $findId = array();
/**
* Coutry List ISO3 => Label
* @var array
*/
protected $country = null;
/**
* Stop the process to looks for company group head
* @var boolean
*/
public $stopAtFirstIsin = false;
/**
* Stop the process to looks for physical person
* @var boolean
*/
public $stopAtPP = true;
/**
* Databas table name
* @var string
*/
protected $_schema = 'jo';
/**
*
* @param string $id
* @param string $type ref|siren
* @param Zend_Db_Adapter $db
* @throws SoapFault
*/
public function __construct($id, $type = 'ref', $db = null)
{
//Get defaut database adapter
if( $db === null ) {
$this->db = Zend_Db_Table_Abstract::getDefaultAdapter();
} else {
$this->db = $db;
Zend_Db_Table_Abstract::setDefaultAdapter($db);
}
//Get Id
if ( $type == 'siren' ) {
$this->siren = $id;
$refM = new Application_Model_JoLiensRef();
$sql = $refM->select()->where('siren=?', $id)->where('dateSuppr=0');
$result = $refM->fetchRow($sql);
if ( $result !== null ) {
$this->idRef = $result->id;
}
} else {
$this->idRef = $id;
}
}
/**
* Retourne les actionnaires
* @param int $id
* @param boolean $actif
* @return array Tableau d'actionnaires
*/
public function getActionnaires($id = null, $actif = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
$liens = array();
if ( null === $id ) {
return $liens;
}
try {
$sql = $this->db->select()
->from(array('l'=>$this->_schema.'.liens2'),
array('id', 'idAct', 'PDetention', 'Pvote', 'MajMin', 'idPar',
'dateEffetLien', 'dateInsert', 'dateUpdate'))
->where('idPar=?', $id)
->join(array('r'=>$this->_schema.'.liensRef'), 'l.idAct=r.id',
array('LPAD(siren, 9, 000000000) AS siren','PpPm', 'RS', 'sigle', 'civilite', 'nom', 'prenom', 'nom_usage',
'naissance_date', 'naissance_dept_pays', 'naissance_lieu', 'nat',
'adresse_num', 'adresse_btq', 'adresse_codvoie', 'adresse_libvoie',
'adresse_comp', 'adresse_cp', 'adresse_ville', 'adresse_pays',
'idLoc1Type', 'idLoc1Num', 'idLoc2Type', 'idLoc2Num', 'idLoc3Type', 'idLoc3Num',
))
->order('PDetention DESC');
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('l.actif=?',0);
} else {
$sql->where('l.actif=?',1);
}
}
//Don't display deleted - anomaly
$sql->where('l.dateSuppr=?', '0000-00-00 00:00:00');
$liens = $this->db->fetchAll($sql, null, Zend_Db::FETCH_OBJ);
} catch (Zend_Db_Exception $e) {
throw new Exception(__METHOD__ . ': ' . $e->getMessage());
}
return $liens;
}
/**
* Retourne les participations
* @param int $id
* @param boolean $actif
* @return array Tableau des participations
*/
public function getParticipations($id = null, $actif = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
if ( false === $actif ) {
$actif = 0;
} else {
$actif = 1;
}
$liens = array();
if ( null === $id ) {
return $liens;
}
try {
$sql = $this->db->select()
->from(array('l'=>$this->_schema.'.liens2'),
array('id', 'idAct', 'PDetention', 'Pvote', 'MajMin', 'idPar',
'dateEffetLien', 'dateInsert', 'dateUpdate'))
->where('idAct=?', $id)
->join(array('r'=>$this->_schema.'.liensRef'), 'l.idPar=r.id',
array('LPAD(siren, 9, 000000000) AS siren','PpPm', 'RS', 'sigle', 'civilite', 'nom', 'prenom', 'nom_usage',
'naissance_date', 'naissance_dept_pays', 'naissance_lieu', 'nat',
'adresse_num', 'adresse_btq', 'adresse_codvoie', 'adresse_libvoie',
'adresse_comp', 'adresse_cp', 'adresse_ville', 'adresse_pays',
'idLoc1Type', 'idLoc1Num', 'idLoc2Type', 'idLoc2Num', 'idLoc3Type', 'idLoc3Num',
))
->order('PDetention DESC');
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('l.actif=?',0);
} else {
$sql->where('l.actif=?',1);
}
}
//Don't display deleted - anomaly
$sql->where('l.dateSuppr=?', '0000-00-00 00:00:00');
$liens = $this->db->fetchAll($sql, null, Zend_Db::FETCH_OBJ);
} catch (Zend_Db_Exception $e) {
throw new Exception(__METHOD__ . ': ' . $e->getMessage());
}
return $liens;
}
/**
* Fonctions de direction
* @param boolean $actif
* @return Zend_Db_Table_Rowset_Abstract
*/
public function getDirections($actif = null)
{
if ( null === $this->siren ) {
$refM = new Application_Model_JoLiensRef();
$rows = $refM->find($this->idRef);
$siren = str_pad($rows->current()->siren, 9, '0', STR_PAD_LEFT);
} else {
$siren = $this->siren;
}
$result = array();
if ( null !== $siren && intval($siren) != 0 )
{
try {
$directionsM = new Application_Model_JoRncsDirigeants();
$sql = $directionsM->select()->from($directionsM, array(
'LPAD(siren, 9, 000000000) AS siren','raisonSociale', 'dirSiren', 'dirRS', 'civilite', 'nom',
'prenom', 'naissance_date', 'naissance_lieu', 'fonction_code', 'fonction_lib'
))->where("typeDir IN ('PM', 'PP')")->where('dirSiren=?', $siren);
//Actif / Inactif
if ( null !== $actif ) {
if ( false === $actif ) {
$sql->where('actif=?',0);
} else {
$sql->where('actif=?',1);
}
}
$sql->order('fonction_code DESC');
$sql->order('raisonSociale ASC');
$result = $directionsM->fetchAll($sql);
} catch (Zend_Db_Exception $e) {
throw new Exception(__METHOD__ . ': ' . $e->getMessage());
}
}
return $result;
}
/**
* Retourne la maison mère
* @param int $id
* Id de la fiche de départ
* @param int $detention
* Niveau de détention (Une filiale est une entreprise détenue à plus de 50% par une autre entreprise)
* @return int
*/
public function getHead($id = null, $detention = 0)
{
if ( null === $id ) {
$id = $this->idRef;
}
//Add ID to the list of known
$this->findId[] = $id;
//Through the list
$liens = $this->getActionnaires($id, true);
//Find the following up entity
if ( count($liens)>0 ) {
foreach ( $liens as $item ) {
//Don't through again and again
if ( in_array($item->idAct, $this->findId) ) {
return $item->idAct;
} elseif ( $this->stopAtFirstIsin === true && !empty($item->isin)) {
break;
}
//Remove physical person
elseif ( $item->PpPm == 'PP' && $this->stopAtPP ) {
continue;
}
//Same id
elseif ( $item->idAct == $id ) {
return $id;
}
//PDetention>50
elseif ( $item->PDetention > 50 && $item->idAct > 1000 ) {
return $this->getHead($item->idAct, $detention);
}
//MajMin=+
elseif ( $item->PDetention > $detention && $item->MajMin == '+' && $item->idAct > 1000 ) {
return $this->getHead($item->idAct, $detention);
}
//--
elseif ( $item->PDetention > $detention && $item->idAct > 1000 ) {
return $this->getHead($item->idAct, $detention);
}
}
}
return $id;
}
/**
* Retourne les éléments identitaire présent dans lienRef
* @param string $id
* @return Zend_Db_Table_Rowset_Abstract
*/
public function getIdentity($id = null)
{
if ( null === $id ) {
$id = $this->idRef;
}
$refM = new Application_Model_JoLiensRef();
$row = $refM->find($id);
if (null !== $row) {
return $row->current();
}
return null;
}
/**
* Retourne l'arborescence pour les groupes
* @param int $pctMin
* @param int $nbNiveaux
* @return array
*/
public function getTree( $pctMin=33, $nbNiveaux=10 )
{
//Get identity to stop at isin
$itemWithIsin = null;
if ( $this->stopAtFirstIsin === true ) {
$id = $this->idRef;
$identity = $this->getIdentity($this->idRef);
if ( !empty($identity->isin) ) {
$itemWithIsin = true;
}
}
if ( $itemWithIsin !== true ) {
//Récupération de la maison mère
$id = $this->getHead(null, 50);
//Informations de la maison mère
$identity = $this->getIdentity($id);
}
$this->findId = array();
$this->findId[] = $identity->id;
$nom = $identity->RS;
if ( $identity->nom != '') {
$nom = $identity->civilite.' '.$identity->nom.' '.$identity->prenom;
}
if ( $this->country === null ) {
$this->country = $this->getCountry();
}
$pays = $identity->adresse_pays;
if ( array_key_exists($identity->adresse_pays, $this->country) ) {
$pays = $this->country[$identity->adresse_pays];
}
//Retour
$tabRet = array (
'id' => $identity->id,
'name' => $nom,
'siren' => str_pad($identity->siren, 9, '0', STR_PAD_LEFT),
'pmin' => $item->PDetention,
'pays' => $pays,
'children' => $this->getTreeRecursive($identity->id, $pctMin, 1, $nbNiveaux),
);
return $tabRet;
}
/**
* Retourne un sous élement de l'arborescence pour les groupes
* @param int $id
* @param int $pctMin
* @param int $niveau
* @param int $nbNiveaux
* @return array
*/
public function getTreeRecursive( $id, $pctMin=33, $niveau=0, $nbNiveaux=10 )
{
if ( $niveau > $nbNiveaux ) return array();
$niveau++;
$tabRet = array();
$participations = $this->getParticipations($id, true);
if ( count($participations)>0 ) {
foreach ( $participations as $item ) {
if ( $item->PDetention > $pctMin ) {
$identity = $this->getIdentity($item->idPar);
$nom = $identity->RS;
if ( $identity->nom != '') {
$nom = $identity->civilite.' '.$identity->nom.' '.$identity->prenom;
}
if ($this->country === null) {
$this->country = $this->getCountry();
}
$pays = $identity->adresse_pays;
if ( array_key_exists($identity->adresse_pays, $this->country) ) {
$pays = $this->country[$identity->adresse_pays];
}
$data = array (
'id' => $identity->id,
'name' => $nom,
'siren' => str_pad($identity->siren, 9, '0', STR_PAD_LEFT),
'pmin' => $item->PDetention,
'pays' => $pays,
'children' => array(),
);
//Pour éviter d'avoir des boucles infinis
if ( !in_array($identity->id, $this->findId) ){
$this->findId[] = $identity->id;
$data['children'] = $this->getTreeRecursive($identity->id, $pctMin, $niveau, $nbNiveaux);
}
$tabRet[] = $data;
}
}
}
return $tabRet;
}
/**
*
* @return multitype:NULL
*/
public function getCAC40()
{
$sql = "SELECT isin, nom, MAX(`date`) AS dateMAJ FROM sdv1.bourse_listes WHERE lstCode='xcac40p' GROUP BY lstCode, isin HAVING MAX(`date`) ORDER BY dateMAJ DESC;";
$result = $this->db->query($sql);
$output = array();
foreach ( $result as $item ) {
$output[] = $item->isin;
}
return $output;
}
/**
*
* @param number $pctMin
* @return array
*/
public function getGroupeCAC40( $pctMin=50 )
{
$listeIsin = $this->getCAC40();
$isin = implode(",",$listeIsin);
$refM = new Application_Model_JoLiensRef();
$sql = $refM->select()
->where("idLoc1Type=63")->where("idLoc1Num IN (?)", $isin)
->orWhere("idLoc2Type=63")->where("idLoc2Num IN (?)", $isin)
->orWhere("idLoc3Type=63")->where("idLoc3Num IN (?)", $isin);
$result = $refM->fetchAll($sql);
$this->findId = array();
$output = array();
if ( $result->count()>0 ) {
foreach ( $result as $item ) {
$output = $output + $this->getListeGroupeCAC40($item->id, $pctMin);
}
}
return $output;
}
/**
*
* @param int $id
* @param number $pctMin
* @return array
*/
public function getListeGroupeCAC40($id, $pctMin=50 )
{
$participations = $this->getParticipations($id, true);
$output = array();
if ( count($participations)>0 ) {
foreach ( $participations as $item ) {
if ( $item->PDetention > $pctMin ) {
$identity = $this->getIdentity($item->idPar);
if ( intval($identity->siren)!=0 ) {
$output[] = $identity->siren;
}
if ( !in_array($identity->id, $this->findId) ){
$this->findId[] = $identity->id;
$output = $output + $this->getListeGroupeCAC40($identity->id, $pctMin);
}
}
}
}
return $output;
}
/**
*
* @param number $pctMin
* @return boolean
*/
public function isInGroupeCAC40( $pctMin=50 )
{
//Si pas d'actionnaires => false
if ( count($this->getActionnaires()) == 0 ) {
return false;
}
$listeInGroupeCAC40 = $this->getGroupeCAC40($pctMin);
if ( in_array($this->siren, $listeInGroupeCAC40) ) {
return true;
}
return false;
}
/**
* Get all countries
*/
protected function getCountry()
{
$countryM = new Application_Model_JoTabPays();
$sql = $countryM->select()
->from($countryM, array('codPays3', 'libPays'))
->where('codPays3 IS NOT NULL');
$rows = $countryM->fetchAll($sql);
if ( $rows !== null ) {
$data = array();
foreach($rows as $item) {
$data[$item->codPays3] = $item->libPays;
}
return $data;
}
return false;
}
}

View File

@ -2,7 +2,6 @@
require_once 'Metier/partenaires/classMPrivileges.php';
require_once 'Metier/partenaires/classMMarques.php';
require_once 'Metier/scores/classMRegression.php';
require_once 'Metier/partenaires/classMLiens2.php';
require_once 'Metier/scores/classMSolvabilite.php';
require_once 'Metier/scores/classMRatios.php';
require_once 'Metier/scores/classMProjection.php';
@ -15,6 +14,12 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
*/
public $debug = false;
/**
* Enregistrement timer
* @var array
*/
protected $timer = null;
/**
* Connexion de la base de données
* @var object
@ -231,7 +236,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
public function getScoreSecteur($naf5)
{
if (len($naf)<>5) return false;
$tabTmp=$iDb->select( 'jo.scores_surveillance',
$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 ) {
@ -295,16 +300,16 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
if ($signe == '+') {
if ($nombre > 0) {
return '+ '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return '+ '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} elseif ($nombre<0) {
return '- '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return '- '.number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} else {
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
}
} elseif ($signe=='!') {
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format(abs($nombre),$decimales,$sepDec,$sepMil).' '.$unite;
} else {
return number_format($nombre,$decimales,$sepDec,$sepMil).'&nbsp;'.$unite;
return number_format($nombre,$decimales,$sepDec,$sepMil).' '.$unite;
}
}
@ -381,7 +386,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
/**
* Fomattage des variables pour affichage
* Formattage des variables pour affichage
* @param string $var
* @param int $longeur
* @param string $fonction
@ -405,6 +410,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
} else {
$tableZemet = 'ZEMET1994';
}
// Cette variable a un libellé associé
if (isset($this->tabVariables[$tableZemet][$this->RPET.$this->ZEMET]['art'])) {
return $this->tabVariables[$tableZemet][$this->RPET.$this->ZEMET]['art'];
} else {
@ -1385,7 +1391,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$nmp3=$tabBilan[3]['DUREE_MOIS'];
$nmp4
**/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bilans manquant", "$lastDepot, $nbMoisMax, ".$depot['dateEffet'].", $ANNONCEBODCMANQDATE");
$this->ANNONCEBODCMANQDATE=date('Y-m-d', mktime(0, 0, 0, $classWdate->dateT('Y-m-d', 'm', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'd', $depot['dateEffet']), $classWdate->dateT('Y-m-d', 'Y', $depot['dateEffet'])+1));
$this->ANNONCEBODCMANQ_AA=substr($this->ANNONCEBODCMANQDATE,0,4);
}
@ -1398,14 +1403,11 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
// Publications régulieres et 12 mois identiques
if ( ($nbMoisBilDate+1) == $nbMoisBilCumul
|| $nbMoisBilDate == $nbMoisBilCumul
|| ($nbMoisBilDate-1)==$nbMoisBilCumul ) {
if ( ($nbMoisBilDate+1) == $nbMoisBilCumul || $nbMoisBilDate == $nbMoisBilCumul || ($nbMoisBilDate-1)==$nbMoisBilCumul ) {
$this->ANNONCEBODCREGUL=1;
// Annonces BODACC de changement de date d'exercice
$tabDepotCpt = $iInsee->annoncesFilter($companyAnnonces, array(2303));
if (count($tabDepotCpt)>0) $this->ANNONCEBODCREGUL=2;
}
// Pas de publication régulière des comptes
else {
@ -2011,7 +2013,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$this->RJMERE=$this->RJFILLE=false;
$this->SITUACT=$this->NICMERE=$this->SIRENMERE=$this->SIRETMERE=$this->NOMMERE='';
$lienM = new MLiens2($siren, 'siren');
$lienM = new SdMetier_Liens_Base($siren, 'siren');
// Actionnaire
$tabA = $lienM->getActionnaires(null, true);
@ -2077,9 +2079,8 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$timer['participations']=microtime(true);
$tabBil=array();
if ($this->NBBILAN == 0)
{
$noteSolvabilite=round($noteStructure)*5; // La note finale est sur 100
if ($this->NBBILAN == 0) {
$noteSolvabilite = round($noteStructure) * 5; // La note finale est sur 100
/** Pas de bilan mais capital elevé **/
if ($this->ACTIFRNCS && $this->FJURRNCS1>1 && $this->FJURRNCS1<7) {
if ($this->CAPITAL < 9000) $this->NOTECAP20=3;
@ -2095,8 +2096,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
else $this->NOTECAP20=19;
}
}
else
{
else {
$numBil = $i = 0;
foreach ($tabBilan as $item)
{
@ -2281,7 +2281,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
for($iTmp=1; $iTmp<7; $iTmp++)
$strNote.=$tabTmp[$iTmp]." : ".$numerateur[$iTmp].'/'.$denominateur[$iTmp].'='.$note[$iTmp].' (Borné à '.$noteB[$iTmp].')'.EOL;
$strNote.="Note Financière=$noteFin Conan Holder=$scoreConanH Afdcc1=$scoreAfdcc1 Afdcc2=$scoreAfdcc2note (Classe $scoreAfdcc2) Z=$scoreZ CCF=$valeurCCF ($pDef36) Altman=$scoreAltman AltmanCote=$scoreAltmanB".EOL.print_r($tabInfosNotation,true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Structure Score Financier", $strNote);
}
}
else
@ -2305,7 +2304,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
// Au cas ou !
if ($noteSolvabilite>90) $noteSolvabilite=90;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Debug Solva1=$noteSolvabilite/100", '...');
$this->SCORECONF=100;
@ -2375,7 +2373,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$timer['getDirigeants'] = microtime(true);
//debugLog('I', 'SCOREDIR = '. print_r($dirs,1), __LINE__, __FILE__, __FUNCTION__, __CLASS__);
$this->DIR_NB=$this->NBDIRLIENS=$this->NBDIRSCI=$this->NBDIRSCIADR=0;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeants", print_r($dirs, true));
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'])) {
@ -2410,7 +2407,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
[Ville] => LA MEIGNANNE
*/
$nbFctDirSciAdr++;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $this->DIR_NB", print_r($tabDiri, true).EOL.print_r($tabIdentite,true));
}
}
}
@ -2427,7 +2423,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
// Nombre de SCI maximum dirigé par un des dirigeants à l'adresse (inclus dans les autres NBDIR...)
if ($nbFctDirSciAdr>$this->NBDIRSCIADR) $this->NBDIRSCIADR=$nbFctDirSciAdr;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Dirigeant $DIR_NB", print_r($tabDir, true));
}
switch ($dir['Cinf']) {
@ -2481,36 +2476,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
$timer['traitementDirigeants'] = microtime(true);
// --- Cut Off
$this->ENQUETE='';
if ($this->companyEvenDateStop === null) {
$tabTmp = $this->db->select('jo.scores_cutoff',
'encours, scoreSolv, scoreDir, scoreConf, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate',
"siren=$siren", $this->debug, MYSQL_ASSOC);
$timer['scores_cutoff'] = microtime(true);
if (isset($tabTmp[0]['encours'])) {
if($tabTmp[0]['dateUpdate']>$tabTmp[0]['dateInsert']) {
$dateMaj=$tabTmp[0]['dateUpdate'];
} else {
$dateMaj=$tabTmp[0]['dateInsert'];
}
if ($classWdate->nbMoisEntre($dateMaj, date('Ymd'))<=$this->ENQUETELIM) {
$encoursForce=$tabTmp[0]['encours'];
if ($tabTmp[0]['scoreConf']<>null) $this->SCORECONF=$tabTmp[0]['scoreConf'];
if ($this->SCORECONF>$this->ENQUETEMAXI) $this->SCORECONF=$this->ENQUETEMAXI;
if ($tabTmp[0]['scoreDir'] <>null) $this->SCOREDIRI=$tabTmp[0]['scoreDir'];
if ($this->SCOREDIRI>$this->ENQUETEMAXI) $this->SCOREDIRI=$this->ENQUETEMAXI;
if ($tabTmp[0]['scoreSolv']<>null) $this->ENQUETE=$noteSolvabilite=$tabTmp[0]['scoreSolv'];
if ($this->ENQUETE>$this->ENQUETEMAXI) $this->ENQUETE=$this->ENQUETEMAXI;
// Permet de supprimer la prise en compte de la procol
if ($this->ENQUETE>0) {
$tabIdentite['SituationJuridique']=$this->ANNONCEPC='';
$this->ANNONCELJ=$this->ANNONCERJ=$this->ANNONCESV=$this->PLANMODIF=$this->PLAN=$this->ANNONCEPC_OBS=$this->ELIMINE=false;
}
}
}
}
/** Affichage des informations de paiement dans le score **/
$this->COTEOK_MMAA=$this->IMPAYE_MMAA=$this->PRIVILEGES_MMAA=$this->RISQUEGROUPE_MMAA='';
$this->DEFAUT_MMAA=$this->LCASSUR_MMAA=$this->RISQUEIMPAYE_MMAA=$this->CSFACTO_MMAA='';
@ -2528,7 +2493,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$this->DELAIPAY=$iFacto->DELAIPAY;
$this->DELAIPAYp=$iFacto->DELAIPAYp;
$this->DELAIPAY_MMAA=$iFacto->DELAIPAY_MMAA;
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Facto", print_r($infoFacto, true).EOL."Profil payeur='$libProfilPayeur'".EOL);
if (isset($infoFacto[0])) {
$nivRisquePaiement=$infoFacto[0]['risque'];
$this->MODIFPAIDATE=$infoFacto[0]['DateEven'];
@ -2668,20 +2632,20 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
if ($this->IMPAYE) {
$this->SCORECONF-=10;
if ($this->PRIVILEGES) $noteSolvMax-=10;
elseif ($this->SOCIETE_COTE) $noteSolvMax=61;
elseif ($this->NBBILAN==0 && $this->FJURPUB && $this->CAPITAL<750000) $noteSolvMax=40;
elseif ($this->NBBILAN==0 && !$this->FJURPUB && $this->CAPITAL<750000) $noteSolvMax=42;
elseif ($this->NBBILAN==0 && $this->FJURPUB && $this->CAPITAL<1500000) $noteSolvMax=45;
elseif ($this->NBBILAN==0 && !$this->FJURPUB && $this->CAPITAL<1500000) $noteSolvMax=47;
elseif ($this->NBBILAN==0 && $this->FJURPUB ) $noteSolvMax=50;
elseif ($this->NBBILAN==0 && !$this->FJURPUB) $noteSolvMax=51;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE) && $this->CAPITAL<750000) $noteSolvMax=45;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE) && $this->CAPITAL<1500000) $noteSolvMax=50;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE)) $noteSolvMax=52;
elseif ($this->CAPITAL<750000) $noteSolvMax=47;
elseif ($this->CAPITAL<1500000) $noteSolvMax=50;
else $noteSolvMax=52;
if ($this->PRIVILEGES) $noteSolvMax-=10;
elseif ($this->SOCIETE_COTE) $noteSolvMax=61;
elseif ($this->NBBILAN==0 && $this->FJURPUB && $this->CAPITAL<750000) $noteSolvMax=40;
elseif ($this->NBBILAN==0 && !$this->FJURPUB && $this->CAPITAL<750000) $noteSolvMax=42;
elseif ($this->NBBILAN==0 && $this->FJURPUB && $this->CAPITAL<1500000) $noteSolvMax=45;
elseif ($this->NBBILAN==0 && !$this->FJURPUB && $this->CAPITAL<1500000) $noteSolvMax=47;
elseif ($this->NBBILAN==0 && $this->FJURPUB ) $noteSolvMax=50;
elseif ($this->NBBILAN==0 && !$this->FJURPUB) $noteSolvMax=51;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE) && $this->CAPITAL<750000) $noteSolvMax=45;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE) && $this->CAPITAL<1500000) $noteSolvMax=50;
elseif ($this->NBBILAN>0 && $this->FJURPUB && ($this->BILANVIEUX||$this->BILANMANQUE)) $noteSolvMax=52;
elseif ($this->CAPITAL<750000) $noteSolvMax=47;
elseif ($this->CAPITAL<1500000) $noteSolvMax=50;
else $noteSolvMax=52;
}
if ($this->ANNONCEHOM>0) {
@ -2717,7 +2681,42 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$timer['privileges']=microtime(true);
// Paiements
if ($this->MODIFPAIDATE>$this->MODIFDERDATE) $this->MODIFDERDATE=$this->MODIFPAIDATE;
$this->MODIFDERDATE = $this->MODIFINSEEDATE;
if ($this->MODIFPAIDATE>$this->MODIFDERDATE) $this->MODIFDERDATE = $this->MODIFPAIDATE;
// Rcs
if ($this->MODIFRNCSDATE > $this->MODIFDERDATE) $this->MODIFDERDATE = $this->MODIFRNCSDATE;
// Annonces
if ($this->ANNONCEDERDATE > $this->MODIFDERDATE) $this->MODIFDERDATE = $this->ANNONCEDERDATE;
// --- Cut Off
$this->ENQUETE='';
if ($this->companyEvenDateStop === null) {
$tabTmp = $this->db->select('jo.scores_cutoff',
'encours, scoreSolv, scoreDir, scoreConf, DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate',
"siren=$siren", $this->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'];
}
if ($classWdate->nbMoisEntre($dateMaj, date('Ymd'))<=$this->ENQUETELIM) {
$encoursForce=$tabTmp[0]['encours'];
if ($tabTmp[0]['scoreConf']<>null) $this->SCORECONF=$tabTmp[0]['scoreConf'];
if ($this->SCORECONF>$this->ENQUETEMAXI) $this->SCORECONF=$this->ENQUETEMAXI;
if ($tabTmp[0]['scoreDir'] <>null) $this->SCOREDIRI=$tabTmp[0]['scoreDir'];
if ($this->SCOREDIRI>$this->ENQUETEMAXI) $this->SCOREDIRI=$this->ENQUETEMAXI;
if ($tabTmp[0]['scoreSolv']<>null) $this->ENQUETE=$noteSolvabilite=$tabTmp[0]['scoreSolv'];
if ($this->ENQUETE>$this->ENQUETEMAXI) $this->ENQUETE=$this->ENQUETEMAXI;
// Permet de supprimer la prise en compte de la procol
if ($this->ENQUETE>0) {
$tabIdentite['SituationJuridique']=$this->ANNONCEPC='';
$this->ANNONCELJ=$this->ANNONCERJ=$this->ANNONCESV=$this->PLANMODIF=$this->PLAN=$this->ANNONCEPC_OBS=$this->ELIMINE=false;
}
}
}
}
// --- Commentaire Dirigeance
if ($this->SCOREDIRI>=70) {
@ -2763,7 +2762,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
else $analyseSolv = 'Inquiétante';
if ($noteSolvabilite>=40 && $analyseSolv=='Inquiétante') $analyseSolv = 'Correcte';
/** CA Moyen par salarié pour un secteur donné **/
// --- CA Moyen par salarié pour un secteur donné
$this->CAESTIME = $iInsee->getCAnafEffectif($naf, $this->EFFECTIF);
if ($this->CABILAN>0) $this->CABIOUES=$this->CABILAN;
@ -2779,7 +2778,9 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$timer['camoyen']=microtime(true);
// L'encours de trésorerie prend 1/6è de 1/12è de la Trésorerie
if ($this->R[63]>0) $encoursTR = $this->R[63]/72;
if ($this->R[63] > 0) {
$encoursTR = $this->R[63]/72;
}
if ($noteSolvabilite>=40) {
if ($this->HOLDING) {
@ -2836,12 +2837,14 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
// Si encours sans bilan, l'encours donné est la moyenne de l'encours capital + l'encours estimé
if ($encoursEstime>0 && $this->ENCOURS>0)
$this->ENCOURS=($this->ENCOURS+$encoursEstime)/2;
if ($encoursEstime > 0 && $this->ENCOURS > 0) {
$this->ENCOURS = ($this->ENCOURS + $encoursEstime) / 2;
}
// Si l'encours est forcé, on en tiens compte !
if ($encoursForce<>NULL)
$this->ENCOURS=$encoursForce;
if ($encoursForce != null) {
$this->ENCOURS = $encoursForce;
}
switch ($this->FJUR2) {
case 11:
case 12:
@ -3033,7 +3036,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
if ($this->ANNONCEPC<>'') {
// Intervenants
$tabInter = $iRncs->getIntervenants($this->SIREN);
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : INTERVENANTS", print_r($tabInter,true));
$this->ANNONCEPC_INT1_TIT=$tabInter[0]['admfonction']; // Titre de l'intervenant
$this->ANNONCEPC_INT1=$tabInter[0]['admnom']; // NOM Prénom et adresse complète
$this->ANNONCEPC_INT2_TIT=$tabInter[1]['admfonction'];
@ -3164,9 +3166,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$this->RISQUEACTBASSIN[]=$tabBassins[$tabArret['codeBassin']]; // Libellé risque lié à la localisation l'un des etablissements (INNONDATION, TREMBLEMENT DE TERRE etc..)
}
$this->RISQUEACTBASSIN=trim(implode(', ', $this->RISQUEACTBASSIN)); // Le ou les libellés des bassins hydrographiques concernés
/*@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Bassins", print_r($tabTmp, true).EOL.
$strCom.EOL.
print_r($tabBassins, true).EOL);*/
$timer['risquesBassins']=microtime(true);
/** INFOS Orias **/
@ -3187,14 +3186,11 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
$timer['orias']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 1",'');
/** Liste des marques **/
$this->MARQUENB_INT=0; // Nombre de marques déposées à l'international
$this->MARQUENB_EUR=0; // Nombre de marques déposées en EUROPE
$this->MARQUENB_FR=0; // Nombre de marques déposées en FRANCE
$tabMarques['WW']=$tabMarques['EU']=$tabMarques['FR']=array();
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marques", print_r($ret,true));
$iMarque = new MMarques($this->db);
$ret = $iMarque->getMarques($siren);
if ($ret!==false && count($ret)>0) {
@ -3222,7 +3218,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$timer['marques']=microtime(true);
/** Marchés publics **/
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Marchés Publiques", print_r($ret,true));
$this->MARCHEPUBLIC3_NB=0; // Nombre de marchés public / 3 dernières années
$this->MARCHEPUBLIC3_MT=0; // Montant cumulé des marchés public / 3 dernières années
$this->MARCHEPUBLICDER_OBJ=''; // Objet du dernier MP remporté
@ -3462,8 +3457,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
if ($tabTmp)
$this->ACTIVREG=$tabTmp['libActivite']; // Libellé de l'activité règlementé
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace 3",'');
$this->NBSUIVICLI=0; // Nombre de clients suivants cette entreprise
$this->NBSOCSEC=0; // Nombre de siren composants les ratios secteurs
$this->NBSOCSECPUB=0; // Nombre de siren du secteurs devant publier
@ -3629,14 +3622,12 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
} else
$strTmp='ERREUR DE FORMULE LORS DE LA GENERATION DU COMMENTAIRE no '.$idxC;
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace10,$idxC=$strTmp2", 'ici');
//@eval('\$strTmp="'.$strTmp2.'";');
$strTmp=eval("return \"$strTmp2\";");
$tabComment[$idxC]=preg_replace('/<\/i>(?:<br\/>)<\/i>/i','</i>', $debLigne.prepareString($strTmp).$finLigne);//." ($idxC, $ordre)";
if (substr($strTmp,0,17)=='ERREUR DE FORMULE') {
//@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : $strTmp","Formules : ".EOL.$strTmp2);
}
// echo " ($ordre)<br/>";
$tableauPre=$tableau;
@ -3646,7 +3637,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
if ($tableau) $tabComment[$idxC].='</table>';
$timer['finIndiscore']=microtime(true);
//sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Indiscore sur $siren : Trace20", 'ici');
} // Fin Génération des commentaires
@ -3704,7 +3694,6 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$duree=round($time-$timeDeb,3);
$strTime.="---------------------\nTOTAL : $duree secondes\n";
file_put_contents('time.log', "Indiscore sur $siren : Durées ".$strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
//sendMail('production@scores-decisions.com', 'mricois@scores-decisions.com', "Indiscore sur $siren : Durées ".ENV, $strTime.EOL.$strNote.EOL.$variables.EOL.print_r($tabRatiosInfos,true));
}
// EntActiveRCS
@ -3863,7 +3852,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
if ($this->companyEvenDateStop === null) {
//Scores identique au précedent, simple mise à jour
// --- Scores identique au précedent, simple mise à jour
if ($indiScore==$indiScorePre && $this->ENCOURS==$encoursPre && $dateScore<>0 ) {
$tabUpdate2 = array('sourceModif'=>$sourceModif, 'nbModifs'=>$nbModifs);
if (!$this->db->update('jo.scores_surveillance', $tabUpdate2, "siren=$siren", false, 0, true)) {
@ -3871,7 +3860,7 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
}
else {
//Calcul de l'effectif réel
// --- 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 ) {

View File

@ -0,0 +1,453 @@
<?php
return array(
0 => array(
'name' => 'PO-Date-GE',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
1 => array(
'name' => 'PO-Date-GE',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
2 => array(
'name' => 'PO-Date-GE',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
3 => array(
'name' => 'PO-Date-GE',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
4 => array(
'name' => 'PO-Date-GE',
'value' => '5000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '9'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
5 => array(
'name' => 'PO-Date-GE',
'value' => '5000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '10'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
6 => array(
'name' => 'PO-Date-GE',
'value' => '5000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '11'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
7 => array(
'name' => 'PO-Date-GE',
'value' => '10000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '12'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
8 => array(
'name' => 'PO-Date-GE',
'value' => '10000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '13'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
9 => array(
'name' => 'PO-Date-GE',
'value' => '10000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '14'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
10 => array(
'name' => 'PO-Date-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
11 => array(
'name' => 'PO-Date-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
12 => array(
'name' => 'PO-Date-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
13 => array(
'name' => 'PO-Date-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
14 => array(
'name' => 'PO-Date-PME',
'value' => '6000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '9'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
15 => array(
'name' => 'PO-Date-PME',
'value' => '6000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '4'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '10'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
16 => array(
'name' => 'PO-Date-PME',
'value' => '6000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '11'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
17 => array(
'name' => 'PO-Date-PME',
'value' => '9000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '12'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
18 => array(
'name' => 'PO-Date-PME',
'value' => '9000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '13'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
19 => array(
'name' => 'PO-Date-PME',
'value' => '9000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '14'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
20 => array(
'name' => 'PO-Date-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
21 => array(
'name' => 'PO-Date-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
22 => array(
'name' => 'PO-Date-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
23 => array(
'name' => 'PO-Date-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
24 => array(
'name' => 'PO-Date-TPE',
'value' => '1500',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '9'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
25 => array(
'name' => 'PO-Date-TPE',
'value' => '1500',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '4'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '10'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
26 => array(
'name' => 'PO-Date-TPE',
'value' => '2000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '11'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
27 => array(
'name' => 'PO-Date-TPE',
'value' => '2000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '12'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
28 => array(
'name' => 'PO-Date-TPE',
'value' => '2000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '13'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
29 => array(
'name' => 'PO-Date-TPE',
'value' => '2000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '14'),
2 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
30 => array(
'name' => 'PO-STD-GE',
'value' => '6000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
31 => array(
'name' => 'PO-STD-GE',
'value' => '6000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
32 => array(
'name' => 'PO-STD-GE',
'value' => '10000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
33 => array(
'name' => 'PO-STD-GE',
'value' => '20000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
),
),
34 => array(
'name' => 'PO-STD-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
35 => array(
'name' => 'PO-STD-PME',
'value' => '3000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
36 => array(
'name' => 'PO-STD-PME',
'value' => '3700',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
37 => array(
'name' => 'PO-STD-PME',
'value' => '5000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'PME'),
),
),
38 => array(
'name' => 'PO-STD-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '5'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
39 => array(
'name' => 'PO-STD-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '6'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
40 => array(
'name' => 'PO-STD-TPE',
'value' => '1000',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '7'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
41 => array(
'name' => 'PO-STD-TPE',
'value' => '1500',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '8'),
1 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'TPE'),
),
),
);

View File

@ -0,0 +1,160 @@
<?php
return array(
0 => array(
'name' => 'VORd-11.1',
'value' => 'STOP',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'ContratAge', 'type' => 'EGAL', 'value' => 'UNDEFINE'),
1 => array( 'var' => 'IR', 'type' => 'EGAL', 'value' => 'UNDEFINE'),
),
),
1 => array(
'name' => 'VORd-11.2',
'value' => 'CONTINUE',
'comment' => "",
'po' => 0,
'params' => array(
),
),
2 => array(
'name' => 'VORd-11.3',
'value' => 'CONTINUE',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '-1'),
1 => array( 'var' => 'IR', 'type' => 'EGAL', 'value' => 'UNDEFINE', 'define' => array( 'var' => 'IR', 'value' => '8')),
),
),
3 => array(
'name' => 'VORd-10.1',
'value' => 'ROUGE',
'comment' => "Société dont la solvabilité est limitée et qui rencontre des difficultés de paiement : Faire une DEC pour tout acte éligible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FEU', 'type' => 'EGAL', 'value' => 'VERT'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
3 => array( 'var' => 'ContratAge', 'type' => 'MAX', 'value' => '25'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
5 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '12'),
),
),
4 => array(
'name' => 'VORd-10.2',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FEU', 'type' => 'EGAL', 'value' => 'VERT'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
3 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '24'),
4 => array( 'var' => 'ContratAge', 'type' => 'MAX', 'value' => '36'),
5 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
6 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '12'),
),
),
5 => array(
'name' => 'VORd-10.3',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FEU', 'type' => 'EGAL', 'value' => 'VERT'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
3 => array( 'var' => 'ContratAge', 'type' => 'MAX', 'value' => '25'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '11'),
5 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '14'),
),
),
6 => array(
'name' => 'VORd-10.4',
'value' => 'ROUGE',
'comment' => "Société dont la solvabilité est limitée et qui rencontre des difficultés de paiement : Faire une DEC pour tout acte éligible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '2,1'),
1 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '35'),
),
),
7 => array(
'name' => 'VORd-10.5',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '2'),
1 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '5'),
2 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '36'),
3 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '7'),
),
),
8 => array(
'name' => 'VORd-10.6',
'value' => 'ROUGE',
'comment' => "Société dont la solvabilité est limitée et qui rencontre des difficultés de paiement : Faire une DEC pour tout acte éligible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'EntrepRecente', 'type' => 'EGAL', 'value' => '1'),
1 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '2,1'),
2 => array( 'var' => 'ContratAge', 'type' => 'MAX', 'value' => '36'),
),
),
9 => array(
'name' => 'VORd-10.7',
'value' => 'ROUGE',
'comment' => "Société dont la solvabilité est limitée et qui rencontre des difficultés de paiement : Faire une DEC pour tout acte éligible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'EntrepRecente', 'type' => 'EGAL', 'value' => '1'),
1 => array( 'var' => 'ContratAge', 'type' => 'MAX', 'value' => '25'),
2 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
3 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
5 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '12'),
),
),
10 => array(
'name' => 'VORd-10.8',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'EntrepRecente', 'type' => 'EGAL', 'value' => '1'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
3 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '36'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '11'),
),
),
11 => array(
'name' => 'VORd-10.8-2',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'EntrepRecente', 'type' => 'EGAL', 'value' => '1'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '4,9'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '7,1'),
3 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '24'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '13'),
),
),
12 => array(
'name' => 'VORd-10.9',
'value' => 'VERT',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FEU', 'type' => 'EGAL', 'value' => 'ROUGE'),
1 => array( 'var' => 'IR', 'type' => 'MIN', 'value' => '2'),
2 => array( 'var' => 'IR', 'type' => 'MAX', 'value' => '5'),
3 => array( 'var' => 'ContratAge', 'type' => 'MIN', 'value' => '36'),
4 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '3'),
),
),
);

View File

@ -2,7 +2,7 @@
return array(
0 => array(
'name' => 'VORp-1.0',
'value' => 'CONTINUE',
'value' => 'DEFINE',
'comment' => "",
'po' => 0,
'params' => array(

View File

@ -0,0 +1,164 @@
<?php
return array(
0 => array(
'name' => 'VORp-1.0',
'value' => 'DEFINE',
'comment' => "",
'po' => 0,
'params' => array(
0 => array( 'var' => 'IsCAC', 'type' => 'EGAL', 'value' => '1', 'define' => array( 'var' => 'TypeEntrep', 'value' => 'CAC')),
1 => array( 'var' => 'Effectif', 'type' => 'MIN', 'value' => '499', 'define' => array( 'var' => 'TypeEntrep', 'value' => 'GE')),
2 => array( 'var' => 'Effectif', 'type' => 'MIN', 'value' => '3', 'define' => array( 'var' => 'TypeEntrep', 'value' => 'PME')),
3 => array( 'var' => 'Effectif', 'type' => 'MIN', 'value' => '-1', 'define' => array( 'var' => 'TypeEntrep', 'value' => 'TPE')),
4 => array( 'var' => 'Effectif', 'type' => 'EGAL', 'value' => 'UNDEFINE', 'define' => array( 'var' => 'TypeEntrep', 'value' => 'TPE')),
),
),
1 => array(
'name' => 'VORp-2.1',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'NAF', 'type' => 'LIST', 'value' => 'TabAdminNaf', 'define' => array( 'var' => 'IsAdmin', 'value' => '1')),
),
),
2 => array(
'name' => 'VORp-2.2',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FJ', 'type' => 'LIST', 'value' => 'TabAdminFj', 'define' => array( 'var' => 'IsAdmin', 'value' => '1')),
),
),
3 => array(
'name' => 'VORp-3.1',
'value' => 'ROUGE',
'comment' => "Société de droit étranger : faire une DEC si volonté de poursuivre l'affaire",
'po' => 0,
'params' => array(
0 => array( 'var' => 'NAF', 'type' => 'LIST', 'value' => 'TabEtrangerNaf', 'define' => array( 'var' => 'IsEtranger', 'value' => '1')),
),
),
4 => array(
'name' => 'VORp-3.2',
'value' => 'ROUGE',
'comment' => "Société de droit étranger : faire une DEC si volonté de poursuivre l'affaire",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FJ', 'type' => 'LIST', 'value' => 'TabEtrangerFj', 'define' => array( 'var' => 'IsEtranger', 'value' => '1')),
),
),
5 => array(
'name' => 'VORp-4.1',
'value' => 'ROUGE',
'comment' => "Cette société fait l'objet d'un Redressement Judiciaire : faire une DEC si volonté de poursuivre l'affaire",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '6'),
1 => array( 'var' => 'RJ', 'type' => 'EGAL', 'value' => '1'),
),
),
6 => array(
'name' => 'VORp-4.2',
'value' => 'ROUGE',
'comment' => "Cette société fait l'objet d'une liquidation judiciaire : pas d'entrée en relation possible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '6'),
1 => array( 'var' => 'LJ', 'type' => 'EGAL', 'value' => '1'),
),
),
7 => array(
'name' => 'VORp-4.3',
'value' => 'ROUGE',
'comment' => "Cette société fait l'objet d'une Sauvegarde Judiciaire : faire une DEC si volonté de poursuivre l'affaire",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '6'),
1 => array( 'var' => 'SV', 'type' => 'EGAL', 'value' => '1'),
),
),
8 => array(
'name' => 'VORp-4.4',
'value' => 'ROUGE',
'comment' => "Cette entreprise n'est pas active à l'INSEE : pas d'entrée en relation possible",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '6'),
1 => array( 'var' => 'InseeActif', 'type' => 'EGAL', 'value' => '0'),
),
),
9 => array(
'name' => 'VORp-5.0',
'value' => 'VERT',
'comment' => "Faire une DEC si dépassement de la PO proposée",
'po' => 1,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '16'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
2 => array( 'var' => 'InseeAge', 'type' => 'MAX', 'value' => '37', 'define' => array( 'var' => 'EntrepRecente', 'value' => '1')),
3 => array( 'var' => 'TypeEntrep', 'type' => 'MIN', 'value' => 'PME'),
),
),
10 => array(
'name' => 'VORp-7.0',
'value' => 'VERT',
'comment' => "Cette entreprise fait l'objet d'une sauvegarde : faire une DEC si dépassement de la PO",
'po' => 1,
'params' => array(
0 => array( 'var' => 'FEU', 'type' => 'EGAL', 'value' => 'ROUGE'),
1 => array( 'var' => 'SV', 'type' => 'EGAL', 'value' => '1'),
2 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '4'),
),
),
11 => array(
'name' => 'VORp-8.0',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
1 => array( 'var' => 'Indiscore', 'type' => 'EGAL', 'value' => '9'),
),
),
12 => array(
'name' => 'VORp-9.0',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'CAC'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '5'),
),
),
13 => array(
'name' => 'VORp-6.1',
'value' => 'ROUGE',
'comment' => "Solvabilité et pérennité compromise : faire une DEC si volonté de poursuivre l'affaire",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '6'),
),
),
14 => array(
'name' => 'VORp-6.2',
'value' => 'VERT',
'comment' => "Faire une DEC si dépassement de la PO proposée",
'po' => 1,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '10'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '5'),
),
),
15 => array(
'name' => 'VORp-6.3',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '21'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
),
),
);

View File

@ -13,7 +13,7 @@ class SdMetier_Sfr_Scoring
* Version of rules (for loading static files)
* @var double
*/
protected $version = '1.1';
protected $version = '1.4';
/**
* Put in error when not calculated
@ -430,7 +430,7 @@ class SdMetier_Sfr_Scoring
$this->RulesVORD = include realpath(dirname(__FILE__)) . '/RulesVord-'.$this->version.'.php';
$this->RulesPO = include realpath(dirname(__FILE__)) . '/RulesPo-'.$this->version.'.php';
if ($this->debug) file_put_contents('sfr.log', "DEBUT\n");
if ($this->debug) file_put_contents('sfr.log', "\nDEBUT\n", FILE_APPEND);
}
@ -625,7 +625,7 @@ class SdMetier_Sfr_Scoring
$this->ValIndiscore = null;
$this->ValDateCalculIndiscore = null;
}
}
//GetAnnoncesLegales
@ -660,8 +660,7 @@ class SdMetier_Sfr_Scoring
//Entreprise coté au CAC
/*$this->ValIsCAC = 0;
require_once 'Metier/partenaires/classMLiens2.php';
$lienM = new MLiens2($siren, 'siren');
$liensM = new SdMetier_Liens_Base($siren, 'siren');
if ( $lienM->isInGroupeCAC40() ) {
$this->ValIsCAC = 1;
}
@ -674,7 +673,6 @@ class SdMetier_Sfr_Scoring
$this->ValIndiscore = $indiscore['Indiscore20'];
$this->ValDateCalculIndiscore = date('Y-m-d');
}
if ($this->debug) file_put_contents('sfr.log', "INDISCORE = ".$this->ValIndiscore."\n", FILE_APPEND);
//Vérification des valeurs avant traitement
$verif = array('NAF', 'FJ', 'InseeActif', 'InseeAge');
@ -684,6 +682,12 @@ class SdMetier_Sfr_Scoring
return false;
}
}
if ($this->ValEffectif == '') {
$this->ValEffectif = null;
}
if ($this->debug) file_put_contents('sfr.log', "INDISCORE = ".$this->ValIndiscore."\n", FILE_APPEND);
if ($this->debug) file_put_contents('sfr.log', "EFFECTIF = ".$this->ValEffectif."\n", FILE_APPEND);
//Rules
$ruleType = array( 'VORP' , 'VORD' , 'PO');