/** * Summen einer Rechnung vorab rechnen, nach der frueheren Formel (Weg 2, * Gleitkomma). Gedacht fuer Shops, die kassieren, bevor die Rechnung entsteht. * * **Veraltet.** Seit dem 23.09.2026, 17:05 Uhr stellt der Server jede neue * Rechnung ueber den exakten Ganzzahl-Kern aus (`calculateInvoice` in * `…/invoice/calc`). An Halbcent-Grenzen weicht diese Funktion davon um * einen Cent je Satz ab (21,35 EUR netto zu 10 %: hier 23,48 EUR, auf der * Rechnung 23,49 EUR). Die Formel bleibt trotzdem, wie sie ist: der Server * schaltet den Kern je Konto ueber einen Schalter und rechnet Entwuerfe * ausserhalb des Ausstellens teils weiter nach Weg 2, und Backend und * Dart-Zwilling pruefen gegen `fixtures/invoice-totals.json`. Neuer Code * nimmt `calculateInvoice` oder `previewInvoice`. * * Die Regel (je USt-Satz, Betraege in Cent, kaufmaennisch gerundet): * * | Modus | Netto | USt | Brutto | * |---------|--------------------------------|----------------------------|--------------------| * | `net` | round(Σ Zeilen) | round(Σ Zeilen × Satz/100) | Netto + USt | * | `gross` | round(B × 100 / (100 + Satz)) | B − Netto | B = round(Σ Zeilen)| * * Zeile = Einzelpreis × Menge × (1 − Rabatt/100), ungerundet. Im Brutto-Modus * ist das Brutto der vereinbarte Preis und bleibt, wie die Zeilen es ergeben. * Bei einem steuerfreien Steuerfall zaehlt jede Zeile zu 0 %. * * `fixtures/invoice-totals.json` haelt die Prueffaelle; Backend und * Dart-Zwilling pruefen gegen dieselbe Datei. Verbindlich bleibt, was der * Server rechnet — mit `previewInvoice` laesst sich das vorab abfragen. */ import type { InvoiceTotals } from './typen.js'; import type { PriceMode, TaxScheme } from './vertrag.js'; import { ZERO_RATED_TAX_SCHEMES } from './calc.js'; /** Aus dem Kern uebernommen, damit Kern und Huelle nie auseinanderlaufen. */ export { ZERO_RATED_TAX_SCHEMES }; /** Was fuer die Summe zaehlt — `InvoiceItemInput` passt unveraendert. */ export interface TotalsItem { quantity: number; unitPriceCents: number; vatRate: number; discountPct?: number; } /** * Netto, USt und Brutto einer Rechnung in Cent, je Satz absteigend — dieselbe * Form wie `invoice.totals` in den Antworten. * * `taxScheme` ist der Steuerfall der Rechnung; ohne Angabe `normal`. Leitet der * Server einen steuerfreien Fall ab (etwa eine ig. Lieferung), gehoert dieser * Fall hierher — sonst rechnet die Funktion Steuer, die die Rechnung nicht * ausweist. * * @deprecated Seit 0.27.3: rechnet nach der frueheren Formel (Weg 2) und kann * an Halbcent-Grenzen um einen Cent je Satz von einer heute ausgestellten * Rechnung abweichen. Stattdessen `calculateInvoice` aus * `@kreiseck/kasseneck-api/invoice/calc` (Euro-Positionen ueber * `itemFromEuro`) oder `previewInvoice` verwenden. */ export declare function computeInvoiceTotals(items: readonly TotalsItem[], priceMode: PriceMode, taxScheme?: TaxScheme): InvoiceTotals;