This commit is contained in:
Harald G. Mueller 2023-02-13 21:53:28 +01:00
parent de39f38f91
commit 0c4d550ad1
111 changed files with 94 additions and 6560 deletions

View File

@ -1,9 +1,9 @@
# LB2 # M122
## ebill von Handwerkerrechnungen ## ebill von Handwerkerrechnungen
### Ausgangslage, Ihr "Use Case" ### Ausgangslage ("Use Case")
Sie arbeiten in einer Firma, die sich zum Ziel gesetzt hat, Sie arbeiten in einer Firma, die sich zum Ziel gesetzt hat,
für ihre Kunden und auch um neue Kunden zu gewinnen, die für ihre Kunden und auch um neue Kunden zu gewinnen, die
@ -13,7 +13,7 @@ den elektronischen Zahlungsweg anzubieten.
Der elektronische Zahlungsweg wird nicht über das Verschicken Der elektronische Zahlungsweg wird nicht über das Verschicken
einer PDF-Rechnung gemacht, wo der Kunde die Rechnung über das einer PDF-Rechnung gemacht, wo der Kunde die Rechnung über das
Eintippen der Zahlungsdaten im eBanking machen muss, sondern als Eintippen der Zahlungsdaten im eBanking machen muss, sondern als
[ebill](https://ebill.ch). Also als eine Rechnung, die dem Kunden [**ebill**](https://ebill.ch). Also als eine Rechnung, die dem Kunden
des Handwerkers direkt in sein eBanking hineingeschickt wird und des Handwerkers direkt in sein eBanking hineingeschickt wird und
von dort aus direkt mit zwei Klicks bezahlt werden kann. von dort aus direkt mit zwei Klicks bezahlt werden kann.
@ -21,8 +21,9 @@ von dort aus direkt mit zwei Klicks bezahlt werden kann.
![x-ressourcen/example-qr-bill-de.six-image.original.1020.png](x-ressourcen/example-qr-bill-de.six-image.original.1020.png) ![x-ressourcen/example-qr-bill-de.six-image.original.1020.png](x-ressourcen/example-qr-bill-de.six-image.original.1020.png)
<hr>
## Aufgabenstellung ### Aufgabenstellung
![ebill-uebersicht.jpg](x-ressourcen/ebill-uebersicht.jpg) ![ebill-uebersicht.jpg](x-ressourcen/ebill-uebersicht.jpg)
@ -50,33 +51,52 @@ korrekt verschickt wurde.
**Biller-System** **Biller-System**
Sie bekommen vom Biller-Sytem **eine oder mehrere** solche Sie bekommen vom Biller-Sytem **mehrere** solche
Dateien Dateien
Dateiname: rechnung21003.data Dateiname: rechnung23003.data
Rechnung_21003;Auftrag_A003;Zürich;21.07.2021;10:22:54;ZahlungszielInTagen_30 Rechnung_23003;Auftrag_A003;Zürich;21.07.2023;10:22:54;ZahlungszielInTagen_30
Herkunft;41010000001234567;K821;Adam Adler;Bahnhofstrasse 1;8000 Zuerich;CHE-111.222.333 MWST;harald.mueller@tbz.ch 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 Endkunde;41301000000012497;Autoleasing AG;Gewerbestrasse 100;5000 Aarau
RechnPos;1;Einrichten E-Mailclients;5;25.00;125.00;MWST_0.00% 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% RechnPos;2;Konfig & Schulung Scanningcenter;1;1000.00;1000.00;MWST_0.00%
Erstellen müssen Sie 2 Files: Sie müssen aus jeder Rechnungsdatei (.data) zwei Dateien erstellen
(ein TXT-File und ein XML-File) und diese müssen einen bestimmten Namen haben:
<br>**[Kundennummer]_[Rechnungsnummer]_invoice.xml** (also konkret K821_23003_invoice.xml)
<br>**[Kundennummer]_[Rechnungsnummer]_invoice.txt** (also konkret K821_23003_invoice.txt)
- ein TXT-File Die Dateinamen werden aus den **Inhalten** der .data-Datei gebildet (generiert):
- ein XML-File <br>(aus **Kundennummer** K821 und aus der **Rechnungsnummer** 23003)
Die Dateinamen werden aus den Daten der .data-Files gebildet: <br>Dateiname: K821_23003_invoice.txt
<br>(aus Kundennummer K821 und aus der Rechnungsnummer 21003) <br>Dateiname: K821_23003_invoice.xml
<br>Dateiname: K821_21003_invoice.txt
<br>Dateiname: K821_21003_invoice.xml
Inhalt von K821_21003_invoice.txt: ### Rechnung in menschenlesbaren Klartext
(auf den QR-Code im Einzahlungsschein-Bereich wird hier vwerzichtet)
Eine solche Datei wird den Endkundenen mitgeschickt, damit
überprüft werden kann, was zu bezahlen ist. Im eBanking-System
haben Endkunden die Möglichkeit, die Rechnung zurückzuweisen
und somit nicht zu bezahlen.
#### Vereinfachungen
- 1.) Normalerweise sind diese Rechnungen hier in PDF erstellt.
Damit es weniger Aufwand gibt, wird hier darauf verzichtet, aus
dem Text ein PDF zu erzeugen.
- 2.) Die Erzeugung des QR-Codes im Einzahlungsschein-Bereich
erfordert eine API-Funktion. Auch darauf wird verzichtet. Stattdessen
zeichnen wir den Rahmen mit Strich-Zeichen und schreiben das Wort
QR-CODE hinein.
**Inhalt von K821_23003_invoice.txt:**
------------------------------------------------- -------------------------------------------------
@ -91,17 +111,17 @@ Inhalt von K821_21003_invoice.txt:
Uster, den 21.07.2021 Autoleasing AG Uster, den 21.07.2023 Autoleasing AG
Gewerbestrasse 100 Gewerbestrasse 100
5000 Aarau 5000 Aarau
Kundennummer: K821 Kundennummer: K821
Auftragsnummer: A003 Auftragsnummer: A003
Rechnung Nr 21003 Rechnung Nr 23003
----------------------- -----------------------
1 Einrichten E-Mailclients 5 25.00 CHF 125.00 0.00% 1 Einrichten E-Mailclients 5 25.00 CHF 125.00
2 Konfig & Schulung Scanningcenter 1 1200.00 CHF 1200.00 0.00% 2 Konfig & Schulung Scanningcenter 1 1200.00 CHF 1200.00
----------- -----------
Total CHF 1325.00 Total CHF 1325.00
@ -114,13 +134,13 @@ Inhalt von K821_21003_invoice.txt:
Zahlungsziel ohne Abzug 30 Tage (20.08.2021) Zahlungsziel ohne Abzug 30 Tage (20.08.2023)
Empfangsschein Zahlteil Empfangsschein Zahlteil
Adam Adler ------------------------ Adam Adler Adam Adler ------------------------ Adam Adler
Bahnhofstrasse 1 | | Bahnhofstrasse 1 Bahnhofstrasse 1 | QR-CODE | Bahnhofstrasse 1
8000 Zuerich | | 8000 Zuerich 8000 Zuerich | | 8000 Zuerich
| | | |
| | | |
@ -134,10 +154,11 @@ Inhalt von K821_21003_invoice.txt:
-------------------- --------------------
<br> ### Rechnung im (maschinenlesbaren) XML-Format
<br>
<br> **Inhalt von K821_23003_invoice.xml:**
Inhalt von K821_21003_invoice.xml
-------------------------------------------------
<XML-FSCM-INVOICE-2003A> <XML-FSCM-INVOICE-2003A>
<INTERCHANGE> <INTERCHANGE>
@ -157,24 +178,24 @@ Inhalt von K821_21003_invoice.xml
</FUNCTION-FLAGS> </FUNCTION-FLAGS>
<MESSAGE-REFERENCE> <MESSAGE-REFERENCE>
<REFERENCE-DATE> <REFERENCE-DATE>
<Reference-No>202107164522001</Reference-No> <Reference-No>202307164522001</Reference-No>
<Date>20210731</Date> <Date>20230731</Date>
</REFERENCE-DATE> </REFERENCE-DATE>
</MESSAGE-REFERENCE> </MESSAGE-REFERENCE>
<PRINT-DATE> <PRINT-DATE>
<Date>20210731</Date> <Date>20230731</Date>
</PRINT-DATE> </PRINT-DATE>
<REFERENCE> <REFERENCE>
<INVOICE-REFERENCE> <INVOICE-REFERENCE>
<REFERENCE-DATE> <REFERENCE-DATE>
<Reference-No>21003</Reference-No> <Reference-No>23003</Reference-No>
<Date>20210731</Date> <Date>20230731</Date>
</REFERENCE-DATE> </REFERENCE-DATE>
</INVOICE-REFERENCE> </INVOICE-REFERENCE>
<ORDER> <ORDER>
<REFERENCE-DATE> <REFERENCE-DATE>
<Reference-No>A003</Reference-No> <Reference-No>A003</Reference-No>
<Date>20210731</Date> <Date>20230731</Date>
</REFERENCE-DATE> </REFERENCE-DATE>
</ORDER> </ORDER>
<REMINDER Which="MAH"> <REMINDER Which="MAH">
@ -185,8 +206,8 @@ Inhalt von K821_21003_invoice.xml
</REMINDER> </REMINDER>
<OTHER-REFERENCE Type="ADE"> <OTHER-REFERENCE Type="ADE">
<REFERENCE-DATE> <REFERENCE-DATE>
<Reference-No>202107164522001</Reference-No> <Reference-No>202307164522001</Reference-No>
<Date>20210731</Date> <Date>20230731</Date>
</REFERENCE-DATE> </REFERENCE-DATE>
</OTHER-REFERENCE> </OTHER-REFERENCE>
</REFERENCE> </REFERENCE>
@ -273,7 +294,7 @@ Inhalt von K821_21003_invoice.xml
<BASIC Payment-Type="ESR" Terms-Type="1"> <BASIC Payment-Type="ESR" Terms-Type="1">
<TERMS> <TERMS>
<Payment-Period Type="M" On-Or-After="1" Reference-Day="31">30</Payment-Period> <Payment-Period Type="M" On-Or-After="1" Reference-Day="31">30</Payment-Period>
<Date>20210830</Date> <Date>20230830</Date>
</TERMS> </TERMS>
</BASIC> </BASIC>
<DISCOUNT Terms-Type="22"> <DISCOUNT Terms-Type="22">
@ -289,14 +310,11 @@ Inhalt von K821_21003_invoice.xml
</INVOICE> </INVOICE>
</XML-FSCM-INVOICE-2003A> </XML-FSCM-INVOICE-2003A>
----------------- -------------------------------------------------
<br> <br>
<br>
<br> ### System-Zugänge
<br>
<br>
<br>
https://haraldmueller.ch/schueler (Passwort: tbz) https://haraldmueller.ch/schueler (Passwort: tbz)
@ -312,7 +330,7 @@ FTP-Zugang:
<br>https://haraldmueller.ch/schoolerinvoices/in <br>https://haraldmueller.ch/schoolerinvoices/in
![ebill-ueberischt-details.jpg](x-ressourcen/ebill-ueberischt-details.jpg) ![ebill-uebersicht-details.jpg](x-ressourcen/ebill-uebersicht-details.jpg)
https://coinditorei.com/zahlungssystem (Passwort: tbz) https://coinditorei.com/zahlungssystem (Passwort: tbz)
@ -320,13 +338,10 @@ https://coinditorei.com/zahlungssystem (Passwort: tbz)
<br>https://coinditorei.com/zahlungssystem/out <br>https://coinditorei.com/zahlungssystem/out
<br> <br>
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 **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. 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 Konfiguration
Gut ist, wenn das System von aussen konfiguriert / eingestellt werden kann (separates Config-File). Gut ist, wenn das System von aussen konfiguriert / eingestellt werden kann (separates Config-File).
@ -343,67 +358,74 @@ Die Bewertung geschieht über einen Live-Test mit von der Lehrperson erstellten
**Dokumentation** **Dokumentation**
Keine Doku notwendig, die Aufgabenstellung ist Doku genug. Es wird keine Doku verlangt und ist auch nicht notwendig, da die
Aufgabenstellung schon so detailliert ist. (In der Praxis werden Sie
niemals so genaue Vorgaben vorfinden, und dann wird vielleicht eine
Dokumentation verlangt werden.)
**Benotung** **Benotung**
Note 4: | Note | Bedeutung |
Viele Teile der Vorgabe wurden erreicht, aber es fehlt noch etwas damit alles automatisch funktioniert. |------| --------- |
| 6 | Komplette Verarbeitung der Vorgaben inklusive Log-Dateien
Note 5: zur Rekonstruktion des Ablaufes. Alle Abläufe sind automatisiert
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). und können per Konfigurationsdatei beeinflusst werden (FTP-Server
Einstellungen). Es sind diverse Sicherheitsmechanismen eingebaut
Note 6: (Fehlermeldungen mit aussagekräftigem und nützlichem Inhalt). |
Komplette Verarbeitung der Vorgaben inklusive Log-Dateien zur Rekonstruktion des Ablaufes. | 5 | Das System funktioniert aus Sicht des Kunden, wenn alles
Alle Abläufe sind automatisiert und können per Konfigurationsdatei beeinflusst werden (FTP-Server Einstellungen). richtig definiert war (keine Fehler in der Rechnungsdatei oder
Es sind diverse Sicherheitsmechanismen eingebaut (Fehlermeldungen mit aussagekräftigem und nützlichem Inhalt). wenn die Quittung nicht vom Zahlungssystem bereitgestellt wurde). |
| 4 | Viele Teile der Vorgabe wurden erreicht, aber es fehlt
noch etwas damit alles automatisch funktioniert. |
**Detailberechnung der Note** **Detailberechnung der Note**
- (2P) Filedownload (.data) via FTP (aus dem [Kundenserver]/out/XX21xMustermann) - [2P] Filedownload (.data) via FTP (aus dem [Kundenserver]/out/XX21xMustermann)
- [1] Ein Dateidownload funktioniert - [1] Ein Dateidownload funktioniert
- [1] es können auch mehrere Dateien "gleichzeitig" verarbeitet werden - [1] es können auch mehrere Dateien "gleichzeitig" verarbeitet werden
- (5P) Lesen der Input-Datei (.data) - [5P] Lesen der Input-Datei (.data)
- [3] Aufspalten der Informationen - [3] Aufspalten der Informationen
- [1] Erkennen falscher Informationen - [1] Erkennen falscher Informationen
- [1] Rückweisen falscher/inkorrekter Rechnung - [1] Rückweisen falscher/inkorrekter Rechnung
- (12P) Erstellung der _Invoice.txt - [12P] Erstellung der _Invoice.txt
- [1] Richtiger Filename (gem. definierter Vorgabe) - [1] Richtiger Filename (gem. definierter Vorgabe)
- [4] Korrekte Darstellung und Formatierung der Rechnung mit Einrückung und Kollonierung der Rechnungzeilen - [4] Korrekte Darstellung und Formatierung der Rechnung mit Einrückung und Kollonierung der Rechnungzeilen
- [3] Richtige Berechnung der End-Summe inkl. Darstellung (2-Nummen nach dem Dez-Punkt) - [3] Richtige Berechnung der End-Summe inkl. Darstellung (2-Nummen nach dem Dez-Punkt)
- [2] Einrücken und Darstellung des Einzahlungsschein-Abschnitts (Beträge haben Abstand beim Dezimalpunkt) - [2] Einrücken und Darstellung des Einzahlungsschein-Abschnitts (Beträge haben Abstand beim Dezimalpunkt)
- [2] Richtige Berechnung und Position des Zahlungsziel-Datum (Rechnungsdatum + Zahlungsziel), -> nicht Verarbeitungsdatum!! - [2] Richtige Berechnung und Position des Zahlungsziel-Datum (Rechnungsdatum + Zahlungsziel), -> nicht Verarbeitungsdatum!!
- (6P) Erstellung der _Invoice.xml - [6P] Erstellung der _Invoice.xml
- [1] Richtiger Filename (gem. definierter Vorgabe) - [1] Richtiger Filename (gem. definierter Vorgabe)
- [1] Rechnungsnummer eingesetzt - [1] Rechnungsnummer eingesetzt
- [2] Summe korrekt (ohne Punkt, mit führenden Nullen) - [2] Summe korrekt (ohne Punkt, mit führenden Nullen)
- [2] Zahlungsziel & Zahlungszieldatum (Korr. Datum und Formattierung YYYYmmdd) - [2] Zahlungsziel & Zahlungszieldatum (Korr. Datum und Formattierung YYYYmmdd)
- (2P) Fileupload (2 Files (.txt und .xml) pro Rechnung) - [2P] Fileupload (2 Files (.txt und .xml) pro Rechnung)
- [2] via FTP (auf den zweiten Server nach [Zahlungsserver]/in/XX21xMustermann) - [2] via FTP (auf den zweiten Server nach [Zahlungsserver]/in/XX21xMustermann)
- [-1] Abzug 1P dafür, falls die fehlerhafte Rechnung auch noch da steht - [-1] Abzug 1P dafür, falls die fehlerhafte Rechnung auch noch da steht
- (3P) Zip- oder tar-File Erstellung - [3P] Zip- oder tar-File Erstellung
- [2] Zip-/tar-File mit korrektem Inhalt und Dateinamen (2 Files) - [2] Zip-/tar-File mit korrektem Inhalt und Dateinamen (2 Files)
- [1] Fileupload via FTP (auf den [Kundenserver]/in/XX21xMustermann) - [1] Fileupload via FTP (auf den [Kundenserver]/in/XX21xMustermann)
- (5P) Mail - [5P] Mail
- [2] Mail-Versand (kommt an der richtigen Adresse "heute/jetzt" an (Mailadr im Input)) - [2] Mail-Versand (kommt an der richtigen Adresse "heute/jetzt" an (Mailadr im Input))
- [2] Mail-Text und Absender fehlerlos, den Anforderungen entsprechend - [2] Mail-Text und Absender fehlerlos, den Anforderungen entsprechend
- [1] Mail-Attachment (.zip/.tar) geschickt/vorhanden - [1] Mail-Attachment (.zip/.tar) geschickt/vorhanden
- (5P) Konfiguration und Projektdateiorganisation - [5P] Konfiguration und Projektdateiorganisation
- [2] "gute" Struktur der Projektdateien, Verarbeitungsdaten nicht bei den Verarbeitungs-Skript(s) - [2] "gute" Struktur der Projektdateien, Verarbeitungsdaten nicht bei den Verarbeitungs-Skript(s)
- [2] Log-File mit vernünftigen/aussagekräftigen Informationen, z.B. Erkennung von fehlerhafter Verarbeitung - [2] Log-File mit vernünftigen/aussagekräftigen Informationen, z.B. Erkennung von fehlerhafter Verarbeitung
- [1] separate Konfigurationsdatei - [1] separate Konfigurationsdatei
- (2P) Automatisierung - [2P] Automatisierung
- [2] Scheduler eingerichtet und funktioniert (Linux "crontab" oder Win "Aufgabenplaner") - [2] Scheduler eingerichtet und funktioniert (Linux "crontab" oder Win "Aufgabenplaner")
- (42P = Total)
<br>evtl. Bonus Kurzquartale I (Total = 37P) - [**42P** = **Total**)
<br>evtl. Bonus Kurzquartale II (Total = 34P) <br>eventueller Bonus für Total 37P
<br>eventueller Bonus für Total 34P

View File

@ -1,35 +0,0 @@

# Method to write an email with the logfile as attachement
#--------------------------------------------------------------------------------------------------
function sendmail() {
$toMail = "harald.mueller@bluewin.ch"
$attachment = "C:\Users\Harald\OneDrive\Technik\mails\data.pdf"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "invoice.autointerleasing@gmail.com"
# password of the mail account
$Password = "invoice77autointerleasing" | ConvertTo-SecureString -AsPlainText -Force
$subject = "Powi mail"
$body = "Logfile has been modified. Please review attached document $entry."
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($toMail)
$message.from = $username
$message.attachments.add($attachment)
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
}
## (Get-Credential).password | ConvertFrom-SecureString > mailpasswort.txt
## $pw = Get-Content .\mailpasswort.txt | ConvertTo-SecureString
## $cred = New-Object System.Management.Automation.PSCredential "MailUser", $pw
## Send-MailMessage -Credential $cred -to "harald.mueller@bluewin.ch" -from "PowerShell <ps@fabrikam.de>" -Subject "Test" -body "Test für Send-MailMessage"
sendmail

View File

@ -1,83 +0,0 @@
## (Get-Credential).password | ConvertFrom-SecureString > mailpasswort.txt
## $pw = Get-Content .\mailpasswort.txt | ConvertTo-SecureString
## $cred = New-Object System.Management.Automation.PSCredential "MailUser", $pw
## Send-MailMessage -Credential $cred -to "harald.mueller@bluewin.ch" -from "PowerShell <ps@fabrikam.de>" -Subject "Test" -body "Test für Send-MailMessage"
$body =
"IHRE RECHNUNG VON AUTO-INTERLEASING AG
VOTRE FACTURE D'AUTO-INTERLEASING SA
Sehr geehrte Damen und Herren
Madame, Monsieur,
Mit dieser Mail erhalten Sie die aktuelle Rechnung von Auto-Interleasing als PDF. Die Papierrechnung erhalten Sie wie gewohnt mit der Post.
Par ce présent courrier, nous vous transmettons la facture d'Auto-Interleasing en version PDF. La facture papier vous parviendra comme d'habitude par courrier postal.
Wir bitten Sie, den offenen Betrag unter Einhaltung der Zahlungsfrist an die auf dem beigefügten Einzahlungsschein vermerkten Kontonummer zu überweisen.
Nous vous prions de verser le montant conformément au délai de paiement mentionné sur le bulletin de versement joint.
Einzahlung für:
Versement pour:
Auto-Interleasing AG
St. Jakob-Strasse 72
4132 Muttenz
IBAN: CH21 0023 3233 1012 5122 0
Freundliche Grüsse,
Avec nos cordiales salutations,
Auto-Interleasing AG
St. Jakob-Strasse 72
4132 Muttenz
+41 61 319 32 32
info@auto-interleasing.ch
www.auto-interleasing.ch
Für die elektronische Rechnung sind Sie mit obiger E-Mail-Adresse bei uns registriert.
Pour l'envoi des factures par voie électronique, vous êtes inscrits avec l'adresse e-mail mentionnée ci-dessus
Allfällige Änderungen Ihrer E-Mail-Adresse teilen Sie bitte unverzüglich Ihrem Kundenbetreuer mit.
Pour toute modification de votre adresse e-mail, nous vous prions de contacter votre gestionnaire.
Bitte beachten Sie, dass Antworten auf diese E-Mail-Adresse leider nicht beantwortet werden können.
Im Falle von Rückfragen oder Unklarheiten wenden Sie sich bitte an Ihren zuständigen Kundenbetreuer.
Vielen Dank!
Veuillez prendre note qu'aucune correspondance ne peut être échangée par le biais de cette adresse e-mail.
Pour toutes questions ou informations, nous vous prions de contacter votre gestionnaire. Merci beaucoup !
"
$SMTPHost = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "invoice.autointerleasing@gmail.com"
$Password = "invoice77autointerleasing" | ConvertTo-SecureString -AsPlainText -Force
$subjectFixtext = "RECHNUNG/FACTURE"
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPHost, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$message = New-Object System.Net.Mail.MailMessage
$message.from = $username
$message.body = $body
# Method to write an email with the logfile as attachement
function sendmail ([String] $toMail, [String] $attachment, [String] $RgNr) {
# $toMail = "harald.mueller@bluewin.ch"
# $attachment = "C:\Users\Harald\OneDrive\Technik\mails\data.pdf"
$message.to.add("$toMail")
$message.attachments.add("$attachment")
$message.subject = $subjectFixtext + " Nr. " + $RgNr
echo $toMail
echo $attachment
# $smtp.send($message)
}
sendmail ("harald.mueller@bluewin.ch", "C:\Users\Harald\OneDrive\Technik\mails\data.pdf", "1")

View File

@ -1,43 +0,0 @@
### FTP
- [https://www.howtoforge.com/tutorial/how-to-use-ftp-on-the-linux-shell/](https://www.howtoforge.com/tutorial/how-to-use-ftp-on-the-linux-shell/)
**bash-Beispiel**
<br>
![../tools-technics/ftpanweisungen.jpg](../tools-technics/ftpanweisungen.jpg)
**cmd-Beispiel**
<br>
![../tools-technics/cmd-ftp-start.bat.jpg](../tools-technics/cmd-ftp-start.bat.jpg)
![../tools-technics/cmdcommands.ftp.jpg](../tools-technics/cmdcommands.ftp.jpg)
### E-Mail
- [https://www.linuxfordevices.com/tutorials/linux/mail-command-in-linux](https://www.linuxfordevices.com/tutorials/linux/mail-command-in-linux)
- [https://www.geeksforgeeks.org/send-mails-using-a-bash-script](https://www.geeksforgeeks.org/send-mails-using-a-bash-script)
**Mailing mit Python** (Dank an Hr. Noel L. Hug, AP21a)
import win32com.client as win32
<br>
![../tools-technics/mailing-mit-python.jpg](../tools-technics/mailing-mit-python.jpg)
**Mailing mit PowerShell**
[../tools-technics/mailing-mit-powershell](../tools-technics/mailing-mit-powershell)
<br>
![../tools-technics/mailing-mit-powershell.jpg](../tools-technics/mailing-mit-powershell.jpg)
**Mailing mit PHP** (nur auf Webserver!)
Diese Art funktioniert nur auf einem Webserver, auf dem ein Mailserver installiert ist, was bei allen teuren und billigen Internetprovidern normal ist. Wenn es auf dem lokalen Rechner funltionieren soll, muss zuerst ein Mailserver lokal installiert werden.
<br>
![../tools-technics/mailing-mit-phpwebserver.jpg](../tools-technics/mailing-mit-phpwebserver.jpg)

View File

@ -1,60 +0,0 @@
BEWERTUNGSKRITERIEN
(MUH, 2022-05)
M122-Übung "e-bill"
=====================
(2P)
- Filedownload (.data) via FTP (aus dem [Kundenserver]/out/XX21xMustermann)
- [1] Ein Dateidownload funktioniert
- [1] es können auch mehrere Dateien "gleichzeitig" verarbeitet werden
(5P)
- Lesen der Input-Datei (.data)
- [3] Aufspalten der Informationen
- [1] Erkennen falscher Informationen
- [1] Rückweisen falscher/inkorrekter Rechnung
(12P)
- Erstellung der _Invoice.txt
- [1] Richtiger Filename (gem. definierter Vorgabe)
- [4] Korrekte Darstellung und Formatierung der Rechnung mit Einrückung und Kollonierung der Rechnungzeilen
- [3] Richtige Berechnung der End-Summe inkl. Darstellung (2-Nummen nach dem Dez-Punkt)
- [2] Einrücken und Darstellung des Einzahlungsschein-Abschnitts (Beträge haben Abstand beim Dezimalpunkt)
- [2] Richtige Berechnung und Position des Zahlungsziel-Datum (Rechnungsdatum + Zahlungsziel), -> nicht Verarbeitungsdatum!!
(6P)
- Erstellung der _Invoice.xml
- [1] Richtiger Filename (gem. definierter Vorgabe)
- [1] Rechnungsnummer eingesetzt
- [2] Summe korrekt (ohne Punkt, mit führenden Nullen)
- [2] Zahlungsziel & Zahlungszieldatum (Korr. Datum und Formattierung YYYYmmdd)
(2P)
- Fileupload (2 Files (.txt und .xml) pro Rechnung)
- [2] via FTP (auf den zweiten Server nach [Zahlungsserver]/in/XX21xMustermann)
- [-1] Abzug 1P dafür falls die fehlerhafte Rechnung auch da steht
(3P)
- Zip- oder tar-File Erstellung
- [2] Zip-/tar-File mit korrektem Inhalt und Dateinamen (2 Files)
- [1] Fileupload via FTP (auf den [Kundenserver]/in/XX21xMustermann)
(5P)
- Mail
- [2] Mail-Versand (kommt an der richtigen Adresse "heute/jetzt" an (Mailadr im Input))
- [2] Mail-Text und Absender fehlerlos, den Anforderungen entsprechend
- [1] Mail-Attachment (.zip/.tar) geschickt/vorhanden
(5P)
- Konfiguration und Projektdateiorganisation
- [2] "gute" Struktur der Projektdateien, Verarbeitungsdaten nicht bei den Verarbeitungs-Skript(s)
- [2] Log-File mit vernünftigen/aussagekräftigen Informationen, z.B. Erkennung von fehlerhafter Verarbeitung
- [1] separate Konfigurationsdatei
(2P)
- Automatisierung
- [2] Scheduler eingerichtet und funktioniert (Linux "crontab" oder Win "Aufgabenplaner")
(42P = Total), Bonus Kurzquartale I (Total = 37P),
Bonus Kurzquartale II (Total = 34P)

View File

@ -1,58 +0,0 @@
NOTENTABELLE
max. 34.00 100% 6.00 6.0
33.50 99% 5.93 5.9
33.00 97% 5.85 5.9
32.50 96% 5.78 5.8
32.00 94% 5.71 5.7
31.50 93% 5.63 5.6
31.00 91% 5.56 5.6
30.50 90% 5.49 5.5
30.00 88% 5.41 5.4
29.50 87% 5.34 5.3
29.00 85% 5.26 5.3
28.50 84% 5.19 5.2
28.00 82% 5.12 5.1
27.50 81% 5.04 5.0
27.00 79% 4.97 5.0
26.50 78% 4.90 4.9
26.00 76% 4.82 4.8
25.50 75% 4.75 4.8
25.00 74% 4.68 4.7
24.50 72% 4.60 4.6
24.00 71% 4.53 4.5
23.50 69% 4.46 4.5
23.00 68% 4.38 4.4
22.50 66% 4.31 4.3
22.00 65% 4.24 4.2
21.50 63% 4.16 4.2
21.00 62% 4.09 4.1
20.50 60% 4.01 4.0
20.00 59% 3.94 3.9
19.50 57% 3.87 3.9
19.00 56% 3.79 3.8
18.50 54% 3.72 3.7
18.00 53% 3.65 3.6
17.50 51% 3.57 3.6
17.00 50% 3.50 3.5
16.50 49% 3.43 3.4
16.00 47% 3.35 3.4
15.50 46% 3.28 3.3
15.00 44% 3.21 3.2
14.50 43% 3.13 3.1
14.00 41% 3.06 3.1
13.50 40% 2.99 3.0
13.00 38% 2.91 2.9
12.50 37% 2.84 2.8
12.00 35% 2.76 2.8
11.50 34% 2.69 2.7
11.00 32% 2.62 2.6
10.50 31% 2.54 2.5
10.00 29% 2.47 2.5
9.50 28% 2.40 2.4
9.00 26% 2.32 2.3
8.50 25% 2.25 2.3
8.00 24% 2.18 2.2
7.50 22% 2.10 2.1
7.00 21% 2.03 2.0

View File

@ -1,71 +0,0 @@
NOTENTABELLE
max. 37.00 100% 6.00 6.0
36.50 99% 5.93 5.9
36.00 97% 5.86 5.9
35.50 96% 5.80 5.8
35.00 95% 5.73 5.7
34.50 93% 5.66 5.7
34.00 92% 5.59 5.6
33.50 91% 5.53 5.5
33.00 89% 5.46 5.5
32.50 88% 5.39 5.4
32.00 86% 5.32 5.3
31.50 85% 5.26 5.3
31.00 84% 5.19 5.2
30.50 82% 5.12 5.1
30.00 81% 5.05 5.1
29.50 80% 4.99 5.0
29.00 78% 4.92 4.9
28.50 77% 4.85 4.9
28.00 76% 4.78 4.8
27.50 74% 4.72 4.7
27.00 73% 4.65 4.6
26.50 72% 4.58 4.6
26.00 70% 4.51 4.5
25.50 69% 4.45 4.4
25.00 68% 4.38 4.4
24.50 66% 4.31 4.3
24.00 65% 4.24 4.2
23.50 64% 4.18 4.2
23.00 62% 4.11 4.1
22.50 61% 4.04 4.0
22.00 59% 3.97 4.0
21.50 58% 3.91 3.9
21.00 57% 3.84 3.8
20.50 55% 3.77 3.8
20.00 54% 3.70 3.7
19.50 53% 3.64 3.6
19.00 51% 3.57 3.6
18.50 50% 3.50 3.5
18.00 49% 3.43 3.4
17.50 47% 3.36 3.4
17.00 46% 3.30 3.3
16.50 45% 3.23 3.2
16.00 43% 3.16 3.2
15.50 42% 3.09 3.1
15.00 41% 3.03 3.0
14.50 39% 2.96 3.0
14.00 38% 2.89 2.9
13.50 36% 2.82 2.8
13.00 35% 2.76 2.8
12.50 34% 2.69 2.7
12.00 32% 2.62 2.6
11.50 31% 2.55 2.6
11.00 30% 2.49 2.5
10.50 28% 2.42 2.4
10.00 27% 2.35 2.4
9.50 26% 2.28 2.3
9.00 24% 2.22 2.2
8.50 23% 2.15 2.1
8.00 22% 2.08 2.1
7.50 20% 2.01 2.0
7.00 19% 1.95 1.9
6.50 18% 1.88 1.9
6.00 16% 1.81 1.8
5.50 15% 1.74 1.7
5.00 14% 1.68 1.7
4.50 12% 1.61 1.6
4.00 11% 1.54 1.5
3.50 9% 1.47 1.5
3.00 8% 1.41 1.4

View File

@ -1,47 +0,0 @@
NOTENTABELLE
max. 42.00 100% 6.00 6.0
41.00 98% 5.88 5.9
40.00 95% 5.76 5.8
39.00 93% 5.64 5.6
38.00 90% 5.52 5.5
37.00 88% 5.40 5.4
36.00 86% 5.29 5.3
35.00 83% 5.17 5.2
34.00 81% 5.05 5.0
33.00 79% 4.93 4.9
32.00 76% 4.81 4.8
31.00 74% 4.69 4.7
30.00 71% 4.57 4.6
29.00 69% 4.45 4.5
28.00 67% 4.33 4.3
27.00 64% 4.21 4.2
26.00 62% 4.10 4.1
25.00 60% 3.98 4.0
24.00 57% 3.86 3.9
23.00 55% 3.74 3.7
22.00 52% 3.62 3.6
21.00 50% 3.50 3.5
20.00 48% 3.38 3.4
19.00 45% 3.26 3.3
18.00 43% 3.14 3.1
17.00 40% 3.02 3.0
16.00 38% 2.90 2.9
15.00 36% 2.79 2.8
14.00 33% 2.67 2.7
13.00 31% 2.55 2.5
12.00 29% 2.43 2.4
11.00 26% 2.31 2.3
10.00 24% 2.19 2.2
9.00 21% 2.07 2.1
8.00 19% 1.95 2.0
7.00 17% 1.83 1.8
6.00 14% 1.71 1.7
5.00 12% 1.60 1.6
4.00 10% 1.48 1.5
3.00 7% 1.36 1.4
2.00 5% 1.24 1.2
1.00 2% 1.12 1.1
0.00 0% 1.00 1.0

View File

@ -1,25 +0,0 @@
# Aufgabe "Lieferung ins Zahlungssystem"
**Files**
<https://haraldmueller.ch/schoolerinvoices/out> (Passwort auf html-Seite: tbz)
<br><https://haraldmueller.ch/schoolerinvoices/in> (Passwort: tbz)
FTP-Server: ftp.haraldmueller.ch
Benutzer: schoolerinvoices
Passwort: Berufsschule8005!
<br>
**Verarbeitung starten:**
<https://coinditorei.com/zahlungssystem> (Passwort: tbz)
**Files**
<https://coinditorei.com/zahlungssystem/in> (Passwort: tbz)
<br><https://coinditorei.com/zahlungssystem/out> (Passwort: tbz)
FTP-Server: ftp.coinditorei.com
Benutzer: zahlungssystem
Passwort: Berufsschule8005!

View File

@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header><From>IPEC</From><To>Coop Mineralöl AG</To><UseCase>GetProcessProtocol</UseCase><SessionID /><Version>1.1</Version><Status>0</Status></Header><Body><BillerID>41101000000240844</BillerID><DeliveryDate date="20150106"><NumberBills>1</NumberBills><OK_Signed>1</OK_Signed><OK_Result><Signed>1</Signed><Bill><TransactionID>729122x000005xEBPxCOOPx01022015x000093</TransactionID></Bill></OK_Result><NOK_Result><NotSigned>0</NotSigned></NOK_Result></DeliveryDate><RejectedBills><NumberBills>1</NumberBills><Bill><TransactionID>729122x000005xEBPxCOOPx01022015x000093</TransactionID><EBillAccountID>41100000077682784</EBillAccountID><ESRReference>911754000000012218285587591</ESRReference><TotalAmount>10.80</TotalAmount><ReasonCode>25</ReasonCode><ReasonText>eBill Rejected by Customer / Payer</ReasonText><Date>2015-02-27</Date></Bill></RejectedBills></Body></Envelope>

View File

@ -1,149 +0,0 @@
<XML-FSCM-INVOICE-2003A>
<INTERCHANGE>
<IC-SENDER>
<Pid>41010000001234567</Pid>
</IC-SENDER>
<IC-RECEIVER>
<Pid>41010106799303734</Pid>
</IC-RECEIVER>
<IR-Ref />
</INTERCHANGE>
<INVOICE>
<HEADER>
<FUNCTION-FLAGS>
<Confirmation-Flag />
<Canellation-Flag />
</FUNCTION-FLAGS>
<MESSAGE-REFERENCE>
<REFERENCE-DATE>
<Reference-No>eindeutige Rechnungsnummer</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</MESSAGE-REFERENCE>
<PRINT-DATE>
<Date>20200731</Date>
</PRINT-DATE>
<REFERENCE>
<INVOICE-REFERENCE>
<REFERENCE-DATE>
<Reference-No>eindeutigeRechnungsnummer</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</INVOICE-REFERENCE>
<ORDER>
<REFERENCE-DATE>
<Reference-No>eindeutigeNummer3</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</ORDER>
<REMINDER Which="MAH">
<REFERENCE-DATE>
<Reference-No>eindeutigeNummer4</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</REMINDER>
<OTHER-REFERENCE Type="ADE|CR|CT">
<REFERENCE-DATE>
<Reference-No>eindeutigeNummer4</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</OTHER-REFERENCE>
</REFERENCE>
<BILLER>
<Tax-No>CHE-111.222.333 MWST</Tax-No>
<Doc-Reference Type="ESR-NEU|ESR-ALT|IPI"></Doc-Reference>
<PARTY-ID>
<Pid>41010000001234567</Pid>
</PARTY-ID>
<NAME-ADDRESS Format="COM">
<NAME>
<Line-35></Line-35>
<Line-35></Line-35>
<Line-35></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|BCNr-int|Bic|Esr|Iban" Country="CH">001996</BankId>
</BANK-INFO>
</BILLER>
<PAYER>
<PARTY-ID>
<Pid>41010106799303734</Pid>
</PARTY-ID>
<NAME-ADDRESS Format="COM">
<NAME>
<Line-35>Vorname Nachname</Line-35>
<Line-35>Musterstrasse 12</Line-35>
<Line-35>3052 Zollikofen</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>0000021095</Amount>
</INVOICE-AMOUNT>
<VAT-AMOUNT>
<Amount></Amount>
</VAT-AMOUNT>
<DEPOSIT-AMOUNT>
<Amount></Amount>
<REFERENCE-DATE>
<Reference-No>eindeutigeNummer4</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</DEPOSIT-AMOUNT>
<EXTENDED-AMOUNT Type="79">
<Amount></Amount>
</EXTENDED-AMOUNT>
<TAX>
<TAX-BASIS>
<Amount></Amount>
</TAX-BASIS>
<Rate Categorie="S|E">0</Rate>
<Amount></Amount>
</TAX>
<PAYMENT-TERMS>
<BASIC Payment-Type="ESR|ESP|NPY" Terms-Type="1|5">
<TERMS>
<Payment-Period Type="CD|M" On-Or-After="1|3" Reference-Day="5|29">30</Payment-Period>
<Date>20130831</Date>
</TERMS>
</BASIC>
<DISCOUNT Terms-Type="22">
<Discount-Percentage>2.0</Discount-Percentage>
<TERMS>
<Payment-Period Type="CD|M" On-Or-After="1|3" Reference-Day="5|29">30</Payment-Period>
<Date>20130831</Date>
</TERMS>
<Back-Pack-Container Encode="Base64|Hex">xxyy</Back-Pack-Container>
</DISCOUNT>
</PAYMENT-TERMS>
</SUMMARY>
</INVOICE>
</XML-FSCM-INVOICE-2003A>

View File

@ -1,5 +0,0 @@
Rechnung_21003;Auftrag_A003;Zürich;21.03.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;6;25.00;150.00;MWST_0.00%
RechnPos;2;Konfig & Schulung Scanningcenter;1;1200.00;1200.00;MWST_0.00%

View File

@ -1,65 +0,0 @@
Adam Adler
Bahnhofstrasse 1
8000 Zuerich
CHE-111.222.333 MWST
Uster, den 31.07.2020 Autoleasing AG
Gewerbestrasse 100
5000 Aarau
Kundennummer: K821
Auftragsnummer: A003
Rechnung Nr 21003
-----------------------
1 Einrichten E-Mailclients 6 25.00 CHF 150.00 0.00%
2 Konfig & Schulung Scanningcenter 1 1200.00 CHF 1200.00 0.00%
-----------
Total CHF 1350.00
MWST CHF 0.00
Zahlungsziel ohne Abzug 30 Tage (30.08.2020)
Einzahlungsschein
1350 . 00 1350 . 00 Autoleasing AG
Gewerbestrasse 100
0 00000 00000 00000 5000 Aarau
Autoleasing AG
Gewerbestrasse 100
5000 Aarau

View File

@ -1,149 +0,0 @@
<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>202007164522001</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</MESSAGE-REFERENCE>
<PRINT-DATE>
<Date>20200731</Date>
</PRINT-DATE>
<REFERENCE>
<INVOICE-REFERENCE>
<REFERENCE-DATE>
<Reference-No>21003</Reference-No>
<Date>20200731</Date>
</REFERENCE-DATE>
</INVOICE-REFERENCE>
<ORDER>
<REFERENCE-DATE>
<Reference-No>A003</Reference-No>
<Date>20200731</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>12345678</Reference-No>
<Date>20200731</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>20200831</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>

View File

@ -1,3 +0,0 @@
20200109-103503 K123_54321_invoice.xml verarbeitet -- RechnungsNr:54321/Kundennummer:K123/TotalCHF:1350.00/
20200109-103503 K123_54321_invoice.txt verarbeitet -- FirmaX;HaraldMueller;Rainstrasse27;8610Uster;CHE-999.888.777MWST;Kundennummer:K123;RechnungNr54321;TotalCHF1350.00;ZahlungszielohneAbzug30Tage(20.02.2012)

View File

@ -1,35 +0,0 @@

# Method to write an email with the logfile as attachement
#--------------------------------------------------------------------------------------------------
function sendmail() {
$toMail = "harald.mueller@bluewin.ch"
$attachment = "C:\Users\Harald\OneDrive\Technik\mails\data.pdf"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "invoice.autointerleasing@gmail.com"
# password of the mail account
$Password = "invoice77autointerleasing" | ConvertTo-SecureString -AsPlainText -Force
$subject = "Powi mail"
$body = "Logfile has been modified. Please review attached document $entry."
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($toMail)
$message.from = $username
$message.attachments.add($attachment)
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
}
## (Get-Credential).password | ConvertFrom-SecureString > mailpasswort.txt
## $pw = Get-Content .\mailpasswort.txt | ConvertTo-SecureString
## $cred = New-Object System.Management.Automation.PSCredential "MailUser", $pw
## Send-MailMessage -Credential $cred -to "harald.mueller@bluewin.ch" -from "PowerShell <ps@fabrikam.de>" -Subject "Test" -body "Test für Send-MailMessage"
sendmail

View File

@ -1,83 +0,0 @@
## (Get-Credential).password | ConvertFrom-SecureString > mailpasswort.txt
## $pw = Get-Content .\mailpasswort.txt | ConvertTo-SecureString
## $cred = New-Object System.Management.Automation.PSCredential "MailUser", $pw
## Send-MailMessage -Credential $cred -to "harald.mueller@bluewin.ch" -from "PowerShell <ps@fabrikam.de>" -Subject "Test" -body "Test für Send-MailMessage"
$body =
"IHRE RECHNUNG VON AUTO-INTERLEASING AG
VOTRE FACTURE D'AUTO-INTERLEASING SA
Sehr geehrte Damen und Herren
Madame, Monsieur,
Mit dieser Mail erhalten Sie die aktuelle Rechnung von Auto-Interleasing als PDF. Die Papierrechnung erhalten Sie wie gewohnt mit der Post.
Par ce présent courrier, nous vous transmettons la facture d'Auto-Interleasing en version PDF. La facture papier vous parviendra comme d'habitude par courrier postal.
Wir bitten Sie, den offenen Betrag unter Einhaltung der Zahlungsfrist an die auf dem beigefügten Einzahlungsschein vermerkten Kontonummer zu überweisen.
Nous vous prions de verser le montant conformément au délai de paiement mentionné sur le bulletin de versement joint.
Einzahlung für:
Versement pour:
Auto-Interleasing AG
St. Jakob-Strasse 72
4132 Muttenz
IBAN: CH21 0023 3233 1012 5122 0
Freundliche Grüsse,
Avec nos cordiales salutations,
Auto-Interleasing AG
St. Jakob-Strasse 72
4132 Muttenz
+41 61 319 32 32
info@auto-interleasing.ch
www.auto-interleasing.ch
Für die elektronische Rechnung sind Sie mit obiger E-Mail-Adresse bei uns registriert.
Pour l'envoi des factures par voie électronique, vous êtes inscrits avec l'adresse e-mail mentionnée ci-dessus
Allfällige Änderungen Ihrer E-Mail-Adresse teilen Sie bitte unverzüglich Ihrem Kundenbetreuer mit.
Pour toute modification de votre adresse e-mail, nous vous prions de contacter votre gestionnaire.
Bitte beachten Sie, dass Antworten auf diese E-Mail-Adresse leider nicht beantwortet werden können.
Im Falle von Rückfragen oder Unklarheiten wenden Sie sich bitte an Ihren zuständigen Kundenbetreuer.
Vielen Dank!
Veuillez prendre note qu'aucune correspondance ne peut être échangée par le biais de cette adresse e-mail.
Pour toutes questions ou informations, nous vous prions de contacter votre gestionnaire. Merci beaucoup !
"
$SMTPHost = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "invoice.autointerleasing@gmail.com"
$Password = "invoice77autointerleasing" | ConvertTo-SecureString -AsPlainText -Force
$subjectFixtext = "RECHNUNG/FACTURE"
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPHost, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$message = New-Object System.Net.Mail.MailMessage
$message.from = $username
$message.body = $body
# Method to write an email with the logfile as attachement
function sendmail ([String] $toMail, [String] $attachment, [String] $RgNr) {
# $toMail = "harald.mueller@bluewin.ch"
# $attachment = "C:\Users\Harald\OneDrive\Technik\mails\data.pdf"
$message.to.add("$toMail")
$message.attachments.add("$attachment")
$message.subject = $subjectFixtext + " Nr. " + $RgNr
echo $toMail
echo $attachment
# $smtp.send($message)
}
sendmail ("harald.mueller@bluewin.ch", "C:\Users\Harald\OneDrive\Technik\mails\data.pdf", "1")

File diff suppressed because it is too large Load Diff

View File

@ -1,213 +0,0 @@
# M122 - Aufgabe
## Emailadressen und Brief erstellen
Files, Listen/Arrays, String-Operationen, Archive, Mailing, FTP, Print
<br>
<br>
**Warnung**:<br>
<mark>Unterschätzen Sie die Aufgabe nicht! Es kann gut sein, dass Sie weit
über *8 Stunden* Entwicklungs- und Testzeit aufwenden müssen (der Teufel
liegt im Detail). Grade das Mailen und der FTP-Transfer kann tückisch sein!
Es ist die grosse Menge an Kleinigkeiten, die Sie lösen und beherrschen müssen.
</mark>
<br>
<br>
### Ausgangslage
Sie sind in der internen Informatik der TBZ und Sie
bekommen für den bevorstehenden Schulanfang eine
[**Liste von Namen** (MOCK_DATA.csv)](MOCK_DATA.csv),
die alle eine neue Emailadressen bekommen sollen.
Zur **Emailadresse** soll auch ein **Initialpasswort**
generiert werden. Emailadressen und Passwörter
müssen "korrekte" Zeichen enthalten. Also keine
Klammern, Apostrophe, Akzente, Leerzeichen usw.
Aber Vorsicht: Die Inputdaten sind nicht rein, das
ist auch eine Ihrer Aufgaben, dieses Problem zu lösen.
### Stufe 1
Sie müssen, um das System zu füttern, eine
Liste aller Emailadressen und (dazugehörige,
automatisch generierte) Passwörter in einer
Datei namens <br>**YYYY-MM-DD_HH-SS_mailimports.csv**
erstellen lassen.
[GenerierteEmailadresse1];[GeneriertesPasswort1]
[GenerierteEmailadresse2];[GeneriertesPasswort2]
...
[GenerierteEmailadresse999];[GeneriertesPasswort999]
### Stufe 2
Alle Personen, die jetzt eine neue Emailadresse und Passwort bekommen,
sollen per Papierbrief benachrichtigt werden. Erstellen Sie pro neuer
Emailadresse folgende Datei <br>**YYYY-MM-DD_HH-SS_[GenerierteEmailadresse].brf**
<br><br>(Die Anschriftadresse passt in ein Fenster-Kuvert, die Distanz machen Sie mit Leerzeichen)
Technische Berufsschule Zürich
Ausstellungsstrasse 70
8005 Zürich
Zürich, den [DD.MM.YYYY]
[Vorname] [Nachname]
[Strasse] [StrNummer]
[Postleitzahl] [Ort]
Liebe:r [Vorname]
Es freut uns, Sie im neuen Schuljahr begrüssen zu dürfen.
Damit Sie am ersten Tag sich in unsere Systeme einloggen
können, erhalten Sie hier Ihre neue Emailadresse und Ihr
Initialpasswort, das Sie beim ersten Login wechseln müssen.
Emailadresse: [GenerierteEmailadresse]
Passwort: [GeneriertesPasswort]
Mit freundlichen Grüssen
[IhrVorname] [IhrNachname]
(TBZ-IT-Service)
admin.it@tbz.ch, Abt. IT: +41 44 446 96 60
### Stufe 3
Erstellen Sie eine Archiv-Datei von **allen Dateien**, also
von der Mai-/Passwortliste und auch aller Briefe. Der Dateiname soll so aussehen:
<br>**YYYY-MM-DD_HH-SS_newMails_[IhreKlasse_IhrNachname].tar** (oder .zip oder .rar je nach Technik)
### Stufe 4
Später wird diese obigen Prozesse vollautomatisch erstellt werden. Dafür erstellen
Sie ein Mail, damit Sie erstens wissen, wann die Generierung der Liste und die Briefe
fertig ist und zweitens, dass Sie Resultate in einem ersten Ausbau mal an sich selber
zu schicken. Später könnten Sie dann das Mail an die Zeilperson schicken (kann auch
die Lehrperson sein).
<br>Gestalten Sie das Mail mit folgendem Text und hängen Sie die Archiv-Datei als
"attachment" an.
Beachten Sie: Sie haben normalerweise kein Mailserver auf Ihrem Rechner (oder VM).
Sie müssen entweder einen solchen (zusätzlich) installieren oder Sie benutzen eine
"Wegwerf-Mailadresse" über einen Gratis-Provider (z.B. gmx.ch, gmail.com, ...). Ihre
TBZ-Mailadresse können Sie nicht nehmen, da das von der Security her unterbunden wird.
<br>
<br>[Mail mit PowerShell](../tools-technics/mailing-mit-powershell.jpg)
<br>[Mail mit Python](../tools-technics/mailing-mit-python.jpg)
Subject:
Neue TBZ-Mailadressen [NumberOfNewMails]
Body:
Lieber [wählen sie selber eine Anrede je nach Adressat]
Die Emailadressen-Generierung ist beendet.
Es wurden [NumberOfNewMails] erzeugt.
Bei Fragen kontaktiere bitte [IhreTBZ-Emailadresse]
Gruss [IhrVorname] [IhrNachname]
### Stufe 5
Die Archiv-Datei schicken Sie nun auf einen fremden Rechner mittels **FTP**. (Von der
sicheren Datenübertragung wie FTPs sehen wir hier mal ab damit Sie nicht zusätzlich
ausgebremst werden).
Benutzen Sie bitte folgende Zugangsdaten:
Browserzugang zum Testen oder Nachschauen:
[https://haraldmueller.ch/schueler](https://haraldmueller.ch/schueler) (Passwort: "tbz")
FTP-Zugangsdaten:
HOST: "ftp.haraldmueller.ch"
USER: "schueler"
PASS: "studentenpasswort"
PATH: "/M122-[IhreKlasse]" (z.B. /M122-AP22b)
### Stufe 6
Schicken Sie zwei bis drei der erstellten Briefe an Ihren Standard-Drucker.
(Tipp: Stellen Sie Ihren Standard-Drucker auf "Print to PDF" ein, damit Sie
besser testen können und zudem auch kein Papier verbrauchen müssen)
### Stufe 7
Finden Sie heraus, was man machen muss, wenn es in der Liste zwei Personen
hat, die den gleichen Vornamen und Nachnamen haben (solls ja geben).
Wie teilen Sie wem welche Emailadresse zu?
### Stufe 8
Sie binden Ihr Skript in den Scheduler (CronTab, Aufgabenplaner) ein. Die
Input-Daten bekommen Sie vom gleichen Ort wie in Stufe 5.
Sie müssen sie via FTP abholen.
### Abgabe-Bedingung
Der Abgabezeitraum gibt die Lehrperson bekannt und
ist etwa **30 Minuten** lang. In dieser Zeit muss
ihr System **über ein Start-Skript** laufen.
Eingriffe "von Hand" sind nicht erlaubt. <mark>Es zählt, was Ihr
System zum Abgabe- und Testzeitpunkt leistet</mark>. Für diesen
**Abschluss-Test** wird von Ihrer Lehrperson eine
**separates Test-Datei** in der gleichen Form bereitgestellt, die dann
korrekt verarbeitet werden soll.
## Bewertung
| Stufe | Beschreibung | Punkte |
|-------|--------------|--------|
| 1 | Datei mit Mailadr./Passw. liegt vor | 4 |
| 2 | Alle Briefe korrekt erstellt | 4 |
| 3 | Archiv-Datei erstellt | 1 |
| 4 | Korrektes Mail kommt samt Att. an | 4 |
| 5 | FTP-Transfer kommt korrekt an | 3 |
| 6 | Briefe liegen auf dem Drucker | 1 |
| 7 | Dublettenkontrolle | 2 |
| 8 | Vollautomatische Verarbeitung | 2 |
| Total | | **20** |
### Noten
| Note| Punkte |
|-----|-----------|
| 6.0 | über 19.0 |
| 5.5 | 17.0-19.0 |
| 5.0 | 15.0-16.5 |
| 4.5 | 13.0-14.5 |
| 4.0 | 11.0-12.5 |
| 3.5 | 9.0-10.5 |
| 1.0 |Nichtabgabe|

View File

@ -1,48 +0,0 @@
 # man kann auch eine Liste von Adresssaten angeben a@xy.com, b@xy.com
$to = "harald.mueller@bluewin.ch"
$cc = ""
$bcc = ""
$subject = "Email Subject"
$body = "Hallo "+$To.Split("@")[0]
$body += "`n"
$body += "`n`nSchön, dass das klappt mit dem Mail!"
$body += "`n"
$body += "`nMit freundlichen Grüssen"
$body += "`nHarald Müller"
$SMTPServer = "mta.tam.ch" # Mailserver der Berufsschulen des Kantons Zürich
$SMTPPort = "587" # SSL-Port ist 587, Normal-Port wäre 465, man müsste dann aber "$SMTP_objekt.EnableSSL = $false" setzen
# vorname.nachname@edu.tbz.ch
$Username = "harald.mueller@tbz.ch"
$Password = "" # Hier Passwort eingeben
$Message_Objekt = New-Object System.Net.Mail.MailMessage
$Message_Objekt.from = $username
$Message_Objekt.subject = $subject
$Message_Objekt.body = $body
$Message_Objekt.to.add($to)
if ($cc.Length -gt 5) { # falls ein cc angegeben wurde
$Message_Objekt.cc.add($cc)
}
if ($bcc.Length -gt 5) { # falls ein bcc angegeben wurde
$Message_Objekt.Bcc.add($bcc)
}
$Message_Objekt.Attachments.add("C:\Users\harald\OneDrive - TBZ\M122-AutomMitSkriptenPS\05_Konkrete_Aufgabenstellungen\auto-mailer\mailBeilage1.pdf")
# es würde auch folgendes gehen
#[array]$attachmentArr = @()
#$attachmentArr = "mailBeilage1.pdf", "mailBeilage2.pdf"
#foreach ($a in $attachmentArr) { # falls mehr als eine Datei angegeben wurde wird jedes addiert
# $Message_Objekt.Attachments.add($a)
#}
$SMTP_objekt = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$SMTP_objekt.EnableSSL = $true # $False setzen, wenn man den Normal-Port nimmt
$SMTP_objekt.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$SMTP_objekt.send($Message_Objekt)
write-host "Mail Sent"

View File

@ -1,78 +0,0 @@
# M122
## QR-Rechnungen
Die QR-Rechnung, die seit Juni 2020 in Umlauf ist,
hat am 1. Oktober 2022 die Schweizer Einzahlungsscheine
endgültig abgelöst.
[Zahlungsstandard in der Schweiz (SIX)](https://www.six-group.com/de/products-services/banking-services/payment-standardization/standards/qr-bill.html)
Für diese Aufgsbenstellung werden wir folgende Web-App verwenden
[**https://qr-rechnung.net**](https://qr-rechnung.net)
Schauen Sie sich hier bitte mal etwas um. Wir verwenden nachher den Use Case **Aus Tabelle generieren**. Sie müssen also nachher eine Tabelle aus Daten erzeugen lassen.
<br>
**Beispiel-Rechnung**
[<img src="https://www.einfach-zahlen.ch/content/dam/einfachzahlen/images/home/qr-rechnung-de.png" width="400"/>](https://www.einfach-zahlen.ch/content/dam/einfachzahlen/images/home/qr-rechnung-de.png)
<br>
## Aufgabenstellung
**Use Case**
Sie bekommen die Aufgabe, für Kleingewerbler und
Kleinhändler adirekt aus deren Kassensystem, solche
Standard-Rechnungen erstellen zu lassen. Die Kassen-
Systeme erzeugen Rohdaten, die Sie umformen und eine solche (Input-)Datei zu erstellen.
**Input**
Sie bekommen dafür eine Serie von solchen Dateien:
<br>[x-ressourcen/rechnung23003.data](x-ressourcen/rechnung23003.data)
<br>[x-ressourcen/rechnung23004.data](x-ressourcen/rechnung23004.data)
**Output**
Mit solchen Daten können Sie über einen Upload korrekte
schweizer Rechnungen, wie sie seit 2022 Standard
sind, erstellen.
- [https://qr-rechnung.net/#/table](https://qr-rechnung.net/#/table)
- siehe auch
<br>[x-ressourcen/beispiel-input-six.csv](x-ressourcen/beispiel-input-six.csv) (downloaded)
<br>[x-ressourcen/beispiel-input-six.xlsx](x-ressourcen/beispiel-input-six.xlsx) (selbst erzeugt)
<br>[x-ressourcen/QR-Rechnungen.xlsx](x-ressourcen/QR-Rechnungen.xlsx) (downloaded)
## Resultat / Abgabe
Für die Abgabe bekommen Sie von der Lehrperson drei neue .data-Dateien. Diesde sollen dann "in einem Zug/in einem Durchgang" zu einer Tabelle verarbeitet werden.
Vor den Augen der Lehrperson lassen Sie dann hier
[**https://qr-rechnung.net/#/table**](https://qr-rechnung.net/#/table)
eine Serie von QR-Rechnungen erstellen.
Bewertet wird dann der Download der QR-Rechnungen (wenns funktioniert). Je perfekter die heruntergeladenen
QR-Rechnungen aussehen, desto besser die Note.
## Bewertung / Benotung
| Note | Beschreibung |
|------|--------------|
| 6.0 | perfekt, Erwartungen übertroffen |
| 5.5 | Gut und Erwartungen übertroffen |
| 5.0 | "Gut", keine Nacharbeiten notwendig |
| 4.5 | einige Kleinigkeiten stimmen nicht, Nacharbeiten sind/wären notwendig |

View File

@ -1,9 +0,0 @@
Lang,IBAN,Cdtr_AdrTp,Cdtr_Name,Cdtr_StrtNmOrAdrLine1,Cdtr_BldgNbOrAdrLine2,Cdtr_PstCd,Cdtr_TwnNm,Cdtr_Ctry,Amt,Ccy,UltmtDbtr_AdrTp,UltmtDbtr_Name,UltmtDbtr_StrtNmOrAdrLine1,UltmtDbtr_BldgNbOrAdrLine2,UltmtDbtr_PstCd,UltmtDbtr_TwnNm,UltmtDbtr_Ctry,RefTp,Ref,Ustrd,StrdBkgInf,AltPmt1,AltPmt2,Anrede,Nummer
de,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,50.00,CHF,S,Sarah Beispiel,Musterstrasse,1,8000,Seldwyla,CH,NON,,Mitgliederbeitrag,,,,Sehr geehrte Frau Beispiel,1
de,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,50.00,CHF,K,Simon Muster,Musterstrasse 1,8000 Seldwyla,,,CH,NON,,Mitgliederbeitrag,,twint/light/02:0123456789abcdef0123456789abcdef#0123456789abcdef0123456789abcdef01234567#,rn/twint/a~AbCdEfGhIjKlMnOpQrStUv~s~AbCdEfGhIjKlMnOpQrStUv/rn,Lieber Simon,1
de,CH5800791123000889012,K,"Verein ""Zum Beispiel""",Musterstrasse 123,8000 Seldwyla,,,CH,100.00,CHF,S,Familie Exempel,Beispielstrasse,1,9490,Vaduz,LI,NON,,Mitgliederbeitrag,,,,Geschätzte Familie Exempel,2
de,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,200.00,EUR,S,Modell Stiftung,Postfach,,78462,Konstanz,DE,SCOR,RF18539007547034,Gönnerbeitrag,//S1/11/220101/40/0:30,,,Sehr geehrte Damen und Herren,3
fr,CH4431999123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,123.45,CHF,S,Prototype SA,Place de l'Exemple,2,25000,Besançon,FR,QRR,210000000003139471430009017,Gönnerbeitrag,,,,Cher donateur,5
it,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,,CHF,S,Modello Sagl,Via Esempio,3,20123,Milano,IT,NON,,Spende,,,,Caro donatore,8
en,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,0.50,EUR,S,Schema GmbH,Beispielstraße,5,6900,Bregenz,AT,NON,,Spende,,,,Sehr geehrter Spender,13
de,CH5800791123000889012,S,"Verein ""Zum Beispiel""",Musterstrasse,123,8000,Seldwyla,CH,,CHF,S,,,,,,,NON,,Spende,,,,,
1 Lang IBAN Cdtr_AdrTp Cdtr_Name Cdtr_StrtNmOrAdrLine1 Cdtr_BldgNbOrAdrLine2 Cdtr_PstCd Cdtr_TwnNm Cdtr_Ctry Amt Ccy UltmtDbtr_AdrTp UltmtDbtr_Name UltmtDbtr_StrtNmOrAdrLine1 UltmtDbtr_BldgNbOrAdrLine2 UltmtDbtr_PstCd UltmtDbtr_TwnNm UltmtDbtr_Ctry RefTp Ref Ustrd StrdBkgInf AltPmt1 AltPmt2 Anrede Nummer
2 de CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 50.00 CHF S Sarah Beispiel Musterstrasse 1 8000 Seldwyla CH NON Mitgliederbeitrag Sehr geehrte Frau Beispiel 1
3 de CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 50.00 CHF K Simon Muster Musterstrasse 1 8000 Seldwyla CH NON Mitgliederbeitrag twint/light/02:0123456789abcdef0123456789abcdef#0123456789abcdef0123456789abcdef01234567# rn/twint/a~AbCdEfGhIjKlMnOpQrStUv~s~AbCdEfGhIjKlMnOpQrStUv/rn Lieber Simon 1
4 de CH5800791123000889012 K Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 100.00 CHF S Familie Exempel Beispielstrasse 1 9490 Vaduz LI NON Mitgliederbeitrag Geschätzte Familie Exempel 2
5 de CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 200.00 EUR S Modell Stiftung Postfach 78462 Konstanz DE SCOR RF18539007547034 Gönnerbeitrag //S1/11/220101/40/0:30 Sehr geehrte Damen und Herren 3
6 fr CH4431999123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 123.45 CHF S Prototype SA Place de l'Exemple 2 25000 Besançon FR QRR 210000000003139471430009017 Gönnerbeitrag Cher donateur 5
7 it CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH CHF S Modello Sagl Via Esempio 3 20123 Milano IT NON Spende Caro donatore 8
8 en CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH 0.50 EUR S Schema GmbH Beispielstraße 5 6900 Bregenz AT NON Spende Sehr geehrter Spender 13
9 de CH5800791123000889012 S Verein "Zum Beispiel" Musterstrasse 123 8000 Seldwyla CH CHF S NON Spende

View File

@ -1,5 +0,0 @@
Rechnung_21003;Auftrag_A003;Zürich;21.03.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;6;25.00;150.00;MWST_0.00%
RechnPos;2;Konfig & Schulung Scanningcenter;1;1200.00;1200.00;MWST_0.00%

View File

@ -1,5 +0,0 @@
Rechnung_21004;Auftrag_A004;Zürich;21.03.2023;10:21:32;ZahlungszielInTagen_30
Herkunft;41010000001234567;K821;Berta Berisha;Bahnhofstrasse 23;8000 Zuerich;CHE-111.222.333 MWST;harald.mueller@tbz.ch
Endkunde;41301000000012497;Carlo Caprez;Carrosseriestrasse 2;7000 St. Gallen
RechnPos;1;Ganzkörpermassage;1;100.00;100.00;MWST_0.00%
RechnPos;2;Massageöl Ultra;1;20.00;20.00;MWST_0.00%

View File

@ -1,77 +0,0 @@
# M122 - Aufgabe
## Dateien und Verzeichnisse anlegen
Als Lehrer habe den Bedarf, für alle Lernenden einer Klasse
dieselben Dateien zur Verfügung zu stellen.
Es gibt mehrere Klassen. Jede Klasse bekommt ein Verzeichnis.
Alle Lernenden bekommen alle ein eigenes Verzeichniss in der
'eigenen' Klasse. Und in jedem Lernenden-Verzeichnis sollen
die gleichen Dateien zur Verfügung gestellt werden.
### Gesucht
Es soll nachher eine solche Struktur entstehen:
./M122-AP22b
Amherd
Datei-1.txt
Datei-2.docx
Datei-3.pdf
Baume-Schneider
Datei-1.txt
Datei-2.docx
Datei-3.pdf
Berset
Datei-1.txt
Datei-2.docx
Datei-3.pdf
usw.
### Vorbereitung
Ich bereite mich so vor, dass ich eine Liste mit allen Namen
aller Lernenden habe. Diese mache ich dann ein eine Datei. Diese
Datei bekommt den Namen (die Abkürzung) der Klasse.
./M122-AP22b.txt
Der Inhalt der M122-AP22b.txt Datei könnte so aussehen:
Amherd
Baume-Schneider
Berset
Cassis
Keller-Sutter
Parmelin
Roesti
### Mögliche Strategie für den Programmablauf
Versuchen Sie alles in **bash** nachzumachen.
Aber Achtung. Manche Dinge kann man oder muss
man in **bash** anders machen. Wenn Sie ganz
gefitzt sind, werden Sie auch noch eine
einfachere und schnellere Lösung finden.
**Beispiel-Lösung in PS**
Das automatisierte Skript muss jetzt den Dateinamen (vor dem Punkt)
auslesen um damit das Grundverzeichnis anzulegen. Dann muss das
Skript die Datei öffnen und alle Namenseinträge lesen. Die Namen
sind in einer Liste, die ich dann als "array" verwenden werde um
mit jedem (Namens-)Eintrag erstens ein Verzeichnis zu erstellen
und zweitens die Dateien aus dem Template dort hinein zu kopieren.
- [./loesung-in-powershell/einstieg-prepareFiles-01.ps1](./loesung-in-powershell/einstieg-prepareFiles-01.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-02.ps1](./loesung-in-powershell/einstieg-prepareFiles-02.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-03.ps1](./loesung-in-powershell/einstieg-prepareFiles-03.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-04.ps1](./loesung-in-powershell/einstieg-prepareFiles-04.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-05.ps1](./loesung-in-powershell/einstieg-prepareFiles-05.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-06.ps1](./loesung-in-powershell/einstieg-prepareFiles-06.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-07.ps1](./loesung-in-powershell/einstieg-prepareFiles-07.ps1)

View File

@ -1,24 +0,0 @@
Semester: FR23, Klasse: AP20b, Thema: 122
Achermann
Angst
Baars
Bauer
Baumann
Begzati
Blaauw
Bruehwiler
Faeh
Graf
Hajnik
Hatzikiriakos
Kastien
Kuhn
Mititelu
Obrist
Pfister
Preter
Qarri
Rascher
Tifner
Zeiter
Zimmermann

View File

@ -1,19 +0,0 @@
Semester: FR23, Klasse: AP22b, Thema: 122
Blattner
Boshtraj
Cecutti
Daniels
Erdinc
Haradini
Kohler
Kos
Meile
Meyer
Muggli
Mueller
Nguyen
Pfrender
Schäfli
Vennemann
Weibel
Bajra

View File

@ -1,19 +0,0 @@
Semester: FR23, Klasse: AP22d, Thema: 122
Andreatta
Benz
Blau
Chandler
Duersteler
Fanzun
Haueter
Kohl
Mohler
Morgenthaler
Odermatt
Pizzi
Seiler
Steinauer
Steiner
Sureskumar
Ugur
Weinrich

View File

@ -1,22 +0,0 @@
Semester: FR23, Klasse: PE22e, Thema: 122
Berisha
ElIsbihani
Ganesalingam
Gfeller
Greter
Horvath
Hosseini
Husy
Jauch
Maerki
Rasiti
Renggli
Riesselmann
Saljihu
Semiaji
Srimohan
Stocker
Vanev
Zollinger
Zoric
Zuppiger

View File

@ -1,23 +0,0 @@
Semester: FR23, Klasse: ST19d, Thema: 122
Ajdini
Brauchli
Castro
Dawit
Duriqi
ElJaouzy
Frei
Gantenbein
Imhasly
Istrefi
Jassim
Koch
Maegerle
Markovic
MartinsMiranda
Mena
Sattelmaier
Scheuss
Schneiter
Sherifi
Sugumaran
Zgraggen

View File

@ -1,24 +0,0 @@
Semester: FR23, Klasse: AP20b, Thema: 122
Achermann
Angst
Baars
Bauer
Baumann
Begzati
Blaauw
Bruehwiler
Faeh
Graf
Hajnik
Hatzikiriakos
Kastien
Kuhn
Mititelu
Obrist
Pfister
Preter
Qarri
Rascher
Tifner
Zeiter
Zimmermann

View File

@ -1,19 +0,0 @@
Semester: FR23, Klasse: AP22b, Thema: 122
Blattner
Boshtraj
Cecutti
Daniels
Erdinc
Haradini
Kohler
Kos
Meile
Meyer
Muggli
Mueller
Nguyen
Pfrender
Schäfli
Vennemann
Weibel
Bajra

View File

@ -1,19 +0,0 @@
Semester: FR23, Klasse: AP22d, Thema: 122
Andreatta
Benz
Blau
Chandler
Duersteler
Fanzun
Haueter
Kohl
Mohler
Morgenthaler
Odermatt
Pizzi
Seiler
Steinauer
Steiner
Sureskumar
Ugur
Weinrich

View File

@ -1,22 +0,0 @@
Semester: FR23, Klasse: PE22e, Thema: 122
Berisha
ElIsbihani
Ganesalingam
Gfeller
Greter
Horvath
Hosseini
Husy
Jauch
Maerki
Rasiti
Renggli
Riesselmann
Saljihu
Semiaji
Srimohan
Stocker
Vanev
Zollinger
Zoric
Zuppiger

View File

@ -1,23 +0,0 @@
Semester: FR23, Klasse: ST19d, Thema: 122
Ajdini
Brauchli
Castro
Dawit
Duriqi
ElJaouzy
Frei
Gantenbein
Imhasly
Istrefi
Jassim
Koch
Maegerle
Markovic
MartinsMiranda
Mena
Sattelmaier
Scheuss
Schneiter
Sherifi
Sugumaran
Zgraggen

View File

@ -1,17 +0,0 @@
# mal schauen, ob ob ich Verzeichnisse und Dateien anlegen kann
# Verzeichnis anlegen
mkdir _template
#Verzeichnis wechseln
cd .\_template
# Verzeichnis zurück wechseln
cd ..
dir
ls .\_template
echo "---fertig---"

View File

@ -1,55 +0,0 @@
# mal schauen, ob ob ich Verzeichnisse und Dateien anlegen kann
# Verzeichnis anlegen
mkdir _template
#Verzeichnis wechseln
cd .\_template
# Dateien im Verzeichnis anlegen,
# jedoch nur mit Fake-Inhalt damit mal was da ist.
#
# Trick: Mit "echo" wird normalwerweise ein Text
# auf die Konsole herausgeschrieben.
# Mit dem ">" wird dann dieser Output in eine
# Datei umgelenkt. Die Datei wird entweder neu
# angelegt oder ersetzt, wenn es schon eine gibt
echo "datei-1.txt" > datei-1.txt
echo "datei-2.docx" > datei-2.docx
echo "datei-3.pdf" > datei-3.pdf
echo "datei-4.xlsx" > datei-4.xlsx
# Verzeichnis zurück wechseln
cd ..
#############################################
# Namensdatei-Vorlage automatisch erstellen #
#############################################
# Ich speichere mal den Dateinamen in eine Variable,
# weil ich das mehrmals brauche
$namensdatei = "M122-BR23a.txt"
# ich mache die Namendatei gleich zur besseren
# Ordnung in ein entsprechendes Verzeichnis
$verzeichnis_namensdateien = "_namensdateien"
mkdir $verzeichnis_namensdateien
cd $verzeichnis_namensdateien
# Namendatei anlegen und Inhalte reinschreiben
echo "Amherd" > $namensdatei
# Zwei ">" (">>") hängt das neue Material unten an
echo "Baume-Schneider" >> $namensdatei
echo "Berset" >> $namensdatei
echo "Cassis" >> $namensdatei
echo "Keller-Sutter" >> $namensdatei
echo "Parmelin" >> $namensdatei
echo "Roesti" >> $namensdatei # Umlaute wie das "ö" sind mega schlecht
cd ..
# Skript anhalten, um zu sehen, obs Fehler gab
pause

View File

@ -1,12 +0,0 @@
# mal schauen, ob ob ich aus Verzeichnissen, Dateien lesen kann
$verzeichnis_namensdateien = "_namensdateien"
# Da PowerShell objektorientiert ist, kann man gleich das
# Name-Attribut aus der Resultatsliste erfragen.
# Dies wird sogleich in eine Variable gespeichert.
$allFiles = (dir $verzeichnis_namensdateien).name
echo $allFiles
# Skript anhalten, um zu sehen, obs Fehler gab
pause

View File

@ -1,26 +0,0 @@
# mal schauen, ob ob ich aus Verzeichnissen, Dateien lesen kann
$verzeichnis_namensdateien = "_namensdateien"
# Da PowerShell objektorientiert ist, kann man gleich das
# Name-Attribut aus der Resultatsliste erfragen.
# Dies wird sogleich in eine Variable gespeichert.
$allFiles = (dir $verzeichnis_namensdateien).name
# Ich versuche mal alles aufzulisten
# Wir haben jetzt ja in "allFiles" die ganze Liste der Files
# im Verzeichnis gespeichert.
# mit "type" kann ich nun auslesen, was in jeder Datei drin ist.
# Wenn man in PowerShell ein 2echo" auf eine Liste macht,
# kann er die ganze Liste ausdrucken
foreach ($file in $allFiles) {
$fileinhalt = type $verzeichnis_namensdateien/$file
echo $file
echo "---"
echo $fileinhalt
echo "===="
echo ""
}
# Skript anhalten, um zu sehen, obs Fehler gab
pause

View File

@ -1,16 +0,0 @@
$verzeichnis_namensdateien = "_namensdateien"
$allFiles = (dir $verzeichnis_namensdateien).name
# Mir fehlt nun noch, dass ich den Dateinamen inkl. dem Punkt habe.
# aber ich brauche nur den Teil vor dem Punkt.
# Um das zu machen, gibt es eine "split"-Funktion
# Nach dem Split, brauche ich dann die erste Position (=0)
foreach ($file in $allFiles) {
$fileNameVorPunkt = $file.split(".")[0]
echo $fileNameVorPunkt
echo ""
}
# Skript anhalten, um zu sehen, obs Fehler gab
pause

View File

@ -1,20 +0,0 @@
# Jetzt alles zusammen
#
#
#
#
$verzeichnis_template = "_template"
$verzeichnis_namensdateien = "_namensdateien"
$allFiles = (dir $verzeichnis_namensdateien).name
foreach ($file in $allFiles) {
$fileNameVorPunkt = $file.split(".")[0]
echo $fileNameVorPunkt
echo ""
$fileinhalt = type $verzeichnis_namensdateien/$file
foreach ($zeile in $fileinhalt) {
echo $verzeichnis_namensdateien/$file/$zeile
}
}

View File

@ -1,17 +0,0 @@
# Jetzt alles zusammen
#
$verzeichnis_template = "_template"
$verzeichnis_namensdateien = "_namensdateien"
$allFiles = (dir $verzeichnis_namensdateien).name
foreach ($file in $allFiles) {
$fileNameVorPunkt = $file.split(".")[0]
$klasse = $fileNameVorPunkt
$fileinhalt = type $verzeichnis_namensdateien/$file
foreach ($teilnehmer in $fileinhalt) {
mkdir $verzeichnis_namensdateien/$klasse/$teilnehmer
copy $verzeichnis_template/*.* $verzeichnis_namensdateien/$klasse/$teilnehmer
}
}

View File

@ -1,17 +0,0 @@
# erstellt alle Verzeichnisse und kopiert die
# Template-Dateien in alle Teilnehmer aller Klassen
$verzeichnis_template = "_template"
$verzeichnis_namensdateien = "_namensdateien"
$allFiles = (dir $verzeichnis_namensdateien).name
foreach ($file in $allFiles) {
$fileNameVorPunkt = $file.split(".")[0]
$klasse = $fileNameVorPunkt
$fileinhalt = type $verzeichnis_namensdateien/$file
foreach ($teilnehmer in $fileinhalt) {
mkdir $verzeichnis_namensdateien/$klasse/$teilnehmer
copy $verzeichnis_template/*.* $verzeichnis_namensdateien/$klasse/$teilnehmer
}
}

View File

@ -1,56 +0,0 @@
# Erstelle das Template-Verzeichnis und die Dateien
# Verzeichnis anlegen
mkdir _template -ErrorAction Ignore
#Verzeichnis wechseln
cd .\_template
# Dateien im Verzeichnis anlegen,
# jedoch nur mit Fake-Inhalt damit mal was da ist.
echo "datei-1.txt" > datei-1.txt
echo "datei-2.docx" > datei-2.docx
echo "datei-3.pdf" > datei-3.pdf
echo "datei-4.xlsx" > datei-4.xlsx
# Verzeichnis zurück wechseln
cd ..
#############################################
# Namensdatei-Vorlage automatisch erstellen #
#############################################
# Ich speichere mal den Dateinamen in eine Variable,
# weil ich das mehrmals brauche
$namensdatei = "M122-BR23a.txt"
# ich mache die Namendatei gleich zur besseren
# Ordnung in ein entsprechendes Verzeichnis
$verzeichnis_namensdateien = "_namensdateien"
mkdir $verzeichnis_namensdateien -ErrorAction Ignore
cd $verzeichnis_namensdateien
# Namendatei anlegen und Inhalte reinschreiben
echo "Amherd" > $namensdatei
# Zwei ">" (">>") hängt das neue Material unten an
echo "Baume-Schneider" >> $namensdatei
echo "Berset" >> $namensdatei
echo "Cassis" >> $namensdatei
echo "Keller-Sutter" >> $namensdatei
echo "Parmelin" >> $namensdatei
echo "Roesti" >> $namensdatei # Umlaute wie das "ö" sind mega schlecht
# Gleich noch eine zweite Namensdatei
$namensdatei = "M122-SR23a.txt"
echo "Burkhart" > $namensdatei
echo "Chiesa" >> $namensdatei
echo "Jositsch" >> $namensdatei
echo "Noser" >> $namensdatei
cd ..

View File

@ -1 +0,0 @@
~$*

View File

@ -1,25 +0,0 @@
# Aufgabe "Lieferung ins Zahlungssystem"
**Files**
<https://haraldmueller.ch/schoolerinvoices/out> (Passwort auf html-Seite: tbz)
<br><https://haraldmueller.ch/schoolerinvoices/in> (Passwort: tbz)
FTP-Server: ftp.haraldmueller.ch
Benutzer: schoolerinvoices
Passwort: Berufsschule8005!
<br>
**Verarbeitung starten:**
<https://coinditorei.com/zahlungssystem> (Passwort: tbz)
**Files**
<https://coinditorei.com/zahlungssystem/in> (Passwort: tbz)
<br><https://coinditorei.com/zahlungssystem/out> (Passwort: tbz)
FTP-Server: ftp.coinditorei.com
Benutzer: zahlungssystem
Passwort: Berufsschule8005!

View File

@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header><From>IPEC</From><To>Coop Mineralöl AG</To><UseCase>GetProcessProtocol</UseCase><SessionID /><Version>1.1</Version><Status>0</Status></Header><Body><BillerID>41101000000240844</BillerID><DeliveryDate date="20150106"><NumberBills>1</NumberBills><OK_Signed>1</OK_Signed><OK_Result><Signed>1</Signed><Bill><TransactionID>729122x000005xEBPxCOOPx01022015x000093</TransactionID></Bill></OK_Result><NOK_Result><NotSigned>0</NotSigned></NOK_Result></DeliveryDate><RejectedBills><NumberBills>1</NumberBills><Bill><TransactionID>729122x000005xEBPxCOOPx01022015x000093</TransactionID><EBillAccountID>41100000077682784</EBillAccountID><ESRReference>911754000000012218285587591</ESRReference><TotalAmount>10.80</TotalAmount><ReasonCode>25</ReasonCode><ReasonText>eBill Rejected by Customer / Payer</ReasonText><Date>2015-02-27</Date></Bill></RejectedBills></Body></Envelope>

Some files were not shown because too many files have changed in this diff Show More