77 lines
2.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|