Files
BeWoPlaner/Service/Import/AvisImport/LvrAvisTextAbschnittReader.cs
2025-11-28 14:54:24 +01:00

77 lines
2.5 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 LvrAvisTextAbschnittReader
{
public static TextAbschnitt LeseBisText(string[] lines, int zeilenIndex, string suchText)
{
return TextAbschnittReader.LeseBisText(lines, zeilenIndex, suchText, false, true, false);
}
public static TextAbschnitt LeseBisDatum(string[] lines, int index, bool addDatumsZeile)
{
var ta = new TextAbschnitt();
StringBuilder sb = new StringBuilder();
while (index < lines.Length)
{
var line = lines[index];
if (line.Length >= 7)
{
var datumsText = line.Substring(0, 7); // Das Datum muss in den ersten 7 Zeichen stehen
if (datumsText.IndexOf("/") < 0 && DateTime.TryParse(datumsText, out var d1))
{
//Datum gefunden, lese Daten aus den vorherigen Zeilen
if (addDatumsZeile)
{
sb.AppendLine(line);
}
ta.Success = true;
ta.ZeilenIndex = index;
ta.Text = sb.ToString();
return ta;
}
}
sb.AppendLine(line);
index++;
}
return ta;
}
public static decimal? LeseBetrag(string zeile, bool ignoriereEuroZeichen)
{
String euroZeile = zeile;
if (euroZeile.IndexOf("€") > 0 || ignoriereEuroZeichen)
{
if (!ignoriereEuroZeichen)
{
euroZeile = euroZeile.Substring(0, euroZeile.IndexOf("€")).Trim();
}
if (euroZeile.LastIndexOf(" ") > 0)
{
euroZeile = euroZeile.Substring(euroZeile.LastIndexOf(" ")).Trim();
}
if (Decimal.TryParse(euroZeile, out var betrag))
{
//mehr als zwei Nachkommastellen auf zwei kürzen ohne Rundung
return Decimal.Truncate(betrag * 100) / 100;
}
}
return null;
}
}
}