using System; using System.Collections.Generic; using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.DataContracts; namespace LandshuterNetzwerk { public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport { public Spitzabrechnung() { InitializeComponent(); } public void SetReportDataSource(SettlementRO pRO) { StringBuilder sb = new StringBuilder(); if (!String.IsNullOrEmpty(pRO.RecipientOrganisation)) { sb.AppendLine(pRO.RecipientOrganisation); } if (!String.IsNullOrEmpty(pRO.RecipientContactPerson)) { sb.AppendLine(pRO.RecipientContactPerson); } if (!String.IsNullOrEmpty(pRO.RecipientDivision)) { sb.AppendLine(pRO.RecipientDivision); } if (!String.IsNullOrEmpty(pRO.RecipientStreet)) { sb.AppendLine(pRO.RecipientStreet); } if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown)) { sb.AppendLine(pRO.RecipientPostCodeAndTown); } lblAdresse.Text = sb.ToString(); SetzeStandortdaten(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); } } } 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); } } } } this.bindingSource1.DataSource = pRO; } private void SetzeStandortdaten(SettlementRO pRO) { var cb2sc = DAOFactory.GenericDAO.LoadByID(pRO.CostBearer2SupportConceptOid); var c = cb2sc.SupportConcept.Customer; String team = ""; foreach (var t2c in c.Team2CustomerList) { team = t2c.Team.Name; } if (team == "Betreutes Einzelwohnen Landshut") { lblNameStandort.Text = "Ambulant Begleitetes Einzelwohnen"; lblAnschriftKurz.Text = "Landshuter Netzwerk e.V., Neustadt 464-465, 84028 Landshut"; lblKontaktdaten.Text = @" Neustadt 464-465 84028 Landshut Tel: 0871/96367- 0 Fax: 0871/96367-118 bew@landshuter-netzwerk.de www.landshuter-netzwerk.de"; } else if (team == "Betreutes Wohnen Dingolfing-Landau") { lblNameStandort.Text = "Ambulant Begleitetes Wohnen"; lblAnschriftKurz.Text = "Landshuter Netzwerk e.V., Bahnhofstraße 1, 84130 Dingolfing"; lblKontaktdaten.Text = @" Bahnhofstraße 1 84130 Dingolfing Tel: 08731/309 9777 Fax: 08731/309 9614 bw-dingolfing@landshuter-netzwerk.de www.landshuter-netzwerk.de"; } else if (team == "Therapeutische Wohngemeinschaft") { lblNameStandort.Text = "Therapeutische Wohngemeinschaften"; lblAnschriftKurz.Text = "Landshuter Netzwerk e.V., Neustadt 464-465, 84028 Landshut"; lblKontaktdaten.Text = @" Neustadt 464-465 84028 Landshut Tel: 0871/96367- 0 Fax: 0871/96367-118 twg@landshuter-netzwerk.de www.landshuter-netzwerk.de"; } else { lblNameStandort.Text = team; lblAnschriftKurz.Text = "Landshuter Netzwerk e.V., Neustadt 464-465, 84028 Landshut"; lblKontaktdaten.Text = @" Neustadt 464-465 84028 Landshut Tel: 0871/96367- 0 Fax: 0871/96367-118 twg@landshuter-netzwerk.de www.landshuter-netzwerk.de"; } } 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); } } } }