Files
BeWoPlaner/ReportImp/CaritasAhlen/CustomReportCreator.cs

328 lines
11 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 DevExpress.XtraReports.Design;
using DevExpress.XtraReports.UI;
namespace CaritasAhlen
{
public class CustomReportCreator : DefaultReportCreator
{
public string lwl = "";
public string zad = "";
public override XtraReport CreateQueryReport(long queryOid, string queryReportId)
{
if (queryOid == 500)
{
lwl = "LWL (Psych)";
zad = "60-9010443.2";
return CreateLwlPruefliste(CreateQueryRO(queryOid, queryReportId));
}
if (queryOid == 501)
{
lwl = "LWL (Sucht)";
zad = "60-9010443.1";
return CreateLwlPruefliste(CreateQueryRO(queryOid, queryReportId));
}
if (queryOid == 502)
{
lwl = "LWL §67";
zad = "60-9021885.1";
return CreateLwlPruefliste(CreateQueryRO(queryOid, queryReportId));
}
return base.CreateQueryReport(queryOid, queryReportId);
}
private LwlPruefliste CreateLwlPruefliste(QueryRO queryRo)
{
var liste = new LwlPruefliste();
if (queryRo.Rows.Count > 0)
{
DateTime start = DateTime.MaxValue;
DateTime end = DateTime.MinValue;
if (queryRo.Rows[0].Field1 != null)
{
DateTime.TryParse(queryRo.Rows[0].Field1.ToString(), out start);
}
if (queryRo.Rows[0].Field2 != null)
{
DateTime.TryParse(queryRo.Rows[0].Field2.ToString(), out end);
}
long? customerOid = null;
if (queryRo.Rows[0].Field3.ToString() == "0")
{
var masterReport = new LwlPruefliste();
//masterReport.CreateDocument();
var customerList = DAOFactory.GenericDAO.GetAllActive<Customer>();
var customerListOrd = customerList.OrderBy(c => c.Person.LastNameFirstName).ToList();
foreach (var c in customerListOrd)
{
var ro = LwlPrueflisteRO.Create(start, end, zad, c.Oid, lwl);
if (ro.ServiceRecords != null && ro.ServiceRecords.Count > 0)
{
try
{
liste = new LwlPruefliste();
//string zad = "";
//if (ro.ServiceRecords != null && ro.ServiceRecords.Count > 0)
//{
// var sr = DAOFactory.GenericDAO.GetByID<ServiceRecord>(ro.ServiceRecords[0].ServiceRecordOid);
// zad = sr.CostBearer2SupportConcept.CostBearer.Organisation.BusinessPartnerId;
//}
//foreach (var sr in ro.ServiceRecords)
//{
// sr.ZadNummer = zad;
//}
liste.SetReportDataSource(ro);
liste.CreateDocument();
masterReport.Pages.AddRange(liste.Pages);
}
catch
{
// ignore - z.B. kein Hilfeplan
}
}
}
return (LwlPruefliste)masterReport;
}
if (queryRo.Rows[0].Field3 != null)
{
if (Int64.TryParse(queryRo.Rows[0].Field3.ToString(), out var oidOut))
{
customerOid = oidOut;
}
var ro = LwlPrueflisteRO.Create(start, end, zad, customerOid, lwl);
//if (ro.ServiceRecords != null && ro.ServiceRecords.Count > 0)
//{
// var sr = DAOFactory.GenericDAO.GetByID<ServiceRecord>(ro.ServiceRecords[0].ServiceRecordOid);
// zad = sr.CostBearer2SupportConcept.CostBearer.Organisation.BusinessPartnerId;
//}
//foreach (var sr in ro.ServiceRecords)
//{
// sr.ZadNummer = zad;
//}
liste.SetReportDataSource(ro);
return liste;
}
}
return liste;
}
public override XtraReport CreateSettlementReport(string dcId, long? invoiceBaseOid)
{
return base.CreateSettlementReport(dcId, invoiceBaseOid, true);
}
public override XtraReport CreateEmployeeHourReport(long? employeeOid, IList<long> teamOids, DateTime startDate, DateTime endDate, int ansicht)
{
if (ansicht == 2)
{
var jreport = new MitarbeiterstundenkontoJahr();
var jahrStart = new DateTime(startDate.Year, 1, 1);
var ds = new MitarbeiterstundenkontoMonateRO(employeeOid, teamOids, jahrStart, endDate, null);
jreport.SetReportDataSource(ds);
return jreport as XtraReport;
}
var x = MitarbeiterstundenkontoRO.Create(employeeOid, teamOids, startDate, endDate, null);
IBeWoReport<MitarbeiterstundenkontoRO> report;
if (ansicht == 0)
{
if (teamOids != null && teamOids.Count > 0)
{
report = FindReportImp<MitarbeiterstundenkontoRO>("Teamstundenkonto");
}
else
{
report = new MitarbeiterstundenkontoMonat();
}
}
else
{
report = new Mitarbeiterstundenkonto();
}
report.SetReportDataSource(x);
return report as XtraReport;
}
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);
if (lROs.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
if (rootReport.Pages.Count == 0)
{
rootReport.CreateDocument();
}
for (int i = 1; i < lROs.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
if (lNext.Pages.Count == 0)
{
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);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
}
public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, string reportId)
{
return CreateServicesOverviewReportForRo(ro, null);
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
IBeWoReport<ServicesOverviewRO> report = null;
bool is67 = false;
String kt = "";
if (!String.IsNullOrWhiteSpace(ro.Costbearer))
{
kt = ro.Costbearer.Trim();
}
if (kt.Contains("67"))
{
is67 = true;
}
if (!is67)
{
foreach (var s in ro.Services)
{
if (s.ServiceCategory.Contains("§67"))
{
is67 = true;
}
}
}
if (is67)
{
return Create67ReportForRo(ro, serviceCategoryOid);
}
report = new CaritasAhlen.Stundenzettel();
report.SetReportDataSource(ro);
return report as XtraReport;
}
private XtraReport Create67ReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
XtraReport report = null;
ServicesOverviewRO direktRo = ServicesOverviewRO.CopyFromRO(ro);
direktRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
ServicesOverviewRO indirektRo = ServicesOverviewRO.CopyFromRO(ro);
indirektRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
if (s.IsBillable)
{
if (s.ServiceCategory.Contains("§67"))
{
indirektRo.Services.Add(s);
}
else
{
direktRo.Services.Add(s);
}
}
}
}
report = AddReportToReport(report, direktRo, false);
report = AddReportToReport(report, indirektRo, true);
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private XtraReport AddReportToReport(XtraReport report, ServicesOverviewRO ro, bool is67)
{
if (ro.Services.Count > 0)
{
if (report == null)
{
if (is67)
{
report = new Stundenzettel67();
((Stundenzettel67)report).SetReportDataSource(ro);
}
else
{
report = new Stundenzettel67Direkt();
((Stundenzettel67Direkt)report).SetReportDataSource(ro);
}
}
else
{
if (report.Pages.Count == 0)
{
report.CreateDocument();
}
XtraReport newReport = null;
if (is67)
{
newReport = new Stundenzettel67();
((Stundenzettel67)newReport).SetReportDataSource(ro);
}
else
{
newReport = new Stundenzettel67Direkt();
((Stundenzettel67Direkt)newReport).SetReportDataSource(ro);
}
if (newReport != null)
{
newReport.CreateDocument();
report.Pages.AddRange(newReport.Pages);
}
}
}
return report;
}
}
}