Verzugszinsbeleg — Engine, asynchroner Job, Abschluss
Anlegen und Aktualisieren des Zinsbelegs mit der gemeinsamen Engine, Grenze und Bereich des Hintergrundjobs, Abschluss und Bereitschaftsprüfung.
Der Zinsbeleg liegt in der Rechnungstabelle (doc_type = 'interest'), einer je Basisbeleg, mit Zeitraumzeilen. Admin und Hintergrundjob rufen dieselbe Engine Dlbtinterest auf.
Anlegen und aktualisieren (generateinterest)
- Recht: Core
modify+interest; Bereitschaft des Moduls (interest::ready(), bei fehlender Migration eine klare Meldung:error_interest_not_ready). - Für markierte Rechnungen, ohne Markierung für die gefilterte Liste:
finance/interest::ensureDoc()→Dlbtinterest::ensureDoc()legt den Beleg im Zustand „in Berechnung“ an oder aktualisiert ihn. - Über 3.000 Zeilen ein asynchroner Job in der Cron-Warteschlange:
cron_queue,job_type = interest_doc, mit dem Mandanten des Filters; ohne Mandant global. Die Rückmeldung sagt, dass die Arbeit im Hintergrund läuft. - Antwort: Zahl der angelegten, aktualisierten und übersprungenen Belege, Gründe, fehlerhafte Zeilen (mit Details beim Recht
debug).
Abschluss (finaliseinterest)
Schließt den Zinsbeleg der markierten Rechnungen ab (finaliseDoc($inv, 'manual')). Hintergrundjob und Aktualisierung ändern einen abgeschlossenen Beleg nicht; wird der HUF-Umrechnungskurs an den Zahlungstag angepasst, ändert sich nur dieser, nicht die Zinsen in der Forderungswährung. Recht: Core modify + interestfinal; Fehler: error_apply_input.
Hintergrundjob (cron::interest_doc)
generateinterest stellt ihn über der Grenze ein; ausgeführt wird er vom Cron der Katalogseite, der laut Code dieselbe Engine Dlbtinterest nutzt.
Datenmodell
Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation: invoice (doc_type = 'interest'), invoice_item, interest_period, invoice_correction, cron_queue.
Berechtigungen
Die Schlüssel interest und interestfinal stehen nur in der alten Rechtetabelle (permission_interest_doc_v1.sql). Abhängigkeiten: finance/settlement::rule (Zinssatz), masterdata/baserate.