From 32f743af4bdafc6cf843f21f815fbfee82037094 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Tue, 4 Apr 2023 10:25:08 +0200
Subject: [PATCH] Formule de Picardie #47224

(cherry picked from commit 59771eec0c8be1034b5294d49bc0a24fb587be42)
---
 CHANGELOG.md                               |  9 ++-
 data/ddl/package/FORMULE_PICARDIE/body.sql | 70 ++++++++++++++--------
 data/formules.php                          |  5 --
 3 files changed, 52 insertions(+), 32 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 67b4d243c1..876d68458b 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Version stable
 
-[OSE 20.0](#ose-20--28022023-)
+[OSE 20.1](#ose-201--04042023-)
 
 
 # OSE 21 (à venir)
@@ -11,7 +11,8 @@
 * Taux HETD personnalisables
 
 
-# OSE 20.1 (A venir)
+
+# OSE 20.1 (04/04/2023)
 
 ## Nouveautés
 
@@ -27,7 +28,9 @@
 * Correction d'une régression de la V20 sur le module Export Siham
 * Suppression d'un message d'erreur sur l'envoi de mail via les indicateurs (#49873)
 * Formule Paris 8 : correction d'un problème de code de composante
-
+* Formule Poitiers : (#46805)
+* Formule La Réunion : (#24229)
+* Formule de Picardie:  (#47224)
 
 
 
diff --git a/data/ddl/package/FORMULE_PICARDIE/body.sql b/data/ddl/package/FORMULE_PICARDIE/body.sql
index 37d15961d2..2e6418ced4 100644
--- a/data/ddl/package/FORMULE_PICARDIE/body.sql
+++ b/data/ddl/package/FORMULE_PICARDIE/body.sql
@@ -218,10 +218,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AB=IF([.$H20]="Référentiel";[.$AQ20]+[.$BC20]+[.$BQ20];0)
+      -- AB=IF([.$H20]="Référentiel";[.$BQ20]+[.$BS20];0)
       WHEN 'AB' THEN
         IF vh.volume_horaire_ref_id IS NOT NULL THEN
-          RETURN cell('AQ',l) + cell('BC',l) + cell('BQ',l);
+          RETURN cell('BQ',l) + cell('BS',l);
         ELSE
           RETURN 0;
         END IF;
@@ -284,9 +284,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AJ=IF([.AH$17]=0;([.AG20]-[.AI20])/[.$AD20];0)
+      -- AJ=IF([.AI20]<[.AG20];([.AG20]-[.AI20])/[.$AD20];0)
       WHEN 'AJ' THEN
-        IF cell('AH17') = 0 THEN
+        IF cell('AI',l) < cell('AG',l) THEN
           RETURN (cell('AG',l) - cell('AI',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -314,12 +314,18 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AN15=SUM([.AM$1:.AM$1048576])
-      WHEN 'AN15' THEN
+      -- AN14=SUM([.AM$1:.AM$1048576])
+      WHEN 'AN14' THEN
         RETURN calcFnc('somme','AM');
 
 
 
+      -- AN15=MIN([.AN14];i_service_du/3)
+      WHEN 'AN15' THEN
+        RETURN LEAST(cell('AN14'), i.service_du / 3);
+
+
+
       -- AN16=MIN([.AN15];[.AH17])
       WHEN 'AN16' THEN
         RETURN LEAST(cell('AN15'), cell('AH17'));
@@ -332,10 +338,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AN=IF([.AN$15]>0;[.AM20]/[.AN$15];0)
+      -- AN=IF([.AN$14]>0;[.AM20]/[.AN$14];0)
       WHEN 'AN' THEN
-        IF cell('AN15') > 0 THEN
-          RETURN cell('AM',l) / cell('AN15');
+        IF cell('AN14') > 0 THEN
+          RETURN cell('AM',l) / cell('AN14');
         ELSE
           RETURN 0;
         END IF;
@@ -348,9 +354,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AP=IF([.AN$17]=0;([.AM20]-[.AO20])/[.$AD20];0)
+      -- AP=IF([.AO20]<[.AM20];([.AM20]-[.AO20])/[.$AD20];0)
       WHEN 'AP' THEN
-        IF cell('AN17') = 0 THEN
+        IF cell('AO',l) < cell('AM',l) THEN
           RETURN (cell('AM',l) - cell('AO',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -412,9 +418,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AV=IF([.AT$17]=0;([.AS20]-[.AU20])/[.$AD20];0)
+      -- AV=IF([.AU20]<[.AS20];([.AS20]-[.AU20])/[.$AD20];0)
       WHEN 'AV' THEN
-        IF cell('AT17') = 0 THEN
+        IF cell('AU',l) < cell('AS',l) THEN
           RETURN (cell('AS',l) - cell('AU',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -442,12 +448,18 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AZ15=SUM([.AY$1:.AY$1048576])
-      WHEN 'AZ15' THEN
+      -- AZ14=SUM([.AY$1:.AY$1048576])
+      WHEN 'AZ14' THEN
         RETURN calcFnc('somme','AY');
 
 
 
+      -- AZ15=MIN([.AZ14];(i_service_du/3)-[.AN16])
+      WHEN 'AZ15' THEN
+        RETURN LEAST(cell('AZ14'), (i.service_du / 3) - cell('AN16'));
+
+
+
       -- AZ16=MIN([.AZ15];[.AT17])
       WHEN 'AZ16' THEN
         RETURN LEAST(cell('AZ15'), cell('AT17'));
@@ -460,10 +472,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- AZ=IF([.AZ$15]>0;[.AY20]/[.AZ$15];0)
+      -- AZ=IF([.AZ$14]>0;[.AY20]/[.AZ$14];0)
       WHEN 'AZ' THEN
-        IF cell('AZ15') > 0 THEN
-          RETURN cell('AY',l) / cell('AZ15');
+        IF cell('AZ14') > 0 THEN
+          RETURN cell('AY',l) / cell('AZ14');
         ELSE
           RETURN 0;
         END IF;
@@ -476,9 +488,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- BB=IF([.AZ$17]=0;([.AY20]-[.BA20])/[.$AD20];0)
+      -- BB=IF([.BA20]<[.AY20];([.AY20]-[.BA20])/[.$AD20];0)
       WHEN 'BB' THEN
-        IF cell('AZ17') = 0 THEN
+        IF cell('BA',l) < cell('AY',l) THEN
           RETURN (cell('AY',l) - cell('BA',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -540,9 +552,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- BH=IF([.BF$17]=0;([.BE20]-[.BG20])/[.$AD20];0)
+      -- BH=IF([.BG20]<[.BE20];([.BE20]-[.BG20])/[.$AD20];0)
       WHEN 'BH' THEN
-        IF cell('BF17') = 0 THEN
+        IF cell('BG',l) < cell('BE',l) THEN
           RETURN (cell('BE',l) - cell('BG',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -604,9 +616,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
-      -- BN=IF([.BL$17]=0;([.BK20]-[.BM20])/[.$AD20];0)
+      -- BN=IF([.BM20]<[.BK20];([.BK20]-[.BM20])/[.$AD20];0)
       WHEN 'BN' THEN
-        IF cell('BL17') = 0 THEN
+        IF cell('BM',l) < cell('BK',l) THEN
           RETURN (cell('BK',l) - cell('BM',l)) / cell('AD',l);
         ELSE
           RETURN 0;
@@ -634,6 +646,16 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PICARDIE AS
 
 
 
+      -- BS=IF(AND([.$D20]="Oui";[.$BL$17]=0;[.$H20]="Référentiel");([.AQ20]+[.BC20])*[.$AE20];0)
+      WHEN 'BS' THEN
+        IF vh.service_statutaire AND cell('BL17') = 0 AND vh.volume_horaire_ref_id IS NOT NULL THEN
+          RETURN (cell('AQ',l) + cell('BC',l)) * cell('AE',l);
+        ELSE
+          RETURN 0;
+        END IF;
+
+
+
 
     ELSE
       dbms_output.put_line('La colonne c=' || c || ', l=' || l || ' n''existe pas!');
diff --git a/data/formules.php b/data/formules.php
index abeb2a0c40..ace4c83eeb 100644
--- a/data/formules.php
+++ b/data/formules.php
@@ -110,10 +110,5 @@ return [
     26 => [
         'LIBELLE'            => 'Université de Picardie Jules Verne',
         'PACKAGE_NAME'       => 'FORMULE_PICARDIE',
-        'VH_PARAM_1_LIBELLE' => 'param 1',
-        'VH_PARAM_2_LIBELLE' => 'param 2',
-        'VH_PARAM_3_LIBELLE' => 'param 3',
-        'VH_PARAM_4_LIBELLE' => 'param 4',
-        'VH_PARAM_5_LIBELLE' => 'param 5',
     ],
 ];
\ No newline at end of file
-- 
GitLab