From 990640b044016d514407eeea3c50f49421368b28 Mon Sep 17 00:00:00 2001 From: benoitpotier Date: Mon, 10 Apr 2017 12:08:37 +0200 Subject: [PATCH] =?UTF-8?q?r=C3=A9cup=C3=A9ration=20branch=20de=20michael?= =?UTF-8?q?=20wenservice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Metier/Defaillance/Detect.php | 88 +++- src/Metier/Defaillance/DetectTable.php | 208 +++++---- src/Metier/Defaillance/EvenProcol.php | 6 +- src/Metier/Insee/MInsee.php | 623 +++++++++++-------------- 4 files changed, 460 insertions(+), 465 deletions(-) diff --git a/src/Metier/Defaillance/Detect.php b/src/Metier/Defaillance/Detect.php index 64281bf..aca3a70 100755 --- a/src/Metier/Defaillance/Detect.php +++ b/src/Metier/Defaillance/Detect.php @@ -1,7 +1,7 @@ DateToday = date('Ymd'); + $this->DateRef = date('Ymd'); // Liste des événements au départ d'une procol $this->ListEvenProcol = include __DIR__ . '/EvenProcol.php'; @@ -105,41 +119,85 @@ class Metier_Defaillance_Detect $this->ListEvenProcolDelete = include __DIR__ . '/ProcolDelete.php'; } + public function setEvenNb($val) + { + $this->EvenNb = $val; + } + + /** + * Code Forme Juridique + * @param string $val + */ public function setFJ($val) { $this->FJ = $val; } + /** + * Date de cloture du bilan + * @param int $val + * Date au format AAAAMMJJ + */ public function setBilanCloture($val) { $this->BilanCloture = $val; } + /** + * Insee Actif + * @param int $val + */ public function setInseeActif($val) { $this->InseeActif = $val; } + /** + * RCS Actif + * @param int $val + */ public function setRcsActif($val) { $this->RcsActif = $val; } + /** + * Nombre d'etablissement Actif + * @param int $val + */ public function setEtabActif($val) { $this->EtabActifNb = $val; } + /** + * Est présent au registre des métiers + * @param int $val + */ public function setRM($val) { $this->IsRM = $val; } + /** + * Est présent au Greffe + * @param int $val + */ public function setGreffe($val) { $this->IsRCS = $val; } + /** + * Date de radiation au Greffe + * @param string $date + */ + public function setGreffeRadiation($date) + { + $date = intval(str_replace('-', '', $date)); + $this->GreffeRadiationDate = $date; + } + /** * Retourne la situation * @return string @@ -206,8 +264,9 @@ class Metier_Defaillance_Detect public function parse($ann) { $this->Even = $ann->code; - $this->EvenDateJugement = $ann->date; + $this->EvenDate = $ann->date; $this->EvenTxt = $ann->txt; + $this->EvenIndex++; if ($this->debug) { file_put_contents('procol.log', "Annonce : ".$ann->date . '-' . $ann->code."\n", FILE_APPEND); @@ -226,7 +285,7 @@ class Metier_Defaillance_Detect } // --- Variable pour le plan - $this->PlanDateStart = $this->EvenDateJugement; + $this->PlanDateStart = $this->EvenDate; $this->planPeriod($this->EvenTxt); $this->planEnd(); @@ -253,17 +312,24 @@ class Metier_Defaillance_Detect $result = $this->params($rule['params']); if ($result === true) { // Defintion paramètres situation - $this->SituationDateStart = $this->EvenDateJugement; + $this->SituationDateStart = $this->EvenDate; $this->situationEnd(); + $dateEnd = $this->SituationDateEnd; + if ($this->Situation == 'PL') { + $dateEnd = $this->PlanDateEnd; + } + // Enregistrement dans la timeline $this->Timeline[] = array( 'Situation' => $this->Situation, 'Even' => $this->Even, 'DateStart' => $this->SituationDateStart, - 'DateEnd' => $this->SituationDateEnd, + 'DateEnd' => $dateEnd, ); - file_put_contents('procol.log', print_r($this->Timeline, 1)."\n", FILE_APPEND); + if ($this->debug) { + file_put_contents('procol.log', print_r($this->Timeline, 1)."\n", FILE_APPEND); + } } if ($this->debug) { diff --git a/src/Metier/Defaillance/DetectTable.php b/src/Metier/Defaillance/DetectTable.php index 79a087f..8b8637b 100644 --- a/src/Metier/Defaillance/DetectTable.php +++ b/src/Metier/Defaillance/DetectTable.php @@ -16,32 +16,32 @@ return array( 'name' => 'PLAN', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'PlanPeriod', 'op' => 'EGAL', 'value'=> array(0,120)), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => array( - '1407', // Modification de plan - '1409', // Modification du plan de continuation - '1413', // Arrêt du plan de continuation - '1414', // Arrêt du plan de redressement - '1101', // Arrêt du plan de sauvegarde + //array('var' => 'PlanPeriod', 'op' => 'EGAL', 'value'=> array(0,120)), + array('var' => 'Even', 'op' => 'EGAL', 'value' => array( + 1407, // Modification de plan + 1409, // Modification du plan de continuation + 1413, // Arrêt du plan de continuation + 1414, // Arrêt du plan de redressement + 1101, // Arrêt du plan de sauvegarde )), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'PL'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'PL'), ), ), - // -- Period par defaut + // --- Period par defaut array( 'name' => 'PLAN-DUREE-DEFAUT1', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'PlanPeriod', 'op' => 'MAX', 'value'=> 1), - array( 'var' => 'PlanPeriod', 'op' => 'SET', 'value' => 120), + array('var' => 'PlanPeriod', 'op' => 'MAX', 'value'=> 1), + array('var' => 'PlanPeriod', 'op' => 'SET', 'value' => 120), ), ), array( 'name' => 'PLAN-DUREE-DEFAUT2', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'PlanPeriod', 'op' => 'MIN', 'value'=> 120), - array( 'var' => 'PlanPeriod', 'op' => 'SET', 'value' => 120), + array('var' => 'PlanPeriod', 'op' => 'MIN', 'value'=> 120), + array('var' => 'PlanPeriod', 'op' => 'SET', 'value' => 120), ), ), // --- Period par default pour FJ spécifique @@ -49,8 +49,8 @@ return array( 'name' => 'PLAN-DUREE-FJ1', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'PlanPeriod', 'op' => 'MAX', 'value'=> 1), - array( 'var' => 'FJ', 'op' => 'EGAL', 'value' => array( + array('var' => 'PlanPeriod', 'op' => 'MAX', 'value'=> 1), + array('var' => 'FJ', 'op' => 'EGAL', 'value' => array( 16,1600, // Exploitant agricole 63,6316,6317,6318, // Société coopérative agricole 5431,5432,5531,5532, // SMIA, SICA @@ -58,7 +58,7 @@ return array( 6533,6534,6535, // GAEC, GFA, Gpt Agricole Foncier 6597,6598, )), - array( 'var' => 'PlanPeriod', 'op' => 'SET', 'value' => 180), + array('var' => 'PlanPeriod', 'op' => 'SET', 'value' => 180), ), ), // --- Period par default pour FJ spécifique @@ -66,8 +66,8 @@ return array( 'name' => 'PLAN-DUREE-FJ2', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'PlanPeriod', 'op' => 'MIN', 'value'=> 120), - array( 'var' => 'FJ', 'op' => 'EGAL', 'value' => array( + array('var' => 'PlanPeriod', 'op' => 'MIN', 'value'=> 120), + array('var' => 'FJ', 'op' => 'EGAL', 'value' => array( 16,1600, // Exploitant agricole 63,6316,6317,6318, // Société coopérative agricole 5431,5432,5531,5532, // SMIA, SICA @@ -75,7 +75,7 @@ return array( 6533,6534,6535, // GAEC, GFA, Gpt Agricole Foncier 6597,6598, )), - array( 'var' => 'PlanPeriod', 'op' => 'SET', 'value' => '180'), + array('var' => 'PlanPeriod', 'op' => 'SET', 'value' => '180'), ), ), // --- Elimination du plan : période atteinte @@ -83,9 +83,9 @@ return array( 'name' => 'PLAN-PERIOD-ATTEINTE', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), - array( 'var' => 'PlanDateEnd', 'op' => 'MIN', 'value' => 'DateToday'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), + array('var' => 'PlanDateEnd', 'op' => 'MIN', 'value' => 'DateRef'), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Elimination du plan : appel de jugement @@ -93,9 +93,9 @@ return array( 'name' => 'PLAN-APPEL-JUGEMENT', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 4), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'PA'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 4), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'PA'), ), ), // --- Elimination du plan : cutoff @@ -103,10 +103,10 @@ return array( 'name' => 'PLAN-CUT-OFF', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), - array( 'var' => 'Cutoff', 'op' => 'EGAL', 'value' => true), - array( 'var' => 'ScoreSolv', 'op' => 'MIN', 'value' => 0), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'PL'), + array('var' => 'Cutoff', 'op' => 'EGAL', 'value' => true), + array('var' => 'ScoreSolv', 'op' => 'MIN', 'value' => 0), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Début de procol @@ -114,8 +114,8 @@ return array( 'name' => 'PROCOL-START', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenProcol'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'P'), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenProcol'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'P'), ), ), // --- Pas de mention de la procol @@ -123,9 +123,9 @@ return array( 'name' => 'PROCOL-EFFACEMENT-1', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 1), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Ne pas mentionner la procol si CJ=1xxx @@ -133,11 +133,11 @@ return array( 'name' => 'PROCOL-EFFACEMENT-2.1', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 2), - array( 'var' => 'FJ', 'op' => 'MIN', 'value' => 1000), - array( 'var' => 'FJ', 'op' => 'MAX', 'value' => 1999), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 2), + array('var' => 'FJ', 'op' => 'MIN', 'value' => 1000), + array('var' => 'FJ', 'op' => 'MAX', 'value' => 1999), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Ne pas mentionner la procol si actif et CJ!=9xxx et even de plus d'un mois @@ -145,12 +145,12 @@ return array( 'name' => 'PROCOL-EFFACEMENT-2.2', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 2), - array( 'var' => 'InseeActif', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'FJ', 'op' => 'MAX', 'value' => 9000), - array( 'var' => 'SituationNbMonthPast', 'op' => 'MIN', 'value' => 1), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 2), + array('var' => 'InseeActif', 'op' => 'EGAL', 'value' => 1), + array('var' => 'FJ', 'op' => 'MAX', 'value' => 9000), + array('var' => 'SituationNbMonthPast', 'op' => 'MIN', 'value' => 1), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Pas Procol si actif RCS @@ -158,10 +158,10 @@ return array( 'name' => 'PROCOL-EFFACEMENT-3', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 3), - array( 'var' => 'RcsActif', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 3), + array('var' => 'RcsActif', 'op' => 'EGAL', 'value' => 1), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Le dernier jugement est un appel => Procol Suspendu @@ -169,9 +169,9 @@ return array( 'name' => 'PROCOL-EFFACEMENT-4', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 4), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'PA'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'EvenDelete', 'op' => 'EGAL', 'value' => 4), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'PA'), ), ), // --- Procédure trop ancienne plus de 12 ans et actif @@ -179,10 +179,10 @@ return array( 'name' => 'PROCOL-ANCIEN', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'InseeActif', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'SituationDateEnd', 'op' => 'MAX', 'value' => 'DateToday'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'InseeActif', 'op' => 'EGAL', 'value' => 1), + array('var' => 'SituationDateEnd', 'op' => 'MAX', 'value' => 'DateRef'), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- En Procol mais présence d'une annonce de cloture ou LJ avec Bilan publié ultérieurement @@ -190,13 +190,13 @@ return array( 'name' => 'PROCOL-CLOTURE-LJ-BILAN', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => array( + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'Even', 'op' => 'EGAL', 'value' => array( 1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1311,1312,1313, 1500,1501,1502,1503,1504 )), - array( 'var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'DateToday'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'EvenDate'), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- En Procol mais présence d'une annonce LJ avec Bilan publié ultérieurement, uniquement FJ!=1xxx @@ -204,17 +204,17 @@ return array( 'name' => 'PROCOL-CLOTURE', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'FJ', 'op' => 'MIN', 'value' => 1999), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'FJ', 'op' => 'MIN', 'value' => 1999), //Si l'evenement procol de départ, précédent est - array( 'var' => 'SituationLastEven', 'op' => 'EGAL', 'value' => array( + array('var' => 'SituationLastEven', 'op' => 'EGAL', 'value' => array( 1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1311,1312,1313,1314,1417 )), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => array( + array('var' => 'Even', 'op' => 'EGAL', 'value' => array( 1502,1503 )), - array( 'var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'DateToday'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'CL'), + array('var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'EvenDate'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'CL'), ), ), // --- En procol mais cutoff manuel @@ -222,10 +222,10 @@ return array( 'name' => 'PROCOL-CUT-OFF', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), - array( 'var' => 'Cutoff', 'op' => 'EGAL', 'value' => true), - array( 'var' => 'ScoreSolv', 'op' => 'MIN', 'value' => 0), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => 'P'), + array('var' => 'Cutoff', 'op' => 'EGAL', 'value' => true), + array('var' => 'ScoreSolv', 'op' => 'MIN', 'value' => 0), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Absorbé ?? ICI uniquement lorsque Situation = '' @@ -233,9 +233,9 @@ return array( 'name' => 'ABSORPTION', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenAbsorption'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'A'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenAbsorption'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'A'), ), ), // --- Dissolution ?? ICI uniquement lorsque Situation = '' @@ -243,9 +243,9 @@ return array( 'name' => 'DISSOLUTION', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenDissolution'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'D'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenDissolution'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'D'), ), ), // --- Dissolution mais bilan après événements ?? ICI uniquement lorsque Situation = '' @@ -253,10 +253,10 @@ return array( 'name' => 'DISSOLUTION-AVEC-BILAN', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenDissolution'), - array( 'var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'EvenDateJugement'), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => ''), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenDissolution'), + array('var' => 'BilanCloture', 'op' => 'MIN', 'value' => 'EvenDate'), + array('var' => 'Situation', 'op' => 'SET', 'value' => ''), ), ), // --- Radiation RM @@ -264,10 +264,10 @@ return array( 'name' => 'RADIATION-RM', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'IsRM', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'RR'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'IsRM', 'op' => 'EGAL', 'value' => 1), + array('var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'RR'), ), ), // --- Radiation RCS @@ -275,10 +275,22 @@ return array( 'name' => 'RADIATION-RCS', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'IsRCS', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'RR'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'IsRCS', 'op' => 'EGAL', 'value' => 1), + array('var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), + array('var' => 'EvenNb', 'op' => 'MIN', 'value' => 'EvenIndex'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'RR'), + ), + ), + // --- Radiation RCS avec Date + array( + 'name' => 'RADIATION-DATE', + 'value' => 'CONTINUE', + 'params' => array( + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'GreffeRadiationDate', 'op' => 'MIN', 'value' => 0), + array('var' => 'EvenNb', 'op' => 'MIN', 'value' => 'EvenIndex'), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'RR'), ), ), // --- Radiation Publié 1 @@ -286,22 +298,22 @@ return array( 'name' => 'RADIATION-PUB1', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenRadiation'), - array( 'var' => 'EtabActifNb', 'op' => 'EGAL', 'value' => 0), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'RP'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenRadiation'), + array('var' => 'EtabActifNb', 'op' => 'EGAL', 'value' => 0), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'RP'), ), ), - // Radiation Publié 2 + // --- Radiation Publié 2 array( 'name' => 'RADIATION-PUB2', 'value' => 'CONTINUE', 'params' => array( - array( 'var' => 'Situation', 'op' => 'EGAL', 'value' => ''), - array( 'var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenRadiation'), - array( 'var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), - array( 'var' => 'IsRCS', 'op' => 'EGAL', 'value' => 1), - array( 'var' => 'Situation', 'op' => 'SET', 'value' => 'RP'), + array('var' => 'Situation', 'op' => 'EGAL', 'value' => ''), + array('var' => 'Even', 'op' => 'EGAL', 'value' => 'ListEvenRadiation'), + array('var' => 'InseeActif', 'op' => 'EGAL', 'value' => 0), + array('var' => 'IsRCS', 'op' => 'EGAL', 'value' => 1), + array('var' => 'Situation', 'op' => 'SET', 'value' => 'RP'), ), ), ); diff --git a/src/Metier/Defaillance/EvenProcol.php b/src/Metier/Defaillance/EvenProcol.php index 5b456b2..8b54365 100644 --- a/src/Metier/Defaillance/EvenProcol.php +++ b/src/Metier/Defaillance/EvenProcol.php @@ -44,7 +44,7 @@ return array( 1201, //Conversion sauvegarde en Redressement Judiciaire 1202, //Renouvellement de la période d'observation 1203, //Avis de dépôt de l'état de collocation - 1204, //Avis de dépôt de l'état des créances + //1204, //Avis de dépôt de l'état des créances 1205, //Avis de dépôt de l'état des créances complémentaires nées après jugement d'ouverture 1206, //Avis de dépôt de l'état des créances nées après jugement d'ouverture 1207, //Règlements amiables @@ -88,8 +88,8 @@ return array( 1410, //Suite de jugement/règlement/liquidation 1411, //Arrêt du plan de cession 1412, //Arrêt du plan de cession partielle - 1413, //Arrêt du plan de continuation - 1414, //Arrêt du plan de redressement + //1413, //Arrêt du plan de continuation + //1414, //Arrêt du plan de redressement => Supprimer les éléments 1415, //Prolongement du plan cession 1416, //Jugement constatant la bonne exécution du plan 1417, //Jugement d'extension de liquidation judiciaire diff --git a/src/Metier/Insee/MInsee.php b/src/Metier/Insee/MInsee.php index a458d39..440a91b 100644 --- a/src/Metier/Insee/MInsee.php +++ b/src/Metier/Insee/MInsee.php @@ -86,14 +86,29 @@ class Metier_Insee_MInsee extends Metier_Insee_Table */ protected $logger; + protected $iDb; + /** * MInsee */ public function __construct($db = null) { - $this->conn = Zend_Registry::get('doctrine'); - $this->iBodacc = new Metier_Bodacc_MBodacc(); + if ($db === null) { + $this->iDb = new Metier_Util_Db(); + } else { + $this->iDb = $db; + } + $this->conn = Zend_Registry::get('doctrine'); + + $this->iBodacc = new Metier_Bodacc_MBodacc(); + } + + /** + * Set Logger from app registry + */ + public function setLogger() + { if (Zend_Registry::isRegistered('logger')) { $this->logger = Zend_Registry::get('logger'); } @@ -359,9 +374,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table */ public function rechercheDir($nom, $prenom='', $fonction='', $dateNaiss='', $villeNaiss='', $deb=0, $nbRep=20, $maxRep=200, $pertinence=false) { - if ($this->logger !== null) { - $this->logger->info("rechercheDir de $nom, $prenom, $fonction, $dateNaiss, $villeNaiss (Max Rep=$nbRep)"); - } + Metier_Util_Log::write('I', "rechercheDir de $nom, $prenom, $fonction, $dateNaiss, $villeNaiss (Max Rep=$nbRep)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); $jour = $mois = $annee = ''; if ($dateNaiss != '' && $dateNaiss != '//' && $dateNaiss != '0/0/0') { $tabDateNaiss = explode('/', $dateNaiss); @@ -1243,9 +1256,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table IF (e.adr_dep=99, (SELECT libPays FROM jo.tabPays p WHERE p.codePaysInsee=e.adr_com) , 'France') AS libPays"; if ($typeId == 'TEL') { - if ($this->logger !== null) { - $this->logger->info("Recherche par TEL de $id avec un maximum de $nbRep réponses"); - } + Metier_Util_Log::write('I', "Recherche par TEL de $id avec un maximum de $nbRep réponses", __LINE__, __FILE__, __FUNCTION__, __CLASS__); try { $stmt = $this->conn->executeQuery("SELECT count(*) AS nb FROM jo.etablissements WHERE TEL=$id OR FAX=$id $filtreActif"); @@ -1482,7 +1493,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table 'Capital' => $etab['capital'], 'CapitalDev' => $etab['capitalDev'], 'TrancheCA' => $etab['tca'], - 'TrancheCALib' => isset(self::$tabTCA[$etab['tca']])?self::$tabTCA[$etab['tca']]:null, + 'TrancheCALib' => self::$tabTCA[$etab['tca']], 'EffEnTr' => $etab['teff_entrep'], 'EffEnTrLib' => self::$tabEffectif[$etab['teff_entrep']], 'EffEtTr' => $etab['teff_etab'], @@ -1787,37 +1798,33 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $date = $this->companyEvenDateStop; } - $sql = "SELECT CONCAT(LPAD(e.insSIREN,9,0), LPAD(e.insNIC,5,0)) AS Siret, - LPAD(e.insSIREN,9,0) AS Siren, - LPAD(e.insNIC,5,0) AS Nic, - e.insSIEGE AS Siege, - e.insNOMEN AS Nom, - e.insCODPOS AS CP, - e.insCJ AS FJ, - e.insAPEN700 AS NafEnt, - e.insAPEN700 AS NafEtab, - e.insTEFEN AS EffEnTr, - e.insEFENCENT AS Effectif, - e.insDCRET AS DateCreaEt, - e.insDCREN AS DateCreaEn, - e.insEVE, - i.insRECME AS RECME - FROM insee.insee_even e - LEFT OUTER JOIN insee.insee_notices i ON (i.insSIREN=e.insSIREN AND i.insNIC=e.insNIC) - WHERE e.insSIREN=:siren AND idFlux<:date ORDER BY idFlux DESC, insSIEGE DESC LIMIT 0,1"; - try { - $stmt = $this->conn->prepare($sql); - $stmt->bindValue('siren', $siren); - $stmt->bindValue('date', $date); - $stmt->execute(); - } catch (\Doctrine\DBAL\DBALException $e) { - if ($this->logger !== null) { - $this->logger->error($e->getMessage()); - } - } - - if ($stmt->rowCount() > 0) { - $identite = $stmt->fetch(\PDO::FETCH_ASSOC); + $db = Zend_Db_Table_Abstract::getDefaultAdapter(); + $sql = $db->select() + ->from(array('e'=>'insee_even'), array( + 'CONCAT(LPAD(e.insSIREN,9,0), LPAD(e.insNIC,5,0)) AS Siret', + 'LPAD(e.insSIREN,9,0) AS Siren', + 'LPAD(e.insNIC,5,0) AS Nic', + 'insSIEGE AS Siege', + 'insNOMEN AS Nom', + 'insCODPOS AS CP', + 'insCJ AS FJ', + 'insAPEN700 AS NafEnt', + 'insAPEN700 AS NafEtab', + 'insTEFEN AS EffEnTr', + 'insEFENCENT AS Effectif', + 'insDCRET AS DateCreaEt', + 'insDCREN AS DateCreaEn', + 'insEVE', + ), 'insee') + ->joinLeft(array('i'=>'insee_notices'), 'i.insSIREN=e.insSIREN AND i.insNIC=e.insNIC', array( + 'insRECME AS RECME', + ), 'insee') + ->where('e.insSIREN = ?', $siren) + ->where('idFlux < ?', $date) + ->order('idFlux DESC')->order('insSIEGE DESC')->limit(1); + $result = $db->fetchRow($sql, null, Zend_Db::FETCH_ASSOC); + if ($result !== null) { + $identite = $result; } // --- Recherche dans le stock else { @@ -1827,37 +1834,31 @@ class Metier_Insee_MInsee extends Metier_Insee_Table break; } } - - $sql = "SELECT CONCAT(LPAD(e.SIREN,9,0), LPAD(e.NIC,5,0)) AS Siret, - LPAD(e.SIREN,9,0) AS Siren, - LPAD(e.NIC,5,0) AS Nic, - e.SIEGE AS Siege, - e.NOMEN_LONG AS Nom, - e.CODPOS AS CP, - e.CJ AS FJ, - e.APEN700 AS NafEnt, - e.APEN700 AS NafEtab, - e.TEFEN AS EffEnTr, - e.EFENCENT AS Effectif, - e.DCRET AS DateCreaEt, - insDCREN AS DateCreaEn - i.insRECME AS RECME - FROM insee.$notice e - LEFT OUTER JOIN insee.insee_notices i ON (i.insSIREN=e.SIREN AND i.insNIC=e.NIC) - WHERE e.insSIREN=:siren AND idFlux<:date ORDER BY idFlux DESC, insSIEGE DESC LIMIT 0,1"; - try { - $stmt = $this->conn->prepare($sql); - $stmt->bindValue('siren', $siren); - $stmt->bindValue('date', $date); - $stmt->execute(); - } catch (\Doctrine\DBAL\DBALException $e) { - if ($this->logger !== null) { - $this->logger->error($e->getMessage()); - } - } - - if ($stmt->rowCount() > 0) { - $identite = $stmt->fetch(\PDO::FETCH_ASSOC); + $sql = $db->select() + ->from(array('e'=>$notice), array( + 'CONCAT(LPAD(SIREN,9,0), LPAD(NIC,5,0)) AS Siret', + 'LPAD(SIREN,9,0) AS Siren', + 'LPAD(NIC,5,0) AS Nic', + 'SIEGE AS Siege', + 'NOMEN_LONG AS Nom', + 'CODPOS AS CP', + 'CJ AS FJ', + 'APEN700 AS NafEnt', + 'APEN700 AS NafEtab', + 'TEFEN AS EffEnTr', + 'EFENCENT AS Effectif', + 'DCRET AS DateCreaEt', + 'insDCREN AS DateCreaEn', + ), 'historiques') + ->joinLeft(array('i'=>'insee_notices'), 'i.insSIREN=e.SIREN AND i.insNIC=e.NIC', array( + 'insRECME AS RECME', + ), 'insee') + ->where('e.insSIREN = ?', $siren) + ->where('idFlux < ?', $date) + ->order('idFlux DESC')->order('insSIEGE DESC')->limit(1); + $result = $db->fetchRow($sql, null, Zend_Db::FETCH_ASSOC); + if ($result !== null) { + $identite = $result; } } if (count($identite) > 0) { @@ -1880,22 +1881,15 @@ class Metier_Insee_MInsee extends Metier_Insee_Table } // --- Capital - $sql = "SELECT valeur FROM jo.rncs_modifs - WHERE champs='capitalMontant' AND siren=:siren AND flux<:date - ORDER BY flux DESC LIMIT 0,1"; - try { - $stmt = $this->conn->prepare($sql); - $stmt->bindValue('siren', $siren); - $stmt->bindValue('date', $date); - $stmt->execute(); - } catch (\Doctrine\DBAL\DBALException $e) { - if ($this->logger !== null) { - $this->logger->error($e->getMessage()); - } - } + $sql = $db->select() + ->from('rncs_modifs', array('valeur'), 'jo') + ->where('champs = ?', 'capitalMontant') + ->where('siren = ? ', $siren) + ->where('flux < ?', $date) + ->order('flux DESC')->limit(1); + $result = $db->fetchRow($sql, null, Zend_Db::FETCH_OBJ); $identite['Capital'] = ''; - if ($stmt->rowCount() > 0) { - $result = $stmt->fetch(\PDO::FETCH_OBJ); + if ($result !== null) { $identite['Capital'] = $result->valeur; } @@ -2245,9 +2239,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $iTva = new Metier_Partenaires_MTva(); $iTva->setCompanyId($siren); - if ($tabInsee['ACTIF']==1 && (date('H')<10 || date('H')>=18)) { - $iTva->setRemote(); - } + $iTva->setRemote(); $iTva->getTVA(); $vatNumber = $iTva->vatNumber; $vatDefined = $iTva->vatDefined; @@ -2663,17 +2655,17 @@ class Metier_Insee_MInsee extends Metier_Insee_Table '5510Z', // Hôtels et hébergement similaire '5520Z', // Hébergement touristique et autre hébergement de co '5530Z', // Terrains de camping et parcs pour caravanes ou véh - '702A', // Location de logements + '702A', // Location de logements '6820A', // Location de logements '6820B', // Location de terrains et d'autres biens immobiliers - '551A', // Hôtels touristiques avec restaurant + '551A', // Hôtels touristiques avec restaurant '5610A', // Restauration traditionnelle - '741J', // Administration d'entreprises + '741J', // Administration d'entreprises '7010Z', // Activités des sièges sociaux - '552C', // Exploitation de terrains de camping - '702C', // Location d'autres biens immobiliers - '551C', // Hôtels touristiques sans restaurant - '553A', // Restauration de type traditionnel + '552C', // Exploitation de terrains de camping + '702C', // Location d'autres biens immobiliers + '551C', // Hôtels touristiques sans restaurant + '553A', // Restauration de type traditionnel ); if (in_array($tabInsee['APE_ENT'], $tabNafTourisme) || in_array($tabInsee['APE_ETAB'], $tabNafTourisme)) { @@ -2792,149 +2784,6 @@ class Metier_Insee_MInsee extends Metier_Insee_Table )); } - // --- Situation Juridique - if (intval($siren) > 100) { - if ($this->debug) { - file_put_contents('procol.log', "=== Situation Juridique ===\n"); - } - - $tabAnn = $this->getAnnoncesLegales($siren, 0, '', false, false); - - if (count($tabAnn) > 0) { - // Date de dernière mise à jour - $tabDates = array(); - foreach ($tabAnn as $iAnn => $ann) { - $tabDates[] = $ann['dateInsertionSD']; - } - rsort($tabDates); - $tabRet['dateMajANN'] = Metier_Util_Date::dateT('Y-m-d', 'Y-m-d', $tabDates[0]); - if ($tabRet['dateMajANN'] == '--') { - $tabRet['dateMajANN'] = ''; - } else { - $dateAnnLastCompare = DateTime::createFromFormat('Y-m-d', $tabRet['dateMajANN']); - } - - // Procol - $tabProcol = $this->getAnnoncesLegales($siren, 0, 'P', false); - if (count($tabProcol) > 0) { - $tabDates = array(); - foreach ($tabProcol as $iProcol => $procol) { - $tabDates[] = $procol['dateJugement']; - } - 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 - elseif ($this->appelJugement) { - $tabRet['SituationJuridique'] = 'PA'; - } - // Jugement de cloture après LJ - elseif ($this->SituationCloture) { - if ($this->debug) { - file_put_contents('procol.log', "Cloture (CL) "."\n", FILE_APPEND); - } - $tabRet['SituationJuridique'] = 'CL'; - } - // En cours de procédure - else { - if ($this->debug) { - file_put_contents('procol.log', "Procol (P) "."\n", FILE_APPEND); - } - $tabRet['SituationJuridique'] = 'P'; - } - - // RAZ SituationJuridique si cutoff plus récent que dernière procol - try { - $stmt = $this->conn->executeQuery("SELECT encours, scoreSolv, scoreDir, scoreConf, - DATE(dateInsert)*1 AS dateInsert, DATE(dateUpdate)*1 AS dateUpdate - FROM jo.scores_cutoff WHERE siren=$siren"); - if ($stmt->rowCount() > 0) { - $result = $stmt->fetch(\PDO::FETCH_ASSOC); - if ($result['scoreSolv'] > 0) { - //Tri des dates de procol - $tabDates = array(); - foreach ($tabProcol as $iProcol => $procol) { - $tabDates[] = $procol['dateJugement']; - } - rsort($tabDates); - $dateProcol = str_replace('-', '', $tabDates[0])*1; - if ($result['dateUpdate'] > $result['dateInsert']) { - $dateMaj = str_replace('-', '', $result['dateUpdate']); - } else { - $dateMaj = str_replace('-', '', $result['dateInsert']); - } - if ($dateProcol <= $dateMaj) { - $tabRet['SituationJuridique'] = ''; - } - } - } - } catch (\Doctrine\DBAL\DBALException $e) { - if ($this->logger !== null) { - $this->logger->error($e->getMessage()); - } - } - } - - // Absorption - if ($identite['SituationJuridique'] == '') { - $tabAnn = $this->getAnnoncesLegales($siren, 0, 'A', false); - $nbAnn = count($tabAnn); - if ($nbAnn > 0) { - if ($this->debug) { - file_put_contents('procol.log', "DETECTION ABSORPTION\n", FILE_APPEND); - } - $dateAnn = $tabAnn[$nbAnn-1]['dateInsertionSD']; - $dateAnnCompare = DateTime::createFromFormat('Y-m-d H:i:s', $dateAnn); - $dateAnnCompare->add(new DateInterval('P364D')); - if ($dateAnnCompare > $dateAnnLastCompare) { - $tabRet['SituationJuridique'] = 'A'; - if ($this->debug) { - file_put_contents('procol.log', "Entreprise absorbée\n", FILE_APPEND); - } - } - } - } - - // Dissolution - if ($identite['SituationJuridique'] == '') { - $tabAnn = $this->getAnnoncesLegales($siren, 0, 'D', false); - $nbAnn = count($tabAnn); - if ($nbAnn > 0) { - if ($this->debug) { - file_put_contents('procol.log', "DETECTION DISSOLUTION\n", FILE_APPEND); - } - $dateAnn = $tabAnn[$nbAnn-1]['dateInsertionSD']; - $dateAnnCompare = DateTime::createFromFormat('Y-m-d H:i:s', $dateAnn); - $dateAnnCompare->add(new DateInterval('P364D')); - if ($dateAnnCompare > $dateAnnLastCompare) { - $tabRet['SituationJuridique'] = 'D'; - if ($this->debug) { - file_put_contents('procol.log', "Entreprise dissolue\n", FILE_APPEND); - } - } - } - } - } - - if ($this->debug) { - file_put_contents('procol.log', "SituationJuridique = ".$tabRet['SituationJuridique']."\n", FILE_APPEND); - } - $timer['getAnnoncesLegales'] = microtime(true); - } // Fin Situation Juridique - if (($tabInsee['CJ'] > 0 && $tabInsee['CJ'] < 20 || $tabInsee['CJ'] > 999 && $tabInsee['CJ'] < 2000) && $tabInsee['DIR_FCT']=='') { $tabRet['dir1Titre'] = self::$tabFct['PP']; @@ -3423,34 +3272,34 @@ class Metier_Insee_MInsee extends Metier_Insee_Table if (strtoupper(trim($entrep['sigle'])) != strtoupper(trim($tabRet['Sigle']))) { $tabRet['sigleLong'] = strtoupper($entrep['sigle']); } - $tabRet['dateImmat'] = $entrep['dateImma']; - $tabRet['dateRad'] = $entrep['dateRad']; - $tabRet['Capital'] = $entrep['capitalMontant']+($entrep['capitalCent']/100); - $tabRet['CapitalDev'] = $entrep['capitalDevIso']; - $tabRet['CapitalType'] = trim(strtoupper(substr($entrep['capitalType'], 0, 1))); + $tabRet['dateImmat'] = $entrep['dateImma']; + $tabRet['dateRad'] = $entrep['dateRad']; + $tabRet['Capital'] = $entrep['capitalMontant']+($entrep['capitalCent']/100); + $tabRet['CapitalDev'] = $entrep['capitalDevIso']; + $tabRet['CapitalType'] = trim(strtoupper(substr($entrep['capitalType'], 0, 1))); // Par défaut, la Forme juridique qui fait foie est celle de l'INPI $fjInpi = $entrep['cj']*1; if ($tabRet['FJ']*1 != $fjInpi && $fjInpi>0) { - $tabRet['FJ2'] = $tabRet['FJ']; - $tabRet['FJ2_Lib'] = $tabRet['FJ_lib']; - $tabRet['FJ'] = $fjInpi; - $tabRet['FJ_lib'] = $this->getLibelleFJ($fjInpi); + $tabRet['FJ2'] = $tabRet['FJ']; + $tabRet['FJ2_Lib'] = $tabRet['FJ_lib']; + $tabRet['FJ'] = $fjInpi; + $tabRet['FJ_lib'] = $this->getLibelleFJ($fjInpi); } else { - $tabRet['FJ2'] = $tabRet['FJ']; - $tabRet['FJ2_Lib'] = $tabRet['FJ_lib']; + $tabRet['FJ2'] = $tabRet['FJ']; + $tabRet['FJ2_Lib'] = $tabRet['FJ_lib']; } if ($fjInpi >= 1000 && $fjInpi < 2000) { - $tabRet['dir1Titre'] = 'Personne physique'; - $tabRet['dir1Code'] = '1050'; + $tabRet['dir1Titre'] = 'Personne physique'; + $tabRet['dir1Code'] = '1050'; $tabRet['dir1NomPrenom'] = strtoupper($entrep['nom']).' '. ucwords(strtolower($entrep['prenom'])); - $tabRet['dir1Nom'] = strtoupper($entrep['nom']); - $tabRet['dir1Prenom'] = ucwords(strtolower($entrep['prenom'])); - $tabRet['dir1NomUsage'] = strtoupper($entrep['nomUsage']); - $tabRet['dir1DateNaiss'] = $entrep['dateNaiss']; - $tabRet['dir1LieuNaiss'] = $entrep['lieuNaiss']; - $tabRet['dir1Genre'] = $entrep['sexe']; + $tabRet['dir1Nom'] = strtoupper($entrep['nom']); + $tabRet['dir1Prenom'] = ucwords(strtolower($entrep['prenom'])); + $tabRet['dir1NomUsage'] = strtoupper($entrep['nomUsage']); + $tabRet['dir1DateNaiss'] = $entrep['dateNaiss']; + $tabRet['dir1LieuNaiss'] = $entrep['lieuNaiss']; + $tabRet['dir1Genre'] = $entrep['sexe']; } if ($tabRet['DateMajRCS'] == '') { @@ -3467,10 +3316,6 @@ class Metier_Insee_MInsee extends Metier_Insee_Table // On signal que l'entreprise est radié du RCS else { $tabRet['EntActiveRCS'] = 0; - // On signal que l'entreprise est radié du RCS - if ($tabRet['SituationJuridique'] == '') { - $tabRet['SituationJuridique'] = 'RR'; - } } // Spécificité EIRL @@ -3600,10 +3445,6 @@ class Metier_Insee_MInsee extends Metier_Insee_Table // On signal que l'entreprise est radié du RCS else { $tabRet['EntActiveRCS'] = 0; - // On signal que l'entreprise est radié du RCS - if ($tabRet['SituationJuridique'] == '') { - $tabRet['SituationJuridique'] = 'RR'; - } } $tabRet['NomCommercial'] = $rmEntrep['nomCommercial']; @@ -3623,24 +3464,25 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $tabRet['dir1Code'] = '1050'; } - if ($accesDist && + if ($accesDist // Département couvert par Infogreffe - !in_array($tabRet['Dept'], array(57, 67, 68, 97, 98, 99)) && + && !in_array($tabRet['Dept'], array(57, 67, 68, 97, 98, 99)) && // Forme Juridique présente au greffe - (in_array($tabInsee['CJ'], array(1100,1200,1300,1700,9900)) || - ($tabInsee['CJ']>=3100 && $tabInsee['CJ']<=3299) || - ($tabInsee['CJ']>=4100 && $tabInsee['CJ']<=4199) || - ($tabInsee['CJ']>=5100 && $tabInsee['CJ']<=5899) || - ($tabInsee['CJ']>=6100 && $tabInsee['CJ']<=6599) || - preg_match('/EIRL/', $nom) || preg_match('/EIRL/', $nom2) || - preg_match('/EIRL/', $tabRet['Sigle']) || preg_match('/EIRL/', $tabRet['Enseigne']) || - preg_match('/EIRL/', $tabRet['Adresse']) || preg_match('/EIRL/', $tabRet['Adresse2']) - ) - && ($tabInsee['CJ'] == 1700 || // Agents commerciaux (uniquement au Greffes RSAC) - $tabRet['numRC'] == '' || // Numéro de RCS absent = Anomalie (<à3%) - $tabRet['Tribunal'] == '' || // Tribunal absent = anomalie - str_replace('-', '', $tabRet['dateImmat'])*1 == 0 || // Pas de date d'immat = anomalie (<à9%) - ($nbEtab*1 == 0 && str_replace('-', '', $tabRet['dateRad'])*1 == 0) // Inactif sans date de RAD + (in_array($tabInsee['CJ'], array(1100, 1200, 1300, 1700, 9900)) + || ($tabInsee['CJ']>=3100 && $tabInsee['CJ']<=3299) + || ($tabInsee['CJ']>=4100 && $tabInsee['CJ']<=4199) + || ($tabInsee['CJ']>=5100 && $tabInsee['CJ']<=5899) + || ($tabInsee['CJ']>=6100 && $tabInsee['CJ']<=6599) + || preg_match('/EIRL/', $nom) || preg_match('/EIRL/', $nom2) + || preg_match('/EIRL/', $tabRet['Sigle']) + || preg_match('/EIRL/', $tabRet['Enseigne']) + || preg_match('/EIRL/', $tabRet['Adresse']) + || preg_match('/EIRL/', $tabRet['Adresse2']) ) + && ($tabInsee['CJ']==1700 || // Agents commerciaux (uniquement au Greffes RSAC) + $tabRet['numRC']=='' || // Numéro de RCS absent = Anomalie (<à3%) + $tabRet['Tribunal']=='' || // Tribunal absent = anomalie + str_replace('-', '', $tabRet['dateImmat'])*1==0 || // Pas de date d'immat = anomalie (<à9%) + ($nbEtab*1 == 0 && str_replace('-', '', $tabRet['dateRad'])*1==0) // Inactif sans date de RAD ) ) { if ($this->debugtime) { @@ -3653,7 +3495,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $iRncs = new Metier_Partenaires_MRncs(); if ($this->debugtime) { - $duree=round(microtime(1)-$tdeb, 3); + $duree = round(microtime(1)-$tdeb, 3); file_put_contents(LOG_PATH.'/accesDistant.log', date('YmdHis').";$siren;MGreffes APRES ($duree s)\n", FILE_APPEND); } @@ -3667,12 +3509,11 @@ class Metier_Insee_MInsee extends Metier_Insee_Table if (str_replace('-', '', $tabRet['dateImmat'])*1 == 0) { $tabRet['dateImmat'] = $etabG['DateCreation']; } - if (str_replace('-', '', $tabRet['dateRad'])*1 == 0) { - $tabRet['dateRad'] = $etabG['DateRadiation']; - if (str_replace('-', '', $tabRet['dateRad'])*1 > 0 && $tabRet['SituationJuridique'] == '') { - $tabRet['SituationJuridique'] = 'RR'; - } + + if (str_replace('-', '', $tabRet['dateRad'])*1==0) { + $tabRet['dateRad'] = $etabG['DateRadiation']; } + if (preg_match('/[A-Z]/i', substr($tabRet['AutreId'], 2, 2)) || $tabRet['AutreId']=='') { $tabRet['AutreId'] = $etabG['NumRC2']; } @@ -3685,9 +3526,6 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $tabRad = $this->getAnnoncesLegales($siren, 0, 'R'); // Il y a au moins une annonce de radiation au Bodacc if (count($tabRad) > 0) { - if ($tabRet['SituationJuridique'] == '') { - $tabRet['SituationJuridique'] = 'RP'; - } $dateEff = str_replace('-', '', $tabRad[0]['dateEffet'])*1; $dateJug = str_replace('-', '', $tabRad[0]['dateJugement'])*1; $datePar = str_replace('-', '', $tabRad[0]['DateParution'])*1; @@ -3830,15 +3668,84 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $timer['infosBoursieres'] = microtime(true); } + // --- Situation Juridique + $situation = ''; + if (intval($siren) > 100) { + $annoncesList = $this->getAnnoncesLegales($siren); + $annoncesNb = count($annoncesList); + $detect = new Metier_Defaillance_Detect(); + $detect->setEvenNb($annoncesNb); + $detect->setFJ($tabInsee['CJ']); + $detect->setInseeActif($tabInsee['ACTIF']); + $detect->setEtabActif($nbEtab); + if ($tabRet['numGreffe']*1 > 0) { + $detect->setGreffe(1); + } + $detect->setRcsActif($tabRet['EntActiveRCS']); + if (isset($entrep['numRM'])) { + $detect->setRM(1); + } + $detect->setBilanCloture($tabRet['bilanDate']); + if (isset($tabRet['dateRad'])) { + $detect->setGreffeRadiation($tabRet['dateRad']); + } + if ($annoncesNb > 0) { + // Parcours annonces + $tabJugements = array(); + foreach ($annoncesList as $i => $ann) { + $date = str_replace('-','', $ann['dateJugement']); + if (intval($date) == 0) { + $date = str_replace('-','', $ann['dateParution']); + } + if (!empty($date)) { + $tabJugements[$date] = $ann; + } + } + ksort($tabJugements); + foreach ($tabJugements as $ann) { + $annFormat = new stdClass(); + $date = str_replace('-', '', $ann['dateJugement']); + if (intval($date) == 0) { + $date = str_replace('-','', $ann['dateParution']); + } + $annFormat->date = $date; + $annFormat->code = $ann['evenements'][0]['CodeEven']; + $annFormat->txt = $ann['texteAnnonce']; + + $detect->parse($annFormat); + $situation = $detect->getSituation(); + + // Date de radiation + if ($situation == 'RP') { + $timeline = $detect->getTimeline(); + $last = end($timeline); + $tabRet['dateRad'] = $last->DateStart; + } + } + } + $tabRet['SituationJuridique'] = $situation; + // Fin Situation Juridique + + // Date de dernière mise à jour + if ($annoncesNb > 0) { + $annonceLast = end($annoncesList); + $tabRet['dateMajANN'] = Metier_Util_Date::dateT('Y-m-d', 'Y-m-d', $annonceLast['dateInsertionSD']); + if ($tabRet['dateMajANN'] == '--') { + $tabRet['dateMajANN'] = ''; + } + } + $timer['getAnnoncesLegales'] = microtime(true); + } + // Date de dernière mise à jour $lastMaj = str_replace('-', '', $tabRet['DateMajINSEE'])*1; if (str_replace('-', '', $tabRet['DateMajRCS'])*1 > $lastMaj) { $lastMaj = str_replace('-', '', $tabRet['DateMajRCS'])*1; } - if (str_replace('-', '', $tabRet['bilanDateMaj'])*1>$lastMaj) { + if (str_replace('-', '', $tabRet['bilanDateMaj'])*1 > $lastMaj) { $lastMaj = str_replace('-', '', $tabRet['bilanDateMaj'])*1; } - if (str_replace('-', '', $tabRet['dateMajANN'])*1>$lastMaj) { + if (str_replace('-', '', $tabRet['dateMajANN'])*1 > $lastMaj) { $lastMaj = str_replace('-', '', $tabRet['dateMajANN'])*1; } $tabRet['dateMajIdentite'] = Metier_Util_Date::dateT('Ymd', 'Y-m-d', $lastMaj); @@ -4877,42 +4784,13 @@ class Metier_Insee_MInsee extends Metier_Insee_Table */ public function getAnnoncesLegalesPlan($type, $fj, $annonce) { - // --- Bodacc - if ($type == 'bodacc') { - $tabEven = explode(';', $annonce['typeEven']); - foreach ($tabEven as $even) { - $this->matchPlanDuree($even, $annonce['dateJugement'], $annonce['annonce']); - } - } - // --- Annonce - if ($type == 'annonce') { - $this->matchPlanDuree($annonce['typeEven'], $annonce['dateJugement'], $annonce['annonce']); - } - - // --- Historique - if ($type == 'histo') { - $this->matchPlanDuree($annonce['CODEVE'], $annonce['DATE'], $annonce['annonceTxt']); - } - } - - /** - * - */ - protected function matchPlanDuree($eve, $date, $txt) - { - if ($this->debug) { - file_put_contents('procol.log', "MATCH DUREE PLAN : ", FILE_APPEND); - } - $evenDetect = array( - '75', // Histo '1407', // Modification de plan '1409', // Modification du plan de continuation '1413', // Arrêt du plan de continuation '1414', // Arrêt du plan de redressement '1101', // Arrêt du plan de sauvegarde ); - $fjDetect = array( 16,1600, // Exploitant agricole 63,6316,6317,6318, // Société coopérative agricole @@ -4922,41 +4800,80 @@ class Metier_Insee_MInsee extends Metier_Insee_Table 6597,6598, ); - if (in_array($eve, $evenDetect)) { - if (($this->dureePlan == 0 || $this->dureePlan == 120)) { - // --- Lecture dureePlan dans annonce - $this->debutPlan = str_replace('-', '', $date); // SSAAMMJJ - if (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+ans?/Uisu', $txt, $matches)) { - $this->dureePlan = $matches[1]*12; // 10 ans = 120 mois + // --- Bodacc + if ($type == 'bodacc') { + $tabEven = explode(';', $annonce['typeEven']); + foreach ($tabEven as $even) { + 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); + } + // --- Lecture dureePlan dans annonce + $this->debutPlan = str_replace('-', '', $annonce['dateJugement']); // SSAAMMJJ + if (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+ans?/Uisu', $annonce['annonce'], $matches)) { + $this->dureePlan = $matches[1]*12; // 10 ans = 120 mois + } + + // --- Duree du Plan par défaut sur FJ et par défaut + if ($this->dureePlan<1 || $this->dureePlan>120) { + if (in_array($fj, $fjDetect)) { + $this->dureePlan = 180; // 15 ans + } else { + $this->dureePlan = 120; // 10 ans = 120 mois + } + } + $this->finPlan = Metier_Util_Date::period2Days($this->debutPlan, $this->dureePlan.' mois'); + } } - if (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+mois?/Uisu', $txt, $matches)) { - $this->dureePlan = $matches[1]; + } + } + + // --- Historique + if ($type == 'histo') { + if (($this->dureePlan==0 || $this->dureePlan==120) && $annonce['CODEVE']==75) { // Modification de plan + $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) { + if ($this->dureePlan<1 || $this->dureePlan>120) { if (in_array($fj, $fjDetect)) { $this->dureePlan = 180; // 15 ans } else { $this->dureePlan = 120; // 10 ans = 120 mois } } - if ($this->debug) { - file_put_contents('procol.log', $this->dureePlan." mois", FILE_APPEND); - } $this->finPlan = Metier_Util_Date::period2Days($this->debutPlan, $this->dureePlan.' mois'); } } - if ($this->debug) { - file_put_contents('procol.log', "\n", FILE_APPEND); + // --- Annonce + if ($type == 'annonce') { + if (($this->dureePlan<1 || $this->dureePlan==120) && in_array($annonce['typeEven'], $evenDetect)) { + $this->debutPlan = str_replace('-', '', $annonce['dateJugement']); // SSAAMMJJ + if (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+ans?/Uisu', $annonce['annonce'], $matches)) { + $this->dureePlan = $matches[1]*12; // 10 ans = 120 mois + } elseif (preg_match('/dur.e(?:.*)plan(?:.*)(\d+)\s+ans?/Uisu', $annonce['annonce'], $matches)) { + $this->dureePlan = $matches[1]*12; // 10 ans = 120 mois + } + if ($this->dureePlan<1 || $this->dureePlan>120) { + if (in_array($fj, $fjDetect)) { + $this->dureePlan = 180; // 15 ans + } else { + $this->dureePlan = 120; // 10 ans = 120 mois + } + } + $this->finPlan = Metier_Util_Date::period2Days($this->debutPlan, $this->dureePlan.' mois'); + } } } protected function getAnnoncesLegalesEffacement($siren, $rubrique, $tabRet) { - if ($this->debug) { - file_put_contents('procol.log', "Effacement Procol\n", FILE_APPEND); - } $effacement = false; $MaxPeriodProcol = 80000; // --- Si il y a des annonces @@ -4966,9 +4883,13 @@ class Metier_Insee_MInsee extends Metier_Insee_Table // --- Liste des jugements principaux - Tri chronologique par date de jugement foreach ($tabRet as $i => $ann) { $item = new stdClass(); + $dateEff = str_replace('-', '', $ann['dateEffet'])*1; $dateJug = str_replace('-', '', $ann['dateJugement'])*1; $datePar = str_replace('-', '', $ann['DateParution'])*1; - if ($dateJug > 0) { + if ($dateEff > 0) { + $item->date = $dateEff; + $item->dateISO8601 = $ann['dateEffet']; + } elseif ($dateJug > 0) { $item->date = $dateJug; $item->dateISO8601 = $ann['dateJugement']; } elseif ($datePar > 0) { @@ -4991,7 +4912,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table // --- Gestions des conditions pour l'affichage de l'indicateur procédure collectives if ($rubrique == 'P') { if ($this->debug) { - file_put_contents('procol.log', "Rubrique P\n", FILE_APPEND); + file_put_contents('procol.log', "Rubrique P = ".print_r($tabRet, 1)."\n", FILE_APPEND); } // Si plan recherche des annonces suivantes if ($this->dureePlan > 0) { @@ -5015,7 +4936,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table 1417, 1418, 1419, // Cloture 1500, 1501, 1502, 1503, 1504, 1514 ))) { - $this->dureePlan = 0; + $this->dureePlan = 0; } } if ($this->debug) { @@ -5589,6 +5510,9 @@ class Metier_Insee_MInsee extends Metier_Insee_Table } } + if ($this->debug && $rubrique == 'D') { + file_put_contents('procol.log', $sql."\n", FILE_APPEND); + } try { $stmt = $this->conn->executeQuery($sql); } catch (\Doctrine\DBAL\DBALException $e) { @@ -5858,8 +5782,6 @@ class Metier_Insee_MInsee extends Metier_Insee_Table $adresse.=ucfirst(strtolower($ann['adresse'])).', '; $adresse=trim(preg_replace('/^0+/', '', preg_replace('/ +/', ' ', $adresse))); - if(!isset($ann['siren'])){$ann['siren']=null;} - if(!isset($ann['triNom'])){$ann['triNom']=null;} if (preg_match('/(3100|3200|3300|3999)/', $ann['typeEven'].';'.$ann['strEven'])) { $depotComptes = true; $strRCS = 'Siren : '. $ann['siren'] . '. '; @@ -6396,9 +6318,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table } } - if ($this->logger !== null) { - $this->logger->info("getAnnoncesBoamp(siren=$siren, idAnnonce=$idAnnonce, $idA)"); - } + Metier_Util_Log::write('I', "getAnnoncesBoamp(siren=$siren, idAnnonce=$idAnnonce, $idA)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); return $tabRet; } @@ -6456,9 +6376,8 @@ class Metier_Insee_MInsee extends Metier_Insee_Table */ public function getAnnoncesAsso($siren, $idAnnonce=0, $offset=0, $lignes=100) { - if ($this->logger !== null) { - $this->logger->info("Début getAnnoncesAsso(siren=$siren, idAnnonce=$idAnnonce)"); - } + Metier_Util_Log::write('I', "Début getAnnoncesAsso(siren=$siren, idAnnonce=$idAnnonce)", __LINE__, __FILE__, __FUNCTION__, __CLASS__); + $siretMin = $siren.'00000'; $siretMax = $siren.'99999'; $strIdAnn = ''; @@ -6561,9 +6480,7 @@ class Metier_Insee_MInsee extends Metier_Insee_Table } } - if ($this->logger !== null) { - $this->logger->info("Fin getAnnoncesAsso(siren=$siren, idAnnonce=$idAnnonce) : ".count($tabRet).' annonce(s)'); - } + Metier_Util_Log::write('I', "Fin getAnnoncesAsso(siren=$siren, idAnnonce=$idAnnonce) : ".count($tabRet).' annonce(s)', __LINE__, __FILE__, __FUNCTION__, __CLASS__); return $tabRet; }