From 1c666287f5e11517fe5aecfd2aa85f8b65d3bea7 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Mon, 7 Sep 2026 21:02:25 +0200 Subject: [PATCH] Reiter am Kunden nur bei vorhandenen Mahnungen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Reiter stand auf jeder Kundenkarte, auch ohne eine einzige Mahnung. Die Leiste dort traegt 21 Eintraege; auf Prod gibt es 4 Mahnungen bei 3 von 111 Kunden — bei 108 Kunden zeigte er nichts. completeTabsHead blendet ihn am Kunden jetzt nur bei Bestand ein; die Zaehlung lief ohnehin schon fuer die Zahl im Reiter. An der RECHNUNG bleibt er immer sichtbar. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 8 ++++++++ class/actions_mahnung.class.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0a12d1..305b199 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## [Unreleased] +### Reiter am Kunden nur noch, wenn es Mahnungen gibt +Der Reiter „Mahnwesen" stand auf **jeder** Kundenkarte, auch wenn dort nie gemahnt wurde. Die +Reiterleiste trägt dort 21 Einträge; auf Prod gibt es 4 Mahnungen bei 3 von 111 Kunden — bei 108 +Kunden zeigte der Reiter also nichts und kostete trotzdem Platz. `completeTabsHead` blendet ihn +am Kunden jetzt nur noch bei vorhandenen Mahnungen ein (die Zählung lief ohnehin schon, für die +Zahl im Reiter). **An der Rechnung bleibt er unverändert immer sichtbar** — dort wird gemahnt, +und dort ist „keine Mahnung" eine Aussage. + ### Zahlungserinnerung (Stufe 0) + frei konfigurierbare Mahnstufen - **Vor der ersten echten Mahnung steht jetzt eine kostenlose Zahlungserinnerung.** Ob eine Stufe eine Erinnerung ist, entscheidet ausschließlich das neue Flag `llx_mahnung_stufe.ist_erinnerung` — **nicht** die Stufennummer. Eine Erinnerung kostet nichts: Mahngebühr, §288-Abs.-5-Pauschale und Verzugszinsen werden in `mahnungBaueVorgang()` hart auf 0 gesetzt, unabhängig davon, was in der Stufe konfiguriert ist. - **Keine feste Obergrenze bei Stufe 3 mehr.** Stufen sind frei konfigurierbar (Nummer 0–127, Lücken erlaubt). Einstieg ist die kleinste aktive Stufe (`minStufe()`), die Folgestufe liefert `naechsteStufeNach()` — Lücken werden übersprungen. Auch der Button „Als uneinbringlich klassifizieren" hängt nicht mehr an `stufe === 3`, sondern daran, dass **keine weitere aktive Stufe** mehr folgt. diff --git a/class/actions_mahnung.class.php b/class/actions_mahnung.class.php index 935eae2..b22442d 100644 --- a/class/actions_mahnung.class.php +++ b/class/actions_mahnung.class.php @@ -143,6 +143,14 @@ class ActionsMahnung } else { $count = $this->countMahnungen($db, 'fk_soc', (int) $object->id); $tabUrl = DOL_URL_ROOT.'/custom/mahnung/list.php?mainmenu=billing&leftmenu=mahnung&mode=archiv&search_socid='.((int) $object->id); + + // Am Kunden nur zeigen, wenn es wirklich Mahnungen gibt. Die Reiterleiste + // der Kundenkarte traegt 21 Eintraege; ein Reiter, der bei 108 von 111 + // Kunden leer ist, kostet dort Platz und Aufmerksamkeit, ohne je etwas zu + // zeigen. An der RECHNUNG bleibt er immer sichtbar — dort mahnt man. + if ($count < 1) { + return 0; + } } $head = &$parameters['head'];