using System; using System.Collections.Generic; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.DataContracts; using BS.Shared.Extensions; namespace BeWo.Report.DefaultReports.Alt { public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport { public Spitzabrechnung() { InitializeComponent(); } public void SetReportDataSource(SettlementRO pRO) { bool isDefaultSpitzabrechnung = false; if (String.IsNullOrEmpty(pRO.Notice)) { lblNotice.Visible = false; } if (pRO.InvoiceItems != null && pRO.InvoiceItems.Count == 1) { var ii = pRO.InvoiceItems[0]; if ((ii.ItemDescription == "Spitzabrechung" || ii.ItemDescription == "Spitzabrechnung") && ii.GrossAmountTotal == null && ii.RateFactor == null) { isDefaultSpitzabrechnung = true; } } if (!isDefaultSpitzabrechnung) { if (pRO.DifferentHourlyRateCount > 0 && pRO.HourlyRateNew.HasValue) { isDefaultSpitzabrechnung = true; } } if (isDefaultSpitzabrechnung) { //UpdateAbrechnungsFelder(pRO); pRO.InvoiceItems = CreateDefaultSpitzabrechnungInvoiceItems(pRO); } else { var id = GetCustomerId(pRO); if (id == "LWLNEU") { pRO.RateFactorText = null; pRO.RateFactorText2 = null; if (pRO.InvoiceItems != null) { foreach (var ii in pRO.InvoiceItems) { ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS x {3:c}", ii.ItemPeriodStart, ii.ItemPeriodEnd, ii.UnitCount, ii.AmountPerUnit); if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0) { Zwischensumme.Visible = true; ii.ItemDescription = ii.ItemDescription.Replace("FLS", "h"); ii.UnitDescription = "Fehlkontakte"; } else if (ii.UnitDescription.IsNullOrEmpty()) { ii.UnitDescription = "Fachleistungsstunden"; } } } } else { if (pRO.InvoiceItems != null) { foreach (var ii in pRO.InvoiceItems) { ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS {3}x {4:c}", ii.ItemPeriodStart, ii.ItemPeriodEnd, ii.UnitCount, ii.RateFactor == 0 ? "" : "x " + pRO.RateFactorText2 + " ", ii.AmountPerUnit); if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0) { Zwischensumme.Visible = true; ii.ItemDescription = ii.ItemDescription.Replace("FLS", "h"); ii.UnitDescription = "Fehlkontakte"; } else if (ii.UnitDescription.IsNullOrEmpty()) { ii.UnitDescription = "Fachleistungsstunden"; } } } } } this.bindingSource1.DataSource = pRO; } private String GetCustomerId(SettlementRO pRO) { var cb2sc = DAOFactory.GenericDAO.LoadByID(pRO.CostBearer2SupportConceptOid); return cb2sc.CostBearer.ID; } private IList CreateDefaultSpitzabrechnungInvoiceItems(SettlementRO pRO) { IList itemList = new List(); if (pRO.DifferentHourlyRateCount == 3) { itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString, pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatz3 * pRO.RateFactor * pRO.HourlyRate3 }); itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString, pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * pRO.RateFactor * pRO.HourlyRateOld }); itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString, pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew }); } else if (pRO.DifferentHourlyRateCount == 2) { itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString, pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld }); itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString, pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew }); } else { itemList.Add(new InvoiceItemDC { ItemDescription = String.Format("{0} bis {1}: {2:0.##} FLS {3}x {4:c}", pRO.AccountingStartDateString, pRO.AccountingEndDateString, pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew), GrossAmountTotal = pRO.GeleisteteFLSMitStundensatzAktuell * pRO.RateFactor * pRO.HourlyRateNew }); } return itemList; } private void UpdateAbrechnungsFelder(SettlementRO pRO) { if (pRO.DifferentHourlyRateCount == 3) { //Erbrachte Leistungen (FLS) - bis [HourlyRateOldEndDateString] à [HourlyRateOldString] € pRO.Abrechnungstext1 = String.Format("{0} bis {1}", pRO.AccountingStartDateString, pRO.HourlyRate3EndDateString); pRO.Abrechnungstext1 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatz3, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRate3); //[AccountingStartDateString] - [HourlyRate3EndDateString] sind [RecordedFLSWithHourlyRate3String] Std. x [HourlyRate3String] € ="; pRO.Betrag1 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatz3 * (decimal)pRO.RateFactor * pRO.HourlyRate3); pRO.Abrechnungstext2 = String.Format("{0} bis {1}", pRO.HourlyRateOldStartDateString, pRO.HourlyRateOldEndDateString); pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld); pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld); pRO.Abrechnungstext3 = String.Format("{0} bis {1}", pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString); pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew); pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew); } else if (pRO.DifferentHourlyRateCount == 2) { pRO.Abrechnungstext2 = String.Format("{0} bis {1}", pRO.AccountingStartDateString, pRO.HourlyRateOldEndDateString); pRO.Abrechnungstext2 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatzAlt, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateOld); pRO.Betrag2 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAlt * (decimal)pRO.RateFactor * pRO.HourlyRateOld); pRO.Abrechnungstext3 = String.Format("{0} bis {1}", pRO.HourlyRateNewStartDateString, pRO.AccountingEndDateString); pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew); pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew); } else { pRO.Abrechnungstext3 = String.Format("{0} bis {1}", pRO.AccountingStartDateString, pRO.AccountingEndDateString); pRO.Abrechnungstext3 += String.Format(": {0:0.##} FLS {1}x {2:c}", pRO.GeleisteteFLSMitStundensatzAktuell, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", pRO.HourlyRateNew); pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell * (decimal)pRO.RateFactor * pRO.HourlyRateNew); } } } }