Skip to content

ADR 0033: Company Accounting Time and Period Cutoffs

Context

BooksPlus preserves event timestamps as exact instants, while posting, reporting, and close use inclusive business dates and FinancialPeriods. The Inventory contract already resolves an inclusive period to a half-open timestamp interval using local midnights, but that workflow-specific rule does not establish system-wide cutoff meaning.

A fixed UTC offset is not sufficient company or location identity. Daylight- saving rules and civil-time law can change, and the offset applicable to one instant may not apply to another. A user's current location also must not silently change the period membership of accounting facts.

Decision

Each BooksPlus company has one required named accounting time-zone id. The id uses the IANA time-zone data model, including UTC where appropriate, rather than a customer-maintained fixed offset.

FinancialPeriod start and end values remain inclusive company-local business dates. When a timestamp selection boundary is required, BooksPlus resolves the period as a half-open interval from local midnight on the start date through local midnight immediately after the inclusive end date in the company's accounting time zone. BooksPlus preserves the named zone and resolved UTC instants when the cutoff is durable evidence. An unavailable, invalid, or ambiguous boundary fails visibly instead of falling back to the host zone or a fixed offset.

Event, audit, evaluation, approval, finalization, capture, and similar timestamps remain exact instants independent of accounting-period boundaries. Changing their presentation does not change their identity or meaning.

Operational locations may later own named time zones for interpreting source- world local events. Users may later own a preferred named display time zone, defaulted visibly from their system when appropriate. Neither setting replaces the company accounting time zone or changes posting dates, FinancialPeriod membership, report parameters, close meaning, or historical results.

When multi-entity consolidation is later accepted, each accounting entity first closes and reports under its own company-local periods and policies. Consolidation maps those entity periods into an explicit group reporting period and preserves differences, translation, eliminations, and intervening- event treatment required by the future consolidation contract. Consolidation does not merge entities by comparing raw UTC windows, and geographic locations alone do not establish separate accounting entities.

Presentation consequences

  • Ordinary accounting views lead with the inclusive business date or covered period and identify the company accounting time zone where it prevents ambiguity.
  • User-local event times are presentation only and include a recognizable zone when another reasonable interpretation is possible.
  • Audit, support, export, and troubleshooting views may show the UTC instant, named time zone, resolved offset, and local representation together.
  • A UTC instant that resolves to the following calendar date must not be labeled as the accounting close date.

Initial implementation boundary

The initial implementation persists the company accounting time-zone id and provides one shared period-cutoff resolver consumed by workflows that validate timestamp cutoffs. Operational-location records, user display preferences, multi-entity consolidation, foreign-currency translation, and group reporting remain deferred until their own accepted contracts exist.

Consequences

  • Company setup must collect or visibly default and review a named accounting time zone.
  • Fixed offsets are derived facts for particular instants, not configuration.
  • Financial-period cutoff code belongs to the shared kernel and is not reimplemented by Inventory, Finance, Close, or Reporting.
  • Existing workflow contracts that preserve source zones continue to do so; source-zone evidence cannot silently override the company period boundary.
  • ../../contracts/company.contract.md
  • ../../contracts/financial-period.contract.md
  • ../../contracts/kernel.contract.md
  • 0028-standard-cost-inventory-period-summaries.md
  • 0026-initial-release-single-currency-boundary.md