Dolibarr Modul: Mahnwesen (3-stufig nach BGB §288)
Find a file
Eduard Wisch 1af917d818
All checks were successful
Deploy mahnung / deploy (push) Successful in 13s
Fix: f.statut → f.fk_statut — Spaltenname in neueren Dolibarr-Versionen geaendert [deploy]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 16:33:40 +02:00
.forgejo/workflows Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00
admin Fix: verifCsrf() entfernt — Funktion existiert nicht in Dolibarr, CSRF wird via newToken() gehandhabt [deploy] 2026-05-10 16:30:55 +02:00
ajax Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00
class Fix: f.statut → f.fk_statut — Spaltenname in neueren Dolibarr-Versionen geaendert [deploy] 2026-05-10 16:33:40 +02:00
core Fix: Modul-Numero auf 500038 korrigiert — Kollision mit Eplan (500037) behoben [deploy] 2026-05-10 16:26:13 +02:00
langs Archiv zeigt Kundennamen, Vorschlagsliste mit Skip-Diagnose [deploy] 2026-05-07 12:16:20 +02:00
sql Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00
card.php Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00
CHANGELOG.md Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00
list.php Archiv zeigt Kundennamen, Vorschlagsliste mit Skip-Diagnose [deploy] 2026-05-07 12:16:20 +02:00
README.md Initiales Release: Mahnung-Modul v0.1.0 [deploy] 2026-05-07 12:09:37 +02:00

Modul Mahnung — 3-stufiges Mahnwesen für Dolibarr

Mahnwesen-Modul für Dolibarr ERP: tägliche Vorschlagsliste überfälliger Rechnungen, 3-stufiger Workflow (Erinnerung → Mahnung → Letzte Mahnung), Mahngebühren + tagesgenaue Verzugszinsen nach BGB §288, PDF-Mahnschreiben (DIN 5008), E-Mail-Versand, Sammelbrief, Trigger auf Zahlungseingang.

Status

Version 0.1.0 — Erstveröffentlichung, alle 10 Phasen der ROADMAP.md abgeschlossen.

Features

Feature Implementierung
Tägliche Vorschlagsliste überfälliger Rechnungen Cron MahnungCronBuildVorschlag (default deaktiviert)
Push-Benachrichtigung mit Anzahl je Stufe Ntfy + GlobalNotify
3 Stufen pflegbar (Frist, neue Frist, Gebühr B2C/B2B, Versandart, E-Mail-Template, PDF-Intro) admin/setup.php
B2C / B2B-Erkennung über llx_societe.tva_intra
Verzugszinsen tagesgenau, B2C: Basiszins +5 %, B2B: +9 %; Override pro Stufe möglich
§288 Abs. 5 Pauschale 40 € nur bei B2B, einmalig pro Rechnung
PDF-Mahnschreiben DIN 5008 Form A, im Doc-Ordner der Rechnung (erscheint im Dokumente-Tab)
Bulk-Erstellung + Sammelbrief (alle PDFs in einer Datei) TCPDI-basiert
E-Mail-Versand mit PDF-Anhang CMailFile, Subject/Body mit Platzhaltern
Auto-Erledigung bei Zahlungseingang Trigger BILL_PAYED + PAYMENT_CUSTOMER_CREATE
Tab "Mahnungen (n)" auf Rechnungs- + Kundenkarte Hook completeTabsHead

Voraussetzungen

  • Dolibarr ≥ 19
  • PHP ≥ 7.4
  • TCPDF (Dolibarr-Standard) für PDF
  • Optional: TCPDI (Dolibarr includes/tcpdf/tcpdi.php) für Sammelbrief-Konkatenation
  • Optional: GlobalNotify für In-App-Notification-Badges
  • Empfohlen: BankImport (automatischer Zahlungseingang via FinTS triggert die Mahnungs-Erledigung sauber)

Installation

git clone https://git.data-it-solution.de/data/mahnung.git \
  /pfad/zu/dolibarr/htdocs/custom/mahnung

Dann Startseite → Setup → Module → Finanzwesen → Mahnung aktivieren.

Bei Aktivierung werden llx_mahnung_mahnung und llx_mahnung_stufe angelegt; drei Default-Stufen werden idempotent eingefügt.

Nach Aktivierung in Setup → Mahnwesen Einstellungen den Basiszins prüfen und die Stufen-Texte (PDF-Intro, E-Mail-Body) anpassen.

Den Cron-Job MahnungCronBuildVorschlag aktivieren, sobald die Setup-Werte stimmen.

Rechte

Recht Standard Bedeutung
mahnung.read aktiv Mahnungen einsehen
mahnung.write inaktiv Mahnungen erstellen / bearbeiten
mahnung.send inaktiv Mahnungen versenden (E-Mail / Druck)
mahnung.delete inaktiv Mahnungen stornieren
mahnung.setup inaktiv Stufen, Basiszins, Versand konfigurieren

Modul-Konstanten

Name Default Bedeutung
MAHNUNG_BASISZINS 1.27 BGB-Basiszins (%) — halbjährlich pflegen (1.1./1.7.)
MAHNUNG_AUFSCHLAG_B2C 5.0 Verzugszins-Aufschlag B2C (BGB §288 Abs. 1)
MAHNUNG_AUFSCHLAG_B2B 9.0 Verzugszins-Aufschlag B2B (BGB §288 Abs. 2)
MAHNUNG_PAUSCHALE_B2B 40.00 Pauschale B2B (EUR, BGB §288 Abs. 5, einmalig)
MAHNUNG_NTFY_TOPIC vk-builds Ntfy-Topic für Vorschlags-Push
MAHNUNG_NTFY_URL https://notify.data-it-solution.de Ntfy-Endpoint
MAHNUNG_NTFY_AUTH leer Optional: Basic ... Authorization-Header

Workflow

Cron 06:00
   |
   |--> ueberfaellige Rechnungen einsammeln
   |--> Stufe ermitteln (Stufe 1 ab frist_tage Verzug,
   |                     Folgestufen nach neue_frist_tage seit Vor-Mahnung)
   |--> Ntfy-Push mit Anzahl je Stufe + Gesamt-EUR
   |--> GlobalNotify "actionRequired" (wenn Modul aktiv)
   |
   v
list.php (Vorschlagsliste)
   |
   |--> User waehlt aus + klickt "Mahnungen erzeugen"
   |    -> ajax/createmahnung.php berechnet Gebuehr + Verzugszinsen,
   |       persistiert llx_mahnung_mahnung, generiert PDF
   |
   |--> Alternativ "Sammelbrief erzeugen"
   |    -> ajax/sammelbrief.php generiert + konkateniert PDFs
   |
Zahlungseingang (BankImport / Manual)
   |
   v Trigger BILL_PAYED / PAYMENT_CUSTOMER_CREATE
   |--> alle offenen Mahnvorgaenge zur Rechnung -> status=erledigt

Dateibaum

mahnung/
├── core/modules/modMahnung.class.php           Descriptor, Rechte, Cron, Hooks
├── core/triggers/interface_99_modMahnung_MahnungTriggers.class.php
├── class/mahnung.class.php                     CRUD Mahnvorgang
├── class/mahnungstufe.class.php                CRUD Stufen-Konfig
├── class/mahnungvorschlag.class.php            Vorschlags-Service (Stufenermittlung)
├── class/mahnungcron.class.php                 Cron-Job
├── class/mahnungpdf.class.php                  PDF-Generator (DIN 5008)
├── class/mahnungntfy.class.php                 Ntfy-Wrapper
├── class/actions_mahnung.class.php             Hook-Klasse (invoicecard + thirdpartycard)
├── admin/setup.php                             Setup
├── ajax/createmahnung.php                      Bulk-Mahnung-Erzeugung
├── ajax/sammelbrief.php                        Sammelbrief-PDF-Konkatenation
├── ajax/sendmail.php                           E-Mail-Versand
├── list.php                                    Vorschlagsliste / Archiv
├── card.php                                    Detailansicht
├── sql/llx_mahnung_*.sql                       Schema + Seed
└── langs/{de_DE,en_US}/mahnung.lang

Lizenz

GPL-3.0