Files
ImportAssist/docs/invoice-interface-v1.md

2.6 KiB
Raw Permalink Blame History

Rechnungsschnittstelle – Version 1

Diese Spezifikation beschreibt synthetische Rechnungsimporte für das Eigenprojekt ImportAssist.

CSV-001: Dateistruktur

Die Kopfzeile muss lauten: InvoiceId;CustomerId;Amount;Currency

Jede Datenzeile enthält genau vier durch Semikolon getrennte Felder. Anführungszeichen und Zeilenumbrüche innerhalb eines Feldes werden nicht unterstützt.

Bei einem Strukturfehler wird die gesamte Datei abgewiesen. Die fachliche Prüfung der Rechnungen beginnt dann nicht.

INV-001: Rechnungsnummer

InvoiceId muss vorhanden sein und darf nicht ausschließlich aus Leerzeichen oder anderen Whitespace-Zeichen bestehen.

Bei einem Fehler ist die Rechnungsnummer anhand des Ursprungsbelegs oder des Quellsystems zu ermitteln. Es darf keine Rechnungsnummer erfunden werden.

INV-002: Kundennummer

CustomerId muss vorhanden sein und darf nicht ausschließlich aus Whitespace-Zeichen bestehen.

Bei einem Fehler ist die Kundenzuordnung anhand des Ursprungsbelegs oder des Quellsystems zu prüfen. Der vorliegende Prüfbericht enthält keine Kundenstammdaten.

INV-003: Zahlenformat des Betrags

Amount wird zunächst als Text übernommen.

Die Prüfung verwendet decimal.TryParse mit InvariantCulture. Erlaubt sind ein führendes Vorzeichen und ein Dezimalpunkt. Tausendertrennzeichen und Exponentialschreibweise sind nicht erlaubt.

Beispiele:

  • 125.50 ist numerisch gültig.
  • abc ist keine gültige Zahl.
  • 125,50 entspricht nicht dem vereinbarten Zahlenformat.

Ein ungültiger Betrag muss anhand der Quelldaten geklärt werden. Eine automatische Umdeutung des Zahlenformats ist nicht vorgesehen.

INV-004: Positiver Betrag

Der numerisch gültige Betrag muss größer als null sein.

Null und negative Beträge werden zurückgewiesen. Gutschriften sind in dieser Version nicht abgebildet. Ein negativer Betrag darf nicht automatisch positiv gemacht werden.

INV-005: Währung

Currency wird übernommen, aber bislang nicht fachlich geprüft. Ein erfolgreiches Prüfergebnis bestätigt daher keine gültige Währung.

REP-001: Bedeutung des Prüfberichts

Completed bedeutet, dass die fachliche Prüfung abgeschlossen ist. Einzelne Rechnungen können dabei fehlerhaft sein.

Rejected bedeutet, dass die Dateistruktur abgewiesen wurde. Die Ursache steht in fileErrors; rows bleibt leer. Die Zähler geben dann keine Auskunft über die Gültigkeit der ursprünglichen Rechnungen.

LineNumber bezeichnet die ursprüngliche CSV-Zeile einschließlich der Kopfzeile.

Grenzen

Die Prüfung umfasst bislang keine Kontrolle auf Dubletten, existierende Kunden oder sachlich richtige Rechnungsbeträge. Es werden keine Rechnungen gebucht.