Perioder, låsing og korreksjon¶
Periodestatus styrer om ordinære timer kan registreres og endres. En administrator kan åpne en periode igjen eller bruke den dokumenterte korreksjonsflyten.
Tilstander¶
stateDiagram-v2
direction LR
[*] --> Active
Active --> Locked: Sett måned inaktiv
Locked --> Active: Åpne måned
Active --> NotFound: Årsrad mangler
NotFound --> Active: Opprett årsrad
Active: p_mNNActive = 1
Locked: p_mNNActive = 0
NotFound: Ingen årsrad, behandles som åpen i UI
wv_PeriodStatus har én rad per år med tolv månedsflagg. Det er ikke én rad
per måned. LockDate brukes i tillegg til friststyring.
Bruker- og systemflyt¶
flowchart TD
A["Bruker velger dato"] --> B["UI kaller IsDateLocked"]
B --> C{"Måneden er aktiv?"}
C -- "Ja" --> D["Felter er åpne<br/>registrering kan lagres"]
C -- "Nei" --> E["Felter deaktiveres<br/>brukeren varsles"]
E --> F{"Korrigering nødvendig?"}
F -- "Nei" --> G["Vent til perioden åpnes"]
F -- "Ja" --> H["Administrator åpner perioden<br/>eller bruker korreksjonsrutinen"]
H --> D
| Handling | Teknisk effekt |
|---|---|
| Sett måneder aktive/inaktive | wv_PeriodStatus_update_V2 oppdaterer alle månedsflagg for året |
| Lås eller åpne et intervall | wv_PeriodStatus_get_insert_update_V2 går gjennom månedene og oppretter manglende årsrad |
| Kontroller valgt dato | API-et leser periodestatus og returnerer låst/åpen til Time-UI |
Avvik og gjenoppretting¶
| Situasjon | Løsning | Kontroller |
|---|---|---|
| Årsrad mangler | Første administrative oppdatering oppretter raden | p_Year og månedsflagg |
| Ordinær registrering avvises | Åpne perioden eller bruk korreksjonsflyten | Aktuell månedskolonne og LockDate |
| Periode ble åpnet ved en feil | Lås den igjen etter at omfanget er kontrollert | At ingen uønskede timer ble endret |
| Eksport og periodestatus avviker | Sammenhold eksportlogg og periode før ny kjøring | wv_Time_ExportLog, wrExported, månedsflagg |