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

v0.4.6 2026-01-04 09:42 UTC

This package is auto-updated.

Last update: 2026-01-11 23:12:07 UTC


README

PHP Version License

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.

2. Xpdf

Erforderlich fĂĽr die PDF-Verarbeitung.

3. ImageMagick

FĂĽr die Konvertierung und Verarbeitung von Bilddateien.

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.

⚙️ 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

đź“„ 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!

GitHub Sponsors PayPal

👤 Autor

Daniel Jörg Schuppelius