IBAHSeV/Import/CustomDataImporter - LWL Bankingimport

This commit is contained in:
2026-03-13 13:39:39 +01:00
parent b8adba6251
commit 18f1e89b65
2 changed files with 156 additions and 1 deletions

View File

@@ -65,6 +65,7 @@
</Compile>
<Compile Include="Calculations\DefaultCalculations.cs" />
<Compile Include="Calculations\CustomGroupDurationCalculator.cs" />
<Compile Include="Import\CustomDataImporter.cs" />
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\CustomLWLDiggaBerechnung.cs" />
@@ -139,7 +140,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Export\" />
<Folder Include="Import\" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />

View File

@@ -0,0 +1,155 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.Import.AvisImport;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using Utils = BS.Shared.Core.Utils;
namespace IBAHS.Import
{
public class CustomLvrAviseImporter : LvrAviseImporter
{
public override String ImportCsvAvise(String csv)
{
var reader = new LvrAvisCsvReader();
var avise = LeseEinzelAviseLWL(csv);
var hilfeplaene = CreateHilfeplanInfos();
return ImportAvise(avise, hilfeplaene);
}
private List<Avis> LeseEinzelAviseLWL(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 >= 10)
{
if (!String.IsNullOrEmpty(fields[4]) && !String.IsNullOrEmpty(fields[5]) && !String.IsNullOrEmpty(fields[8])
&& (fields[5].ToString().Contains("Westfalen-Lippe") || fields[5].ToString().Contains("LWL")))
{
try
{
DateTime gueltigkeitsTag = DateTime.Now;
decimal betrag = 0m;
var neuerAvis = new Avis();
decimal.TryParse(fields[8], out betrag);
neuerAvis.Betrag = betrag;
fields[4] = fields[4].Trim();
if (!String.IsNullOrEmpty(fields[4]))
{
var zweck = fields[4];
string pattern = @"^(?:[^/]*/){5}([^/]*)"; // Sucht den gesamten Text nach dem 5. / -> also der Teil mit Aktenzeichen und Name
Match matchVerwendung = Regex.Match(zweck, pattern);
if (matchVerwendung.Success)
{
neuerAvis.Klient = matchVerwendung.Groups[1].Value.Substring(8).Trim();
neuerAvis.Klient = Regex.Replace(neuerAvis.Klient, @"\b([A-ZÄÖÜ][a-zäöüß]+)\s*\1\b", "$1"); // Der Nachname kommt fast immer doppelt vor, wird hier gefiltert
neuerAvis.Verwendungszweck = matchVerwendung.Groups[1].Value.Substring(8).Trim();
neuerAvis.Aktenzeichen = matchVerwendung.Groups[1].Value.Substring(0, 7);
}
else
{
neuerAvis.Klient = zweck;
neuerAvis.Verwendungszweck = zweck;
neuerAvis.Aktenzeichen = zweck;
}
var teilEins = zweck.Substring(0, 50).Replace(" ", "");
var date = teilEins.Substring(23, 10);
if (int.TryParse(date, out int resultMonat) && int.TryParse(date, out int resultJahr))
{
gueltigkeitsTag = new DateTime(resultJahr, resultMonat, 1);
}
else
{
if (DateTime.TryParse(date, out DateTime resultHp))
{
gueltigkeitsTag = resultHp;
}
else
{
var datumMonat = fields[1].Substring(fields[1].Length - 7, 2);
var datumJahr = fields[1].Substring(fields[1].Length - 4, 4);
if (int.TryParse(datumMonat, out int resultMonth) && int.TryParse(datumJahr, out int resultYear))
{
gueltigkeitsTag = new DateTime(resultYear, resultMonth, 1);
}
else
{
if (DateTime.TryParse(fields[4], out DateTime resultDate))
{
gueltigkeitsTag = resultDate;
}
}
}
}
neuerAvis.GueltigkeitsDatum = gueltigkeitsTag;
}
else
{
neuerAvis.Verwendungszweck = "kein Text";
neuerAvis.Aktenzeichen = "kein Text";
}
neuerAvis.BuchungsDatum = DateTime.Now;
//neuerAvis.Sachbearbeiter = fields[13] + ", " + fields[14];
if (neuerAvis.Betrag != 0)
{
liste.Add(neuerAvis);
}
}
catch (Exception e)
{
//ignore
}
}
}
}
return liste;
}
public override List<HilfeplanInfo> CreateHilfeplanInfos()
{
List<HilfeplanInfo> liste = new List<HilfeplanInfo>();
var scList = DAOFactory.GenericDAO.GetAllActiveAndArchived<SupportConcept>();
foreach (var supportConcept in scList)
{
foreach (var cb2sc in supportConcept.CostBearer2SupportConceptList)
{
HilfeplanInfo hi = new HilfeplanInfo();
hi.Start = cb2sc.StartDate;
hi.Ende = cb2sc.EndDate;
var reference = cb2sc.CustomerReferenceNumber;
if (!String.IsNullOrEmpty(reference))
{
reference = reference.Replace("-", "");
reference = reference.Replace("/", "").Trim();
}
hi.Aktenzeichen = reference;
hi.CostBearer2SupportConcept = cb2sc;
hi.CustomerFirstName = cb2sc.SupportConcept.Customer.Person.FirstName;
hi.CustomerLastName = cb2sc.SupportConcept.Customer.Person.LastName;
if (hi.Start.HasValue && hi.Ende.HasValue && !String.IsNullOrEmpty(hi.Aktenzeichen))
{
liste.Add(hi);
}
}
}
return liste;
}
}
}