Files
BeWoPlaner/ReportImp/GrundsteinEV/CustomReportCreator.cs
2022-05-13 10:37:20 +02:00

159 lines
4.7 KiB
C#

using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
namespace GrundsteinEV
{
public class CustomReportCreator : DefaultReportCreator
{
//Die haben zwei Quittierungsbelege - mit Unterschrift vom Klient pro Termin und einen mit nur einer Unterschrift
//beide sollen auch als Leerformulare gedruckt werden können -> 4 Einträge in reporttemplate auf deren Datenbank
public override XtraReport CreateSettlementReport(string dcId, long? invoiceBaseOid)
{
return base.CreateSettlementReport(dcId, invoiceBaseOid, true);
}
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid, true);
if (lROs.Count > 0)
{
XtraReport rootReport = null;
var reports = CreateServicesOverviewReportsForRo(lROs[0], serviceCategoryOid);
rootReport = reports[0];
rootReport.CreateDocument();
for (int i = 1; i < reports.Count; i++)
{
var lNext = reports[i];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
for (int i = 1; i < lROs.Count; i++)
{
var lNextReports = CreateServicesOverviewReportsForRo(lROs[i], serviceCategoryOid);
for (int j = 0; j < lNextReports.Count; j++)
{
var lNext = lNextReports[j];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
if (TemplateOid == 2 || TemplateOid == 4)
CheckeHilfeplan(ro);
var reports = CreateServicesOverviewReportsForRo(ro, serviceCategoryOid);
if (reports.Count == 1)
{
return reports[0];
}
if (reports.Count > 1)
{
var rootReport = reports[0];
rootReport.CreateDocument();
for (int i = 1; i < reports.Count; i++)
{
var lNext = reports[i];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
private IList<XtraReport> CreateServicesOverviewReportsForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
IList<XtraReport> reports = new List<XtraReport>();
if (TemplateOid.HasValue && TemplateOid.Value == 1 || TemplateOid.Value == 2)
{
IBeWoReport<ServicesOverviewRO> report = new GrundsteinEV.QuittierungsbelegMitHandzeichen();
if (TemplateOid.Value == 2)
{
ro.Services = new List<ServicesOverviewRO.ServiceDetail>();
for (int i = 0; i < 11; i++)
{
ro.Services.Add(new ServicesOverviewRO.ServiceDetail());
}
}
report.SetReportDataSource(ro);
reports.Add(report as XtraReport);
}
if (TemplateOid.HasValue && TemplateOid.Value == 3 || TemplateOid.Value == 4)
{
IBeWoReport<ServicesOverviewRO> report = new GrundsteinEV.Quittierungsbeleg();
if (TemplateOid.Value == 4)
{
ro.Services = new List<ServicesOverviewRO.ServiceDetail>();
for (int i = 0; i < 11; i++)
{
ro.Services.Add(new ServicesOverviewRO.ServiceDetail());
}
}
report.SetReportDataSource(ro);
reports.Add(report as XtraReport);
}
if (TemplateOid.HasValue && TemplateOid.Value == 5)
{
IBeWoReport<ServicesOverviewRO> report = new GrundsteinEV.Betreuungsverlauf();
report.SetReportDataSource(ro);
reports.Add(report as XtraReport);
}
return reports;
}
private void CheckeHilfeplan(ServicesOverviewRO ro)
{
if (ro.CostBearer2SupportConceptList.Count == 0)
{
//Suche Hilfeplan
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(ro.CustomerOid);
foreach (var sc in customer.SupportConcepts)
{
foreach (var c2s in sc.CostBearer2SupportConceptList)
{
if (c2s.StartDate.HasValue && c2s.EndDate.HasValue && c2s.StartDate.Value < ro.EndDate && c2s.EndDate.Value >= ro.StartDate)
{
ro.ReferenceNumber = c2s.CustomerReferenceNumber;
foreach (var ap in c2s.ApprovalPeriodList)
{
if (ap.ApprovedBETotal.HasValue)
{
ro.ApprovedFLSPerWeekTotal = ap.ApprovedBETotal.Value;
}
else if (ap.ApprovedBEPerInterval.HasValue)
{
ro.ApprovedFLSPerWeekTotal = ap.ApprovedBEPerInterval.Value;
}
}
}
}
}
}
}
}
}