daniel-jorg-schuppelius / datev-filedispatcher
Project description.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:app
pkg:composer/daniel-jorg-schuppelius/datev-filedispatcher
Requires
- php: >=8.2 <8.5
- daniel-jorg-schuppelius/datev-php-sdk: ^0.4.1
Requires (Dev)
- phpunit/phpunit: ^11.3@dev
README
Ein PHP-Tool zur automatischen Organisation und Sortierung von Mandantendateien aus dem DATEV Document Management System (DMS). Die Dateien werden basierend auf ihrer Zuordnung automatisch in die entsprechenden Mandantenverzeichnisse verschoben.
🚀 Features
- Automatische Dateisortierung: Dokumente werden automatisch in die passenden Mandantenordner einsortiert
- DATEV API Integration: Direkte Anbindung an die DATEV DMS API
- Pattern-basierte Verarbeitung: Flexible Service-Architektur mit Regex-Pattern-Matching
- PreProcessing: TIFF-Konvertierung, PDF-Verarbeitung, Multi-Page-Handling
- Nextcloud-Integration: Direkte Sortierung in Nextcloud-Verzeichnisse fĂĽr einfache Mandantenkommunikation
- Erweiterbar: Einfaches HinzufĂĽgen neuer File-Services durch dynamische Service-Discovery
đź“‹ Voraussetzungen
- PHP 8.2, 8.3 oder 8.4
- DATEV Account mit API-Zugang
- Composer
- Externe Tools (siehe Installation)
📦 Installation
Composer
composer require daniel-jorg-schuppelius/datev-filedispatcher
Klonen des Repositories
# Mit Submodulen klonen git clone --recurse-submodules https://github.com/Daniel-Jorg-Schuppelius/datev-filedispatcher.git # Oder falls bereits geklont, Submodule initialisieren git submodule update --init --recursive
Automatische Installation der Abhängigkeiten (Linux)
Auf Debian/Ubuntu können alle Abhängigkeiten automatisch installiert werden:
sudo apt install jq ./installscript/install-dependencies.sh
Das Skript scannt automatisch das vendor/-Verzeichnis und installiert alle erforderlichen Tools, die in *executables.json Konfigurationsdateien definiert sind.
Manuelle Installation der externen Tools
1. TIFF Tools
Erforderlich fĂĽr die Verarbeitung von TIFF-Dateien.
- Windows: GnuWin32 TIFF Tools
- Debian/Ubuntu:
apt install libtiff-tools
2. Xpdf
Erforderlich fĂĽr die PDF-Verarbeitung.
- Windows: Xpdf Download
- Debian/Ubuntu:
apt install xpdf
3. ImageMagick
FĂĽr die Konvertierung und Verarbeitung von Bilddateien.
- Windows: ImageMagick Installer
- Debian/Ubuntu:
apt install imagemagick-6.q16hdri
4. muPDF Tools
FĂĽr die Verarbeitung von PDF- und XPS-Dokumenten.
- Debian/Ubuntu:
apt install mupdf-tools
5. qpdf
FĂĽr PDF-Manipulation und -Reparatur.
- Windows: qpdf Releases
- Debian/Ubuntu:
apt install qpdf
⚙️ Konfiguration
Konfigurationsdatei erstellen
cp config/config.json.sample config/config.json
Konfigurationsoptionen
Die Konfiguration erfolgt ĂĽber config/config.json:
| Sektion | SchlĂĽssel | Beschreibung |
|---|---|---|
DatevAPI |
resourceurl |
URL zur DATEV API (Standard: https://127.0.0.1:58452) |
DatevAPI |
user |
Benutzername fĂĽr API-Authentifizierung |
DatevAPI |
password |
Passwort fĂĽr API-Authentifizierung |
DatevAPI |
verifySSL |
SSL-ZertifikatsprĂĽfung (true fĂĽr Produktion, false fĂĽr selbstsignierte Zertifikate) |
Path |
internalStore |
Pfad zum internen Speicher mit {tenant} Platzhalter fĂĽr Mandantenverzeichnisse |
Logging |
log |
Log-Ausgabeziel (Console, File, Null) |
Logging |
level |
Log-Level (emergency, alert, critical, error, warning, notice, info, debug) |
Logging |
path |
Pfad zur Log-Datei |
Debugging |
debug |
Debug-Modus aktivieren (true/false) |
SSL-Verifizierung
FĂĽr Entwicklungsumgebungen mit selbstsignierten Zertifikaten setzen Sie verifySSL auf false. In der Produktion sollte dies immer auf true gesetzt sein.
📚 Verwendung
Einzelne Datei verarbeiten
php src/DatevFileDispatcher.php "/pfad/zur/datei.pdf"
Als Linux-Service einrichten
sudo ln -s /pfad/zum/projekt/config/init.d/filedispatcher /etc/init.d/filedispatcher sudo update-rc.d filedispatcher defaults
🏗️ Projektstruktur
src/
├── DatevFileDispatcher.php # CLI Einstiegspunkt
├── Config/
│ └── Config.php # Konfigurationsmanagement (Singleton)
├── Contracts/
│ ├── Abstracts/ # Basis-Klassen
│ └── Interfaces/ # Interface-Definitionen
├── Factories/
│ ├── APIClientFactory.php # DATEV API Client Factory
│ ├── LoggerFactory.php # Logger Factory
│ └── StorageFactory.php # Storage Path Factory
├── Helper/
│ ├── FileDispatcher.php # Zentrale Orchestrierung
│ └── InternalStoreMapper.php # Mandanten-Verzeichnis-Mapping
├── PreProcessServices/ # Vorverarbeitung (TIFF, PDF, etc.)
│ ├── DuplicateNumberProcessFileService.php
│ ├── PDFNameProcessFileService.php
│ ├── PDFScannerCodeProcessFileService.php
│ ├── PDFTimeCodeProcessFileService.php
│ └── TiffPreProcessFileService.php
├── Services/ # Datei-Services (Pattern-basiert)
│ ├── DMSBasicFileService.php
│ └── Payroll/ # Lohnabrechnungs-Services
└── Traits/
├── FileServiceTrait.php
└── PeriodicFileServiceTrait.php
🔌 Service-Architektur
File Services
Services werden automatisch aus dem src/Services/ Verzeichnis geladen und verarbeiten Dateien basierend auf Regex-Patterns:
| Service | Pattern-Beispiel | Beschreibung |
|---|---|---|
DMSBasicFileService |
219628 - Dokument.pdf |
Standard DMS-Dateien |
| Payroll Services | Lohn*.pdf |
Lohnabrechnungs-Dokumente |
PreProcess Services
Vorverarbeitungs-Services aus src/PreProcessServices/:
| Service | Beschreibung |
|---|---|
TiffPreProcessFileService |
TIFF zu PDF Konvertierung |
PDFNameProcessFileService |
PDF-Namensextraktion |
PDFScannerCodeProcessFileService |
Scanner-Code Verarbeitung |
PDFTimeCodeProcessFileService |
Zeitcode-Verarbeitung |
DuplicateNumberProcessFileService |
Duplikat-Erkennung |
đź§Ş Tests
Test-Konfiguration
cp config/testconfig.json.sample config/testconfig.json
Tests ausfĂĽhren
composer test # oder vendor/bin/phpunit
📖 Abhängigkeiten
- datev-php-sdk (^0.4.1) - DATEV API SDK
đź“„ Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert.
đź’– UnterstĂĽtzung
Wenn Ihnen dieses Projekt gefällt und es Ihnen bei Ihrer Arbeit hilft, würde ich mich sehr über eine Spende freuen!
👤 Autor
Daniel Jörg Schuppelius
- Website: schuppelius.org
- E-Mail: info@schuppelius.org