---
id: CAP-ACC-CLS-007
title: Preview the entries a close can recognize
feature: FEAT-ACC-CLS-02
product_area: accounting
module: close
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: partially-observed
supersedes:
  - 'CAP-ACC-REC-021 (react-console acceptance inventory, the preview half)'
  - RUL-ACC-REC-071
  - RUL-ACC-REC-072
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
    A: revenue recognised)
purpose: >-
  Controllers inspect scheduled revenue and missing account setup before the
  close attempts its own posting.
outcomes:
  - Account problems appear before the recognition step.
  - Staff understand the due revenue included in the closing preview.
concepts:
  - CON-ACC-CLS-002
actors:
  - ACT-ACC-015
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: accounting.fiscal-periods.read
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-ACC-CLS-007-01
    proved_by: [ATS-ACC-CLS-007-01, ATS-ACC-CLS-007-04, TST-ACC-CLS-042]
    statement: >-
      The revenue check previews open schedules with unrecognized entries due by
      period end, reporting schedule counts and amounts by currency.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#passes
      with what the close will recognize: 41 schedules ($63,215.00)
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A: revenue recognised)
    examples:
      positive: >-
        The fixture preview identifies forty-one schedules and the amount due in
        their currency.
  - id: BR-CAP-ACC-CLS-007-02
    proved_by: [ATS-ACC-CLS-007-01, ATS-ACC-CLS-007-02, TST-ACC-CLS-034, TST-ACC-CLS-042]
    statement: >-
      Missing revenue or deferred revenue accounts on due entries or their
      schedules block the preview, with affected schedules listed first.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#is
      blocked by a due entry with no G/L account, naming the problem on its line
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a row 73 (class
      A: revenue recognised)
  - id: BR-CAP-ACC-CLS-007-03
    proved_by: [ATS-ACC-CLS-007-05, TST-ACC-CLS-042]
    statement: >-
      When no entries are due, the revenue check passes and reports that
      recognition has no work.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#passes
      with nothing due
    origin: none
  - id: BR-CAP-ACC-CLS-007-04
    proved_by: [ATS-ACC-CLS-007-02, ATS-ACC-CLS-007-04, TST-ACC-CLS-034]
    statement: >-
      Preview amounts use each currency’s minor units and exclude entries dated
      after period end.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/persistence/recognition-previews.queries.integration.spec.js#totals
      the schedules due per currency, counting the ones that cannot be
      recognized
    origin: none
  - id: BR-CAP-ACC-CLS-007-05
    proved_by: [ATS-ACC-CLS-007-03, TST-ACC-CLS-017, TST-ACC-CLS-042]
    statement: >-
      The required cost of goods sold check always reports not applicable, and
      close execution books no such entries.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#is
      not applicable, saying Rhythm 2.0 records no COGS entries yet
    origin: >-
      fiscal-close design PHASE-2-PLAN §8 (not applicable until COGS entries
      exist; never invented)
  - id: BR-CAP-ACC-CLS-007-06
    proved_by: [ATS-ACC-CLS-007-02, TST-ACC-CLS-034]
    statement: The preview excludes schedules belonging to another workspace.
    kind: invariant
    enforced_at:
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/integration/services/persistence/recognition-previews.queries.integration.spec.js#never
      answers another tenant’s schedules
    origin: none
scenarios:
  - id: SC-CAP-ACC-CLS-007-01
    given: Forty-one schedules have entries due through September end.
    when: The controller inspects the revenue preview.
    then: >-
      The preview passes and reports the fixture’s sixty-three thousand two
      hundred fifteen dollars due.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#passes
      with what the close will recognize: 41 schedules ($63,215.00)
  - id: SC-CAP-ACC-CLS-007-02
    given: A due schedule lacks a deferred revenue account.
    when: The controller evaluates readiness.
    then: The preview blocks and prioritizes the schedule with missing setup.
    provenance: test
    source: >-
      services-accounting:modules/fiscal-close/tests/unit/readiness/other-checks.spec.js#is
      blocked by a due entry with no G/L account, naming the problem on its line
edge_cases: []
constraints: []
depends_on:
  - CAP-ACC-CLS-004
related:
  - CAP-ACC-CLS-009
journeys:
  - JNY-ACC-CLS-001
open_questions: []
evidence:
  - >-
    services-accounting examination inputs:
    modules/fiscal-close/services/readiness/revenue-recognition.ts,
    cost-of-goods-sold.ts, services/persistence/recognition-previews.ts; tests
    unit/readiness/other-checks.spec.js,
    integration/services/persistence/recognition-previews.queries.integration.spec.js.
  - >-
    react-console examination inputs:
    components/accounting/close/details/processing-detail.tsx.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-DAT-001, TC-LOG-004, TC-AVL-001, TC-AVL-004, TC-MON-001, TC-MON-002, TC-MON-004, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005]
exercised_by: [FAS-ACC-CLS-02-03, FAS-ACC-CLS-02-04, FAS-ACC-CLS-02-05]
suites: [TST-ACC-CLS-017, TST-ACC-CLS-034, TST-ACC-CLS-042]
---

# Preview the entries a close can recognize

## Purpose

Controllers inspect scheduled revenue and missing account setup before the close attempts its own posting.

## How It Works

The controller expands the revenue check before starting the close. The preview groups due amounts by currency and identifies the schedules involved. A missing account turns the result into a blocker. Affected schedules appear first so staff can inspect their setup. A month without due entries shows a passing result with no recognition work. This is a preview; execution reads due work again when the recognition step runs. The cost of goods sold check remains visible but does not apply to the present implementation. The product should decide its future place before adding inventory accounting.

## Relationships

- Readiness combines this preview with the other checks.
- Close-owned revenue processing performs the recognition after the re-check.
