diff --git a/card.php b/card.php index c73d4eb..91c3568 100644 --- a/card.php +++ b/card.php @@ -55,6 +55,34 @@ if ($mahnung->fetch($id) <= 0) { 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 if ($action === 'storno' && $user->hasRight('mahnung', 'delete')) { $mahnung->status = Mahnung::STATUS_STORNIERT;