diff --git a/ReportImp/ChristianWilke/Invoicing/CustomInvoiceCreation.cs b/ReportImp/ChristianWilke/Invoicing/CustomInvoiceCreation.cs index a37b835c7..f985f5db2 100644 --- a/ReportImp/ChristianWilke/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/ChristianWilke/Invoicing/CustomInvoiceCreation.cs @@ -5,6 +5,7 @@ using BeWo.Data.Entities; using BeWo.Service.DCEntityMapper; using BeWo.Service.Invoicing; using BeWo.Service.Plugins; +using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; @@ -38,5 +39,94 @@ namespace ChristianWilke.Invoicing }); } } - } + + public override IList CreateInvoiceItems(List serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, + Calculations calc) + { + var list = base.CreateInvoiceItems(serviceRecordsInPeriod, invoicePeriod, scap, calc); + var ii = CreateWegezeitenPauschale(serviceRecordsInPeriod, invoicePeriod, scap); + list.AddRange(ii); + + return list; + } + + public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc) + { + var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc); + if (ii.ItemDescription != null && ii.ItemDescription.Contains("- ohne Wegzeiten Pauschale")) + { + ii.ItemDescription = ii.ItemDescription.Replace("- ohne Wegzeiten Pauschale", ""); + } + else if (ii.ItemDescription != null && ii.ItemDescription.Contains("- mit Wegzeiten Pauschale")) + { + ii.ItemDescription = ii.ItemDescription.Replace("- mit Wegzeiten Pauschale", ""); + } + + return ii; + } + + + public virtual IList CreateWegezeitenPauschale(List serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap) + { + IList items = new List(); + decimal preisKA = 8.70m; + preisKA = base.GetPreis("Wegezeiten-Pauschale kompensatorische Assistenz", invoicePeriod.StartDate); + decimal preisQA = 15.76m; + preisKA = base.GetPreis("Wegezeiten-Pauschale qualifizierte Assistenz", invoicePeriod.StartDate); + + int countKA = 0; + int countQA = 0; + + foreach (var sr in serviceRecordsInPeriod) + { + if (sr.ServiceDescription.Name.ToLower().Contains("mit wegzeiten")) + { + if (sr.ServiceDescription.CategoryName.ToLower().Contains("qualifiziert")) + { + countQA++; + } + else + { + countKA++; + } + } + } + + if (countQA > 0) + { + var invoiceItem = new InvoiceItem(); + + invoiceItem.AmountPerUnit = preisQA; + invoiceItem.UnitCount = countQA; + invoiceItem.AmountTotal = countQA * preisQA; + invoiceItem.ItemPeriodStart = invoicePeriod.StartDate; + invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate; + invoiceItem.RateFactor = null; + invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal; + invoiceItem.ItemDescription = "Wegezeiten Pauschale - Qualifizierte Assistenz"; + if (scap != null) + invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid; + + items.Add(invoiceItem); + } + if (countKA > 0) + { + var invoiceItem = new InvoiceItem(); + + invoiceItem.AmountPerUnit = preisKA; + invoiceItem.UnitCount = countKA; + invoiceItem.AmountTotal = countKA * preisKA; + invoiceItem.ItemPeriodStart = invoicePeriod.StartDate; + invoiceItem.ItemPeriodEnd = invoicePeriod.EndDate; + invoiceItem.RateFactor = null; + invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal; + invoiceItem.ItemDescription = "Wegezeiten Pauschale - Kompensatorische Assistenz"; + if (scap != null) + invoiceItem.SupportConceptApprovalPeriodOid = scap.Oid; + + items.Add(invoiceItem); + } + return items; + } + } }