This commit is contained in:
Harald G. Mueller 2023-02-06 22:28:07 +01:00
parent 1b2c30ae81
commit 7059b20f81
62 changed files with 77 additions and 72 deletions

View File

@ -0,0 +1,16 @@
# 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)
![https://www.six-group.com/de/products-services/banking-services/payment-standardization/standards/qr-bill.html](https://www.six-group.com/de/products-services/banking-services/payment-standardization/standards/qr-bill.html)
## Aufgabenstellung

View File

@ -0,0 +1,9 @@
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,92 +1,72 @@
# M122 - Übungen
# M122 - Aufgabe
## Dateien und Verzeichnisse anlegen
Ich habe den Bedarf, für alle Lernenden einer Klasse dieselben
Dateien zur Verfügung zu stellen. Es gibt mehrere Klassen. Die
Lernenden bekommen alle ein eigenes Verzeichnisse. Und jede
Klasse bekommt ein Verzeichnis. In diesem Klassen- Verzeichnis
sind dann die Lernenden-Verzeichnisse gesammelt. In jedem dieser
Lernenden-Verzeichnisse werden dann die gewünschten Dateien zur
Verfügung gestellt.
Als Lehrer habe den Bedarf, für alle Lernenden einer Klasse
dieselben Dateien zur Verfügung zu stellen.
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.
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.
Weiter werde ich ein Verzeichnis namens "_template" bereitstellen.
Da drin werden dann alle Dateien hineingelegt, die allen Lernenden
zur Verfügung gestellt werden sollen.
### Gesucht
Es soll nachher eine solche Struktur entstehen:
Strategie (Programmablauf)
Das automatisierte Skript muss jetzt den Dateinamen (vor dem Punkt)
auslesen um damit das Grundverzeichnis anzulegen. Dann muss das
Skrpt die Datei öffnen und alle Namenseinträge auslesen. 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.
Erstellen Sie als Ausgangslage folgende Dateien und Verzeichnisstruktur
./M122-AP22b.txt
./_template
./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
Berset
Cassis
Keller
Parmelin
Roesti
Es soll nachher eine solche Struktur entstehen:
./M122-AP22b
Amherd
Datei-1.txt
Datei-2.docx
Datei-3.pdf
Baume
Datei-1.txt
Datei-2.docx
Datei-3.pdf
Berset
Datei-1.txt
Datei-2.docx
Datei-3.pdf
usw.
Amherd
Baume-Schneider
Berset
Cassis
Keller-Sutter
Parmelin
Roesti
### Mögliche Strategie für den Programmablauf
Erstellen Sie ein Skript, das diese Aufgabe erledigt.
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.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<hr>
<br>
Hier eine Lösung in **PowerShell**.
Versuchen Sie alles in **bash** nachzumachen. Aber Achtung. Manche Dinge kann man oder muss man in **bash** anders machen.
**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)