Skip to main content

Ouverture d'une période

Documentation technique GRH — suivi d’ouverture de période / exercice (verrou RHOUV*, reprise phase A/B, droit TM_EXO, journal des événements).

Voir aussi la doc utilisateur.

1. Objectif

Sécuriser l’ouverture de période et d’exercice : un seul poste à la fois, reprise après coupure sans rejouer inutilement les étapes déjà OK, traçabilité dans le journal des événements.

2. Fichiers / unités

Copie de travail sous sources_modifiees/ouverture_periode/ — ne pas éditer directement les sources EIG.

Unité Rôle Mensuel.Periode.I_OuvertureSuivi Enums, constantes timeout, interface suivi Mensuel.Periode.U_OuvertureSuivi Verrou, étapes, heartbeat, reprise Mensuel.Periode.F_Ouverture Orchestration PER/EXE, UI busy, reprise écran d_GRHmain Garde connexion (EN_COURS / INTERROMPU), droit après init Menu.Fr_GRHMainMenu Ouverture forcée reprise, act_exercices / TM_EXO U_GRHNotificationDB Heartbeat Notif_USER (session visible) ddl/RHOUVPERIODE.sql Tables Firebird + générateur

3. Tables

RHOUVPERIODE

Champ Rôle OUVID PK (générateur RH_GENID_OUVPERIODE) OUVSTATUT 0 EN_COURS · 1 INTERROMPU · 2 TERMINE · 3 ABANDONNE OUVPERIODE Index AAAAMM période cible OUVUSER / OUVATTACH Utilisateur / ConnectionID verrou OUVHB Dernier heartbeat OUVETAPE / OUVMESSAGE Étape courante / message

RHOUVETAPE : une ligne par étape (ETAPCODE = TOuvEtape, statut A_FAIRE / EN_COURS / OK / KO / IGNORE).

4. Constantes d’activation / timing

Constante Unité Défaut Rôle C_USE_OUVERTURE_SUIVI I_OuvertureSuivi True Active / coupe tout le suivi (verrou, étapes, heartbeat, reprise) C_OUV_HB_TIMEOUT_SEC I_OuvertureSuivi 90 Délai sans heartbeat avant INTERROMPU C_OUV_HB_INTERVAL_SEC I_OuvertureSuivi 15 Fréquence du heartbeat suivi C_USE_NOTIF_USER_HEARTBEAT_THREAD U_GRHNotificationDB True True = heartbeat USERCONNECT sur thread dédié ; False = WM_TIMER historique

5. Pipeline

Controles users → DemarrerSuivi (verrou) → alertes DSN / P99 / CanChange* → PreBascule → Bascule → PostOuverture → Terminer

* En reprise : alertes DSN / P99 / « forcer le changement » sautées.

    ExecuterPreBascule — CHG_HOR (mois), TAUX_PAS, DSN, ARCH_* ExecuterBascule — CLOSE_PER → BASCULE (trx) → DATE / INFO_ASSO / DEBLOC ExecuterPostOuverture — ARCH_HISTO (EXE) → APRES_OUV → message → Terminer

    Le verrou est posé avant les dialogues DSN / CanChange. Abandon d’un contrôle → AbandonnerSuiviSiActif.

    6. Verrou & heartbeat

      EN_COURS + heartbeat < 90 s → autre session refusée (« Réessayez plus tard »). Process tué → heartbeat expire → INTERROMPU au prochain démarrage. Fin OK → Terminer → TERMINE + arrêt heartbeat (déverrouillage immédiat). Abandon / contrôles KO après démarrage → ABANDONNE.

      7. Reprise phase A / B

      Phase Critère Comportement A Période ouverte ≠ cible Étapes pré-bascule déjà OK conservées. Reset seulement EN_COURS/KO. B Période ouverte = cible Étapes ≤ bascule → IGNORE. Post-bascule → A_FAIRE. Ne pas re-basculer.

      AssureInfoAssoGRH : en reprise, CanChangePeriode est sauté → recréer _InfoAssoGRH avant SaveToDB.

      8. Droits

      Menu : act_exercices.Enabled := CanOpen('TM_EXO')
      Init : InitOpenOf('TM_EXO', FonctionOK(110,100) and DroitSurToutesSection)

        Après doInitDroitsUsers : si reprise demandée et pas CanOpen('TM_EXO') → refus. CheckExerciceExist / écran : même garde.

        9. UI pendant traitement

          SetUIOuvertureBusy — désactive boutons / navigation. _INTRT — bloque Escape / fermeture (CanClose := False).

          10. Erreurs & arrêt

          Cas Comportement Exception pendant ouverture / reprise StopperOuvertureSurException → message, PasserInterrompu, journal, Application.Terminate Contrôle métier KO AbandonnerSuiviSiActif — pas d’arrêt appli Refus droit TM_EXO Exception / message — pas de traitement

          11. Journal des événements

          Traces via _GetBigBrother.AddEventGlobal (libellé UI : journal des événements). Source typique : F_SaisieExercices / D_GRHMain.