Files
BeWoPlaner/ReportImp/PariMobil/Reporting/CustomReportCreator.cs

138 lines
6.3 KiB
C#

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.DefaultReports;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
namespace PariMobil.Reporting
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceInvoiceReportMitQb(long invoiceBaseOid)
{
var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid);
var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(serviceInvoice);
String reportId = serviceInvoice.InvoiceBase.InvoiceId;
if (String.IsNullOrEmpty(reportId))
{
// Falls InvoiceId nicht existiert
// Gehe jede peroide von ServiceInvoice - ServiceInvoicePeriodList durch
foreach (var period in serviceInvoice.ServiceInvoicePeriodList)
{
if (String.IsNullOrEmpty(reportId) && period.SupportConceptApprovalPeriod != null)
{
// Falls periode - SupportConecptApprovalPeriod nicht leer ist, füge
reportId = period.SupportConceptApprovalPeriod.CostBearer2SupportConcept.CostBearer.ID;
if (String.IsNullOrEmpty(reportId) && period.SupportConceptApprovalPeriod.CostBearer2SupportConcept.CostBearer.IsSingleInvoicePerCustomer)
{
reportId = "Sammelrechnung";
}
}
foreach (var item in period.InvoiceItemList)
{
if (String.IsNullOrEmpty(reportId) && item.SupportConceptApprovalPeriodOid.HasValue)
{
var approvalPeriod =
DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(item.SupportConceptApprovalPeriodOid.Value);
if (approvalPeriod.CostBearer2SupportConcept != null)
{
reportId = approvalPeriod.CostBearer2SupportConcept.CostBearer.ID;
if (String.IsNullOrEmpty(reportId) && approvalPeriod.CostBearer2SupportConcept.CostBearer.IsSingleInvoicePerCustomer)
{
reportId = "Sammelrechnung";
}
}
}
}
}
}
IBeWoReport<ServiceInvoiceRO> invoiceReport = FindReportImp<ServiceInvoiceRO>(reportId);
invoiceReport.SetReportDataSource(ServiceInvoiceRO.Create(dc));
((XtraReport)invoiceReport).CreateDocument();
var qb = CreateBelegeForAssistenz(serviceInvoice.InvoiceBase, dc);
AddReportPagesToMaster(invoiceReport as XtraReport, qb);
return invoiceReport as XtraReport;
}
protected virtual XtraReport CreateBelegeForAssistenz(InvoiceBase invoiceBase, ServiceInvoiceDC dc)
{
if (invoiceBase.CostBearer2SupportConcept != null)
{
var customerOid = invoiceBase.CostBearer2SupportConcept.SupportConcept.Customer.Oid.Value;
long? catOid = null;
if (dc.ServiceInvoicePeriods.Count > 0 && dc.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory != null)
{
catOid = dc.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory.ServiceCategoryOid.Value;
return CreateServiceOverviewReportNew(QBFilterEnum.KlientenAuswahl, customerOid, null, null, null, catOid, invoiceBase.AccountingPeriodStart.Value, invoiceBase.AccountingPeriodEnd.Value, false);
}
}
return null;
}
public override XtraReport CreateSettlementReportMitQB(String dcId, long? invoiceBaseOid)
{
// Override nur für CreateBelegeForSpitzabrechnung - CreateBelegeForInvoice ist in der Basis schreibgeschützt - Auswahl QBs mit nur FLS (Oid = 1)
XtraReport report = null;
String reportId = null;
var lSettlementDC = GetSettlementDC(dcId, invoiceBaseOid);
if (lSettlementDC.CostBearer2SupportConceptOid.HasValue)
{
CostBearer2SupportConcept c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(lSettlementDC.CostBearer2SupportConceptOid.Value);
reportId = c2s.CostBearer.ID;
}
if (lSettlementDC.DifferentHourlyRateCount > 0)
{
IBeWoReport<SettlementRO> lSettlementReport = FindReportImp<SettlementRO>(reportId);
var ro = SettlementRO.Create(lSettlementDC);
lSettlementReport.SetReportDataSource(ro);
report = lSettlementReport as XtraReport;
}
else
{
IBeWoReport<Settlement2RO> lSettlementReport = FindReportImp<Settlement2RO>(reportId);
lSettlementReport.SetReportDataSource(Settlement2RO.Create(lSettlementDC));
report = lSettlementReport as XtraReport;
}
if (lSettlementDC.InvoiceBaseOid.HasValue)
{
var sb = DAOFactory.GenericDAO.LoadByID<InvoiceBase>(lSettlementDC.InvoiceBaseOid.Value);
var qb = CreateBelegeForSpitzabrechnung(sb);
AddReportPagesToMaster(report, qb);
}
return report;
}
protected virtual XtraReport CreateBelegeForSpitzabrechnung(InvoiceBase invoiceBase)
{
if (invoiceBase.CostBearer2SupportConcept != null)
{
var customerOid = invoiceBase.CostBearer2SupportConcept.SupportConcept.Customer.Oid.Value;
//Auswahl QBs mit nur FLS(Oid = 1)
return CreateServiceOverviewReportNew(QBFilterEnum.KlientenAuswahl, customerOid, null, null, null, 1, invoiceBase.AccountingPeriodStart.Value, invoiceBase.AccountingPeriodEnd.Value, false);
}
return null;
}
}
}