srhinow / project-manager-bundle
a project-management-tool with invoice, credit, offer, reminder, agreements parts for Contao CMS >= 5.3
Package info
gitlab.com/srhinow/project-manager-bundle
Type:contao-bundle
pkg:composer/srhinow/project-manager-bundle
Requires
- php: ^8.2
- contao/core-bundle: ^5.3
- dompdf/dompdf: ^3.1
- menatwork/contao-multicolumnwizard-bundle: ^3.5
- setasign/fpdi: ^2.0
- setasign/fpdi-tcpdf: ^2.0
- smalot/pdfparser: ^2.12
- tecnickcom/tcpdf: ^6.2
Requires (Dev)
- contao/manager-plugin: ^2.0
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^10.5 || ^11.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v3.5.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.5.1
- v2.5.0
- v2.4.0
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.5.8
- v1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.1
- 1.5.0
- v1.4.0
- 1.3.1
- 1.2.32
- 1.2.31
- 1.2.30
- 1.2.29
- 1.2.28
- 1.2.27.1
- 1.2.27
- 1.2.26
- 1.2.25
- 1.2.24
- 1.2.23
- 1.2.22
- 1.2.21
- 1.2.20
- 1.2.19
- 1.2.18
- 1.2.17
- 1.2.16
- 1.2.15
- 1.2.14
- 1.2.13
- 1.2.12
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.0.31
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18.1
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2.0
- 1.0.1.4
- 1.0.1.3
- 1.0.1.1
- 1.0.1
- dev-feature/nc-email-versand
This package is auto-updated.
Last update: 2026-11-14 20:50:43 UTC
README
Projektmanagement-Erweiterung für Contao CMS – mit Angeboten, Rechnungen, Gutschriften, Verträgen, Erinnerungen und Projekten.
Autor: Sven Rhinow – sr-tag.de Lizenz: LGPL-3.0-or-later Repository: https://github.com/srhinow/project-manager-bundle
Anforderungen
| Abhängigkeit | Version |
|---|---|
| PHP | >= 8.2 |
| Contao CMS | >= 5.3 |
| contao/tcpdf-bundle | ^1.1 |
| menatwork/contao-multicolumnwizard-bundle | ^3.5 |
Installation
composer require srhinow/project-manager-bundle
Funktionen
Backend
- Angebote, Rechnungen, Gutschriften und Verträge können Projekten zugeordnet werden
- Neue Einträge werden direkt aus dem Projekt heraus aufgerufen und vorbefüllt
- Texte vor und nach den Posten als Vorlage speicherbar
- Mehrere Konfigurationen (Einstellungen) anlegbar – je Rechnung/Angebot/Gutschrift zuweisbar
- Währung, Steuersätze, Mengenangaben zentral unter einem Menüpunkt verwaltbar
- Teilzahlungen bei Rechnungen erfassbar – offener Betrag und Restbetrag werden angezeigt
- Rechnungen ohne Mehrwertsteuerausweis (z. B. für Auslandsrechnungen)
- Beträge addierbar oder subtrahierbar – z. B. für Rabatte in der Postenaufstellung
- Rückstände (Mahnungen) im eigenen Bereich, per Knopfdruck aktualisierbar
- Kunden-Adressverwaltung auf Basis von
tl_membermit eigenem Paletten-Layout - Adressdaten aus der Mitgliederverwaltung per Selectfeld in Rechnungen/Angebote übernehmbar
- Vor- und Abschlusstexte über Vorlagen-Selectfeld vorausfüllbar
- Posten-Felder über Vorlagen-Selectfeld vorausfüllbar
- Mengenangabe (Stück, Stunde, Tag …) per Selectfeld wählbar
- Automatische Berechnung von Netto / Brutto je nach Eingabe-Modus
- Postenvorlagen und Kundenauswahl als durchsuchbare Selectfelder (Select2)
- Rabatte über Vorlage und manuell anpassbar
- Benutzerrechte je Modul-Bereich einzeln steuerbar
- Festschreiben von Angeboten, Rechnungen, Gutschriften und Mahnungen (Schloss-Symbol in der Liste): Das PDF wird einmal erzeugt und unveränderlich abgelegt, danach liefert das PDF-Symbol immer genau diese Datei. Inhalte und Posten sind gesperrt, nur Zahlungsangaben, Bearbeitungsstand und Notiz bleiben änderbar. Korrekturen über Gutschrift bzw. Stornorechnung.
Ablage festgeschriebener Belege
Die PDFs liegen in files/iao-archiv/<Belegart>/<Jahr>/ (nicht öffentlich). In der Dateiverwaltung sind sie
sichtbar und lassen sich ansehen und herunterladen; hochladen, umbenennen, verschieben, bearbeiten und löschen sperrt
ArchiveFolderVoter – auch für Administratoren und auch für die übergeordneten Ordner. Der Ordner lässt sich in der
config/config.yaml umstellen (liegt er außerhalb von files/, erscheint er nicht in der Dateiverwaltung):
parameters:
srhinow_project_manager.archive_dir: '%kernel.project_dir%/%contao.upload_path%/iao-archiv'
Bestehende Ablage umziehen: Ordner verschieben, Parameter anpassen, Cache leeren und den Ordner in der Dateiverwaltung
anmelden (Dbafs::addResource('files/iao-archiv')). Die Pfade an den Belegen sind relativ zur Ablage und bleiben gleich.
Verschickte Originale übernehmen (Backend, Rechnungen → „Originale übernehmen“, nur Administratoren): Die PDFs, die
die Kunden bekommen haben (z. B. aus Paperless, Download „Originale“), in einen Ordner der Dateiverwaltung hochladen und
dort wählen. Der Probelauf liest die Belegnummer aus dem PDF (Titel, sonst Text, sonst Dateiname – Dateinamen wie
„Rechnung Juni 2019.pdf“ gehen also), prüft den Rechnungsbetrag und wählt bei mehreren Fassungen die zuletzt erzeugte
mit passendem Betrag. Von Paperless/OCRmyPDF umgewandelte Dateien werden nie übernommen. Mehrdeutige Fälle sind wählbar;
die Liste aller Dateien mit Ergebnis gibt es als CSV (Dubletten und ältere Fassungen zum Aufräumen in Paperless).
Übernommene Dateien liegen byte-gleich in der Ablage, Herkunft imported. Danach kann der Ordner gelöscht werden.
Einzelne Originale lassen sich direkt an der Rechnung bzw. Gutschrift hochladen (Operation „Original hochladen“, nur bei offenen Belegen): gleiche Prüfung, bei unsicherer Zuordnung mit Anzeige der gelesenen Nummern und Beträge und der Möglichkeit, die Datei bewusst trotzdem zu übernehmen. Welche Belege noch kein Original haben, zeigt der Dialog „Originale übernehmen“ unten (auch als CSV, mit Link zum Hochladen je Beleg).
Nicht für Altbelege: das Schloss „Festschreiben“ erzeugt das PDF mit der heutigen Vorlage und vermerkt es als beim Festschreiben erzeugt.
Altbestand auf der Konsole festschreiben (ohne --execute nur Probelauf):
# vorhandene Originale übernehmen (Belegnummer im Dateinamen, z. B. Rechnung-R-20170626-26.pdf)
vendor/bin/contao-console iao:finalize-all --from-dir=/pfad/zu/den/pdfs --execute
# übrige Altbelege mit heutiger Vorlage nachbilden und als Nachbildung kennzeichnen
vendor/bin/contao-console iao:finalize-all --source=recreated --execute
Der Ordner gehört in die Datensicherung (Aufbewahrungsfristen) und nicht ins Git (Kundendaten). Fehlt eine Datei oder stimmt ihre SHA-256-Prüfsumme nicht mehr mit der gespeicherten überein, liefert das Bundle nichts aus und meldet den Fehler.
PDF-Erzeugung
Klassisch werden die Werte an festen Positionen auf eine PDF-Vorlage je Belegart geschrieben. Mit der Einstellung „PDF-Erzeugung: HTML-Vorlage auf Briefbogen“ setzt dompdf die Belege aus Twig-Vorlagen und legt sie auf einen Briefbogen (PDF mit Logo, Absender, Fuß – Seite 1 für die erste, Seite 2 für alle weiteren Seiten):
iao_pdf_document– gemeinsames Aussehen (Blockstyle), Kopfdaten, Posten, Summen, Seitenzahliao_pdf_offer,iao_pdf_invoice(auch Stornorechnung),iao_pdf_credit,iao_pdf_reminder– Überschrift und Beschriftungen (Blöckeheading_text,number_label,execute_label,date_label,expiry_label)
Anpassen im Template Studio; die verfügbaren Variablen stehen im Kopf von iao_pdf_document.
Zahlungs-Schnittstelle
Die Buchhaltung (mesti) kann offene Rechnungen abfragen und Zahlungseingänge melden; Status und Restbetrag werden
dabei gesetzt. Abgeschaltet, bis IAO_API_TOKEN in der .env.local steht. Beschreibung:
docs/zahlungs-api.md, als OpenAPI 3.1: docs/zahlungs-api.openapi.yaml.
Frontend
- Projekt-Referenzen: Frontend-Modul zeigt alle Projekte mit gesetztem „In Referenzen aufnehmen"-Flag; eigenes Beschreibungs- und Bildfeld verfügbar
- Kunden-Bereich (Login-geschützt): Rechnungen, Angebote und Gutschriften als Liste mit Status (angenommen / nicht angenommen) und Download der jeweiligen PDF-Datei
Entwicklung
Tests ausführen
# Mit eigenem vendor-Verzeichnis:
./vendor/bin/phpunit
# Alternativ mit dem Autoloader eines installierten Contao-Projekts:
PMB_AUTOLOAD=/path/to/contao5/vendor/autoload.php phpunit
Die Testsuite prüft die reinen Berechnungs- und Service-Methoden (Iao, IaoBackend) ohne Contao-Bootstrap.
Code-Stil
./vendor/bin/php-cs-fixer fix
Icons
- dryicons.com
- fatcow.com/free-icons (CC 3.0)