Saldo-Endpunkte — Korrektur, Erlass, Kopfabgleich, Einbehalt
Funktionsweise von Korrektur, Korrekturrücknahme, Erlass, Kopfneuberechnung und Einbehaltsfreigabe mit Tabellen und Berechtigungsschlüsseln.
Die Saldo-Endpunkte ändern den offenen Saldo einer Rechnung aus den Positionen oder über eine eigene Protokollzeile. Kopfsummen werden immer aus den Positionen berechnet, der offene Saldo bewegt sich um die Differenz.
Endpunkte
| Endpunkt | Funktionsweise | Recht |
|---|---|---|
correction | Mit leerem Betrag wird der gesamte offene Saldo in beiden Währungen geschlossen, mit Betrag vorzeichenrichtig gebucht; bei mehreren Belegen jeder auf null. addCorrection() schreibt eine Korrektur- und eine Positionszeile, danach wird der Kopf neu berechnet. Nur Belege mit Kopf, nicht beglichen (state !== 'settled'), im Bereich. | Core modify + correction; mehrere Elemente bulkcorrection |
correctiondelete | deleteCorrection(correction_id): löscht Zeile und Position, berechnet den Kopf neu. | Core modify + correctiondelete |
waive | Nur Zins- und Pauschalenbelege (getWaivableDoc). Betrag wie eingegeben (wenn höchstens offen + 0,5) oder der gesamte offene; bei mehreren Belegen immer der gesamte. Ein Zukunftsdatum wird zu heute. settlement::addWaiver() + applyWaiverToBalance(); die Antwort zählt erledigt/übersprungen. | Core modify + waive; mehrere Elemente canBulk(waive) |
headersync | Je Rechnung syncHeaderFromItemsReport() (Dlbtinvoice::syncHeaderFromItems); die Antwort zählt geänderte und übersprungene Rechnungen. | Core modify + headersync; mehrere Elemente bulkheadersync |
retention, retentionsave, retentionsearch | Zeigt die erfassten Einbehalte (getRetentions), gibt sie zeilenweise frei (releaseRetention, je Fehler error_retention_*), sucht eigene Ausgangsrechnungen an denselben Partner zur Aufrechnung (searchSettleInvoices). Erfasst wird beim Speichern der Rechnung (saveRetentions). | retention + retentionInScope |
Fehlerschlüssel
error_correction_select, error_correction_amount, error_correction_not_ready, error_correction_doc, error_waive_select, error_waive_doc, error_waive_not_ready (fehlende Migration).
Datenmodell
Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.
| Tabelle | Rolle |
|---|---|
invoice_correction | Korrekturprotokoll |
settlement_waiver | Erlassprotokoll (über das Modell finance/settlement) |
invoice_retention | Einbehaltszeilen |
invoice, invoice_item | Kopf und Positionen, Saldo |
Bekannte Einschränkungen
Der Schlüssel bulkwaive fehlt in den Seeds, daher entscheidet auch bei mehreren Elementen das einfache Recht waive. Die Schlüssel correction, correctiondelete, headersync, retention und waive stehen nur in der alten Rechtetabelle und sind im Funktionsstamm nicht eingestuft.