diff --git a/ReportImp/DomizielAnsbach/Invoicing/InvoiceHelper.cs b/ReportImp/DomizielAnsbach/Invoicing/InvoiceHelper.cs index 7712a824e..559b5d375 100644 --- a/ReportImp/DomizielAnsbach/Invoicing/InvoiceHelper.cs +++ b/ReportImp/DomizielAnsbach/Invoicing/InvoiceHelper.cs @@ -17,10 +17,8 @@ namespace DomizielAnsbach.Invoicing { public static IList BerechneRechnungsPositionenFuerStationaer(DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap) { - IList ergebnis = new List(); var customer = scap.CostBearer2SupportConcept.SupportConcept.Customer; - DateTime start; DateTime ende; if (scap.StartDate <= invoicePeriod.StartDate) @@ -33,11 +31,9 @@ namespace DomizielAnsbach.Invoicing ende = (DateTime)scap.EndDate.Value.AddDays(-1); //Auszugstag wird NICHT abgerechnet var preise = DAOFactory.GenericDAO.GetAllActive(); - var tagessatz = GetPreis(preise, "Tagessatz stationär", start); var freihalte = GetPreis(preise, "Platzfreihaltegebühr", start); - while (start <= ende) { DateTime monatStart = start; //new DateTime(start.Year, start.Month, 1); @@ -57,30 +53,30 @@ namespace DomizielAnsbach.Invoicing DateTime? startAbw = at.Start; DateTime? endAbw = at.End; //18.04.2023: Frau Sachsenhauser sagt, jeder Tag Abwesenheit muss mit Platzfreihaltepauschale bezahlt werden - //if (at.Start.HasValue && at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 0) - //{ - // endAbw = at.End.Value.AddDays(-1); - //} - if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart)) + if (at.Start.HasValue && at.End.HasValue && at.End.Value.Date.Subtract(at.Start.Value.Date).TotalDays > 2) { - DateTime abwStart = at.Start.Value; - if (start > abwStart) - { - abwStart = start; - } + endAbw = at.End.Value.AddDays(-1); - DateTime abwEnd = monatEnde.AddDays(-1); - if (endAbw.HasValue && endAbw < monatEnde) + if (startAbw.HasValue && startAbw.Value < monatEnde && (!endAbw.HasValue || endAbw.Value >= monatStart) + && !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus")) { - abwEnd = endAbw.Value; - } + DateTime abwStart = at.Start.Value; + if (start > abwStart) + { + abwStart = start; + } - DateTime dt = abwStart; - - while (dt <= abwEnd) - { - tageAbwesendImMonat++; - dt = dt.AddDays(1); + DateTime abwEnd = monatEnde.AddDays(-1); + if (endAbw.HasValue && endAbw < monatEnde) + { + abwEnd = endAbw.Value; + } + DateTime dt = abwStart; + while (dt <= abwEnd) + { + tageAbwesendImMonat++; + dt = dt.AddDays(1); + } } } } @@ -127,12 +123,10 @@ namespace DomizielAnsbach.Invoicing private static decimal GetPreis(IList allePreise, String name, DateTime datum) { - var tagessatz = allePreise.Where(p => p.Name.Contains(name)).FirstOrDefault(); if (tagessatz != null) { var crlist = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(tagessatz.CostRatePeriods); - var cr = crlist.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, datum); if (cr != null && cr.CostRateValue.HasValue) { @@ -146,12 +140,12 @@ namespace DomizielAnsbach.Invoicing private static string GetAbwesenheiten(Customer c, DateTime start, DateTime end) { StringBuilder sb = new StringBuilder(); - if (c.AbsenceTimes != null) { foreach (var at in c.AbsenceTimes) { - if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start)) + if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start) + && !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus")) { if (sb.Length > 0) { diff --git a/ReportImp/DomizielAnsbach/Invoicing/StationaerInvoiceCreation.cs b/ReportImp/DomizielAnsbach/Invoicing/StationaerInvoiceCreation.cs index fc3c619df..33f10d406 100644 --- a/ReportImp/DomizielAnsbach/Invoicing/StationaerInvoiceCreation.cs +++ b/ReportImp/DomizielAnsbach/Invoicing/StationaerInvoiceCreation.cs @@ -19,8 +19,6 @@ namespace DomizielAnsbach.Invoicing { //private const decimal TAGESPAUSCHALE = 129.55m; //private const decimal FREIHALTEGEBUEHR = 103.64m; - - private DateTime? accountingPeriodStart = null; private DateTime? accountingPeriodEnd = null; @@ -95,10 +93,7 @@ namespace DomizielAnsbach.Invoicing public override IList CreateInvoiceItems(List serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc) { - return InvoiceHelper.BerechneRechnungsPositionenFuerStationaer(invoicePeriod, scap); - } - - + } } } diff --git a/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs b/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs index d251af175..3dcd57d3f 100644 --- a/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs +++ b/ReportImp/DomizielAnsbach/Invoicing/ZVInvoiceCreation.cs @@ -85,8 +85,7 @@ namespace DomizielAnsbach.Invoicing stundensatz = 0; tagessatz = 0; var reason = at.AbsenceReason.Description.Substring(5); - if (reason.Contains("Urlaub") || reason.Contains("Feiertag") || reason.Contains("Krank") - || reason.Contains("entschuldigt") || reason.Contains("unentschuldigt")) + if (reason.Contains("Urlaub") || reason.Contains("Feiertag") || reason.Contains("Krank")) { var std = GetFeiertagsstunden(customer.Arbeitszeiten, customer, tag); if (std > 0) @@ -107,8 +106,7 @@ namespace DomizielAnsbach.Invoicing uCount += 1; } - else if ((reason.Contains("Krank") || reason.Contains("entschuldigt") || reason.Contains("unentschuldigt")) - && (pausch.krank != 0 || pausch.krankMot)) + else if (reason.Contains("Krank") && (pausch.krank != 0 || pausch.krankMot)) { decimal kranktage = 0; if (pausch.anzKrank != 0) diff --git a/ReportImp/DomizielAnsbach/ServiceInvoiceReport.cs b/ReportImp/DomizielAnsbach/ServiceInvoiceReport.cs index a4bb69549..cf97a3564 100644 --- a/ReportImp/DomizielAnsbach/ServiceInvoiceReport.cs +++ b/ReportImp/DomizielAnsbach/ServiceInvoiceReport.cs @@ -100,7 +100,8 @@ namespace DomizielAnsbach { foreach (var at in c.AbsenceTimes) { - if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start)) + if ((!at.Start.HasValue || at.Start.Value <= end) && (!at.End.HasValue || at.End.Value >= start) + && !at.AbsenceReason.Description.Contains("ZV") && !at.AbsenceReason.Description.Contains("Urlaub stationär im Haus")) { if (sb.Length > 0) { diff --git a/ReportImp/DomizielAnsbach/ZVBerichtBezirk.cs b/ReportImp/DomizielAnsbach/ZVBerichtBezirk.cs index 746f193c6..32372c31d 100644 --- a/ReportImp/DomizielAnsbach/ZVBerichtBezirk.cs +++ b/ReportImp/DomizielAnsbach/ZVBerichtBezirk.cs @@ -80,6 +80,10 @@ namespace DomizielAnsbach var ro = new FinanceRO.SupportConceptFinanceRO(); ro.CustomerName = sc.CustomerName; + if (ro.CustomerName.Contains("Dauer")) + { + int tuao = 1; + } ro.CostBearerName = sc.CostBearerName; rowOrder += 1; ro.RateFactor = rowOrder; @@ -92,6 +96,11 @@ namespace DomizielAnsbach ro.ApprovedHours = GetVertraglicheZeit(c, periodEnd, monthStart); } + if (ro.ApprovedHours == 0 && sc.Costbearer2Supportconcept.EndDate < monthEnd) + { + break; + } + ro.Custom1 = String.Format("{0:dd.MM.yyyy}", monthStart); if (periodEnd != DateTime.MinValue && periodEnd != monthEnd || monthStart != new DateTime(monthEnd.Year, monthEnd.Month, 1)) @@ -124,6 +133,11 @@ namespace DomizielAnsbach { monthStart = krankEnd.AddDays(1); periodEnd = monthEnd; + if (monthStart == monthEnd.AddDays(1)) + { + periodEnd = monthEnd.AddMonths(1); + m++; + } } else if ((periodEnd == DateTime.MinValue || periodEnd == monthEnd) && monthEnd == end) {