Commit 8224418e authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Formule La Réunion : #24229

(cherry picked from commit 3ef0e8ff)
parent a854df49
Loading
Loading
Loading
Loading
+26 −10
Original line number Diff line number Diff line
# Version stable

[OSE 19.7](#ose-197--16122022-)
[OSE 20.0](#ose-20--28022023-)


# OSE 21 (à venir)
@@ -8,29 +8,37 @@
## Nouveautés

* Nouvelle notion de mission, permettant de gérer les contrats étudiants
* Taux HETD personnalisables



# OSE 20.1 (à venir)
# OSE 20.1 (A venir)

## Nouveautés

* Les jauges des plafonds affichent maintenant tout le temps les heures restantes
* Ajout de la date de clôture dans la page historique de l'intervenant 
* Possibilité de saisir une modification de service dû avec 0 heure (#49764)

## Corrections de bugs
## Améliorations

* Les données suplémentaires des indicateurs s'affichent de nouveau correctement
* Passage à 200 caractères max. pour les libellés longs des structures

## Corrections de bugs

* 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


# OSE 20 (fin février 2023)
# OSE 20 (28/02/2023)

## Nouveautés

* Les modèles de contrats de travail sont maintenant gérés comme n'importe quel autre état de sortie
* Reconduction de l'offre de formation pour les éléments de OSE portés par un élément synchronisé
* Possibilité de rentrer un taux de charge par statut d'intervenant
* Ajout d'un choix par statut pour "contrat de travail et avenants" pour laisser la possibilité à l'intervenant de télécharger sont contrat en pdf
* Ajout d'un choix par statut pour "contrat de travail et avenants" pour laisser la possibilité à l'intervenant de télécharger son contrat en pdf
* Migration technnique vers le framework Bootstrap 5 et modernisation de l'identité visuelle
* Réorganisation du menu "Administration" pour plus de lisibilité
* Filtrage des caractères interdits lors de l'export RH SIHAM (#47267)
@@ -57,6 +65,7 @@
* Utilisation prioritaire de l'email personnel des données personnelles pour l'envoi d'email via les indicateurs (#48393)
* Meilleure gestion de la casse lors de la recherche d'un employeur (#48543)
* Ajout d'une contrainte d'unicité sur la colonne code de la table type_intervention (#48727)
* Correction formule d'UVSQ (#47149)
* Et beaucoup d'autres ...

## Notes de mise à jour
@@ -81,6 +90,13 @@ A la **ligne 206** Ajouter le titre de colonne TAG dans le tableau $head :
  
    'tag' => 'Tags',

Le système de mise à jour peut - dans certaines circonstances - vous afficher quelques erreurs qui sont sans impact 
sur le bon fonctionnement de l'application.
Je vais modifier les scripts de mise à jour pour éviter qu'elles ne se produisent.
Mais en attendant, si vous y êtes confrontés, vous en trouverez les explications sur le ticket suivant :
https://redmine.unicaen.fr/Etablissement/issues/49445?issue_count=42&issue_position=1&next_issue_id=48972



# OSE 19.7 (16/12/2022)

@@ -160,7 +176,7 @@ A la **ligne 206** Ajouter le titre de colonne TAG dans le tableau $head :

# OSE 19.1 (21/07/2022)

## Nouveautés
## nouveautés

* Formule de calcul de Picardie
* Nouvel état de sortie pour les écarts des heures complémentaires, maintenant personnalisable (#45807)
@@ -186,7 +202,7 @@ A la **ligne 206** Ajouter le titre de colonne TAG dans le tableau $head :
* Ajout d'un paramètre général pour permettre de créer les contrats sans passer par un projet de contrat
* Ajout de date de dernière modification des données dans les indicateurs notifiant d'une validation en attente
* Nouvel état de sortie pour l'extraction des paiements dans le cadre de la pré-liquidation SIHAM
* Ajout d'un bouton de refus de pièce justificative avec envoie d'email à l'intervenant
* Ajout d'un bouton de refus de pièce justificative avec envoi d'email à l'intervenant
* Changement du bouton de cloture de service pour un libellé plus parlant et un style de bouton plus prononcé
* Formules nouvelles ou mises à jour : Rennes 2, Paris Saclay, Guyane, Côte d'Azur, La Réunion, Poitiers, Brest, Rouen
* Possibilité de créer un nouveau test de formule en téléversant une feuille de calcul au format tableur
+52 −52
Original line number Diff line number Diff line
@@ -126,32 +126,32 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- T=IF([.$H20]="Référentiel";0;[.AI20]+[.AO20]+[.BS20]+[.BY20])
      -- T=IF([.$H20]="Référentiel";0;[.AI20]+[.AO20]+[.AU20]+[.BA20])
      WHEN 'T' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('AI',l) + cell('AO',l) + cell('BS',l) + cell('BY',l);
          RETURN cell('AI',l) + cell('AO',l) + cell('AU',l) + cell('BA',l);
        END IF;



      -- U=IF([.$H20]="Référentiel";0;[.AU20]+[.BA20]+[.CE20]+[.CK20])
      -- U=IF([.$H20]="Référentiel";0;[.BG20]+[.BM20]+[.BS20]+[.BY20])
      WHEN 'U' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('AU',l) + cell('BA',l) + cell('CE',l) + cell('CK',l);
          RETURN cell('BG',l) + cell('BM',l) + cell('BS',l) + cell('BY',l);
        END IF;



      -- V=IF([.$H20]="Référentiel";0;[.BG20]+[.BM20]+[.CQ20]+[.CW20])
      -- V=IF([.$H20]="Référentiel";0;[.CE20]+[.CK20]+[.CQ20]+[.CW20])
      WHEN 'V' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('BG',l) + cell('BM',l) + cell('CQ',l) + cell('CW',l);
          RETURN cell('CE',l) + cell('CK',l) + cell('CQ',l) + cell('CW',l);
        END IF;


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



      -- X=IF([.$H20]="Référentiel";0;[.AK20]+[.AQ20]+[.BU20]+[.CA20])
      -- X=IF([.$H20]="Référentiel";0;[.AK20]+[.AQ20]+[.AW20]+[.BC20])
      WHEN 'X' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('AK',l) + cell('AQ',l) + cell('BU',l) + cell('CA',l);
          RETURN cell('AK',l) + cell('AQ',l) + cell('AW',l) + cell('BC',l);
        END IF;



      -- Y=IF([.$H20]="Référentiel";0;[.AW20]+[.BC20]+[.CG20]+[.CM20])
      -- Y=IF([.$H20]="Référentiel";0;[.BI20]+[.BO20]+[.BU20]+[.CA20])
      WHEN 'Y' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('AW',l) + cell('BC',l) + cell('CG',l) + cell('CM',l);
          RETURN cell('BI',l) + cell('BO',l) + cell('BU',l) + cell('CA',l);
        END IF;



      -- Z=IF([.$H20]="Référentiel";0;[.BI20]+[.BO20]+[.CS20]+[.CY20])
      -- Z=IF([.$H20]="Référentiel";0;[.CG20]+[.CM20]+[.CS20]+[.CY20])
      WHEN 'Z' THEN
        IF vh.volume_horaire_ref_id IS NOT NULL THEN
          RETURN 0;
        ELSE
          RETURN cell('BI',l) + cell('BO',l) + cell('CS',l) + cell('CY',l);
          RETURN cell('CG',l) + cell('CM',l) + cell('CS',l) + cell('CY',l);
        END IF;


@@ -352,10 +352,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- AS=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]=i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      -- AS=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]<>i_structure_code);[.$M20]*[.$E20]*[.$AD20];0)
      WHEN 'AS' THEN
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fi * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -368,15 +368,15 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- AT16=MIN([.AT15];[.AN17])
      -- AT16=MIN([.AT15];[.CJ17])
      WHEN 'AT16' THEN
        RETURN LEAST(cell('AT15'), cell('AN17'));
        RETURN LEAST(cell('AT15'), cell('CJ17'));



      -- AT17=[.AN17]-[.AT16]
      -- AT17=[.CJ17]-[.AT16]
      WHEN 'AT17' THEN
        RETURN cell('AN17') - cell('AT16');
        RETURN cell('CJ17') - cell('AT16');



@@ -416,10 +416,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- AY=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]=i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      -- AY=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]<>i_structure_code);[.$M20]*[.$E20]*[.$AD20];0)
      WHEN 'AY' THEN
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fi * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -480,10 +480,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BE=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]=i_structure_code);[.$M20]*[.$G20]*[.$AD20];0)
      -- BE=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]=i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      WHEN 'BE' THEN
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fc * cell('AD',l);
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -496,15 +496,15 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BF16=MIN([.BF15];[.AZ17])
      -- BF16=MIN([.BF15];[.AN17])
      WHEN 'BF16' THEN
        RETURN LEAST(cell('BF15'), cell('AZ17'));
        RETURN LEAST(cell('BF15'), cell('AN17'));



      -- BF17=[.AZ17]-[.BF16]
      -- BF17=[.AN17]-[.BF16]
      WHEN 'BF17' THEN
        RETURN cell('AZ17') - cell('BF16');
        RETURN cell('AN17') - cell('BF16');



@@ -544,10 +544,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BK=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]=i_structure_code);[.$M20]*[.$G20]*[.$AD20];0)
      -- BK=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]=i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      WHEN 'BK' THEN
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fc * cell('AD',l);
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -608,10 +608,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BQ=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]<>i_structure_code);[.$M20]*[.$E20]*[.$AD20];0)
      -- BQ=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]<>i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      WHEN 'BQ' THEN
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fi * cell('AD',l);
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -624,15 +624,15 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BR16=MIN([.BR15];[.BL17])
      -- BR16=MIN([.BR15];[.AZ17])
      WHEN 'BR16' THEN
        RETURN LEAST(cell('BR15'), cell('BL17'));
        RETURN LEAST(cell('BR15'), cell('AZ17'));



      -- BR17=[.BL17]-[.BR16]
      -- BR17=[.AZ17]-[.BR16]
      WHEN 'BR17' THEN
        RETURN cell('BL17') - cell('BR16');
        RETURN cell('AZ17') - cell('BR16');



@@ -672,10 +672,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- BW=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]<>i_structure_code);[.$M20]*[.$E20]*[.$AD20];0)
      -- BW=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]<>i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      WHEN 'BW' THEN
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fi * cell('AD',l);
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -736,10 +736,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- CC=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]<>i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      -- CC=IF(AND([.$D20]="Oui";[.$H20]="TP";[.$A20]=i_structure_code);[.$M20]*[.$G20]*[.$AD20];0)
      WHEN 'CC' THEN
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        IF vh.service_statutaire AND vh.type_intervention_code = 'TP' AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fc * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -752,15 +752,15 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- CD16=MIN([.CD15];[.BX17])
      -- CD16=MIN([.CD15];[.BL17])
      WHEN 'CD16' THEN
        RETURN LEAST(cell('CD15'), cell('BX17'));
        RETURN LEAST(cell('CD15'), cell('BL17'));



      -- CD17=[.BX17]-[.CD16]
      -- CD17=[.BL17]-[.CD16]
      WHEN 'CD17' THEN
        RETURN cell('BX17') - cell('CD16');
        RETURN cell('BL17') - cell('CD16');



@@ -800,10 +800,10 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- CI=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]<>i_structure_code);[.$M20]*[.$F20]*[.$AD20];0)
      -- CI=IF(AND([.$D20]="Oui";[.$H20]<>"TP";[.$H20]<>"Référentiel";[.$A20]=i_structure_code);[.$M20]*[.$G20]*[.$AD20];0)
      WHEN 'CI' THEN
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND NOT vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fa * cell('AD',l);
        IF vh.service_statutaire AND vh.type_intervention_code <> 'TP' AND vh.volume_horaire_ref_id IS NULL AND vh.structure_is_affectation THEN
          RETURN vh.heures * vh.taux_fc * cell('AD',l);
        ELSE
          RETURN 0;
        END IF;
@@ -880,15 +880,15 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_REUNION AS



      -- CP16=MIN([.CP15];[.CJ17])
      -- CP16=MIN([.CP15];[.BX17])
      WHEN 'CP16' THEN
        RETURN LEAST(cell('CP15'), cell('CJ17'));
        RETURN LEAST(cell('CP15'), cell('BX17'));



      -- CP17=[.CJ17]-[.CP16]
      -- CP17=[.BX17]-[.CP16]
      WHEN 'CP17' THEN
        RETURN cell('CJ17') - cell('CP16');
        RETURN cell('BX17') - cell('CP16');



+197 −197
Original line number Diff line number Diff line
@@ -3196,7 +3196,7 @@ textarea.form-control-lg {
  --mdb-dropdown-border-radius: 0.5rem;
  --mdb-dropdown-border-width: 1px;
  --mdb-dropdown-inner-border-radius: calc(0.5rem - 1px);
  --mdb-dropdown-divider-bg: hsl(0deg, 0%, 96%);
  --mdb-dropdown-divider-bg: hsl(0, 0%, 96%);
  --mdb-dropdown-divider-margin-y: 0.5rem;
  --mdb-dropdown-box-shadow: 0 2px 15px -3px rgba(0, 0, 0, 0.07), 0 10px 20px -2px rgba(0, 0, 0, 0.04);
  --mdb-dropdown-link-color: #262626;
@@ -3465,7 +3465,7 @@ textarea.form-control-lg {
  --mdb-dropdown-box-shadow: ;
  --mdb-dropdown-link-color: #e0e0e0;
  --mdb-dropdown-link-hover-color: #fff;
  --mdb-dropdown-divider-bg: hsl(0deg, 0%, 96%);
  --mdb-dropdown-divider-bg: hsl(0, 0%, 96%);
  --mdb-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);
  --mdb-dropdown-link-active-color: #fff;
  --mdb-dropdown-link-active-bg: #3b71ca;
@@ -5269,12 +5269,12 @@ textarea.form-control-lg {
  --mdb-modal-header-padding-x: 1rem;
  --mdb-modal-header-padding-y: 1rem;
  --mdb-modal-header-padding: 1rem 1rem;
  --mdb-modal-header-border-color: hsl(0deg, 0%, 96%);
  --mdb-modal-header-border-color: hsl(0, 0%, 96%);
  --mdb-modal-header-border-width: 2px;
  --mdb-modal-title-line-height: 1.6;
  --mdb-modal-footer-gap: 0.5rem;
  --mdb-modal-footer-bg: ;
  --mdb-modal-footer-border-color: hsl(0deg, 0%, 96%);
  --mdb-modal-footer-border-color: hsl(0, 0%, 96%);
  --mdb-modal-footer-border-width: 2px;
  position: fixed;
  top: 0;
@@ -5553,7 +5553,7 @@ textarea.form-control-lg {
  --mdb-popover-font-size: 0.875rem;
  --mdb-popover-bg: #fff;
  --mdb-popover-border-width: 1px;
  --mdb-popover-border-color: hsl(0deg, 0%, 96%);
  --mdb-popover-border-color: hsl(0, 0%, 96%);
  --mdb-popover-border-radius: 0.5rem;
  --mdb-popover-inner-border-radius: calc(0.5rem - 1px);
  --mdb-popover-box-shadow: 0 0px 3px 0 rgba(0, 0, 0, 0.07), 0 2px 2px 0 rgba(0, 0, 0, 0.04);
@@ -12052,10 +12052,10 @@ textarea.form-control-lg {
hr:not([size]).hr {
  --mdb-divider-height: 2px;
  --mdb-divider-bg: hsl(0deg, 0%, 96%);
  --mdb-divider-bg: hsl(0, 0%, 96%);
  --mdb-divider-opacity: 1;
  --mdb-divider-blurry-bg: transparent;
  --mdb-divider-blurry-bg-image: linear-gradient(90deg, transparent, hsl(0deg, 0%, 40%), transparent);
  --mdb-divider-blurry-bg-image: linear-gradient(90deg, transparent, hsl(0, 0%, 40%), transparent);
  --mdb-divider-blurry-height: 1px;
  --mdb-divider-blurry-opacity: 0.25;
  height: var(--mdb-divider-height);
@@ -12079,7 +12079,7 @@ hr.vr {
.vr {
  --mdb-divider-width: 2px;
  --mdb-divider-bg: hsl(0deg, 0%, 96%);
  --mdb-divider-bg: hsl(0, 0%, 96%);
  --mdb-divider-opacity: 1;
  width: var(--mdb-divider-width);
  background-color: var(--mdb-divider-bg);
@@ -12087,7 +12087,7 @@ hr.vr {
}
.vr-blurry {
  --mdb-divider-blurry-vr-bg-image: linear-gradient(180deg, transparent, hsl(0deg, 0%, 40%), transparent);
  --mdb-divider-blurry-vr-bg-image: linear-gradient(180deg, transparent, hsl(0, 0%, 40%), transparent);
  --mdb-divider-blurry-vr-width: 1px;
  --mdb-divider-blurry-opacity: 0.25;
  background-image: var(--mdb-divider-blurry-vr-bg-image);
@@ -14791,7 +14791,7 @@ input[type=file].form-control.is-invalid:focus-within ~ .form-file-label .form-f
  --mdb-btn-font-weight: 500;
  --mdb-btn-color: #3b71ca;
  --mdb-btn-hover-color: #386bc0;
  --mdb-btn-hover-bg: hsl(0deg, 0%, 96%);
  --mdb-btn-hover-bg: hsl(0, 0%, 96%);
  --mdb-btn-focus-color: #3566b6;
  --mdb-btn-active-color: #3260ac;
  --mdb-btn-disabled-color: #9e9e9e;
@@ -15049,12 +15049,12 @@ hr.divider-horizontal:not([size]) {
}
hr.divider-horizontal-blurry {
  background-image: linear-gradient(90deg, transparent, hsl(0deg, 0%, 40%), transparent);
  background-image: linear-gradient(90deg, transparent, hsl(0, 0%, 40%), transparent);
  background-color: transparent;
}
hr.divider-vertical-blurry {
  background-image: linear-gradient(180deg, transparent, hsl(0deg, 0%, 40%), transparent);
  background-image: linear-gradient(180deg, transparent, hsl(0, 0%, 40%), transparent);
  background-color: transparent;
  width: 1px;
  top: 0;
@@ -15171,7 +15171,7 @@ hr.divider-vertical-blurry {
.dropdown-divider {
  --mdb-dropdown-divider-border-top-width: 2px;
  --mdb-dropdown-divider-border-top-bg: hsl(0deg, 0%, 96%);
  --mdb-dropdown-divider-border-top-bg: hsl(0, 0%, 96%);
  border-top: var(--mdb-dropdown-divider-border-top-width) solid var(--mdb-dropdown-divider-border-top-bg);
  opacity: 1;
}
@@ -15415,7 +15415,7 @@ fieldset:disabled .btn-group-vertical > .btn {
.card-header {
  --mdb-card-header-border-width: 2px;
  --mdb-card-header-border-color: hsl(0deg, 0%, 96%);
  --mdb-card-header-border-color: hsl(0, 0%, 96%);
  border-bottom: var(--mdb-card-header-border-width) solid var(--mdb-card-header-border-color);
}
@@ -15425,7 +15425,7 @@ fieldset:disabled .btn-group-vertical > .btn {
}
.card-footer {
  --mdb-card-footer-border-color: hsl(0deg, 0%, 96%);
  --mdb-card-footer-border-color: hsl(0, 0%, 96%);
  --mdb-card-footer-border-width: 2px;
  border-top: var(--mdb-card-footer-border-width) solid var(--mdb-card-footer-border-color);
}
@@ -15757,7 +15757,7 @@ fieldset:disabled .btn-group-vertical > .btn {
.list-group-light {
  --mdb-list-group-light-item-py: 1rem;
  --mdb-list-group-light-item-border: 2px solid hsl(0deg, 0%, 96%);
  --mdb-list-group-light-item-border: 2px solid hsl(0, 0%, 96%);
  --mdb-list-group-light-item-border-width: 2px;
  --mdb-list-group-light-active-border-radius: 0.5rem;
  --mdb-list-group-light-active-bg: rgb(223, 231, 246);
@@ -15900,75 +15900,75 @@ fieldset:disabled .btn-group-vertical > .btn {
}
.toast-primary {
  background-color: hsl(219deg, 56.1%, 92%);
  color: hsl(217deg, 56.9%, 40%);
  border-color: hsl(218deg, 57.7%, 86.1%);
  background-color: hsl(219, 56.1%, 92%);
  color: hsl(217, 56.9%, 40%);
  border-color: hsl(218, 57.7%, 86.1%);
}
.toast-primary i {
  color: hsl(217deg, 56.9%, 50%);
  color: hsl(217, 56.9%, 50%);
}
.toast-secondary {
  background-color: hsl(210deg, 11.1%, 92.9%);
  color: hsl(216deg, 10.5%, 28%);
  border-color: hsl(206deg, 10.4%, 86.9%);
  background-color: hsl(210, 11.1%, 92.9%);
  color: hsl(216, 10.5%, 28%);
  border-color: hsl(206, 10.4%, 86.9%);
}
.toast-secondary i {
  color: hsl(218deg, 11.3%, 38%);
  color: hsl(218, 11.3%, 38%);
}
.toast-success {
  background-color: hsl(143deg, 46.4%, 89%);
  color: hsl(144deg, 77.8%, 22.9%);
  border-color: hsl(145deg, 44.8%, 82.9%);
  background-color: hsl(143, 46.4%, 89%);
  color: hsl(144, 77.8%, 22.9%);
  border-color: hsl(145, 44.8%, 82.9%);
}
.toast-success i {
  color: hsl(144deg, 77.5%, 33.1%);
  color: hsl(144, 77.5%, 33.1%);
}
.toast-danger {
  background-color: hsl(350deg, 66.7%, 92.9%);
  color: hsl(350deg, 66.7%, 41.2%);
  border-color: hsl(350deg, 66.7%, 87.1%);
  background-color: hsl(350, 66.7%, 92.9%);
  color: hsl(350, 66.7%, 41.2%);
  border-color: hsl(350, 66.7%, 87.1%);
}
.toast-danger i {
  color: hsl(350deg, 67.2%, 51%);
  color: hsl(350, 67.2%, 51%);
}
.toast-warning {
  background-color: hsl(40deg, 80.5%, 92%);
  color: hsl(40deg, 79.7%, 25.1%);
  border-color: hsl(39deg, 83.1%, 86.1%);
  background-color: hsl(40, 80.5%, 92%);
  color: hsl(40, 79.7%, 25.1%);
  border-color: hsl(39, 83.1%, 86.1%);
}
.toast-warning i {
  color: hsl(40deg, 79.9%, 35.1%);
  color: hsl(40, 79.9%, 35.1%);
}
.toast-info {
  background-color: hsl(194deg, 61%, 92%);
  color: hsl(195deg, 63.4%, 30%);
  border-color: hsl(195deg, 60.6%, 86.1%);
  background-color: hsl(194, 61%, 92%);
  color: hsl(195, 63.4%, 30%);
  border-color: hsl(195, 60.6%, 86.1%);
}
.toast-info i {
  color: hsl(195deg, 62.7%, 40%);
  color: hsl(195, 62.7%, 40%);
}
.toast-light {
  background-color: hsl(0deg, 0%, 96.1%);
  color: hsl(0deg, 0%, 31%);
  border-color: hsl(0deg, 0%, 90.2%);
  background-color: hsl(0, 0%, 96.1%);
  color: hsl(0, 0%, 31%);
  border-color: hsl(0, 0%, 90.2%);
}
.toast-light i {
  color: hsl(0deg, 0%, 54.9%);
  color: hsl(0, 0%, 54.9%);
}
.toast-dark {
  background-color: hsl(0deg, 5.2%, 19%);
  color: hsl(0deg, 0%, 96.1%);
  border-color: hsl(0deg, 6.3%, 25.1%);
  background-color: hsl(0, 5.2%, 19%);
  color: hsl(0, 0%, 96.1%);
  border-color: hsl(0, 6.3%, 25.1%);
}
.toast-dark i {
  color: hsl(0deg, 0%, 91%);
  color: hsl(0, 0%, 91%);
}
.tooltip {
@@ -16171,8 +16171,8 @@ fieldset:disabled .btn-group-vertical > .btn {
}
.accordion-flush {
  --mdb-accordion-flush-btn-box-shadow: inset 0 -2px 0 hsl(0deg, 0%, 96%);
  --mdb-accordion-flush-border-bottom: 2px solid hsl(0deg, 0%, 96%);
  --mdb-accordion-flush-btn-box-shadow: inset 0 -2px 0 hsl(0, 0%, 96%);
  --mdb-accordion-flush-border-bottom: 2px solid hsl(0, 0%, 96%);
}
.accordion-flush .accordion-button:not(.collapsed) {
  box-shadow: var(--mdb-accordion-flush-btn-box-shadow);
@@ -19649,7 +19649,7 @@ textarea.form-control-lg {
  height: 0;
  margin: 0.5rem 0;
  overflow: hidden;
  border-top: 1px solid hsl(0deg, 0%, 96%);
  border-top: 1px solid hsl(0, 0%, 96%);
}
.dropdown-item {
@@ -19718,7 +19718,7 @@ textarea.form-control-lg {
  color: #9e9e9e;
}
.dropdown-menu-dark .dropdown-divider {
  border-color: hsl(0deg, 0%, 96%);
  border-color: hsl(0, 0%, 96%);
}
.dropdown-menu-dark .dropdown-item-text {
  color: #e0e0e0;
@@ -21286,7 +21286,7 @@ textarea.form-control-lg {
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1rem;
  border-bottom: 2px solid hsl(0deg, 0%, 96%);
  border-bottom: 2px solid hsl(0, 0%, 96%);
  border-top-left-radius: calc(0.5rem - 1px);
  border-top-right-radius: calc(0.5rem - 1px);
}
@@ -21313,7 +21313,7 @@ textarea.form-control-lg {
  align-items: center;
  justify-content: flex-end;
  padding: 0.75rem;
  border-top: 2px solid hsl(0deg, 0%, 96%);
  border-top: 2px solid hsl(0, 0%, 96%);
  border-bottom-right-radius: calc(0.5rem - 1px);
  border-bottom-left-radius: calc(0.5rem - 1px);
}
@@ -21606,7 +21606,7 @@ textarea.form-control-lg {
  word-wrap: break-word;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid hsl(0deg, 0%, 96%);
  border: 1px solid hsl(0, 0%, 96%);
  border-radius: 0.5rem;
  box-shadow: 0 0px 3px 0 rgba(0, 0, 0, 0.07), 0 2px 2px 0 rgba(0, 0, 0, 0.04);
}
@@ -21699,7 +21699,7 @@ textarea.form-control-lg {
  margin-bottom: 0;
  font-size: 0.9rem;
  background-color: #fff;
  border-bottom: 1px solid hsl(0deg, 0%, 96%);
  border-bottom: 1px solid hsl(0, 0%, 96%);
  border-top-left-radius: calc(0.5rem - 1px);
  border-top-right-radius: calc(0.5rem - 1px);
}