Verzugszinsen werden für nicht-versandte Mahnungen live neu berechnet [deploy]
All checks were successful
Deploy mahnung / deploy (push) Successful in 13s
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:
parent
48c1b06058
commit
c8c16f1f85
1 changed files with 28 additions and 0 deletions
28
card.php
28
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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue