- C# 72.4%
- HTML 24.6%
- CSS 1.4%
- PowerShell 1%
- JavaScript 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Vollstaendiger Live-Durchlauf auf einer FRISCHEN Installation: 54 Pruefpunkte, alle bestanden. 311 automatische Tests, warnungsfreier Bau. JEDES FORMAT, DAS EIN RECHNUNGSPROGRAMM AUSGIBT - Neu: RTF, Text-/Druckdateien und Tabellen (CSV/TSV, auch Tabulator/Pipe) zusaetzlich zu PDF, Word, Bild/Scan und fertigen E-Rechnungen. - Tabellen werden in beschrifteten Text umgeschrieben, den dieselbe Felderkennung liest wie eine gedruckte Rechnung - EINE Erkennungsstelle. - Live: dieselbe Rechnung als PDF, CSV, Druckdatei und RTF ergibt jeweils eine XRechnung mit 0 Fehlern und 0 Warnungen im amtlichen KoSIT-Pruefer. AMTLICHE PRUEFUNG OHNE HANDARBEIT - Ein Knopf richtet Pruefpaket UND Java-Laufzeit ein; Bezug beim Herausgeber mit Pruefsummenabgleich, Schutz gegen Pfadausbruch beim Auspacken. Ohne Oberflaeche: --pruefung-einrichten. - Live auf einer Installation OHNE jedes Java nachgewiesen. - Damit geht weiterhin kein fremder Code mit der Auslieferung mit: Der Betrieb laedt die Werkzeuge selbst und wird deren Lizenznehmer. KUNDE UND FIRMENDATEN - Pruefansicht kennt den Kunden (Name, Anschrift, E-Mail, USt-ID) samt Hinweis, dass ohne elektronische Adresse jede XRechnung abgewiesen wird. Haken "Kunden merken" legt ihn im Verzeichnis an. - "Meine Firma" sagt, welche Angabe fuer eine XRechnung noch fehlt. - Aussteller und Bankverbindung einer eigenen Rechnung kommen aus den Firmendaten, wenn sie nicht auf dem Beleg stehen. AUFBEWAHRUNG, SPEICHER, BETRIEB - Loeschen nach Fristablauf: eigene Seite, nie automatisch, nur mit Begruendung und Bestaetigung; Aufbewahrungsvermerk blockiert; protokolliert wird VOR dem Loeschen. WORM-Schutz wird dafuer gezielt aufgehoben. - Warnung bei vollem Speicher (ab 90 % belegt oder unter 1 GB frei). - Umzug des Bestands auf einen anderen Speicher, mit Fingerabdruckpruefung; eine bereits veraenderte Datei wird gemeldet statt mitgenommen. - Schnittstellen-Seite mit Waechter, der die Beschreibung gegen die tatsaechlichen Endpunkte prueft; dazu OpenAPI-Datei. - Installationsprogramm (MSI) mit Dienst, Firewallregel und Verknuepfungen. Die EXE laeuft weiterhin per Doppelklick ohne Installation. GEFUNDENE UND BEHOBENE FEHLER - HOCH, Geldfehler: Betraege ohne Tausenderpunkt wurden vorne abgeschnitten - aus "1500,00" wurde 500,00. Betraf Gesamt-, Netto- und Steuerbetrag. - HOCH: Fuer Text-, Tabellen- und RTF-Dateien wurde die Felderkennung gar nicht angestossen - die Datei lag im Archiv, die Rechnung blieb leer. - MITTEL: CSV-Export EINER Rechnung (2 Zeilen) galt nicht als Tabelle. - MITTEL: Steuersatz und Steuerbetrag standen getrennt; Positionen bekamen 0 %. - MITTEL: Kunde stand in Spalten statt als Anschriftenblock. - MITTEL: Ohne Bankverbindung fehlten die Zahlungsangaben (BR-DE-1). - NIEDRIG: Die Schnittstellen-Uebersicht war unvollstaendig - ihr eigener Waechter hat es beim ersten Lauf gemeldet. BEWUSST NICHT UMGESETZT (in docs/IMPLEMENTATION-STATUS.md begruendet) Peppol (braucht einen zertifizierten Zugangspunkt), PostgreSQL und lokale KI (beide braeuchten Fremdcode im Produkt), weitere Speicherarten wie S3/SFTP (ohne echtes Zielsystem nicht live pruefbar - ungepruefter Code gehoert nicht in eine Freigabefassung). |
||
| deploy | ||
| docs | ||
| installer | ||
| src | ||
| tests | ||
| .gitignore | ||
| Directory.Build.props | ||
| Directory.Packages.props | ||
| dotnet-tools.json | ||
| InvoiceBridge.slnx | ||
| Invoices.razor | ||
| LICENSE | ||
| README.md | ||
| THIRD-PARTY-NOTICES.md | ||
InvoiceBridge
Ein vollständig lokal betreibbares E-Rechnungs-Gateway: empfängt moderne elektronische Rechnungen (XRechnung, ZUGFeRD/Factur-X), archiviert die Originale bytegenau und unveränderlich, validiert und visualisiert sie – und stellt sie älteren Finanz-, ERP-, DMS- und Fachverfahren als PDF bereit. Der Rückweg funktioniert ebenso: Rechnungen aus dem Altsystem werden erfasst, geprüft, freigegeben und als XRechnung oder ZUGFeRD-Hybrid-PDF erzeugt.
Grundprinzipien
- Original bleibt Original. Jede eingegangene Datei bleibt exakt bytegleich erhalten – sie wird niemals verändert, überschrieben, normalisiert oder ersetzt. Konvertierungen sind immer neue, abgeleitete Dokumente.
- Erst verifiziert, dann archiviert. Eine Rechnung gilt erst als archiviert, wenn das Original auf dem Primärspeicher gespeichert, zurückgelesen und per SHA-256 verifiziert wurde. Bis dahin liegt sie sicher im lokalen, neustartfesten Spool.
- Nichts Ungültiges versenden. Erzeugte Ausgangsrechnungen werden vor Export und Versand zwingend validiert; aus unstrukturierten Quellen erfasste Daten brauchen immer eine menschliche Freigabe.
- Nachvollziehbar. Jeder Schritt landet im Audit-Trail – als SHA-256-Hash-Kette, die nachträgliche Veränderungen erkennbar macht.
Schnellstart
Voraussetzungen: .NET 10 SDK.
dotnet run --project src/InvoiceBridge.Web
Beim ersten Aufruf im Browser führt ein Einrichtungsassistent durch: Administrator anlegen → lokale Verzeichnisse prüfen → Originalarchiv (lokal, NAS oder UNC-Pfad) konfigurieren und testen → optional Exportordner für das Altsystem.
Danach: XRechnung hochladen (oder in einen Watchfolder legen) – InvoiceBridge archiviert, erkennt, parst, validiert, erzeugt HTML-/PDF-Darstellung und legt das PDF automatisch in den Exportordner des Altsystems.
Projektstruktur
src/
InvoiceBridge.Domain Rechnungsmodell, Statusmaschine, Audit-Kette, Geldrechnung
InvoiceBridge.Application Schnittstellen, sichere Pfade/XML, Optionen
InvoiceBridge.Formats Formaterkennung, UBL-/CII-Parser und -Writer, PDF-Einbettungsleser
InvoiceBridge.Validation Business-Plausibilitätsprüfung, KoSIT-Validator-Anbindung
InvoiceBridge.Rendering HTML-/PDF-Darstellung, ZUGFeRD-Hybriderzeugung
InvoiceBridge.Storage Dateisystem-Storage-Provider (lokal/UNC/NAS)
InvoiceBridge.Persistence EF Core, SQLite, Audit-Trail, Migrationen
InvoiceBridge.Transports Watchfolder, Legacy-Export
InvoiceBridge.Infrastructure Verarbeitungspipeline, Jobsystem, Hintergrunddienste
InvoiceBridge.Web Blazor-Weboberfläche, REST-API, Identity, Setup
InvoiceBridge.Worker optionaler eigenständiger Verarbeitungsdienst
tests/ Unit- und Integrationstests (inkl. kritischer Invarianten)
docs/ Architektur-, Betriebs- und Sicherheitsdokumentation
Wichtige Hinweise
- Die SQLite-Datenbank liegt lokal auf dem Server (Standard:
%ProgramData%\InvoiceBridgebzw./var/lib/invoicebridge) – niemals auf SMB/NFS. Dokumente dürfen selbstverständlich auf NAS/Netzwerkpfaden liegen. - Ohne installiertes KoSIT-Validator-Bundle führt InvoiceBridge nur eigene
Plausibilitätsprüfungen durch und behauptet keine offizielle XRechnung-Konformität
(Einrichtung: siehe
docs/FORMATS.md). - Erzeugte ZUGFeRD-Hybrid-PDFs werden ohne technische PDF/A-3-Prüfung nicht als „geprüftes PDF/A“ bezeichnet.
Details: docs/ARCHITECTURE.md · docs/STORAGE.md · docs/SECURITY.md · docs/FORMATS.md · docs/BACKUP-RESTORE.md · docs/DEPLOYMENT.md · docs/OPERATIONS.md · docs/IMPLEMENTATION-STATUS.md