using System; using System.Collections.Generic; using System.Linq; using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; using BS.Shared.DataContracts; using DevExpress.XtraReports.UI; namespace BfpDus { public class CustomReportCreator : DefaultReportCreator { public override XtraReport CreateSettlementReport(string dcId, long? invoiceBaseOid) { var subreport = base.CreateSettlementReport(dcId, invoiceBaseOid); StringBuilder anschrift = new StringBuilder(); StringBuilder ansprechpartner = new StringBuilder(); if (subreport is BfpDus.Alt.Spitzabrechnung) { var treport = subreport as BfpDus.Alt.Spitzabrechnung; if (treport != null) { ansprechpartner.AppendLine(treport.SettlementRo.InvoiceDate); ansprechpartner.AppendLine(); ansprechpartner.AppendLine("Frau Aust"); ansprechpartner.AppendLine("Tel.: 0211/88 000 99"); ansprechpartner.AppendLine("Fax.: 0211/88 000 97"); ansprechpartner.Append("aust@bfp-dus.de"); if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientOrganisation)) { anschrift.AppendLine(treport.SettlementRo.RecipientOrganisation); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientContactPerson)) { anschrift.AppendLine(treport.SettlementRo.RecipientContactPerson); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientDivision)) { anschrift.AppendLine(treport.SettlementRo.RecipientDivision); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientStreet)) { anschrift.AppendLine(treport.SettlementRo.RecipientStreet); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientPostCodeAndTown)) { anschrift.AppendLine(treport.SettlementRo.RecipientPostCodeAndTown); } } } else if (subreport is BfpDus.Spitzabrechnung) { var treport = subreport as BfpDus.Spitzabrechnung; if (treport != null) { ansprechpartner.AppendLine(String.Format("{0:dd.MM.yyyy}", treport.SettlementRo.InvoiceDate)); ansprechpartner.AppendLine(); ansprechpartner.AppendLine("Frau Aust"); ansprechpartner.AppendLine("Tel.: 0211/88 000 99"); ansprechpartner.AppendLine("Fax.: 0211/88 000 97"); ansprechpartner.Append("aust@bfp-dus.de"); if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientOrganisation)) { anschrift.AppendLine(treport.SettlementRo.RecipientOrganisation); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientContactPerson)) { anschrift.AppendLine(treport.SettlementRo.RecipientContactPerson); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientDivision)) { anschrift.AppendLine(treport.SettlementRo.RecipientDivision); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientStreet)) { anschrift.AppendLine(treport.SettlementRo.RecipientStreet); } if (!String.IsNullOrEmpty(treport.SettlementRo.RecipientPostCodeAndTown)) { anschrift.AppendLine(treport.SettlementRo.RecipientPostCodeAndTown); } } } var report = new Briefkopf(); report.SetSubReport(subreport, anschrift.ToString(), ansprechpartner.ToString()); report.DisplayName = "Spitzabrechnung"; return report; } public override XtraReport CreateCustomerInvoiceReport(long invoiceOid) { var subreport = base.CreateCustomerInvoiceReport(invoiceOid); StringBuilder anschrift = new StringBuilder(); StringBuilder ansprechpartner = new StringBuilder(); var treport = subreport as BfpDus.InvoiceCustomerReport; if (treport != null) { ansprechpartner.AppendLine(treport.InvoiceCustomerRo.InvoiceDate); ansprechpartner.AppendLine(); ansprechpartner.AppendLine("Frau Aust"); ansprechpartner.AppendLine("Tel.: 0211/88 000 99"); ansprechpartner.AppendLine("Fax.: 0211/88 000 97"); ansprechpartner.Append("aust@bfp-dus.de"); if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientOrganisation)) { anschrift.AppendLine(treport.InvoiceCustomerRo.RecipientOrganisation); } if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientDivision)) { anschrift.AppendLine(treport.InvoiceCustomerRo.RecipientDivision); } if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientSalutationAddressField)) { anschrift.AppendLine(treport.InvoiceCustomerRo.RecipientSalutationAddressField); } if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientFirstName) || !String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientLastName)) { anschrift.AppendLine(String.Format("{0} {1}", treport.InvoiceCustomerRo.RecipientFirstName, treport.InvoiceCustomerRo.RecipientLastName).Trim()); } if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientStreet)) { anschrift.AppendLine(treport.InvoiceCustomerRo.RecipientStreet); } if (!String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientPostCode) || !String.IsNullOrEmpty(treport.InvoiceCustomerRo.RecipientTown)) { anschrift.AppendLine(String.Format("{0} {1}", treport.InvoiceCustomerRo.RecipientPostCode, treport.InvoiceCustomerRo.RecipientTown).Trim()); } } var report = new Briefkopf(); report.SetSubReport(subreport, anschrift.ToString(), ansprechpartner.ToString()); report.DisplayName = "Rechnung"; return report; } public override XtraReport CreateServiceInvoiceReport(string dcIds, long? invoiceBaseOid) { XtraReport allReports = null; if (String.IsNullOrEmpty(dcIds) && invoiceBaseOid.HasValue) { var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid.Value); dcIds = String.Format("{0}", serviceInvoice.Oid); } if (!string.IsNullOrEmpty(dcIds)) { var serviceInvoiceOid2CostbearerId = new Dictionary(); var dcList = new List(); var dcidStrs = dcIds.Split(';'); foreach (var oidStr in dcidStrs) { var oid = long.Parse(oidStr); var invoice = DAOFactory.GenericDAO.LoadByID(oid); var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(invoice); dcList.Add(dc); if (serviceInvoiceOid2CostbearerId.ContainsKey(oid)) continue; if (!String.IsNullOrEmpty(invoice.InvoiceBase.InvoiceId)) serviceInvoiceOid2CostbearerId.Add(oid, invoice.InvoiceBase.InvoiceId); else { foreach (var period in invoice.ServiceInvoicePeriodList) { try { if (period.SupportConceptApprovalPeriod != null) { AddCostBearerIdToDict(oid, serviceInvoiceOid2CostbearerId, period.SupportConceptApprovalPeriod.CostBearer2SupportConcept); } foreach (var item in period.InvoiceItemList) { if (item.SupportConceptApprovalPeriodOid.HasValue) { var approvalPeriod = DAOFactory.GenericDAO.LoadByID(item.SupportConceptApprovalPeriodOid.Value); if (approvalPeriod.CostBearer2SupportConcept != null) { AddCostBearerIdToDict(oid, serviceInvoiceOid2CostbearerId, approvalPeriod.CostBearer2SupportConcept); } } } } catch (Exception) { //ignore } } } } foreach (var iDC in dcList) { String reportId = null; if (serviceInvoiceOid2CostbearerId.ContainsKey(iDC.ServiceInvoiceOid.Value)) reportId = serviceInvoiceOid2CostbearerId[iDC.ServiceInvoiceOid.Value]; IBeWoReport singleReport = FindReportImp(reportId); singleReport.SetReportDataSource(ServiceInvoiceRO.Create(iDC)); var briefkopf = CreateReportMitBriefkopf(singleReport); if (allReports == null) allReports = briefkopf; else allReports.Pages.AddRange(briefkopf.Pages); } } allReports.DisplayName = "Rechnung"; allReports.CreateDocument(); return allReports; } private Briefkopf CreateReportMitBriefkopf(IBeWoReport subreport) { StringBuilder anschrift = new StringBuilder(); StringBuilder ansprechpartner = new StringBuilder(); var treport = subreport as BfpDus.ServiceInvoiceReport; if (treport != null) { ansprechpartner.AppendLine(treport.ServiceInvoiceRo.InvoiceDate); ansprechpartner.AppendLine(); ansprechpartner.AppendLine("Frau Aust"); ansprechpartner.AppendLine("Tel.: 0211/88 000 99"); ansprechpartner.AppendLine("Fax.: 0211/88 000 97"); ansprechpartner.Append("aust@bfp-dus.de"); if (!String.IsNullOrEmpty(treport.ServiceInvoiceRo.RecipientOrganisation)) { anschrift.AppendLine(treport.ServiceInvoiceRo.RecipientOrganisation); } if (!String.IsNullOrEmpty(treport.ServiceInvoiceRo.RecipientContactPerson)) { anschrift.AppendLine(treport.ServiceInvoiceRo.RecipientContactPerson); } if (!String.IsNullOrEmpty(treport.ServiceInvoiceRo.RecipientDivision)) { anschrift.AppendLine(treport.ServiceInvoiceRo.RecipientDivision); } if (!String.IsNullOrEmpty(treport.ServiceInvoiceRo.RecipientStreet)) { anschrift.AppendLine(treport.ServiceInvoiceRo.RecipientStreet); } if (!String.IsNullOrEmpty(treport.ServiceInvoiceRo.RecipientPostCodeAndTown)) { anschrift.AppendLine(treport.ServiceInvoiceRo.RecipientPostCodeAndTown); } } var report = new Briefkopf(); report.SetSubReport(subreport as XtraReport, anschrift.ToString(), ansprechpartner.ToString()); return report; } } }