159 lines
4.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|