Commit 892c9ec7 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'master' into ll-mission-suivi

parents 2ab51dee 59771eec
Loading
Loading
Loading
Loading
+7 −4
Changes for CHANGELOG.md: 7 added lines, 4 removed lines.
Original line number Diff line number Diff line
# 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

@@ -26,8 +27,10 @@

* 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)



+10 −0
Changes for config/autoload/unicaen-authentification.global.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -76,6 +76,11 @@ $settings = [
         */
        'enabled'     => AppConfig::get('cas', 'actif', false),

        /**
         * Permet de sauter le formulaire d'authentification "/auth/connexion" si CAS est la seule source d'authentification
         */
        'form_skip' => true,

        /**
         * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
         */
@@ -92,6 +97,11 @@ $settings = [
         */
        'enable'     => false,

        /**
         * Permet de sauter le formulaire d'authentification "/auth/connexion" si CAS est la seule source d'authentification
         */
        'form_skip' => true,

        /**
         * URL de déconnexion.
         */
+19 −19
Changes for data/ddl/package/FORMULE_PARIS8/body.sql: 19 added lines, 19 removed lines.
Original line number Diff line number Diff line
CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS
  decalageLigne NUMERIC DEFAULT 20;

  decalageLigne NUMERIC DEFAULT 19;

  /* Stockage des valeurs intermédiaires */
  TYPE t_cell IS RECORD (
@@ -53,13 +52,13 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS
      END IF;
    END IF;

    feuille(c).cells(l).enCalcul := TRUE;
    feuille(c).cells(l).enCalcul := true;
    val := calcCell( c, l );
    IF ose_formule.debug_actif THEN
      dbgCell( c, l, val );
    END IF;
    feuille(c).cells(l).valeur := val;
    feuille(c).cells(l).enCalcul := FALSE;
    feuille(c).cells(l).enCalcul := false;

    RETURN val;
  END;
@@ -225,12 +224,12 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- AG=IF([.$H20]="Référentiel";0;IF(AND(MID([.$N20];1;4)="PRIO";MID([.$A20];1;5)<>"15310");[.$M20]*[.$AD20];0))
      -- AG=IF([.$H20]="Référentiel";0;IF(AND(MID([.$N20];1;4)="PRIO";MID([.$A20];1;5)<>"20595");[.$M20]*[.$AD20];0))
      WHEN 'AG' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          IF SUBSTR(vh.param_1, 1, 4) = 'PRIO' AND SUBSTR(vh.structure_code, 1, 5) <> '15310' THEN
          IF COALESCE(SUBSTR(vh.param_1, 1, 4),' ') = 'PRIO' AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '20595' THEN
            RETURN vh.heures * cell('AD',l);
          ELSE
            RETURN 0;
@@ -293,9 +292,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- AM=IF(AND([.$H20]="Référentiel";[.$A20]=[.$K$10];MID([.$A20];1;5)<>"15310");[.$M20]*[.$AD20];0)
      -- AM=IF(AND([.$H20]="Référentiel";[.$A20]=[.$K$10];MID([.$A20];1;5)<>"20595");[.$M20]*[.$AD20];0)
      WHEN 'AM' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL AND vh.structure_is_univ AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '15310' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL AND vh.structure_is_univ AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '20595' THEN
          RETURN vh.heures * cell('AD',l);
        ELSE
          RETURN 0;
@@ -357,9 +356,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- AS=IF(AND([.$H20]<>"Référentiel";[.$A20]=i_structure_code;MID([.$N20];1;4)<>"PRIO";MID([.$A20];1;5)<>"15310");[.$M20]*[.$AD20];0)
      -- AS=IF(AND([.$H20]<>"Référentiel";[.$A20]=i_structure_code;MID([.$N20];1;4)<>"PRIO";MID([.$A20];1;5)<>"20595");[.$M20]*[.$AD20];0)
      WHEN 'AS' THEN
        IF vh.volume_horaire_ref_id IS NULL AND vh.structure_is_affectation AND SUBSTR(vh.param_1, 1, 4) <> 'PRIO' AND SUBSTR(vh.structure_code, 1, 5) <> '15310' THEN
        IF vh.volume_horaire_ref_id IS NULL AND vh.structure_is_affectation AND COALESCE(SUBSTR(vh.param_1, 1, 4),' ') <> 'PRIO' AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '20595' THEN
          RETURN vh.heures * cell('AD',l);
        ELSE
          RETURN 0;
@@ -421,9 +420,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- AY=IF(AND(AND([.$H20]="Référentiel";[.$A20]=i_structure_code);( MID([.$A20];1;5))<>"15310");[.$M20]*[.$AD20];0)
      -- AY=IF(AND(AND([.$H20]="Référentiel";[.$A20]=i_structure_code);( MID([.$A20];1;5))<>"20595");[.$M20]*[.$AD20];0)
      WHEN 'AY' THEN
        IF (vh.volume_horaire_ref_id IS NOT NULL AND vh.structure_is_affectation) AND (SUBSTR(vh.structure_code, 1, 5)) <> '15310' THEN
        IF (vh.volume_horaire_ref_id IS NOT NULL AND vh.structure_is_affectation) AND (COALESCE(SUBSTR(vh.structure_code, 1, 5),' ')) <> '20595' THEN
          RETURN vh.heures * cell('AD',l);
        ELSE
          RETURN 0;
@@ -485,9 +484,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- BE=IF(AND([.$H20]<>"Référentiel";[.$A20]<>i_structure_code;MID([.$N20];1;4)<>"PRIO";MID([.$A20];1;5)<>"15310");[.$M20]*[.$AD20];0)
      -- BE=IF(AND([.$H20]<>"Référentiel";[.$A20]<>i_structure_code;MID([.$N20];1;4)<>"PRIO";MID([.$A20];1;5)<>"20595");[.$M20]*[.$AD20];0)
      WHEN 'BE' THEN
        IF vh.volume_horaire_ref_id IS NULL AND NOT vh.structure_is_affectation AND SUBSTR(vh.param_1, 1, 4) <> 'PRIO' AND SUBSTR(vh.structure_code, 1, 5) <> '15310' THEN
        IF vh.volume_horaire_ref_id IS NULL AND NOT vh.structure_is_affectation AND COALESCE(SUBSTR(vh.param_1, 1, 4),' ') <> 'PRIO' AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '20595' THEN
          RETURN vh.heures * cell('AD',l);
        ELSE
          RETURN 0;
@@ -549,9 +548,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- BK=IF(AND([.$H20]="Référentiel";[.$A20]<>i_structure_code;[.$A20]<>[.$K$10];MID([.$A20];1;5)<>"15310");[.$M20]*[.$AD20];0)
      -- BK=IF(AND([.$H20]="Référentiel";[.$A20]<>i_structure_code;[.$A20]<>[.$K$10];MID([.$A20];1;5)<>"20595");[.$M20]*[.$AD20];0)
      WHEN 'BK' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL AND NOT vh.structure_is_affectation AND NOT vh.structure_is_univ AND SUBSTR(vh.structure_code, 1, 5) <> '15310' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL AND NOT vh.structure_is_affectation AND NOT vh.structure_is_univ AND COALESCE(SUBSTR(vh.structure_code, 1, 5),' ') <> '20595' THEN
          RETURN vh.heures * cell('AD',l);
        ELSE
          RETURN 0;
@@ -613,9 +612,9 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS



      -- BQ=IF(MID([.$A20];1;25)="15310";[.$M20]*[.$AE20];0)
      -- BQ=IF(MID([.$A20];1;25)="20595";[.$M20]*[.$AE20];0)
      WHEN 'BQ' THEN
        IF SUBSTR(vh.structure_code, 1, 25) = '15310' THEN
        IF COALESCE(SUBSTR(vh.structure_code, 1, 25),' ') = '20595' THEN
          RETURN vh.heures * cell('AE',l);
        ELSE
          RETURN 0;
@@ -695,7 +694,8 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_PARIS8 AS
      LEFT JOIN service s ON s.id = fvh.service_id
      LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
    ORDER BY
      ordre';
      ordre
    ';
  END;

END FORMULE_PARIS8;
 No newline at end of file
+46 −24
Changes for data/ddl/package/FORMULE_PICARDIE/body.sql: 46 added lines, 24 removed lines.
Original line number Diff line number Diff line
@@ -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!');
+19 −20
Changes for data/ddl/package/FORMULE_POITIERS/body.sql: 19 added lines, 20 removed lines.
Original line number Diff line number Diff line
@@ -126,32 +126,32 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS



      -- U=IF([.$I20]="Référentiel";0;([.$AJ20])*[.F20])
      -- U=IF([.$I20]="Référentiel";0;[.$AJ20]*[.F20])
      WHEN 'U' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AJ',l)) * vh.taux_fi;
          RETURN cell('AJ',l) * vh.taux_fi;
        END IF;



      -- V=IF([.$I20]="Référentiel";0;([.$AJ20])*[.G20])
      -- V=IF([.$I20]="Référentiel";0;[.$AJ20]*[.G20])
      WHEN 'V' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AJ',l)) * vh.taux_fa;
          RETURN cell('AJ',l) * vh.taux_fa;
        END IF;



      -- W=IF([.$I20]="Référentiel";0;([.$AJ20])*[.H20])
      -- W=IF([.$I20]="Référentiel";0;[.$AJ20]*[.H20])
      WHEN 'W' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AJ',l)) * vh.taux_fc;
          RETURN cell('AJ',l) * vh.taux_fc;
        END IF;


@@ -166,32 +166,32 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS



      -- Y=IF([.$I20]="Référentiel";0;([.$AL20])*[.F20])
      -- Y=IF([.$I20]="Référentiel";0;[.$AL20]*[.F20])
      WHEN 'Y' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AL',l)) * vh.taux_fi;
          RETURN cell('AL',l) * vh.taux_fi;
        END IF;



      -- Z=IF([.$I20]="Référentiel";0;([.$AL20])*[.G20])
      -- Z=IF([.$I20]="Référentiel";0;[.$AL20]*[.G20])
      WHEN 'Z' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AL',l)) * vh.taux_fa;
          RETURN cell('AL',l) * vh.taux_fa;
        END IF;



      -- AA=IF([.$I20]="Référentiel";0;([.$AL20])*[.H20])
      -- AA=IF([.$I20]="Référentiel";0;[.$AL20]*[.H20])
      WHEN 'AA' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN (cell('AL',l)) * vh.taux_fc;
          RETURN cell('AL',l) * vh.taux_fc;
        END IF;


@@ -212,7 +212,7 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS



      -- AE=IF(ISERROR([.J20]);1;[.J20]*IF(ISERROR([.L20]);1;[.L20]))
      -- AE=IF(ISERROR([.J20]);1;[.J20])
      WHEN 'AE' THEN
        RETURN vh.taux_service_du;

@@ -220,7 +220,7 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS

      -- AF=IF(ISERROR([.K20]);1;[.K20]*IF(ISERROR([.M20]);1;[.M20]))
      WHEN 'AF' THEN
        RETURN vh.taux_service_compl;
        RETURN (vh.taux_service_compl * vh.ponderation_service_compl);



@@ -268,10 +268,14 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS



      -- AK=IF([.AI$17]=0;([.AH20]-[.AJ20])/[.$AE20];0)
      -- AK=IF([.AI$17]=0;IF([.AE20]=0;0;([.AH20]-[.AJ20])/[.$AE20]);0)
      WHEN 'AK' THEN
        IF cell('AI17') = 0 THEN
          IF cell('AE',l) = 0 THEN
            RETURN 0;
          ELSE
            RETURN (cell('AH',l) - cell('AJ',l)) / cell('AE',l);
          END IF;
        ELSE
          RETURN 0;
        END IF;
@@ -303,11 +307,6 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_POITIERS AS
  BEGIN
    feuille.delete;

    IF ose_formule.intervenant.annee_id < 2022 THEN
      FORMULE_POITIERS_2021.CALCUL_RESULTAT;
      RETURN;
    END IF;

    IF ose_formule.intervenant.depassement_service_du_sans_hc THEN -- HC traitées comme du service
      ose_formule.intervenant.service_du := ose_formule.intervenant.heures_service_statutaire + ose_formule.intervenant.heures_service_modifie;
    END IF;
Loading