using System; using System.Collections.Generic; using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report.ReportObjects; using BS.Shared.DataContracts; using Club74; using DevExpress.XtraPrinting; namespace BeWo.Report.DefaultReports.Alt { public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport { public Spitzabrechnung() { InitializeComponent(); } public void SetReportDataSource(SettlementRO pRO) { if (String.IsNullOrEmpty(pRO.Notice)) { lblNotice.Visible = false; } if (pRO.ClaimWithEigenbeteiligung < 0) { pRO.FinalSentence = "Die geleistete Überzahlung wird nach Ihrer Abrechnung Ihrem Konto gutgeschrieben."; } bool isDefaultSpitzabrechnung = 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; } } var costBearer = GetCostbearer(pRO); if (isDefaultSpitzabrechnung) { pRO.InvoiceItems = CreateDefaultSpitzabrechnungInvoiceItems(pRO); if (pRO.RateFactor != 1 && costBearer != null && costBearer.IsCalculatingWithFactor) { pRO.RateFactorText = null; pRO.RateFactorText2 = null; pRO.ApprovedFLS = pRO.ApprovedFLSWithFactor; } } else { if (costBearer != null && costBearer.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); } } } 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.RateFactor != 1 && costBearer != null && costBearer.IsCalculatingWithFactor) { pRO.RateFactorText = null; pRO.RateFactorText2 = null; pRO.ApprovedFLS = pRO.ApprovedFLSWithFactor; } } } StringBuilder sb = new StringBuilder(); if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && !String.IsNullOrEmpty(pRO.RecipientOrganisation.Trim())) { sb.AppendLine(pRO.RecipientOrganisation); } if (!String.IsNullOrEmpty(pRO.RecipientContactPerson) && !String.IsNullOrEmpty(pRO.RecipientContactPerson.Trim())) { sb.AppendLine(pRO.RecipientContactPerson); } if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientDivision.Trim())) { sb.AppendLine(pRO.RecipientDivision); } if (!String.IsNullOrEmpty(pRO.RecipientStreet) && !String.IsNullOrEmpty(pRO.RecipientStreet.Trim())) { sb.AppendLine(pRO.RecipientStreet); } if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown) && !String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown.Trim())) { sb.AppendLine(pRO.RecipientPostCodeAndTown); } lblAddress.Text = sb.ToString(); var anhang = new SpitzabrechnungAnhang(); xrSubreport1.ReportSource = anhang; anhang.SetReportDataSource(pRO); this.bindingSource1.DataSource = pRO; } private CostBearer GetCostbearer(SettlementRO pRO) { var cb2sc = DAOFactory.GenericDAO.LoadByID(pRO.CostBearer2SupportConceptOid); return cb2sc.CostBearer; } 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); } } private int pageCount = 0; private void xrLabel9_PrintOnPage(object sender, DevExpress.XtraReports.UI.PrintOnPageEventArgs e) { if (pageCount > 0) e.Cancel = true; pageCount++; } } }