Search by

srhinow / project-manager-bundle

srhinow

a project-management-tool with invoice, credit, offer, reminder, agreements parts for Contao CMS >= 5.3

Package info

gitlab.com/srhinow/project-manager-bundle

Homepage

Issues

Type:contao-bundle

pkg:composer/srhinow/project-manager-bundle

Statistics

Installs: 414

Dependents: 0

Suggesters: 0

Stars: 0


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ängigkeitVersion
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_member mit 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.

Altbestand auf einmal 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 (Block style), Kopfdaten, Posten, Summen, Seitenzahl
  • iao_pdf_offer, iao_pdf_invoice (auch Stornorechnung), iao_pdf_credit, iao_pdf_reminder – Überschrift und Beschriftungen (Blöcke heading_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