feat(viewer): Invoices & Bills, a document's page, overview tiles (P4b S2)
check / check (push) Canceled after 0s

One sidebar item, Invoices & Bills (the owner's choice, 2026-10-24),
with Money in (invoices) and Money out (bills) tabs: what is owed and
overdue, and the list tied to its receivables or payables account
(Agrees, or what to look at); filters Open, Overdue, Paid, Void, All;
rows by due date, an overdue one saying how many days late, each named
in full for assistive tech. A document's page: total, received or paid,
still owed, status; its lines with their projects; its timeline, a
payment later reversed marked so, each row opening its entry. The
overview adds Owed to you and You owe on bills once the books have
documents. Every figure is the document's derived state (rules.md B-38).
The sidebar's rows (and the rail's) give way to 22 points, not 24, so
13 links still fit the owner's 1479x519 window unscrolled; the
sidebar's tests compute heights from the link count; the 1440x920
golden is re-blessed for the new link.

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-24 15:33:04 -06:00
1 parent 6f0fd97db0
commit b7b7f17163
11 files changed
+927 -13

No files matched your search

+17 -1
View File
@@ -74,6 +74,14 @@ pub enum Route {
Projects,
/// One project.
Project(ledger_core::ClassId),
/// Invoices: what customers owe the company (money in).
Receivables,
/// Bills: what the company owes vendors (money out).
Payables,
/// One invoice.
Invoice(ledger_core::InvoiceId),
/// One bill.
Bill(ledger_core::BillId),
Documents,
Document(u64),
Company,
@@ -94,6 +102,9 @@ impl Route {
Route::Assets | Route::Asset(_) => Section::Assets,
Route::Parties | Route::Party(_) => Section::Parties,
Route::Projects | Route::Project(_) => Section::Projects,
Route::Receivables | Route::Payables | Route::Invoice(_) | Route::Bill(_) => {
Section::Invoices
}
Route::Documents | Route::Document(_) => Section::Documents,
Route::Company => Section::Company,
Route::Journal | Route::JournalEvent(_) => Section::Journal,
@@ -112,13 +123,14 @@ pub enum Section {
Assets,
Parties,
Projects,
Invoices,
Documents,
Company,
Journal,
}
impl Section {
pub const ALL: [Section; 12] = [
pub const ALL: [Section; 13] = [
Section::Overview,
Section::Cash,
Section::Profit,
@@ -128,6 +140,7 @@ impl Section {
Section::Assets,
Section::Parties,
Section::Projects,
Section::Invoices,
Section::Documents,
Section::Company,
Section::Journal,
@@ -144,6 +157,7 @@ impl Section {
Section::Assets => "Assets",
Section::Parties => "Parties",
Section::Projects => "Projects",
Section::Invoices => "Invoices & Bills",
Section::Documents => "Documents",
Section::Company => "Company",
Section::Journal => "Journal",
@@ -162,6 +176,7 @@ impl Section {
Section::Assets => i::PACKAGE,
Section::Parties => i::ADDRESS_BOOK,
Section::Projects => i::BRIEFCASE,
Section::Invoices => i::RECEIPT,
Section::Documents => i::FILES,
Section::Company => i::BUILDINGS,
Section::Journal => i::SCROLL,
@@ -179,6 +194,7 @@ impl Section {
Section::Assets => Route::Assets,
Section::Parties => Route::Parties,
Section::Projects => Route::Projects,
Section::Invoices => Route::Receivables,
Section::Documents => Route::Documents,
Section::Company => Route::Company,
Section::Journal => Route::Journal,