89 lines
3.9 KiB
C#
89 lines
3.9 KiB
C#
using DevExpress.Pdf;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BeWo.Service.Import.AvisImport
|
|
{
|
|
public class LvrAvisCsvReader
|
|
{
|
|
public List<Avis> LeseEinzelAvise(string importfile)
|
|
{
|
|
List<Avis> liste = new List<Avis>();
|
|
String[] lines = importfile.Split('\n');
|
|
|
|
for (int i = 0; i < lines.Count(); i++)
|
|
{
|
|
string line = lines[i];
|
|
var fields = line.Split(';');
|
|
if (fields.Length >= 15)
|
|
{
|
|
if (!String.IsNullOrEmpty(fields[0]) && !String.IsNullOrEmpty(fields[7]))
|
|
{
|
|
try
|
|
{
|
|
DateTime gueltigkeitsTag = DateTime.Now;
|
|
decimal betrag = 0m;
|
|
|
|
var neuerAvis = new Avis();
|
|
neuerAvis.Aktenzeichen = fields[0];
|
|
decimal.TryParse(fields[7], out betrag);
|
|
neuerAvis.Betrag = betrag;
|
|
fields[12] = fields[12].Trim();
|
|
if (!String.IsNullOrEmpty(fields[12]))
|
|
{
|
|
neuerAvis.Verwendungszweck = fields[12];
|
|
|
|
var datumMonat = fields[12].Substring(fields[12].Length - 7, 2);
|
|
var datumJahr = fields[12].Substring(fields[12].Length - 4, 4);
|
|
if (int.TryParse(datumMonat, out int resultMonat) && int.TryParse(datumJahr, out int resultJahr))
|
|
{
|
|
try // es gibt Fälle wo zwar Zahlen, aber kein Datum gelesen werden - gefixt
|
|
{
|
|
gueltigkeitsTag = new DateTime(resultJahr, resultMonat, 1);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (DateTime.TryParse(fields[9], out DateTime resultHp))
|
|
{
|
|
gueltigkeitsTag = new DateTime(resultHp.Year, resultHp.Month, 1);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (DateTime.TryParse(fields[9], out DateTime resultHp)) // es macht Sinn den letzten Monat (z.B. Spitzabrechnung) zu nehmen, aber eben wie oben auch den 1.
|
|
{
|
|
gueltigkeitsTag = new DateTime(resultHp.Year, resultHp.Month, 1);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
neuerAvis.Verwendungszweck = fields[11];
|
|
}
|
|
neuerAvis.GueltigkeitsDatum = gueltigkeitsTag;
|
|
neuerAvis.BuchungsDatum = DateTime.Now;
|
|
neuerAvis.Klient = fields[1] + ", " + fields[2];
|
|
neuerAvis.Sachbearbeiter = fields[13] + ", " + fields[14];
|
|
if (neuerAvis.Betrag != 0)
|
|
{
|
|
liste.Add(neuerAvis);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//ignore
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return liste;
|
|
}
|
|
}
|
|
}
|