P3: party totals by what moved the money, once (defects 14, 11, 24)

Each party's part of an entry is signed as its own account would show it,
with a direction and its cash and in-kind amounts; a reversal is its
original negated. Totals on a cash or all basis: for a member, all equals
the members' equity statement and cash the K-1's cash. Money is cash,
cards and the financing accounts, and a liability credit never pays its
own creditor (creditor_of), so accruals and declared distributions count
once. tin_last4 from the TIN or W-9 facts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
swaitsandClaude Opus 5.5 committed 2026-10-21 12:12:26 -06:00
1 parent 9ab003d0d1
commit c2ceabbae9
52 files changed
+7535 -560

No files matched your search

+5 -4
View File
@@ -1940,7 +1940,7 @@ fn every_figure_of(l: &ledger_core::Ledger) -> (usize, usize) {
.map(|_| ()),
);
}
let money = ledger_core::parties::money_accounts(l, &cash);
let money = ledger_core::parties::money_accounts(l, &cash, &[]);
let party_members: Vec<ledger_core::PartyMember> = l
.parties()
.map(|p| ledger_core::PartyMember {
@@ -1953,14 +1953,15 @@ fn every_figure_of(l: &ledger_core::Ledger) -> (usize, usize) {
for id in 1..l.next_entry_id() {
let Some(e) = l.get_entry(id) else { continue };
tally(ledger_core::parties::entry_flow(e, &money).map(|_| ()));
tally(ledger_core::shares::share_target(e, &money).map(|_| ()));
let _ = ledger_core::shares::resolve(e, l.entry_parties(id), &money, &party_members);
tally(ledger_core::shares::target(l, id, l.entry_parties(id), &money).map(|_| ()));
tally(ledger_core::parties::flow(l, id, l.entry_parties(id), &money).map(|_| ()));
let _ = ledger_core::shares::resolve(l, id, l.entry_parties(id), &money, &party_members);
let _ = e.validate(l.chart());
}
for p in l.parties() {
for (start, end) in spans {
let _ =
ledger_core::parties::activity_with(l, p.id, (start, end), &cash, &party_members);
ledger_core::parties::activity_with(l, p.id, (start, end), &money, &party_members);
}
}
for inv in l.invoices() {