Skip to content

Instantly share code, notes, and snippets.

@Azer0s
Created July 17, 2021 17:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Azer0s/52d2cda249421cc88f756ac8c6293b31 to your computer and use it in GitHub Desktop.
Save Azer0s/52d2cda249421cc88f756ac8c6293b31 to your computer and use it in GitHub Desktop.
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