fd1dd81e8d
Replaces the separate revenue + costs tables with a single ledger across the screen, CSV and PDF. Every row is typed (outgoing invoice / incoming invoice / expense) and signed — outgoing positive, incoming + expenses negative — so sorting by value runs income → costs and the column nets toward the Result. - getTaxReport now returns a `ledger` array (signed, typed, date-sorted); legacy rows/costs/summary kept for back-compat. - Frontend: one sortable table (click Type/Date/Party/Net/VAT/Gross), coloured type badges, cancelled rows greyed with lineage badges; Income/Costs/Result summary box unchanged. - CSV + PDF reworked to the same unified, signed layout; PDF totals show Income / Costs (negative) / Result. - i18n: en/de (frontend) + pdf-i18n (en/de real; fr/nl/pt/ru English-fallback, flagged for native review). Build + node --check + JSON parse green.