Skip to content

CAP-ACC-BKS-009Extend and maintain a unit’s fiscal calendar

Markdown

CAP-ACC-BKS-009

Extend and maintain a unit’s fiscal calendar

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleBooks, Business Units and Chart of AccountsRevision1

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
The calendar contains consecutive years made of complete monthly periods.Generation respects the five-year start-date limit.Removal is limited to the latest fully open year.
Surfaces
consoleapi
Intent sources
services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D3services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D10.2services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D15

Controls

23 controls apply, from the corpus control catalogue.

TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-005 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-DAT-001 TC-DAT-004 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PI-005

Permissions

KeyChecked atScope
accounting.fiscal-years.readapitenant
accounting.fiscal-years.createapitenant
accounting.fiscal-years.updateapitenant
accounting.fiscal-years.deleteapitenant

Business Rules

9 rules, 8 to be proved before approval. A rule's product intent is derived from its origin: 9 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Generation creates one to five years, defaulting to one, after the latest existing year or, with no calendar, from the unit’s fiscal year containing the workspace’s current month.
calculationapi, servicetest
services-accounting:modules/books/tests/e2e/fiscal-years.e2e.spec.js#answers the two years asked for, each following the one before
02must prove
Confirmed
January-start years use one calendar-year name, other years use both calendar years, and each has twelve open monthly periods named with two-digit period suffixes.
✓ A valid configuration completes the stated operation.
calculationservicetest
services-accounting:modules/books/tests/unit/fiscal-year-rules.spec.js#names the year by both calendar years it spans
03must prove
Confirmed
No generated year starts after the calendar date five years from the workspace’s current date, using February 28 for a leap-day anniversary in a common year, and an out-of-range request writes no years.
validationservicetest
04must prove
Confirmed
At commit the database requires month-boundary years, uninterrupted succession and exactly twelve monthly periods matching each year.
invariantdatabasetest
services-accounting:modules/books/tests/integration/db/fiscal-years.table.integration.spec.js#refuses a year leaving a gap after the latest, in Rhythm 1.0’s sentence
05must prove
Confirmed
Only the year name is editable; attempts to change dates, status or periods are refused, and renamed years retain the existing period names.
lifecycleservicetest
services-accounting:modules/books/tests/e2e/fiscal-years.e2e.spec.js#answers 409 to a changed start date, naming the column
06must prove
Confirmed
Only the unit’s latest year can be deleted, with every period still open, and an older-year refusal identifies the latest year.
lifecycleservicetest
07must prove
Confirmed
A year becomes closed when every period closes and reopens when a period reopens; period-status changes belong to fiscal close rather than configuration.
invariantdatabasetest
08must prove
Confirmed
Generation uses the workspace’s date and time zone rather than the server’s date.
calculationservicetest
services-accounting:modules/books/tests/integration/services/persistence/fiscal-years.integration.spec.js#starts from the tenant’s month, where the UTC date is already the next month
09
Confirmed
Year lists order by start date and unit, include each year’s twelve periods and support unit and status filters.
policyapi, servicetest
services-accounting:modules/books/tests/e2e/fiscal-years.e2e.spec.js#answers every year by start date, then business unit

Scenarios

IdGivenWhenThenProvenance
01A July-start calendar contains 2026–2027 and 2027–2028.The controller generates a year, renames the first year and removes the latest year.Generation appends the year, renaming preserves period names, and the deletion action moves to the preceding year.test
02The workspace date is in October 2026.Staff request five further years including one beginning in July 2032.The entire request is refused with the allowed start-date limit and no years are saved.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.