using System; using System.Collections.Generic; using System.Data; using System.IO; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using DevExpress.XtraReports.UI; namespace Wabe { public class CustomReportCreator : DefaultReportCreator { public override XtraReport CreateServiceInvoiceReport(string dcIds, long? invoiceBaseOid) { if (String.IsNullOrEmpty(dcIds) && invoiceBaseOid.HasValue) { var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid.Value); dcIds = String.Format("{0}", serviceInvoice.Oid); } if (!string.IsNullOrEmpty(dcIds)) { 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); } return CreateInvoiceReport(dcList); } return new XtraReport(); } private XtraReport CreateInvoiceReport(List invoices) { XtraReport allReports = null; foreach (var iDC in invoices) { XtraReport invoiceReport = null; IBeWoReport singleReport = FindReportImp(iDC.InvoiceBase.InvoiceId); if (iDC.InvoiceBase != null && iDC.InvoiceBase.InvoiceId != null && iDC.InvoiceBase.InvoiceId == "RgBezirk") { var ro = ServiceInvoiceRO.Create(iDC); singleReport.SetReportDataSource(ro); ((XtraReport)singleReport).CreateDocument(); var anhang = new Sammelrechnung(); anhang.SetReportDataSource(ro); anhang.CreateDocument(); invoiceReport = anhang; anhang.Pages.AddRange(((XtraReport)singleReport).Pages); invoiceReport = anhang; } else { var ro = ServiceInvoiceRO.Create(iDC); singleReport.SetReportDataSource(ro); ((XtraReport)singleReport).CreateDocument(); invoiceReport = singleReport as XtraReport; } if (allReports == null) allReports = invoiceReport; } return allReports; } } }