84 lines
2.6 KiB
Markdown
84 lines
2.6 KiB
Markdown
# 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.
|