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)

  1. Recht: Core modify + interest; Bereitschaft des Moduls (interest::ready(), bei fehlender Migration eine klare Meldung: error_interest_not_ready).
  2. 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.
  3. Ü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.
  4. 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.