138 lines
6.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|