Gå til innhold

Dato og klokke

Kortet Dato / klokke på fanen Generelt i Portalinnstillinger samler valideringsregler og standardverdier som styrer hvordan klokkeslett og overtidsvinduer brukes i timeregistrering. Innstillingene gjelder hele tenanten og påvirker både timeskjema (fra/til-klokkeslett, matpausetrekk) og overtidshåndtering (forhåndsvalgte lønnsarter).

Tidligere versjoner av denne siden beskrev datoformat, tidsformat, tidssone, ukestart, månedstart og regionalt format som tenant-innstillinger. Disse finnes ikke i koden — datoformat hentes fra i18n (General.datePickerFormat), tidssone håndteres applikasjonsglobalt og uker følger norsk konvensjon (mandag) hardkodet. Siden er rewritten til å beskrive feltene som faktisk finnes på dette kortet.


Tilgang

Hvem Hva trengs
Rolle Administrator (admin-tilgang verifiseres mot moduleID 99)
Modul Portalinnstillinger — moduleId: 99 på ruten

Tilgangen sjekkes både i ruteguard (ModuleGuard) og i komponenten via checkAdminAccess() mot lagret bruker i localStorage. Se portal-setting.component.ts:197-208.

hele "Dato / klokke"-kortet på fanen Generelt med synlig kortheader og alle radene


Innstillinger på kortet

Feltrekkefølgen nedenfor følger malen i HTML-templaten portal-setting.component.html:215-446.

Felt Type FormControl Funksjon
Benytt dato kontroll Bryter opt1 Aktiverer en alternativ datokontroll i timeregistreringen
Lønnsarter for overtidsvindu Flervalg (ng-select) wagetypesForOvertimePopup Hvilke lønnsarter som vises i overtidsvinduet
Forhåndsvalgt lønnsart for overtidsvindu Enkeltvalg (ng-select) defaultWagetypeOvertime Lønnsarten som er forvalgt når overtidsvinduet åpnes
Validering av antall arbeidstimer Bryter validateSumHours Validerer at sumtimer per registrering ligger innenfor regelen
Validering 24 timer/døgn Bryter validate24HoursDaily Validerer at en bruker ikke registrerer mer enn 24 t per dag
Deaktiver validering klokkeslett Bryter + tt:mm-felt disableValidationTime + disableValidationTimeValue Slår av klokkeslett-validering fra et gitt tidspunkt
Antall timer før aktivering av matpause Bryter + tall (timer) enableLunchTimeAfterXHours + enableLunchTimeAfterXHoursValue Antall timer som må være jobbet før matpausen automatisk regnes inn
Benytt fra/til tt:mm Bryter showStartEnd Vis fra/til-klokkeslettkolonne i timeregistrering
Vis fra/til tt:mm ved overtid Bryter clockOT Krev/aktiver fra/til-felter ved overtid
Påkrev fra/til tt:mm ved overtid Bryter clockOTReq Gjør fra/til-felter obligatoriske ved overtid (aktiveres når clockOT er på)
OpenNIS startdato Dato (ngb-datepicker) startDate Startdato for OpenNIS-integrasjonen
Arbeidstid fra kl. tt:mm startTime Normal arbeidstid start (brukes i utregning)
Arbeidstid til kl. tt:mm endTime Normal arbeidstid slutt (brukes i utregning)
Trekk fra matpause (0.5t) Bryter opt3 Trekker automatisk 30 min matpause fra utregnet arbeidstid mellom start og slutt

Form-skjema og bygging: portal-setting.component.ts:250-298.

Bunnen av kortet viser en forklarende kursiv-tekst som beskriver effekten av "Trekk fra matpause" — se i18n-nøklene PortalSetting.isActive og PortalSetting.example (portal-setting.component.html:434-444).

feltet "Lønnsarter for overtidsvindu" med dropdown åpen og noen valgte lønnsarter


Validering

Sjekkene under kjøres når brukeren trykker Lagre på fanen Generelt. Implementasjon: validateHoursGeneralSettings() i portal-setting.component.ts:542-678.

Sjekk Feilmelding (i18n) Når den fyrer
startTime har gyldig tt:mm-format PortalSetting.startTimeFormatIncorrect Maske ikke fylt ut komplett
startTime innenfor 00:00–23:59 PortalSetting.startTimeNotExceed Timer > 23 eller minutter > 59
endTime har gyldig tt:mm-format PortalSetting.endTimeFormatIncorrect Maske ikke fylt ut komplett
endTime innenfor 00:00–23:59 PortalSetting.endTimeNotExceed Timer > 23 eller minutter > 59
Hvis endTime er satt må startTime også være satt PortalSetting.startTimeRequired Bare slutt utfylt
Hvis startTime er satt må endTime også være satt PortalSetting.endTimeRequired Bare start utfylt
startTime < endTime PortalSetting.startTimenNotExceedEndTime Start senere enn slutt
Når disableValidationTime er på må disableValidationTimeValue ha gyldig tt:mm PortalSetting.deactivationIncorrect / PortalSetting.deactivationExceed / PortalSetting.timeMandatory Bryteren er på men feltet er tomt/ugyldig
Når enableLunchTimeAfterXHours er på må verdien være > 0 PortalSetting.lunchMandatory / PortalSetting.valueAboveZero Bryteren er på men feltet er tomt eller ≤ 0

Ved feil vises en samlet toast via ToastService.show (type error) med alle feilene som linjeobjekter.


Lagring og effekt

  1. Lagre sender hele formet til SettingService.saveGeneralSetting(...) (portal-setting.component.ts:438-515).
  2. På suksess oppdateres localStorage (StorageKeys.TimeConfig) og en StorageEvent dispatches manuelt for at andre faner i samme nettleser skal plukke opp endringen.
  3. Toast PortalSetting.savedOK vises ved suksess; PortalSetting.dataMisMatched vises hvis backend rapporterer validate == false.

clockOTReq og disableValidationTimeValue og enableLunchTimeAfterXHoursValue styres dynamisk — de er deaktivert (disabled) inntil sin tilhørende bryter slås på (se checkedClockOT, checkedDisableValidationTime, checkedLunchTimeAfterXHours).

bryteren "Antall timer før aktivering av matpause" aktivert med tallfeltet aktivt


Slik endrer du innstillingene

  1. Åpne Innstillinger → Portalinnstillinger.
  2. Velg fanen Generelt.
  3. Bla til kortet Dato / klokke i venstre kolonne.
  4. Endre ønskede brytere/felter.
  5. Klikk Lagre nederst på fanen.
  6. Hvis valideringen feiler, vises en toast med konkrete feilmeldinger — rett opp og lagre på nytt.

Vanlige problemer

"Validering" trigges når brukere registrerer over 24 timer

Bryteren Validering 24 timer/døgn (validate24HoursDaily) er på. Slå den av hvis tenanten har skiftbaserte registreringer hvor det er legitimt å overskride 24 t per registrering (sjelden, men forekommer).

Fra/til-klokkeslett er obligatoriske selv ved vanlige registreringer

Sjekk at Påkrev fra/til tt:mm ved overtid (clockOTReq) ikke står på når tenanten ikke ønsker det. Bryteren aktiveres bare når Vis fra/til tt:mm ved overtid (clockOT) først er slått på.

Lagre svarer med "Antall arbeidstimer per uke er obligatorisk"

Feltet weekDays (på et annet kort i samme fane) er tomt. Valideringen kjøres for hele Generelt-fanen samtidig, så feilen kan stamme fra et felt utenfor Dato / klokke. Se Arbeidstider for weekDays-feltet.

Matpausefeltet aksepteres ikke

Verdien må være > 0. Negative tall og null gir feilen PortalSetting.valueAboveZero. Feltet bruker <input type="number"> med min="0" og step="0.5".


Relaterte sider