rules.md B-41 states the write-off: the direct method the owner chose (A-5), Dr 6990 / Cr 1200 with the receivable tagged, at most what is owed and at most the least owed from that day on (a partial write-off as §1.166-3(a) allows), refused on cash-basis books (§1.166-1(e)), its evidence filed in the same call (§1.166-2(a)); bills are never written off (ASC 405-20-40-1); and a recovery is not a new movement (D-49): the same year, reverse the write-off and record the payment; a later year, a plain entry to a bad-debt-recoveries revenue account, the invoice staying written off (IRC §111). bookspec states B-41 for the first time and gives B-38 its example: two new examples, bad-debt-direct-write-off (two partial write-offs of one invoice, the balances and the trial balance worked by hand) and arap-hand-control-posting-refused (a hand line an earlier version wrote replays, the same line written today is refused). The example schema gains the dated write_off event, lets a refused entry say so (an entry posts whole or not at all; older and refused never combine), and its refusal vocabulary gains untagged_control_line, B-38's control guard. The registers: docs/architecture.md names the new tool group; docs/receipt-store.md lists invoice.written_off and what replay does with it; docs/parity.md records the slice (no row changes status, the floor stands); docs/testing.md records every test and what P12 must mutate; docs/verification.md the two Lean theorems and what they cover. No figure moves: no golden file changed.
78 lines
2.1 KiB
TOML
78 lines
2.1 KiB
TOML
id = "arap-hand-control-posting-refused"
|
|
title = "A hand line on receivables is refused; one an earlier version wrote still reads right"
|
|
rule = "A line on a receivables or payables control account MUST carry its document, so a hand entry MUST be refused; an entry an earlier version wrote is replayed as it stands."
|
|
status = "CHOICE"
|
|
sources = [
|
|
"plan/served.md 8.3.1 A-6 (the owner: hand entries to 1200 and 2000 are refused)",
|
|
"plan/served.md D-45",
|
|
"ASC 310-10 (receivables)",
|
|
"ASC 405-20-40-1 (a liability is removed only when paid or released)",
|
|
]
|
|
tags = ["accrual", "book", "us", "receivables", "legacy"]
|
|
|
|
[setup]
|
|
currency = "USD"
|
|
fiscal_year_start = "01-01"
|
|
basis = "accrual"
|
|
rounding = "half-even"
|
|
|
|
[[setup.accounts]]
|
|
code = "1000"
|
|
name = "Checking"
|
|
type = "asset"
|
|
|
|
[[setup.accounts]]
|
|
code = "1200"
|
|
name = "Accounts Receivable"
|
|
type = "asset"
|
|
|
|
[[setup.accounts]]
|
|
code = "4000"
|
|
name = "Revenue"
|
|
type = "revenue"
|
|
|
|
# The invoice makes 1200 a control account: its balance is now its
|
|
# documents'. The work was billed and the income counted.
|
|
[[events]]
|
|
date = "2026-01-10"
|
|
description = "Survey work"
|
|
invoice = { customer = "Ridgeway Co", amount = "100.00" }
|
|
|
|
# A line an earlier version wrote by hand on 1200: this version's commands
|
|
# refuse one, but books that hold it must still read right, so it is
|
|
# posted as replay posts it.
|
|
[[events]]
|
|
date = "2026-01-15"
|
|
description = "Receivable entered by hand"
|
|
older = true
|
|
lines = [
|
|
{ account = "1200", side = "debit", amount = "50.00" },
|
|
{ account = "4000", side = "credit", amount = "50.00" },
|
|
]
|
|
|
|
# The same line written today is refused: no document carries it.
|
|
[[events]]
|
|
date = "2026-01-20"
|
|
description = "Another hand line"
|
|
refused = "untagged_control_line"
|
|
lines = [
|
|
{ account = "1200", side = "debit", amount = "25.00" },
|
|
{ account = "4000", side = "credit", amount = "25.00" },
|
|
]
|
|
|
|
[[expect]]
|
|
query = "balances"
|
|
as_of = "2026-12-31"
|
|
[expect.values]
|
|
"1000" = "0.00"
|
|
"1200" = "150.00"
|
|
"4000" = "150.00"
|
|
|
|
[[expect]]
|
|
query = "trial_balance"
|
|
as_of = "2026-12-31"
|
|
[expect.values]
|
|
"1000" = "0.00"
|
|
"1200" = "150.00"
|
|
"4000" = "-150.00"
|