diff --git a/src/coIT.Libraries.Lexoffice.BusinessRules/Rechnung/SteuerlicherHinweisAufRechnungGedruckt.cs b/src/coIT.Libraries.Lexoffice.BusinessRules/Rechnung/SteuerlicherHinweisAufRechnungGedruckt.cs index 08ee2bf..f628bea 100644 --- a/src/coIT.Libraries.Lexoffice.BusinessRules/Rechnung/SteuerlicherHinweisAufRechnungGedruckt.cs +++ b/src/coIT.Libraries.Lexoffice.BusinessRules/Rechnung/SteuerlicherHinweisAufRechnungGedruckt.cs @@ -1,5 +1,6 @@ using System.Collections.Immutable; using System.Globalization; +using System.Text.RegularExpressions; using coIT.Libraries.Datengrundlagen.Konten; using coIT.Libraries.LexOffice; using coIT.Libraries.LexOffice.DataContracts.Invoice; @@ -25,16 +26,27 @@ public Result Prüfen(Invoice rechnung) _konten.FirstOrDefault(k => k.KontoNummer == kontoNummer)?.SteuerlicherHinweis ?? string.Empty ) + .Map(steuerlicherHinweis => new Regex(steuerlicherHinweis)) .Ensure( - steuerlicherHinweis => - CultureInfo.InvariantCulture.CompareInfo.IndexOf( - rechnung.PaymentConditions.PaymentTermLabel, - steuerlicherHinweis, - CompareOptions.IgnoreCase - ) >= 0, + steuerlicherHinweis => HinweisTextIstGesetzt(rechnung, steuerlicherHinweis), steuerlicherHinweis => $"Aktualisiere die Rechnung mit dem korrekten angedruckten Text. Er muss '{steuerlicherHinweis}' enthalten." ); } + + private bool HinweisTextIstGesetzt(Invoice rechnung, Regex text) + { + return EnthältString(rechnung.PaymentConditions.PaymentTermLabel, text) + || EnthältString(rechnung.Remark, text); + } + + private bool EnthältString(string? heuhaufen, Regex regex) + { + if (heuhaufen is null) + return false; + + var heuhaufenLower = heuhaufen.ToLowerInvariant(); + return regex.IsMatch(heuhaufenLower); + } } } diff --git a/src/coIT.Libraries.Lexoffice/DataContracts/Invoice/Invoice.cs b/src/coIT.Libraries.Lexoffice/DataContracts/Invoice/Invoice.cs index ffce501..5668455 100644 --- a/src/coIT.Libraries.Lexoffice/DataContracts/Invoice/Invoice.cs +++ b/src/coIT.Libraries.Lexoffice/DataContracts/Invoice/Invoice.cs @@ -49,4 +49,6 @@ public class Invoice public InvoicePaymentConditions PaymentConditions { get; set; } public List TaxAmounts { get; set; } + + public string? Remark { get; set; } }