**INHALTSVERZEICHNIS** [1. Generelles](#_Toc42613952) [2. Partner](#_Toc42613953) [3. Auftrag](#auftrag) [4. Artefakte](#_Toc42613955) [5. Bewertung](#bewertung) [6. Anhang](#anhang) # 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 oder auch 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 ![Ein Bild, das Outdoorobjekt enthält. Automatisch generierte Beschreibung](media/222e439a384ca8acd42e0d2087235ce8.png) 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 1. eine Rechnung im Klartext (Zur Vereinfachung nur als Text-Format, produktiv wäre das ein PDF) 2. 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. (Passwort auf html-Seite: tbz) ![Ein Bild, das Outdoorobjekt enthält. Automatisch generierte Beschreibung](media/222e439a384ca8acd42e0d2087235ce8.png) (Passwort: tbz) ## Arbeitsschritte 1. 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! 2. Verarbeitung der Rechnungsaufträge zu einer korrekten und druckbaren Papierrechnung (…invoice.txt) und einer maschinell verarbeitbaren XML-Rechnung (…invoice.xml) 3. Abgabe der Rechnung als TXT und XML auf dem Abgabeserver (Zahlungssystem**/in/**[KlasseUndIhrNachname]) per FTP FTP-Server: ftp.coinitorei.com Benutzer: zahlungssystem Passwort: Berufsschule8005! 4. Abholen der Quittung beim Abgabeserver (Zahlungssystem**/out/**[KlasseUndIhrNachname]) per FTP 5. 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. - [**Kunden**nummer]_[**Rechnung**snummer]_invoice.xml (Konkret ‘**K821_21003_invoice.xml**’) - [**Kunden**nummer]_[**Rechnung**snummer]_invoice.txt (Konkret ‘**K821_21003_invoice.txt**’) Testfiles können Sie finden unter: ## 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 | \ \ \ \**41010000001234567**\ \ \ \**41301000000012497**\ \ \ \ \ \ \ \ \ \ \ \ \**202107164522001**\ \**20210731**\ \ \ \ \**20210731**\ \ \ \ \ \**21003**\ \**20210731**\ \ \ \ \ \**A003**\ \**20210731**\ \ \ \ \ \\ \\ \ \ \ \ \**202107164522001**\ \**20210731**\ \ \ \ \ \**CHE-111.222.333 MWST**\ \\ \ \**41010000001234567**\ \ \ \ \**Adam Adler**\ \**Bahnhofstrasse 1**\ \**8000 Zürich**\ \\ \\ \ \ \\ \\ \\ \ \\ \\ \\ \\ \ \ \\ \\ \001996\ \ \ \ \ \**41301000000012497**\ \ \ \ \**Autoleasing AG**\ \**Gewerbestrasse 100**\ \**5000 Aarau**\ \\ \\ \ \ \\ \\ \\ \ \\ \\ \\ \\ \ \ \ \ \ \ \**0000135000**\ \ \ \\ \ \ \\ \ \\ \\ \ \ \ \\ \ \ \ \\ \ \0\ \\ \ \ \ \ \**30**\ \**20210830**\ \ \ \ \0.0\ \ \\ \\ \ \ \ \ \ \ \ \ | ## Inhalt & Form der Mail ![](media/410696c49377f26941058e6c1e54384a.png) ![](media/872c95ea436e1d275c57a7c912634701.png) - Anstelle von **Vorname** **Nachname** machen Sie natürlich Ihr richtiger Name rein! - [**Kunden**nummer]_[**Rechnung**snummer].zip (Konkret ‘**K821_21003.zip**’ –\> gleich wie invoice.txt)