Every business has owners, and how owners put money in and take it out
depends on what the business is. wanderbooks now knows the four common
US shapes:
- books.chart_template {entity_type, owners}: a starter chart for a sole
proprietorship (owner's capital and draws), partnership or
multi-member LLC (capital and distributions per partner, guaranteed
payments), S corporation (stock, APIC, shareholder distributions,
officer compensation, retained earnings) or C corporation (dividends,
income tax expense), plus common income and expense accounts with
tax categories, and the wanderbooks.toml settings that go with it
(tax form, members with equal-share placeholders that sum to exactly
100, close target). A proposal for the agent to review with the human.
- Closing: CloseTo is now RetainedEarnings { sweep }, Account { into,
sweep } (a sole proprietor's capital) or Members([MemberClose { capital,
share, distributions }]). Sweeps zero owner-pay equity accounts into
their target at close: draws into owner's capital, dividends or
distributions into retained earnings, each partner's distributions
into their own capital. Validation (equity, distinct, shares sum to 1)
runs in the pre-close preview, before anything is journaled. The
journal records the target; journals with no target or the old
"retained_earnings" string still replay.
- Members' equity: a partner's distributions account is part of their
capital; its activity reports as distributions.
- Config: members' distribution_account; [books] close_into and
close_sweep for single-owner businesses (rejected alongside members).
The cash flow names members on their distribution accounts too.
Tests: a sole proprietor (net 2,000 and 500 of draws into capital: 6,500,
the cash); a corporation (dividends 300 into retained earnings: 600); a
partnership with distribution accounts (Bob 100 + 25 - 20 = 105, swept at
close, February begins there); bad sweep accounts; templates round-trip
through the chart parser, unique codes, equity per entity, every tax
category valid for the entity's return; stdio: template -> settings ->
import -> postings -> close with the exact closing lines.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtYEaR6M6Ybdhm6X98BWNu
27 lines
966 B
Rust
27 lines
966 B
Rust
//! QuickBooks-compatible import/export for wanderbooks.
|
|
//!
|
|
//! - [`bank_csv`]: parse QBO bank/credit-card upload CSVs.
|
|
//! - [`chart_csv`]: parse chart-of-accounts CSVs.
|
|
//! - [`iif`]: generate IIF journal entries for QuickBooks Desktop.
|
|
//! - [`report`]: the statement layout every renderer draws from.
|
|
//! - [`xlsx`]: generate XLSX reports.
|
|
//! - [`pdf`]: generate PDF financial statements (CPA handoff).
|
|
//!
|
|
//! All money stays `Decimal`; no floats in money paths.
|
|
|
|
pub mod bank_csv;
|
|
pub mod chart_csv;
|
|
pub mod iif;
|
|
pub mod pdf;
|
|
pub mod report;
|
|
pub mod templates;
|
|
pub mod xlsx;
|
|
|
|
pub use bank_csv::{BankTransaction, parse_bank_csv};
|
|
pub use chart_csv::{ChartRow, parse_chart_csv};
|
|
pub use iif::{IifEntry, journal_to_iif};
|
|
pub use pdf::{PdfError, statement_pdf};
|
|
pub use report::{Member, ReportMeta, Row, RowKind, Statement, YearEarnings, format_amount};
|
|
pub use templates::{ChartTemplate, EntityType, chart_template};
|
|
pub use xlsx::{XlsxReport, report_to_xlsx};
|