Created
July 17, 2021 17:18
-
-
Save Azer0s/52d2cda249421cc88f756ac8c6293b31 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Globalization; | |
using System.IO; | |
using CsvHelper; | |
using CsvHelper.Configuration; | |
(string csv, string filename) GenerateUmsatzTabelle(TextReader inputCsv) | |
{ | |
var csvReader = new CsvReader(inputCsv, new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";" }); | |
csvReader.Read(); | |
csvReader.ReadHeader(); | |
var targetWriter = new StringWriter(); | |
var targetCsv = new CsvWriter(targetWriter, new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";" } ); | |
foreach (var s in new string[]{ "Konto", "Gkto", "Belegnr", "Buchdat", "Belegdat", "Bucod", "Steucod", "Betrag", "Mwst", "Steuer", "Text", "Zziel", "Skontopz", "Skontotage", "Symbol", "Gegenbuchkz", "Verbuchkz"}) | |
{ | |
targetCsv.WriteField(s); | |
} | |
targetCsv.NextRecord(); | |
var targetNameExt = ""; | |
while (csvReader.Read()) | |
{ | |
var rechnungsNr = csvReader.GetField("RECH_NR"); | |
var datum = DateTime.ParseExact(csvReader.GetField("DATUM"), "dd.MM.yyyy", CultureInfo.InvariantCulture); | |
var betrag = csvReader.GetField("SUMME"); | |
if (targetNameExt == "") | |
{ | |
targetNameExt = datum.ToString("yyyyMM"); | |
} | |
targetCsv.WriteField("200000"); | |
targetCsv.WriteField("9050"); | |
targetCsv.WriteField(rechnungsNr); | |
targetCsv.WriteField(datum.ToString("yyyyMMdd")); | |
targetCsv.WriteField(datum.ToString("yyyyMMdd")); | |
targetCsv.WriteField("1"); | |
targetCsv.WriteField("0"); | |
targetCsv.WriteField(betrag); | |
targetCsv.WriteField(""); | |
targetCsv.WriteField(""); | |
targetCsv.WriteField(rechnungsNr); | |
targetCsv.WriteField("3"); | |
targetCsv.WriteField("0"); | |
targetCsv.WriteField("0"); | |
targetCsv.WriteField("AR"); | |
targetCsv.WriteField("R"); | |
targetCsv.WriteField("A"); | |
targetCsv.NextRecord(); | |
} | |
targetCsv.Flush(); | |
return (targetWriter.ToString(), $"UMSATZ_{targetNameExt}.csv"); | |
} | |
(string csv, string filename) GenerateEingangTabelle(TextReader inputCsv) | |
{ | |
var csvReader = new CsvReader(inputCsv, new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";" }); | |
csvReader.Read(); | |
csvReader.ReadHeader(); | |
var targetWriter = new StringWriter(); | |
var targetCsv = new CsvWriter(targetWriter, new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";" } ); | |
foreach (var s in new string[]{ "Belegdat", "Belegnr", "Betrag", "VALUTA_DT", "INFO" }) | |
{ | |
targetCsv.WriteField(s); | |
} | |
targetCsv.NextRecord(); | |
var targetNameExt = ""; | |
while (csvReader.Read()) | |
{ | |
var rechnungsDatum = DateTime.ParseExact(csvReader.GetField("RECH_DATUM"), "dd.MM.yyyy", CultureInfo.InvariantCulture); | |
var rechnungsNr = csvReader.GetField("RECH_NR"); | |
var betrag = csvReader.GetField("BETRAG"); | |
var valutDt = DateTime.ParseExact(csvReader.GetField("VALUTA_DT"), "dd.MM.yyyy", CultureInfo.InvariantCulture); | |
var info = csvReader.GetField("INFO"); | |
if (targetNameExt == "") | |
{ | |
targetNameExt = valutDt.ToString("yyyyMM"); | |
} | |
targetCsv.WriteField(rechnungsDatum.ToString("yyyyMMdd")); | |
targetCsv.WriteField(rechnungsNr); | |
targetCsv.WriteField(betrag); | |
targetCsv.WriteField(valutDt.ToString("yyyyMMdd")); | |
targetCsv.WriteField(info); | |
targetCsv.NextRecord(); | |
} | |
targetCsv.Flush(); | |
return (targetWriter.ToString(), $"Zahlungseingangverbucht_{targetNameExt}.csv"); | |
} | |
var option = 0; | |
var inputFile = args[0]; | |
var directory = new FileInfo(inputFile).Directory?.ToString(); | |
do | |
{ | |
Console.WriteLine("[1] Umsatz Tabelle"); | |
Console.WriteLine("[2] Zahlungseingangverbucht Tabelle"); | |
var optionStr = Console.ReadLine(); | |
if (!int.TryParse(optionStr, out option)) | |
{ | |
Console.WriteLine("Ungültige Eingabe! (Eingabe war keine Zahl)"); | |
} | |
switch (option) | |
{ | |
case 1: | |
case 2: | |
break; | |
default: | |
option = 0; | |
Console.WriteLine("Ungültige Eingabe! (Erwartet wurde Wert: 1 oder 2)"); | |
break; | |
} | |
} while (option == 0); | |
var (csv, file) = option switch | |
{ | |
1 => GenerateUmsatzTabelle(new StreamReader(inputFile)), | |
2 => GenerateEingangTabelle(new StreamReader(inputFile)), | |
}; | |
File.WriteAllText(Path.Join(directory, file), csv); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment