feat(periods): undo klarmarkera so an externally closed year can be reopened (#1978)
markPeriodClosedExternally ("klarmarkera") closes and locks an imported
year without a closing entry, and nothing could reverse it: unlockPeriod
refuses closed periods and the SIE replace flow refuses closed or locked
years. An owner who klarmarkerade five imported years and then found the
prior-year SIE file was wrong had no way back (Forsslund Systems,
2026-08-27).
reopenExternallyClosedPeriod reverses the mark while the closed state still
comes from klarmarkera (closed_externally set, no closing entry), clears the
lock, writes the audit_log row, and emits period.unlocked. New route
POST /api/bookkeeping/fiscal-periods/[id]/reopen-external with envelope codes
PERIOD_REOPEN_NOT_CLOSED / PERIOD_REOPEN_NOT_EXTERNAL; "Öppna igen" action
and "Avslutat i tidigare program" chip in Settings > Bookkeeping > Fiscal
years; unlock and SIE replace refusals now point at that path.
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Jakob Wennberg
Claude Fable 5
parent
c981384a0e
commit
dfed55cb6c
@@ -1523,8 +1523,18 @@ const PERIOD: Record<string, StructuredErrorEntry> = {
|
||||
},
|
||||
PERIOD_UNLOCK_CLOSED: {
|
||||
httpStatus: 409,
|
||||
message_sv: 'Ett stängt räkenskapsår kan inte låsas upp.',
|
||||
message_en: 'A closed fiscal year cannot be unlocked.',
|
||||
message_sv: 'Ett stängt räkenskapsår kan inte låsas upp. Klarmarkerades året som avslutat i ett tidigare program kan du i stället öppna det igen under Räkenskapsår.',
|
||||
message_en: 'A closed fiscal year cannot be unlocked. If the year was marked as closed in a previous system, reopen it from Fiscal years instead.',
|
||||
},
|
||||
PERIOD_REOPEN_NOT_CLOSED: {
|
||||
httpStatus: 409,
|
||||
message_sv: 'Räkenskapsåret är inte stängt.',
|
||||
message_en: 'Fiscal year is not closed.',
|
||||
},
|
||||
PERIOD_REOPEN_NOT_EXTERNAL: {
|
||||
httpStatus: 409,
|
||||
message_sv: 'Räkenskapsåret stängdes med ett bokslut i Accounted och kan inte öppnas igen här.',
|
||||
message_en: 'The fiscal year was closed with a year-end run in Accounted and cannot be reopened here.',
|
||||
},
|
||||
FISCAL_YEAR_RESET_NOT_FOUND: {
|
||||
httpStatus: 404,
|
||||
|
||||
Reference in New Issue
Block a user