Verzugszinsen werden für nicht-versandte Mahnungen live neu berechnet [deploy]
All checks were successful
Deploy mahnung / deploy (push) Successful in 13s

Mahnungen im Status "Erstellt" (noch nicht versandt) werden beim Aufruf
der card.php mit der aktuellen Stufen-Konfiguration neu berechnet.
Ändert sich der Zinssatz-Override in den Einstellungen, wirkt das
sofort auf alle offenen Mahnungen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Eduard Wisch 2026-05-13 17:34:17 +02:00
parent 48c1b06058
commit c8c16f1f85

View file

@ -55,6 +55,34 @@ if ($mahnung->fetch($id) <= 0) {
exit; exit;
} }
// Verzugszinsen für noch nicht versandte Mahnungen mit aktueller Konfiguration neu berechnen
if ((int) $mahnung->status <= Mahnung::STATUS_ERSTELLT && !empty($mahnung->fk_facture)) {
require_once DOL_DOCUMENT_ROOT.'/custom/mahnung/class/mahnungstufe.class.php';
$_stufe = new MahnungStufe($db);
if ($_stufe->fetchByStufe((int) $mahnung->stufe) > 0) {
$_basiszins = (float) getDolGlobalString('MAHNUNG_BASISZINS', '1.27');
$_override = $_stufe->getZinssatzOverride($mahnung->customertype);
// Verzugstage: Differenz Mahndatum - Original-Fälligkeit
$_tageVerzug = 0;
if (!empty($mahnung->datec) && !empty($mahnung->date_lim_reglement_alt)) {
$_tageVerzug = max(0, (int) round(($mahnung->datec - $mahnung->date_lim_reglement_alt) / 86400));
}
$_neueZinsen = Mahnung::berechneVerzugszinsen(
$mahnung->betrag_offen,
$_tageVerzug,
$mahnung->customertype,
$_basiszins,
$_override
);
if (abs((float) $mahnung->verzugszinsen - $_neueZinsen) > 0.001) {
$mahnung->verzugszinsen = $_neueZinsen;
$mahnung->basiszins_snapshot = $_basiszins;
$mahnung->rechneSumme();
$mahnung->update($user);
}
}
}
// Stornieren // Stornieren
if ($action === 'storno' && $user->hasRight('mahnung', 'delete')) { if ($action === 'storno' && $user->hasRight('mahnung', 'delete')) {
$mahnung->status = Mahnung::STATUS_STORNIERT; $mahnung->status = Mahnung::STATUS_STORNIERT;