Adresse RNVP

This commit is contained in:
Michael RICOIS 2016-03-15 14:12:26 +00:00
parent 7e02090e1b
commit a840c40388
10 changed files with 330 additions and 66 deletions

View File

@ -0,0 +1,6 @@
<?php
class Application_Model_JoEtablissements extends Zend_Db_Table_Abstract
{
protected $_name = 'etablissements';
protected $_schema = 'jo';
}

View File

@ -0,0 +1,6 @@
<?php
class Application_Model_VillesRnvpSources extends Zend_Db_Table_Abstract
{
protected $_name = 'rnvpSources';
protected $_schema = 'villes';
}

View File

@ -0,0 +1,144 @@
<?php
class SdMetier_Rnvp_Adresse
{
protected $source;
protected $sourceId;
protected $columns = array(
'L1rnvp',
'L2rnvp',
'L3rnvp',
'L4rnvp',
'L5rnvp',
'L6rnvp',
'L7rnvp',
'dateRetourRnvp',
'codeRetour',
'LPAD(Insee,5,0) as Insee',
'CorrectionImportante',
'CorrectionDouteuse',
'CQadrs',
'HexaCle',
'NumDept',
'IdHexavia',
'IdHexaposte',
'Iris_Rivoli',
'Iris_Ilot99',
'Iris_CodeIris',
'Iris_Canton',
'Cdx_Matricule',
'Cdx_V5Geo',
'Cdx_V6Geo',
'Cdx_V5Cdx',
'Cdx_V6Cdx',
'dateInsert',
'dateUpdate',
);
/**
* Récupération de l'adresse normalisé
*/
public function __construct(){}
/**
*
* @param unknown $companyId
*/
public function setCompanyId($companyId)
{
$this->source = substr($companyId,0,3);
$this->sourceId = substr($companyId,3,20);
}
/**
* Id de l'entreprise à partir du siret
* @param string $companyId
* @throws Exception
* @return NULL
*/
public function setCompanyIdProxy($companyId)
{
try {
$etabM = new Application_Model_JoEtablissements();
$sql = $etabM->select(true)->columns(array('LPAD(source,3,0)', 'LPAD(source_id,20,0)'))
->where('siren=?', substr($companyId,0,9))
->where('nic=?', substr($companyId,9,5));
$etabResult = $etabM->fetchRow($sql);
if ($etabResult === null) {
return null;
}
$this->source = $etabResult->source;
$this->sourceId = $etabResult->source_id;
} catch (Zend_Db_Exception $e) {
throw new Exception($e->getMessage(), 'ERR');
}
}
/**
* Formattage de l'adresse normalisé
* @return stdClass
* @throws Exception
*/
public function format()
{
try
{
$rnvpM = new Application_Model_VillesRnvpSources();
$sql = $rnvpM->select(true)->columns($this->columns)
->where('source=?', $this->source)
->where('source_id=?', $this->sourceId);
$rnvpResult = $rnvpM->fetchRow($sql);
if ($rnvpResult === null) {
return null;
}
$rnvp = new stdClass();
$rnvp->L1 = $rnvpResult->L1rnvp;
$rnvp->L2 = $rnvpResult->L2rnvp;
$rnvp->L3 = $rnvpResult->L3rnvp;
$rnvp->L4 = $rnvpResult->L4rnvp;
$rnvp->L5 = $rnvpResult->L5rnvp;
$rnvp->L6 = $rnvpResult->L6rnvp;
$rnvp->L7 = $rnvpResult->L7rnvp;
$rnvp->ProcessCode = $rnvpResult->codeRetour;
$process = new SdMetier_Rnvp_Process();
$correction = '';
if ($rnvpResult->CorrectionImportante == 'I') {
$correction = $rnvpResult->CorrectionImportante;
}
if ($rnvpResult->CorrectionDouteuse == 'D') {
$correction = $rnvpResult->CorrectionDouteuse;
}
$rnvp->ProcessLabel = $process->getLabel($rnvpResult->codeRetour, $correction);
$rnvp->ProcessDate = $rnvpResult->dateRetourRnvp;
// Label CQadrs
$rnvp->QualityCode = $rnvpResult->CQadrs;
$quality = new SdMetier_Rnvp_Quality();
$rnvp->QualityLabel = $quality->getLabel($rnvp->QualityCode);
$rnvp->GeoInseeCommune = $rnvpResult->Insee;
$rnvp->GeoHexavia = $rnvpResult->IdHexavia;
$rnvp->GeoHexapost = $rnvpResult->IdHexaposte;
$rnvp->GeoHexacle = $rnvpResult->HexaCle;
$rnvp->GeoDepartement = $rnvpResult->NumDept;
$rnvp->GeoRivoliCode = $rnvpResult->Iris_Rivoli;
$rnvp->GeoIlot = $rnvpResult->Iris_Ilot99;
$rnvp->GeoIris = $rnvpResult->Iris_CodeIris;
$rnvp->GeoCanton = $rnvpResult->Iris_Canton;
$rnvp->CedexaMatricule = $rnvpResult->Cdx_Matricule;
$rnvp->CedexaGeoL5 = $rnvpResult->Cdx_V5Geo;
$rnvp->CedexaGeoL6 = $rnvpResult->Cdx_V6Geo;
$rnvp->CedexaCdxL5 = $rnvpResult->Cdx_V5Cdx;
$rnvp->CedexaCdxL6 = $rnvpResult->Cdx_V6Cdx;
$rnvp->DateInsert = $rnvpResult->dateInsert;
$rnvp->DateUpdate = $rnvpResult->dateUpdate;
} catch (Zend_Db_Exception $e) {
throw new Exception($e->getMessage(), 'ERR');
}
return $rnvp;
}
}

View File

@ -1,6 +0,0 @@
<?php
class SdMetier_Rnvp_Detail
{
}

View File

@ -0,0 +1,34 @@
<?php
class SdMetier_Rnvp_Process
{
public function __construct() {}
/**
* Libelle de traitement
* @param string $code
* @param string $correction
*/
public function getLabel($code, $correction)
{
$label = '';
switch($code) {
case 'ND':
$label = "ND";
break;
case 'KO':
$label = "KO";
break;
case 'OK':
$label = "Adresse correcte";
if ($correction == 'I') {
$label = "Adresse avec correction(s) importante(s)";
}
if ($rnvpResult->CorrectionDouteuse == 'D') {
$label = "Adresse mais correction(s) douteuse(s)";
}
break;
}
return $label;
}
}

View File

@ -0,0 +1,43 @@
<?php
class SdMetier_Rnvp_Quality
{
/**
* Libellé des codes qualités
* @var array
*/
protected $labels = array(
'10' => "Adresse correcte",
'20' => "Adresse correcte (Voie non reconnue, mais il s'agit d'un cedex ou BP)",
'21' => "Petite ville, Numéro de facade hors borne.",
'22' => "Petite ville, Numéro de facade absent (le reste de l'adresse est correcte)",
'23' => "Grande ville, Numéro de facade hors borne.",
'24' => "Grande ville, Numéro de facade absent (le reste de l'adresse est correcte)",
'30' => "Petite ville, voie non reconnue",
'31' => "Petite ville, voie non reconnue (info quartier reconnu, ne permettant pas de déduire la voie)",
'40' => "Petite ville, voie absente (info quartier reconnu, ne permettant pas de déduire la voie)",
'41' => "Petite ville, voie absente",
'50' => "Grande ville, voie non reconnue",
'51' => "Grande ville, voie non reconnue (info quartier reconnu, ne permettant pas de déduire la voie)",
'60' => "Grande ville, voie absente (info quartier reconnu, ne permettant pas de déduire la voie)",
'61' => "Grande ville, voie absente",
'70' => "Cp/Ville non corrigeable (voie présente)",
'80' => "Cp/Ville non corrigeable (voie absente)",
'90' => "Etranger détecté",
);
public function __construct(){}
/**
* Label qualité en fonction du code
* @param string $code
*/
public function getLabel($code)
{
$label = '';
if (array_key_exists($code, $this->labels)) {
$label = $this->labels[$code];
}
return $label;
}
}

View File

@ -1882,12 +1882,22 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
}
}
}
} else {
}
// --- Ni P, Ni PL
else {
$tabProCol = $iInsee->annoncesFilter($companyAnnonces, 'PH');
if (count($tabProCol)>0) $this->ANNONCEPCHISTO=true;
else $this->ANNONCEPCHISTO=false;
if ($tabIdentite['Actif']==0) $this->ELIMINE=true;
else $this->ELIMINE=false;
if (count($tabProCol) > 0) {
$this->ANNONCEPCHISTO = true;
}
else {
$this->ANNONCEPCHISTO = false;
}
if ($tabIdentite['Actif'] == 0) {
$this->ELIMINE = true;
}
else {
$this->ELIMINE = false;
}
}
/** Annonces d'Homologation **/
@ -2675,11 +2685,17 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
// Paiements
$this->MODIFDERDATE = $this->MODIFINSEEDATE;
if ($this->MODIFPAIDATE>$this->MODIFDERDATE) $this->MODIFDERDATE = $this->MODIFPAIDATE;
if ($this->MODIFPAIDATE > $this->MODIFDERDATE) {
$this->MODIFDERDATE = $this->MODIFPAIDATE;
}
// Rcs
if ($this->MODIFRNCSDATE > $this->MODIFDERDATE) $this->MODIFDERDATE = $this->MODIFRNCSDATE;
if ($this->MODIFRNCSDATE > $this->MODIFDERDATE) {
$this->MODIFDERDATE = $this->MODIFRNCSDATE;
}
// Annonces
if ($this->ANNONCEDERDATE > $this->MODIFDERDATE) $this->MODIFDERDATE = $this->ANNONCEDERDATE;
if ($this->ANNONCEDERDATE > $this->MODIFDERDATE) {
$this->MODIFDERDATE = $this->ANNONCEDERDATE;
}
// --- Cut Off
$this->ENQUETE='';
@ -2740,6 +2756,9 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
if ($tabIdentite['SituationJuridique']=='P') {
$noteSolvabilite = $this->SCORECONF = $this->SCOREDIRI = 0;
$analyseConf = "L'entreprise est en procédure collective";
} elseif ($tabIdentite['SituationJuridique']=='CL') {
$noteSolvabilite = $SCORECONF = $SCOREDIRI = 0;
$analyseConf = "Cloture après la procédure";
} elseif ($tabIdentite['SituationJuridique']=='D') {
$noteSolvabilite = $this->SCORECONF = $this->SCOREDIRI = 0;
$analyseConf = "L'entreprise est dissoute";
@ -2938,8 +2957,10 @@ class SdMetier_Scoring_Base extends SdMetier_Scoring_Vars
$libEncours='Aucun risque de défaillance sur les administrations ou institutions.';
break;
}
} else {
// Encours à 0 car score < 40
}
// Encours à 0 car score < 40
else {
$this->ENCOURSCALC=$this->ENCOURS;
$this->ENCOURS=0;
$libEncours='Aucun encours conseillé par rapport à notre évaluation.';

View File

@ -16,7 +16,7 @@ return array(
1 => array(
'name' => 'VORp-2.1',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'comment' => "Pas de DEC nécessaire sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'NAF', 'type' => 'LIST', 'value' => 'TabAdminNaf', 'define' => array( 'var' => 'IsAdmin', 'value' => '1')),
@ -25,7 +25,7 @@ return array(
2 => array(
'name' => 'VORp-2.2',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'comment' => "Pas de DEC nécessaire sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'FJ', 'type' => 'LIST', 'value' => 'TabAdminFj', 'define' => array( 'var' => 'IsAdmin', 'value' => '1')),
@ -115,7 +115,7 @@ return array(
11 => array(
'name' => 'VORp-8.0',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'comment' => "Pas de DEC nécessaire sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'GE'),
@ -125,7 +125,7 @@ return array(
12 => array(
'name' => 'VORp-9.0',
'value' => 'VERT',
'comment' => "Pas de limite de crédit sur ce siren",
'comment' => "Pas de DEC nécessaire sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'TypeEntrep', 'type' => 'EGAL', 'value' => 'CAC'),
@ -147,18 +147,18 @@ return array(
'comment' => "Faire une DEC si dépassement de la PO proposée",
'po' => 1,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '10'),
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '9'),
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",
'comment' => "Pas de DEC nécessaire sur ce siren",
'po' => 0,
'params' => array(
0 => array( 'var' => 'Indiscore', 'type' => 'MAX', 'value' => '21'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '9'),
1 => array( 'var' => 'Indiscore', 'type' => 'MIN', 'value' => '8'),
),
),
);

View File

@ -1,8 +1,6 @@
<?php
/**
*
*
*/
require_once 'Metier/Scores/MScores.php';
class SdMetier_Sfr_Scoring
{
/**
@ -736,19 +734,21 @@ class SdMetier_Sfr_Scoring
if ( $this->displayPo ) {
$this->ValPO = $this->paramValue($rule['value']);
}
if ($this->debug) file_put_contents('sfr.log', "VALIDATION : ValPO = ".$this->ValPO."\n", FILE_APPEND);
} else {
$this->RuleLabel = $rule['name'];
$this->displayPo = intval($rule['po']);
$this->ValFEU = $this->paramValue($rule['value']);
if ($this->debug) file_put_contents('sfr.log', "VALIDATION : ValFEU = ".$this->ValFEU."\n", FILE_APPEND);
$this->ValComment = $rule['comment'];
if ($this->debug) file_put_contents('sfr.log', "VALIDATION : ValComment = ".$this->ValComment."\n", FILE_APPEND);
if ($this->debug) file_put_contents('sfr.log', "VALIDATION : ValFEU = ".$this->ValFEU."\n", FILE_APPEND);
if ($this->debug) file_put_contents('sfr.log', "VALIDATION : AFFICHE PO = ".$this->displayPo."\n", FILE_APPEND);
}
break;
}

View File

@ -1259,51 +1259,67 @@ function indiScoreData($siren, $nic, $values = false)
function AdresseNormaliseEntete($values)
{
return array(
'AdresseL1_NOM',
'AdresseL2_NOM2',
'AdresseL3_ADRCOMP',
'AdresseL4_VOIE',
'AdresseL5_DISTSP',
'AdresseL6_POST',
'AdresseL7_PAYS',
);
return array(
'L1',
'L2',
'L3',
'L4',
'L5',
'L6',
'L7',
'ProcessCode',
'ProcessLabel',
'ProcessDate',
'QualityCode',
'QualityLabel',
'DateInsert',
'DateUpdate',
);
}
function AdresseNormaliseData($siren, $nic, $values = false)
{
global $iDb;
$iInsee = new Metier_Insee_MInsee($iDb);
$output['AdresseL1_NOM'] ='';
$output['AdresseL2_NOM2'] ='';
$output['AdresseL3_ADRCOMP'] ='';
$output['AdresseL4_VOIE'] ='';
$output['AdresseL5_DISTSP'] ='';
$output['AdresseL6_POST'] ='';
$output['AdresseL7_PAYS'] ='';
$tmp = $iInsee->getAdresse($siren, $nic);
if (count($tmp)>0) {
$output['AdresseL1_NOM'] = $tmp['L1_NOM'];
$output['AdresseL2_NOM2'] = $tmp['L2_NOM2'];
$output['AdresseL3_ADRCOMP'] = $tmp['L3_ADRCOMP'];
$output['AdresseL4_VOIE'] = $tmp['L4_VOIE'];
$output['AdresseL5_DISTSP'] = $tmp['L5_DISTP'];
$output['AdresseL6_POST'] = $tmp['L6_POST'];
$output['AdresseL7_PAYS'] = $tmp['L1_PAYS'];
}
try {
$etabM = new Application_Model_JoEtablissements();
$sql = $etabM->select(true)->columns(array('LPAD(source,3,0)', 'LPAD(source_id,20,0)'))
->where('siren=?', $siren)
->where('nic=?', $nic);
$etabResult = $etabM->fetchRow($sql);
$source = $etabResult->source;
$sourceId = $etabResult->source_id;
} catch (Zend_Db_Exception $e) {}
try {
$rnvp = new SdMetier_Rnvp_Adresse();
$rnvp->setCompanyId($companyId);
$infoRNVP = new Rnvp();
$infoRNVP = $rnvp->format();
} catch (Exception $e) {}
foreach($item as AdresseNormaliseEntete($values)) {
$output[$item] = '';
}
if ($infoRNVP !== null) {
foreach ($item as AdresseNormaliseEntete($values)) {
$output[$item] = $infoRNVP->{$item};
}
}
return $output;
}
function AdresseNormaliseInseeEntete($values)
{
return array(
'L1_NOM',
'L2_NOM2',
'L3_ADRCOMP',
'L4_VOIE',
'L5_DISTSP',
'L6_POST',
'L7_PAYS',
'AdresseL1_NOM',
'AdresseL2_NOM2',
'AdresseL3_ADRCOMP',
'AdresseL4_VOIE',
'AdresseL5_DISTSP',
'AdresseL6_POST',
'AdresseL7_PAYS',
);
}