|
All checks were successful
Deploy mahnung / deploy (push) Successful in 13s
- ODT-Template-System: Pro Mahnstufe eigenes Template (mahnung_stufe1/2/3.odt), Fallback auf generisches Template; Basis-Klasse ModelePDFMahnung, pdf_standard_mahnung (TCPDF refactored), doc_generic_mahnung_odt (ODTPHP) - Widget box_mahnung_offen: Überfällige Rechnungen mit Mahnstufe-Badge (blau/orange/rot) - card.php: Dokumentenliste mit Lupe (PDF-Vorschau), Download, Modellauswahl - admin/templatevars.php: Referenzseite aller verfügbaren ODT-Variablen - admin/setup.php: Dokumentenmodell-Verwaltung, Upload-Bereich mit Benennungskonvention - mahnung.class.php: generateDocument() + socid-Alias für commonGenerateDocument() - modMahnung.class.php: models=1, MAHNUNG_ADDON_PDF/ODT_PATH-Konstanten, document_model-Registrierung in init(), Widget registriert - mahnungpdf.class.php entfernt, Logik in pdf_standard_mahnung.modules.php Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| admin | ||
| ajax | ||
| class | ||
| core | ||
| langs | ||
| sql | ||
| card.php | ||
| CHANGELOG.md | ||
| list.php | ||
| README.md | ||
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:
GlobalNotifyfü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