Compte de résultat (P&L) from Well
A correct income statement comes from the posted accounting ledger, not from raw invoices. Well's sync/posting pipelines post invoices and bank transactions into journal_entries against ledger_accounts; that posted data already handles classification, accruals, and settlement that a raw-invoice sum misses.
Do this
- Discover the schema first (see
well:querying-well-data):well_get_schema("ledger_accounts")— the chart of accounts. Look for the account code/number and name/type fields; income-statement accounts are the revenue and expense classes (in a French plan comptable, classe 7 = produits, classe 6 = charges).well_get_schema("journal_entries")andwell_get_schema("journal_entry_lines")if present — the posted movements with debit/credit amounts and the date you'll filter the period on.
- Scope the period with a
whereClauseon the posting/entry date (e.g._gtestart,_lteend). - Aggregate by account: sum the posted amounts per ledger account, then group revenue accounts and expense accounts.
- Net result = total produits (revenue) − total charges (expenses).
Do NOT
- Do not reconstruct the P&L by summing issued invoices as revenue and received invoices as expenses. That misses postings, non-invoice entries, accruals, and account classification, and double-counts or omits settlement. Use the ledger.
- Do not hardcode account codes you haven't confirmed from
well_get_schema/the data — read the chart of accounts first.
If the ledger is empty
If journal_entries / ledger_accounts return no rows for the workspace, the books may not be posted yet. Say so explicitly, and only then offer an invoice-based approximation — clearly labelled as an estimate, not the compte de résultat — built from invoices (issued = revenue proxy, received = expense proxy) over the period.
Present it
Group the output as: Produits (revenue) lines → total; Charges (expense) lines → total; Résultat net. Note the currency and the period. Offer a month-by-month or category breakdown as a follow-up.