23 KiB
INHALTSVERZEICHNIS
Generelles
Was ist e-Bill
E-Bill ist ein System, was von SIX Payment AG und PostFinance AG gemeinsam
betrieben wird. Alle wichtigen Banken (über 80 Banken, Stand 2015) und alle
Postkonti (rote Einzahlungsscheine) sind hier angeschlossen. Genauere
Informationen bei https://ebill.ch oder auch
https://www.postfinance.ch/de/privat/produkte/digital-banking/ebill.html
Aus Sicht des Verbrauchers (Endkunde/Käufer/Zahler/Payer) treffen die e-Rechnungen genau im Zahlungs-Bereich des e-Banking-Systems ein. Eintreffende e-Rechnungen werden von e-Banking-System dem Verbraucher angezeigt. Mit einem Klick zu der Übersicht der e-Rechnungen und einem zweiten Klick für die Zahlungs-Terminbestätigung wird die Rechnung zur Zahlung freigegeben. Dem Verbraucher werden alle Zahlungs- und Empfängeridentifizierende Informationen, die beim Abschreiben des Einzahlungsscheins abverlangt werden würden, abgenommen.
Partner
Übersicht
Die Pfeile blauen zeigen die Dokumenten-Fluss-Richtung der Rechnung, die grünen Pfeile die Quittungen und die gestrichelten grünen Pfeile zeigen den (Be-)Zahlungsfluss.
Auftrag
Ausgangslage
Sie sind Informatiker bei einem Detaillisten in der Schweiz, der sowohl Präsenzgeschäft/-läden mit Kassen wie auch einen Onlinehandel betreibt. Als Neuerung will Ihr Arbeit-/Auftraggeber für die Endkunden (Verbraucher/Consumer) die Rechnungsstellung und Bezahlung über e-Bill anbieten. Die Endkunden können Ihre Waren gleich mitnehmen und bekommen im Nachhinein eine Rechnung und in ihrem E-Banking-System eine Zahlungsaufforderung, um per Mausklick die Zahlung auszulösen.
Ihre Aufgabe
Sie bekommen auf dem System des Rechnungsstellers in einem eigenen Format direkt von den Kassensystemen Rechnungsdateien mit allen Informationen, die es für die Rechnungsstellung über e-Bill braucht. Sie holen diese per FTP ab und erstellen daraus
-
eine Rechnung im Klartext (Zur Vereinfachung nur als Text-Format, produktiv wäre das ein PDF)
-
eine Rechnung im XML-Format für das SIX-PaymentServices-Format (Schweizer Marktleader)
Diese beiden Dateien geben Sie per FTP in das «Zahlungssystem» ab. Dann erfolgt, für Sie im Hintergrund die Weiterleitung ins Bankensystem. Ob das geklappt hat, wissen Sie in dem das Zahlungssystem eine Quittungsdatei produziert und Ihnen zur Verfügung stellt.
Ihrem Kunden (dem Rechnungssteller) stellen Sie diese Quittungsdatei sowohl per E-Mail wie auch im Rechnungsstellungs-System in einem Archiv zur Verfügung damit er überprüfen kann, ob die Rechnung verschickt wurde.
https://haraldmueller.ch/schoolerinvoices/out (Passwort auf html-Seite: tbz)
https://haraldmueller.ch/schoolerinvoices/in
https://coinditorei.com/zahlungssystem (Passwort: tbz)
https://coinditorei.com/zahlungssystem/in
https://coinditorei.com/zahlungssystem/out
Arbeitsschritte
-
Automatisches (regelmässiges) Abholen der Rechnungsaufträge des Kunden/Rechnungssteller (Abholserver) inkl. dem Löschen der Datei auf dem Abholserver per FTP (Kundensystem**/out/**[KlasseUndIhrNachname])
FTP-Server: ftp.haraldmueller.ch
Benutzer: schoolerinvoices
Passwort: Berufsschule8005! -
Verarbeitung der Rechnungsaufträge zu einer korrekten und druckbaren Papierrechnung (…invoice.txt) und einer maschinell verarbeitbaren XML-Rechnung (…invoice.xml)
-
Abgabe der Rechnung als TXT und XML auf dem Abgabeserver (Zahlungssystem**/in/**[KlasseUndIhrNachname]) per FTP
FTP-Server: ftp.coinitorei.com
Benutzer: zahlungssystem
Passwort: Berufsschule8005! -
Abholen der Quittung beim Abgabeserver (Zahlungssystem**/out/**[KlasseUndIhrNachname]) per FTP
-
Erstellung der Bestätigungsmeldungen (Quittung und geschickte Rechnung) per Mail und als Archiv-Datei (ZIP) auf dem Kundenserver (Kundensystem**/in/**[KlasseUndIhrNachname]).
Alle Arbeitsschritte laufen über ein Skript, das über eine Zeitsteuerung (‘crontab’ im Linux / ‘Aufgabenplaner’ im Windows).
Machen Sie für die Schritte 1.) 2.) 3.) ein Skript und ein zweites Skript für die Schritte 4.) und 5.).
Artefakte
Artefakt der ‘Anlieferung’
Zur Anlieferung sind primär Text-Dateien vorgesehen, die ein Inhalt im csv-Format ({semi}colon separated values ‘;’) haben. Es wird pro Rechnung eine Datei angeliefert.
Sie können einen Dateinamen mit dem Namen ‘rechnung[RGNummer].data’ erwarten. (Konkret ‘rechnung21003.data’).
Artefakte der ‘Abgabe’
An den Zahlungs-Provider des Schweizer Zahlungsverkehrs (PostFinance / SIX Payment Services) muss pro Rechnung eine menschenleserliche TXT und eine schnittstellenkonforme XML-Datei abgegeben werden.
Die Dateien müssen einen bestimmten Namen haben.
-
[Kundennummer]_[Rechnungsnummer]_invoice.xml (Konkret ‘K821_21003_invoice.xml’)
-
[Kundennummer]_[Rechnungsnummer]_invoice.txt (Konkret ‘K821_21003_invoice.txt’)
Testfiles können Sie finden unter: https://coinditorei.com/zahlungssystem/testfiles
Kontrollen
Bauen Sie Kontrollen ein, um festzustellen, ob «die» Rechnung richtig verarbeitet wurde, bzw. ob und wann und wie ein allfälliger Abbruch stattgefunden hat. Am einfachsten sind Log-Files.
Konfiguration
Gut ist, wenn das System ‘von aussen’ konfiguriert / eingestellt werden kann (separates Config-File).
Bewertung
Funktionalität
Die Bewertung geschieht über einen Live-Test mit von der Lehrperson erstellten Test-Dateien. Es gibt eine normale ‘richtiges’ Testdatei und eine Testdatei, die unmöglich zu verarbeiten ist. Dabei wird geschaut, ob das System korrekt läuft. Die korrekt Testdatei soll richtig verarbeitet werden. Die inkorrekte Testdatei darf nicht verarbeitet werden. Dies müssen Sie nachvollziehen können.
Dokumentation
Kurze textliche Dokumentation, eine Skizze über Ihr Skript-System und den Ablauf als UML-Ablaufdiagramm / Funktionendiagramm.
Benotung
Note 4:
Viele Teile der Vorgabe wurden erreicht, aber es fehlt noch etwas damit alles
automatisch funktioniert.
Note 5:
Das System funktioniert aus Sicht des Kunden, wenn alles richtig definiert war
(keine Fehler in der Rechnungsdatei oder wenn die Quittung nicht vom
Zahlungssystem bereitgestellt wurde).
Note 6:
Komplette Verarbeitung der Vorgaben inklusive Log-Dateien zur Rekonstruktion des
Ablaufes.
Alle Abläufe sind automatisiert und können per Konfigurationsdatei beeinflusst
werden (FTP-Server Einstellungen).
Es sind diverse Sicherheitsmechanismen eingebaut (Fehlermeldungen mit
aussagekräftigem und nützlichem Inhalt).
Anhang
Inhalt und Beschreibung eines Rechnungsauftrags (Input)
Dateiname | rechnung21003.data |
---|---|
Inhalt | Rechnung_21003;Auftrag_A003;Zürich;21.07.2021;10:22:54;ZahlungszielInTagen_30 Herkunft;41010000001234567;K821;Adam Adler;Bahnhofstrasse 1;8000 Zuerich;CHE-111.222.333 MWST;harald.mueller@tbz.ch Endkunde;41301000000012497;Autoleasing AG;Gewerbestrasse 100;5000 Aarau RechnPos;1;Einrichten E-Mailclients;5;25.00;125.00;MWST_0.00% RechnPos;2;Konfig & Schulung Scanningcnter;1;1000.00;1000.00;MWST_0.00% |
Zeile 1: (Rechnungs-Grundinformationen)
Rechnung_21003;Auftrag_A003;Zürich;21.03.2021;10:22:54;ZahlungszielInTagen_30
- Zeilenkennung ("Rechnung" inkl. Rechnungsnummer);
- Auftragsnummer ("Auftrag" inkl. Nummer);
- Absendeort (Erzeugung);
- Rechnungsdatum(Erzeugung);
- Rechnungszeit(Erzeugung);
- Zahlungsziel (hier 30 Tage) -> also ist zu berechnen 21.3.2021 plus 30 Tage =
20.4.2021
Zeile 2: (Herkunft/Absender der Rechnung)
Herkunft;41010000001234567;K821;Adam;Adam Adler;Bahnhofstrasse 1;8000 Zuerich;CHE-111.222.333 MWST;harald.mueller@tbz.ch
- Zeilenkennung ("Herkunft" =Absender, =Rechnungssteller, =Geldempfänger)
- Party-ID Rechnungssteller (=Kundennummer beim Zahlungssystem)
- Kundennummer beim Rechnungssteller (Herkunft)
- Name (Herkunft)
- Adresse (Herkunft)
- Postleitzahl und Ort (Herkunft)
- Firmen-/Unternehmens-ID inkl. Mehrwertsteuerkennung (Herkunft)
- Email-Adresse (Herkunft)
Zeile 3: (Endkunde/Adressat der Rechnung)
Endkunde;41301000000012497;Autoleasing AG;Gewerbestrasse 100;5000 Aarau
- Zeilenkennung ("Endkunde" =Empfänger der Rechnung, =Bezahler =hat Produkte bezogen)
- Kunden-ID beim Zahlungssystem-Provider
- Name (Empfänger)
- Adresse (Empfänger)
- Postleitzahl und Ort (Empfänger)
Zeile 4 und weitere Zeilen (Rechnungspositionen, mehrere: 1 bis n):
RechnPos;2;Konfig & Schulung Scanningcnter;1;1200.00;1200.00;MWST_0.00%
- Zeilenkennung ("RechnPos" =Eine Rechnungsposition)
- Rechnungspositionsnummer
- Rechnungspositionsbezeichnung
- Menge/Anzahl in der Einheit (Stück, Std, Liter, Meter, m2, usw.)
- Preis pro Einheit
- Menge mal Preis pro Einheit (fertig gerechnet)
- Mehrwertsteuer-Satz (zur Vereinfachung nur 0-%-tige Mehrwertsteuer)
Inhalt einer Rechnung (TXT-Output)
Dateiname | K821_21003_invoice.txt |
---|---|
Inhalt | Adam Adler Bahnhofstrasse 1 8000 Zuerich CHE-111.222.333 MWST Uster, den 21.07.2021 Autoleasing AG Gewerbestrasse 100 5000 Aarau Kundennummer: K821 Auftragsnummer: A003 Rechnung Nr 21003 ----------------------- 1 Einrichten E-Mailclients 5 25.00 CHF 125.00 0.00% 2 Konfig & Schulung Scanningcenter 1 1200.00 CHF 1200.00 0.00% ----------- Total CHF 1325.00 MWST CHF 0.00 Zahlungsziel ohne Abzug 30 Tage (20.08.2021) Einzahlungsschein 1325 . 00 1325 . 00 Autoleasing AG Gewerbestrasse 100 0 00000 00000 00000 5000 Aarau Autoleasing AG Gewerbestrasse 100 5000 Aarau |
(leere Linien und leere Zeichen sind wichtig und dienen der Positionierung)
Inhalt einer Rechnung (XML-Output)
Dateiname | K821_21003_invoice.xml |
---|---|
Inhalt | <XML-FSCM-INVOICE-2003A> <INTERCHANGE> <IC-SENDER> <Pid>41010000001234567</Pid> </IC-SENDER> <IC-RECEIVER> <Pid>41301000000012497</Pid> </IC-RECEIVER> <IR-Ref /> </INTERCHANGE> <INVOICE> <HEADER> <FUNCTION-FLAGS> <Confirmation-Flag /> <Canellation-Flag /> </FUNCTION-FLAGS> <MESSAGE-REFERENCE> <REFERENCE-DATE> <Reference-No>202107164522001</Reference-No> <Date>20210731</Date> </REFERENCE-DATE> </MESSAGE-REFERENCE> <PRINT-DATE> <Date>20210731</Date> </PRINT-DATE> <REFERENCE> <INVOICE-REFERENCE> <REFERENCE-DATE> <Reference-No>21003</Reference-No> <Date>20210731</Date> </REFERENCE-DATE> </INVOICE-REFERENCE> <ORDER> <REFERENCE-DATE> <Reference-No>A003</Reference-No> <Date>20210731</Date> </REFERENCE-DATE> </ORDER> <REMINDER Which="MAH"> <REFERENCE-DATE> <Reference-No></Reference-No> <Date></Date> </REFERENCE-DATE> </REMINDER> <OTHER-REFERENCE Type="ADE"> <REFERENCE-DATE> <Reference-No>202107164522001</Reference-No> <Date>20210731</Date> </REFERENCE-DATE> </OTHER-REFERENCE> </REFERENCE> <BILLER> <Tax-No>CHE-111.222.333 MWST</Tax-No> <Doc-Reference Type="ESR-ALT "></Doc-Reference> <PARTY-ID> <Pid>41010000001234567</Pid> </PARTY-ID> <NAME-ADDRESS Format="COM"> <NAME> <Line-35>Adam Adler</Line-35> <Line-35>Bahnhofstrasse 1</Line-35> <Line-35>8000 Zürich</Line-35> <Line-35></Line-35> <Line-35></Line-35> </NAME> <STREET> <Line-35></Line-35> <Line-35></Line-35> <Line-35></Line-35> </STREET> <City></City> <State></State> <Zip></Zip> <Country></Country> </NAME-ADDRESS> <BANK-INFO> <Acct-No></Acct-No> <Acct-Name></Acct-Name> <BankId Type="BCNr-nat" Country="CH">001996</BankId> </BANK-INFO> </BILLER> <PAYER> <PARTY-ID> <Pid>41301000000012497</Pid> </PARTY-ID> <NAME-ADDRESS Format="COM"> <NAME> <Line-35>Autoleasing AG</Line-35> <Line-35>Gewerbestrasse 100</Line-35> <Line-35>5000 Aarau</Line-35> <Line-35></Line-35> <Line-35></Line-35> </NAME> <STREET> <Line-35></Line-35> <Line-35></Line-35> <Line-35></Line-35> </STREET> <City></City> <State></State> <Zip></Zip> <Country></Country> </NAME-ADDRESS> </PAYER> </HEADER> <LINE-ITEM /> <SUMMARY> <INVOICE-AMOUNT> <Amount>0000135000</Amount> </INVOICE-AMOUNT> <VAT-AMOUNT> <Amount></Amount> </VAT-AMOUNT> <DEPOSIT-AMOUNT> <Amount></Amount> <REFERENCE-DATE> <Reference-No></Reference-No> <Date></Date> </REFERENCE-DATE> </DEPOSIT-AMOUNT> <EXTENDED-AMOUNT Type="79"> <Amount></Amount> </EXTENDED-AMOUNT> <TAX> <TAX-BASIS> <Amount></Amount> </TAX-BASIS> <Rate Categorie="S">0</Rate> <Amount></Amount> </TAX> <PAYMENT-TERMS> <BASIC Payment-Type="ESR" Terms-Type="1"> <TERMS> <Payment-Period Type="M" On-Or-After="1" Reference-Day="31">30</Payment-Period> <Date>20210830</Date> </TERMS> </BASIC> <DISCOUNT Terms-Type="22"> <Discount-Percentage>0.0</Discount-Percentage> <TERMS> <Payment-Period Type="M" On-Or-After="1" Reference-Day="31"></Payment-Period> <Date></Date> </TERMS> <Back-Pack-Container Encode="Base64"> </Back-Pack-Container> </DISCOUNT> </PAYMENT-TERMS> </SUMMARY> </INVOICE> </XML-FSCM-INVOICE-2003A> |
Inhalt & Form der Mail
-
Anstelle von Vorname Nachname machen Sie natürlich Ihr richtiger Name rein!
-
[Kundennummer]_[Rechnungsnummer].zip (Konkret ‘K821_21003.zip’ –> gleich wie invoice.txt)