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.
Mensuel.Periode.I_OuvertureSuiviMensuel.Periode.U_OuvertureSuiviMensuel.Periode.F_Ouvertured_GRHmainMenu.Fr_GRHMainMenuact_exercices / TM_EXOU_GRHNotificationDBddl/RHOUVPERIODE.sql3. Tables
RHOUVPERIODE
OUVIDRH_GENID_OUVPERIODE)OUVSTATUTOUVPERIODEOUVUSER / OUVATTACHOUVHBOUVETAPE / OUVMESSAGERHOUVETAPE : une ligne par étape (ETAPCODE = TOuvEtape, statut A_FAIRE / EN_COURS / OK / KO / IGNORE).
4. Constantes d’activation / timing
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 / DEBLOCExecuterPostOuverture— 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
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
- Après
doInitDroitsUsers: si reprise demandée et pasCanOpen('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
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.