feat(invoices): allow BAS class 1-3 posting-account overrides and complete the aktiekapital note (#1121)

- invoice/article posting-account overrides accept active class 1-3 accounts;
  class 1-2 (balance-sheet) accounts are rejected on VAT-bearing lines so the
  ruta 05 tax base always books to a 3xxx account
- shared posting-account regex across server schemas, pending-operation
  re-validation, and client forms
- share-capital settings (aktiekapital/antal_aktier) feed the annual-report
  note; kvotvarde derived per ABL 1 kap 6 $; all-or-nothing pair constraint
- signed per-rate VAT breakdown on credit-note PDFs; U+2212 to ASCII hyphen

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Mattsson
2026-07-23 12:16:00 +02:00
committed by GitHub
co-authored by Claude Fable 5
parent b0044bfe98
commit 43f7ccab9e
27 changed files with 440 additions and 109 deletions
+3 -4
View File
@@ -724,7 +724,7 @@ export interface Article {
/** Default price currency (ISO 4217 code from the currencies table);
* pre-fills the invoice currency when added. */
currency: string
/** Optional BAS class-3 revenue account override. null = derive from VAT treatment. */
/** Optional BAS class 1-3 posting account override. null = derive from VAT treatment. */
revenue_account: string | null
/** Margin/display only: never posted to the ledger. */
cost_price: number | null
@@ -1087,7 +1087,7 @@ export interface InvoiceItem {
// Article linkage. `article_id` is a soft back-reference to the source
// article (for the "Affärshändelser" history view); `revenue_account` is the
// BAS class-3 account frozen-copied from the article at line-create time.
// BAS class 1-3 posting account frozen-copied from the article at line-create time.
// null `revenue_account` preserves the legacy "derive from VAT treatment"
// booking in generatePerRateLines().
article_id?: string | null
@@ -1363,7 +1363,7 @@ export interface CreateInvoiceItemInput {
vat_rate?: number
/** Source article (optional). Free-text lines omit it. */
article_id?: string | null
/** BAS class-3 revenue account override copied from the article. null = derive from VAT treatment. */
/** BAS class 1-3 posting account override copied from the article. null = derive from VAT treatment. */
revenue_account?: string | null
/** ROT/RUT toggle. null/undefined = no deduction. */
deduction_type?: 'rot' | 'rut' | null
@@ -3804,4 +3804,3 @@ export interface AGIDeclaration {
created_at: string
updated_at: string
}