Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
1a7561f
docs: design for the Reconciled ("Afstemt") day lock
renemadsen Sep 12, 2026
bda60f2
docs: settle bulk scope, payroll independence and mobile handling
renemadsen Sep 12, 2026
f17cfdc
docs: implementation plan for the Reconciled day lock
renemadsen Sep 12, 2026
56ca9d4
docs: park the Reconciled day lock with a pick-up-here status
renemadsen Sep 13, 2026
5536a8f
docs: make the reconcile status doc a full handoff entry point
renemadsen Sep 15, 2026
09bca54
feat(lock): derive the reconciled-day boundary from the data
renemadsen Sep 15, 2026
17bf5f2
feat(lock): enforce the day lock at the SaveChanges boundary
renemadsen Sep 15, 2026
4a84532
feat(lock): add the day-lock messages in English and Danish
renemadsen Sep 15, 2026
2d0e30d
feat(lock): add reconcile, unlock and reconcile-through endpoints
renemadsen Sep 15, 2026
befdf4b
fix(lock): return a message on blocked writes and skip locked days wh…
renemadsen Sep 15, 2026
658e824
docs(lock): record implementation rulings and add the UI and write-pa…
renemadsen Sep 15, 2026
928a69b
fix(lock): keep startup repair, sheet pull, import, flex, absence and…
renemadsen Sep 15, 2026
d1961c5
feat(lock): send the reconciled state and boundary to the client
renemadsen Sep 15, 2026
7d2d7e3
fix(lock): close the final-review gaps before merge
renemadsen Sep 15, 2026
9808b4d
docs(lock): bring the spec status in line with the implemented backend
renemadsen Sep 15, 2026
6b0d128
feat(lock): add the lock fields and reconcile calls to the client
renemadsen Sep 15, 2026
2219ce4
feat(lock): mark locked and reconciled days in the grid
renemadsen Sep 16, 2026
c92d3ff
feat(lock): add help entries and translations for the day lock
renemadsen Sep 16, 2026
1eef6c8
feat(lock): open locked days read-only, with reconcile and unlock
renemadsen Sep 16, 2026
d4d5844
feat(lock): reconcile many workers through a date from the toolbar
renemadsen Sep 16, 2026
84da4bd
test(lock): bootstrap shard s and cover the day lock end to end
renemadsen Sep 16, 2026
8d0fdd7
test(lock): fix the unit-test setup the new cases exposed
renemadsen Sep 16, 2026
07b598e
feat(lock): restrict reconcile and unlock to admins
renemadsen Sep 17, 2026
1eb5f77
fix(lock): gate reconcile and unlock by first user, not admin role
renemadsen Sep 17, 2026
cdab24c
feat(lock): give the Afstemt verbs to the first user only
renemadsen Sep 17, 2026
d43110e
docs(lock): record the first-user restriction in the spec and plan
renemadsen Sep 17, 2026
563c345
fix(lock): stop telling readers to perform a verb they do not have
renemadsen Sep 17, 2026
0c6d56e
Merge branch 'stable' into feat/reconciled-day-lock-backend
renemadsen Sep 17, 2026
9343fc3
Merge remote-tracking branch 'origin/feat/reconciled-day-lock-backend…
renemadsen Sep 17, 2026
abb610b
test(lock): let a case that sets its own week load its own rows
renemadsen Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/dotnet-core-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ jobs:
strategy:
fail-fast: false
matrix:
test: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,b1m,c1m,d1m,e1m,f1m,h1m,i1m,j1m,l1m]
test: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,b1m,c1m,d1m,e1m,f1m,h1m,i1m,j1m,l1m]
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -259,7 +259,7 @@ jobs:
- name: b
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.ConfigurationSeedDataTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanTimerSheetColumnsTests"
- name: c
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.ScheduleMessageReadTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests"
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.ScheduleMessageReadTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockHelperTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockInterceptorTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockWiringTests|FullyQualifiedName=TimePlanning.Pn.Test.ReconcileServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.CorruptedPauseIdRepairTests"
- name: d
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanRegistrationVersionHistoryTests|FullyQualifiedName=TimePlanning.Pn.Test.PayRuleSetControllerTests|FullyQualifiedName=TimePlanning.Pn.Test.PayRuleSetServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayTierRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PraktikantPayLineRoutingTests|FullyQualifiedName=TimePlanning.Pn.Test.MobileFlexRecomputeAndCascadeTests|FullyQualifiedName=TimePlanning.Pn.Test.SiteWorkerResolverTests"
- name: e
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/dotnet-core-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
strategy:
fail-fast: false
matrix:
test: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,b1m,c1m,d1m,e1m,f1m,h1m,i1m,j1m,l1m]
test: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,b1m,c1m,d1m,e1m,f1m,h1m,i1m,j1m,l1m]
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -248,7 +248,7 @@ jobs:
- name: b
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.ConfigurationSeedDataTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanTimerSheetColumnsTests"
- name: c
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.ScheduleMessageReadTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests"
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.ScheduleMessageReadTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockHelperTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockInterceptorTests|FullyQualifiedName=TimePlanning.Pn.Test.DayLockWiringTests|FullyQualifiedName=TimePlanning.Pn.Test.ReconcileServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.CorruptedPauseIdRepairTests"
- name: d
filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanRegistrationVersionHistoryTests|FullyQualifiedName=TimePlanning.Pn.Test.PayRuleSetControllerTests|FullyQualifiedName=TimePlanning.Pn.Test.PayRuleSetServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayTierRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PraktikantPayLineRoutingTests|FullyQualifiedName=TimePlanning.Pn.Test.MobileFlexRecomputeAndCascadeTests|FullyQualifiedName=TimePlanning.Pn.Test.SiteWorkerResolverTests"
- name: e
Expand Down
Loading
Loading