Files
BeWoPlaner/ReportImp/LebenshilfeFrankfurtOder/CustomReportCreator.cs

1601 lines
60 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.XtraReports.UI;
using LebenshilfeFrankfurtOder.Invoicing;
using LebenshilfeFrankfurtOder.Reporting;
namespace LebenshilfeFrankfurtOder
{
public class CustomReportCreator : DefaultReportCreator
{
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);
if (lROs.Count > 0)
{
var rootReport = CreateHortLeistungsnachweis(lROs);
if (rootReport.Pages.Count == 0)
{
rootReport.CreateDocument();
}
for (int i = 0; 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 CreateServiceOverviewReportForCustomers(IList<long> customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
var roList = new List<ServicesOverviewRO>();
foreach (var coid in customerOids)
{
var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
if (ro != null)
{
roList.Add(ro);
}
}
var sortedList = roList.OrderBy(r => r.CustomerLastName + ", " + r.CustomerFirstName).ToList();
if (sortedList.Count > 0)
{
var rootReport = CreateHortLeistungsnachweis(sortedList);
if (rootReport.Pages.Count == 0)
{
rootReport.CreateDocument();
}
for (int i = 0; i < sortedList.Count; i++)
{
var lNext = CreateReportForServicesOverviewRo(sortedList[i], null);
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);
}
public XtraReport CreateHortLeistungsnachweis(List<ServicesOverviewRO> ros)
{
XtraReport report = null;
;
ServicesOverviewRO hortRo = CreateHortSammelRo(ros);
if (hortRo != null)
{
report = AddReportToReport(report, new LeistungsnachweisHortbetreuung(), hortRo);
}
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private ServicesOverviewRO CreateHortSammelRo(List<ServicesOverviewRO> ros)
{
if (ros.Count > 0)
{
ServicesOverviewRO ffoRo = null;
foreach (var ro in ros)
{
if (!String.IsNullOrEmpty(ro.Costbearer) && ro.Costbearer.Contains("Stadt Frankfurt") && ro.Costbearer.Contains("Oder"))
{
ffoRo = ro;
}
}
if (ffoRo == null)
{
ffoRo = ros[0];
}
ServicesOverviewRO hortRo = CopyFromRO(ffoRo);
foreach (var ro in ros)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
var cat = s.ServiceCategory.ToLower().Replace(" ", "");
if (cat.Contains("alternativeshort") && !s.ServiceDescription.Contains("Ferien"))
{
s.Notice = ro.CustomerName;
hortRo.Services.Add(s);
}
}
}
hortRo.Services = hortRo.Services.OrderBy(s => s.StartDate).ToList();
return hortRo;
}
return null;
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
XtraReport report = null;
ServicesOverviewRO entRo = CopyFromRO(ro);
ServicesOverviewRO kurzRo = CopyFromRO(ro);
ServicesOverviewRO verRo = CopyFromRO(ro);
ServicesOverviewRO abwRo = CopyFromRO(ro);
ServicesOverviewRO efhRo = CopyFromRO(ro);
ServicesOverviewRO bbMbRo = CopyFromRO(ro);
//ServicesOverviewRO hortRo = CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
if (s.IsBillable && !s.ServiceDescription.Contains("Kurskosten") && !s.ServiceDescription.Contains("Mittag"))
{
ServicesOverviewRO.CreateSignatureString(s);
var newServices = new List<ServicesOverviewRO.ServiceDetail>();
var days = s.EndDate.Date.Subtract(s.StartDate.Date).Days;
if (days > 0)
{
var lastService = s;
DateTime totalEnd = s.EndDate;
var newEnd = s.StartDate.Date.AddDays(1).AddMinutes(-1);
s.EndDate = newEnd;
s.TimeRangeString = String.Format("{0:HH:mm} - {1:HH:mm}", s.StartDate, s.EndDate);
for (int i = 0; i < days; i++)
{
DateTime newStart = newEnd.AddMinutes(1);
newEnd = newStart.Date.AddDays(1).AddMinutes(-1); ;
if (newEnd > totalEnd)
{
newEnd = totalEnd;
}
var newService = new ServicesOverviewRO.ServiceDetail();
newService.StartDate = newStart;
newService.EndDate = newEnd;
newService.CostBearer = s.CostBearer;
newService.CustomerCount = s.CustomerCount;
newService.EmployeeAbbr = s.EmployeeAbbr;
newService.EmployeeCount = s.EmployeeCount;
newService.EmployeeFirstName = s.EmployeeFirstName;
newService.EmployeeLastName = s.EmployeeLastName;
newService.EmployeeNameCommaSeparated = s.EmployeeNameCommaSeparated;
newService.EmployeeOid = s.EmployeeOid;
newService.EmployeeFullname = s.EmployeeFullname;
newService.EndDateNotRounded = s.EndDateNotRounded;
newService.FLSQualified = s.FLSQualified;
newService.FLSQualifiedString = s.FLSQualifiedString;
newService.FLSUnqualified = s.FLSUnqualified;
newService.Minutes = s.Minutes;
newService.Notice = s.Notice;
newService.Notice2 = s.Notice2;
newService.Notice3 = s.Notice3;
newService.Notice4 = s.Notice4;
newService.Notice5 = s.Notice5;
newService.ServiceCategory = s.ServiceCategory;
newService.ServiceDescription = s.ServiceDescription;
newService.GefahreneKilometer = s.GefahreneKilometer;
newService.IsBillable = s.IsBillable;
newService.ServiceRecordOid = s.ServiceRecordOid;
newService.TimeRangeString = String.Format("{0:HH:mm} - {1:HH:mm}", newService.StartDate, newService.EndDate);
newServices.Add(newService);
}
}
var cat = s.ServiceCategory.ToLower().Replace(" ", "");
if (cat.Contains("§45"))
{
entRo.Services.Add(s);
entRo.Services.AddRange(newServices);
}
else if (cat.Contains("§42"))
{
kurzRo.Services.Add(s);
kurzRo.Services.AddRange(newServices);
}
else if (cat.Contains("§39"))
{
verRo.Services.Add(s);
verRo.Services.AddRange(newServices);
}
else if (cat.Contains("fachleistungsstundenabw") ||cat.Contains("flsabw"))
{
abwRo.Services.Add(s);
abwRo.Services.AddRange(newServices);
}
else if (cat.Contains("schulbegleitung"))
{
efhRo.Services.Add(s);
efhRo.Services.AddRange(newServices);
}
else if (cat.Contains("besonderewohnformwstbbmb"))
{
bbMbRo.Services.Add(s);
bbMbRo.Services.AddRange(newServices);
}
//else if (cat.Contains("hortangebot"))
//{
// hortRo.Services.Add(s);
// hortRo.Services.AddRange(newServices);
//}
}
}
}
report = AddReportToReport(report, new LeistungsnachweisVerhinderungspflege(), verRo);
report = AddReportToReport(report, new LeistungsnachweisKurzzeitpflege(), kurzRo);
report = AddReportToReport(report, new LeistungsnachweisEntlastungsleistungen(), entRo);
report = AddReportToReport(report, new LeistungsnachweisAbw(), abwRo);
report = AddReportToReport(report, new AnwesenheitslisteSchulbegleitung(), efhRo);
report = AddReportToReport(report, new LeistungsnachweisBesondereWohnform(), bbMbRo);
//report = AddReportToReport(report, new LeistungsnachweisHortbetreuung(), hortRo);
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private ServicesOverviewRO CopyFromRO(ServicesOverviewRO ro)
{
ServicesOverviewRO newRo = new ServicesOverviewRO();
newRo.StartDate = ro.StartDate;
newRo.Abwesenheiten = ro.Abwesenheiten;
newRo.AbsenceTimes = ro.AbsenceTimes;
newRo.ApprovedEndDate = ro.ApprovedEndDate;
newRo.ApprovedFLSPerMonth = ro.ApprovedFLSPerMonth;
newRo.ApprovedFLSPerMonthTotal = ro.ApprovedFLSPerMonthTotal;
newRo.ApprovedFLSPerWeek = ro.ApprovedFLSPerWeek;
newRo.ApprovedFLSPerWeekTotal = ro.ApprovedFLSPerWeekTotal;
newRo.ApprovedFLSTotal = ro.ApprovedFLSTotal;
newRo.ApprovedStartDate = ro.ApprovedStartDate;
newRo.ContactEmployee = ro.ContactEmployee;
newRo.CostBearer2SupportConceptList = ro.CostBearer2SupportConceptList;
newRo.Costbearer = ro.Costbearer;
newRo.CustomerBirthday = ro.CustomerBirthday;
newRo.CustomerLastName = ro.CustomerLastName;
newRo.CustomerCity = ro.CustomerCity;
newRo.CustomerFirstName = ro.CustomerFirstName;
newRo.CustomerName = ro.CustomerName;
newRo.CustomerPostalCode = ro.CustomerPostalCode;
newRo.CustomerStreet = ro.CustomerStreet;
newRo.EndDate = ro.EndDate;
newRo.FreeMinutesThisMonth = ro.FreeMinutesThisMonth;
newRo.Month = ro.Month;
newRo.Year = ro.Year;
newRo.MainAttendant = ro.MainAttendant;
newRo.MainAttendantCommaSeperated = ro.MainAttendantCommaSeperated;
newRo.ReferenceNumber = ro.ReferenceNumber;
newRo.TotalFLMBillable = ro.TotalFLMBillable;
newRo.TotalFLM = ro.TotalFLM;
newRo.TotalFLMQualified = ro.TotalFLMQualified;
newRo.TotalFLMUnqualified = ro.TotalFLMUnqualified;
newRo.TotalFLS = ro.TotalFLS;
newRo.TotalFLSQualified = ro.TotalFLSQualified;
newRo.TotalFLSUnqualified = ro.TotalFLSUnqualified;
newRo.TotalFLSPerCostBearer = ro.TotalFLSPerCostBearer;
newRo.TotalGefahreneKilometer = ro.TotalGefahreneKilometer;
newRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
newRo.Mandator = ro.Mandator;
return newRo;
}
private XtraReport AddReportToReport(XtraReport masterReport, IBeWoReport<ServicesOverviewRO> newReport, ServicesOverviewRO ro)
{
if (ro.Services.Count > 0)
{
newReport.SetReportDataSource(ro);
((XtraReport)newReport).CreateDocument();
if (masterReport == null)
{
masterReport = newReport as XtraReport;
}
else
{
if (masterReport.Pages.Count == 0)
{
masterReport.CreateDocument();
}
masterReport.Pages.AddRange(((XtraReport)newReport).Pages);
}
}
return masterReport;
}
public override XtraReport CreateAdditionalServiceBookingReport(long addServiceRegionOid, Monat month, int year)
{
IBeWoReport<AdditionalServiceBookingRO> report = null;
var region = DAOFactory.GenericDAO.LoadByID<AdditionalServiceRegion>(addServiceRegionOid);
//var service = region.Name;
var ro = AdditionalServiceBookingRO.Create(region, month, year);
if (region.AdditionalService.Name.ToLower().Contains("wohnform"))
{
if (region.Name.Contains("Verpflegung"))
report = new AnwesenheitVerpflegung();
else
report = new AnwesenheitWohnstaette();
}
else if (region.AdditionalService.Name.ToLower().Contains("ferien"))
{
report = new AnwesenheitFerien();
}
else if (region.AdditionalService.Name.ToLower().Contains("familienentlastend"))
{
report = new AnwesenheitSbdPool();
}
else if (region.AdditionalService.Name.Contains("aBA"))
{
return CreateAnwesenheitslisteFruehUndSpaetbetreuung(ro, true);
}
if (report == null)
{
report = new AdditionalServiceBookingReport();
}
report.SetReportDataSource(ro);
return report as XtraReport;
}
private XtraReport CreateAnwesenheitslisteFruehUndSpaetbetreuung(AdditionalServiceBookingRO asbRo, bool addEinzelnachweise)
{
var report = new AnwesenheitslisteFruehUndSpaetbetreuung();
report.SetReportDataSource(asbRo);
if (addEinzelnachweise)
{
report.CreateDocument();
foreach (var row in asbRo.Rows)
{
var lnRO = LeistungsnachweisSGBIXRO.Create(asbRo, row);
var leistungsnachweis = new LeistungsnachweisSGBIX();
leistungsnachweis.SetReportDataSource(lnRO);
leistungsnachweis.CreateDocument();
report.Pages.AddRange(leistungsnachweis.Pages);
}
}
return report as XtraReport;
}
public override XtraReport CreateServiceInvoiceReport(string dcIds, long? invoiceBaseOid)
{
if (invoiceBaseOid.HasValue)
{
var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid.Value);
dcIds = String.Format("{0}", serviceInvoice.Oid);
}
if (!string.IsNullOrEmpty(dcIds))
{
var dcList = new List<ServiceInvoiceDC>();
var dcidStrs = dcIds.Split(';');
foreach (var oidStr in dcidStrs)
{
var oid = long.Parse(oidStr);
var invoice = DAOFactory.GenericDAO.LoadByID<ServiceInvoice>(oid);
var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(invoice);
dcList.Add(dc);
}
return CreateInvoiceReport(dcList);
}
return new XtraReport();
}
public override XtraReport CreateQueryReport(long queryOid, string queryReportId)
{
if (queryOid == 1000)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.Tagesstruktur, false);
}
if (queryOid == 1010)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.Tagesstruktur, true);
}
if (queryOid == 1100)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.WST, false);
}
if (queryOid == 1110)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.WST, true);
}
if (queryOid == 1200)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.FED, false);
}
if (queryOid == 1210)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.FED, true);
}
if (queryOid == 1300)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.ABW, false);
}
if (queryOid == 1310)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.ABW, true);
}
if (queryOid == 1400)
{
return CreateAbrechnung(queryOid, queryReportId, AbrechnungsEnum.BesondereWohnform, false);
}
return base.CreateQueryReport(queryOid, queryReportId);
}
private XtraReport CreateAbrechnung(long queryOid, string queryReportId, AbrechnungsEnum abrechnungsArt, bool useCustomer)
{
XtraReport invoiceReport = null;
var query = DAOFactory.GenericDAO.LoadByID<Query>(queryOid);
if (query == null)
return new XtraReport();
var path = Path.Combine(TempPath, queryReportId + ".xml");
var table = BS.Shared.Core.Utils.XMLDeserialize<DataTable>(path);
var qro = QueryRO.Create(query, table);
if (qro.Rows.Count > 0)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(qro.Rows[0].Field1.ToString(), out dt);
DateTime start = new DateTime(dt.Year, dt.Month, 1);
long? customerOid = null;
if (useCustomer)
{
long oid = 0;
if (Int64.TryParse(qro.Rows[0].Field2.ToString(), out oid))
{
customerOid = oid;
}
}
long serviceCategoryOid = 0;
ServiceCategory cat = null;
if (abrechnungsArt == AbrechnungsEnum.FED || abrechnungsArt == AbrechnungsEnum.ABW)
{
long oid = 0;
var str = qro.Rows[0].Field2.ToString();
if (useCustomer)
{
str = qro.Rows[0].Field3.ToString();
}
if (Int64.TryParse(str, out oid) && oid > 0)
{
serviceCategoryOid = oid;
cat = DAOFactory.GenericDAO.LoadByID<ServiceCategory>(serviceCategoryOid);
}
}
List<ServiceInvoiceDC> invoices = null;
if (abrechnungsArt == AbrechnungsEnum.Tagesstruktur)
{
invoices = CreateAbrechnungTagesstruktur(start, start.AddMonths(1).AddTicks(-1), customerOid);
}
else if (abrechnungsArt == AbrechnungsEnum.WST)
{
invoices = CreateAbrechnungWst(start, start.AddMonths(1).AddTicks(-1), customerOid);
}
else if (abrechnungsArt == AbrechnungsEnum.FED)
{
invoices = CreateAbrechnungFed(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
if (cat != null && cat.Name.Contains("Schulbegleitung"))
{
var invoices2 = CreateAbrechnungEinzelfallhilfe(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
invoices.AddRange(invoices2);
}
if (cat != null && cat.Name.Contains("Alternatives Hort"))
{
var invoices3 = CreateAbrechnungHortbetreuung(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
invoices.AddRange(invoices3);
}
if (cat != null && cat.Name.Contains("Pool"))
{
var invoices4 = CreateAbrechnungSbdPool(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
invoices.AddRange(invoices4);
}
}
else if (abrechnungsArt == AbrechnungsEnum.Einzelfallhilfe)
{
// invoices = CreateAbrechnungEinzelfallhilfe(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
}
else if (abrechnungsArt == AbrechnungsEnum.ABW)
{
invoices = CreateAbrechnungAbw(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
}
else if (abrechnungsArt == AbrechnungsEnum.BesondereWohnform)
{
serviceCategoryOid = 78;// Oid von Besondere Wohnform WST bbMb
invoices = CreateAbrechnungBesondereWohnform(start, start.AddMonths(1).AddTicks(-1), customerOid, serviceCategoryOid);
}
List<ServiceInvoiceDC> reallyNewInvoices = null;
if (customerOid.HasValue)
{
reallyNewInvoices = invoices;
}
else
{
#if DEBUG
reallyNewInvoices = invoices;
//reallyNewInvoices = GetNewInvoices(invoices, start, start.AddMonths(1).AddTicks(-1));
#else
reallyNewInvoices = GetNewInvoices(invoices, start, start.AddMonths(1).AddTicks(-1));
#endif
}
List<ServiceInvoice> newInvoices = new List<ServiceInvoice>();
if (reallyNewInvoices.Count > 0)
{
int count = 0;
var inc = PluginLoader.FindClass<InvoiceNumberGenerator>();
foreach (var iDC in reallyNewInvoices)
{
var i = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewEntity(iDC);
newInvoices.Add(i);
var nextNumber = inc.GetNextInvoiceNumber(count, i.InvoiceBase);
if (!String.IsNullOrEmpty(nextNumber))
{
i.InvoiceBase.InvoiceNumber = nextNumber;
iDC.InvoiceBase.InvoiceNumber = nextNumber;
count++;
}
i.InsTs = DateTime.Now;
i.UpdTs = DateTime.Now;
i.InvoiceBase.InsTs = i.InsTs;
i.InvoiceBase.UpdTs = i.UpdTs;
ApplicationUser loggedInUser = null;
if (LoggedInUserOperationContextExt.Current != null &&
LoggedInUserOperationContextExt.Current.User != null)
{
loggedInUser = LoggedInUserOperationContextExt.Current.User;
}
else
{
loggedInUser = SessionFacade.LoggedInUser;
}
if (loggedInUser != null)
{
i.InsUser = loggedInUser.Employee.Person.FirstName + " " + loggedInUser.Employee.Person.LastName;
i.UdpUser = i.InsUser;
i.InvoiceBase.InsUser = i.InsUser;
i.InvoiceBase.UdpUser = i.UdpUser;
}
}
if (newInvoices.Count > 0)
{
DAOFactory.GenericDAO.Insert(newInvoices);
if (count > 0)
{
inc.IncreaseInvoiceNumber(count, null);
}
}
}
invoiceReport = CreateInvoiceReport(reallyNewInvoices);
}
if (invoiceReport == null)
{
invoiceReport = new XtraReport();
}
return invoiceReport;
}
private List<ServiceInvoiceDC> GetNewInvoices(List<ServiceInvoiceDC> invoices, DateTime start, DateTime end)
{
List<ServiceInvoiceDC> newInvoices = new List<ServiceInvoiceDC>();
var existingInvoices = DAOFactory.SearchDAO.GetInvoiceBases(start, end, false);
foreach (var si in invoices)
{
bool exist = false;
foreach (var i2 in existingInvoices)
{
if (si.InvoiceBase.InvoiceId == i2.InvoiceId && si.InvoiceBase.Type == i2.Type)
{
if (si.InvoiceBase.SupportConceptCostBearerRelDc != null &&
si.InvoiceBase.RecipientCustomerOid.HasValue)
{
if (si.InvoiceBase.SupportConceptCostBearerRelDc.CostBearer2SupportConceptOid == i2.CostBearer2SupportConceptOid &&
si.InvoiceBase.RecipientCustomerOid == i2.RecipientCustomerOid)
{
exist = true;
}
}
else
{
if (i2.InvoiceId == "RechnungFud")
{
if (si.InvoiceBase.SupportConceptCostBearerRelDc != null &&
si.InvoiceBase.SupportConceptCostBearerRelDc.CostBearer2SupportConceptOid ==
i2.CostBearer2SupportConceptOid)
{
exist = true;
}
}
else if (si.InvoiceBase.RecipientOrganisation == i2.RecipientOrganisation &&
si.InvoiceBase.RecipientDivision == i2.RecipientDivision &&
si.InvoiceBase.RecipientPersonFirstName == i2.RecipientPersonFirstName &&
si.InvoiceBase.RecipientPersonLastName == i2.RecipientPersonLastName)
{
if (i2.InvoiceId == "RechnungTagesstruktur")
{
String typAlt = "";
String typNeu = "";
foreach (var sip in si.ServiceInvoicePeriods)
{
foreach (var ii in sip.InvoiceItems)
{
typNeu = ii.ItemDescription;
}
}
var siAlt = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(i2.Oid.Value);
foreach (var sip in siAlt.ServiceInvoicePeriodList)
{
foreach (var ii in sip.InvoiceItemList)
{
typAlt = ii.ItemDescription;
}
}
if (typAlt == typNeu)
{
exist = true;
}
}
else
{
exist = true;
}
}
}
}
}
if (!exist)
{
newInvoices.Add(si);
}
}
return newInvoices;
}
private XtraReport CreateInvoiceReport(List<ServiceInvoiceDC> invoices)
{
XtraReport allReports = null;
foreach (var iDC in invoices)
{
XtraReport invoiceReport = null;
if (iDC.InvoiceBase.InvoiceId == "RechnungTagesstruktur")
{
var seite1 = new RechnungTagesstruktur();
var anhang = new RechnungTagesstrukturAnhang();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
anhang.SetReportDataSource(ro);
anhang.CreateDocument();
foreach (var sip in ro.ServiceInvoicePeriods)
{
var newro = ServiceInvoiceRO.Create(iDC);
newro.ServiceInvoicePeriods = new List<ServiceInvoicePeriodRO>();
newro.ServiceInvoicePeriods.Add(sip);
var anhangKlient = new RechnungTagesstrukturAnhangKlient();
anhangKlient.SetReportDataSource(newro);
anhangKlient.CreateDocument();
seite1.Pages.AddRange(anhangKlient.Pages);
}
seite1.Pages.AddRange(anhang.Pages);
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungWst")
{
IBeWoReport<ServiceInvoiceRO> seite1 = null;
var ro = ServiceInvoiceRO.Create(iDC);
if (ro.ServiceInvoicePeriods != null)
{
ro.ServiceInvoicePeriods.Sort((a, b) => a.Customer.LastNameFirstName.CompareTo(b.Customer.LastNameFirstName));
}
if (ro.ServiceInvoicePeriods != null && ro.ServiceInvoicePeriods.Count == 1)
{
seite1 = new RechnungWstEinzel();
}
else
{
seite1 = new RechnungWst();
}
seite1.SetReportDataSource(ro);
((XtraReport)seite1).CreateDocument();
var anhang = new RechnungWstAnhang();
anhang.SetReportDataSource(ro);
anhang.CreateDocument();
((XtraReport)seite1).Pages.AddRange(anhang.Pages);
// Anhang mit Abwesenheitsliste aus Ergänzende Dienste:
List<long> customerOids = new List<long>();
foreach (var sip in ro.ServiceInvoicePeriods)
{
if (sip.Customer != null)
{
customerOids.Add(sip.Customer.Oid.Value);
}
}
Monat month;
Enum.TryParse(ro.AccountingPeriodStart.Month.ToString(), out month);
var region = DAOFactory.GenericDAO.LoadByID<AdditionalServiceRegion>(16); //OID für Wohnform
var asbro = AdditionalServiceBookingRO.Create(region, month, ro.AccountingPeriodStart.Year);
var anhang2 = new AnwesenheitWohnstaette();
anhang2.SetReportDataSource(asbro, customerOids);
anhang2.CreateDocument();
((XtraReport)seite1).Pages.AddRange(anhang2.Pages);
invoiceReport = seite1 as XtraReport;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungFud")
{
var seite1 = new RechnungFud();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
//if (iDC.InvoiceBase.SupportConceptCostBearerRelDc != null &&
// iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept != null)
//{
// long customerOid = iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept.Customer.CustomerOid;
// int month = iDC.InvoiceBase.AccountingPeriodStart.Value.Month;
// int year = iDC.InvoiceBase.AccountingPeriodStart.Value.Year;
// long? catOid = GetServiceCategory(iDC);
// var qb = CreateServiceOverviewSingleCustomerReport(customerOid, month, year, 0, 0, catOid, 1,
// DateTime.DaysInMonth(year, month));
// qb.CreateDocument();
// seite1.Pages.AddRange(qb.Pages);
//}
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungAbw" || iDC.InvoiceBase.InvoiceId == "RechnungAbwPrivat")
{
var seite1 = new RechnungAbw();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
if (iDC.InvoiceBase.SupportConceptCostBearerRelDc != null &&
iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept != null)
{
long customerOid = iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept.Customer.CustomerOid;
int month = iDC.InvoiceBase.AccountingPeriodStart.Value.Month;
int year = iDC.InvoiceBase.AccountingPeriodStart.Value.Year;
long? catOid = GetServiceCategory(iDC);
var qb = CreateServiceOverviewSingleCustomerReport(customerOid, month, year, 0, 0, catOid, 1,
DateTime.DaysInMonth(year, month));
qb.CreateDocument();
seite1.Pages.AddRange(qb.Pages);
}
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungBesondereWohnform")
{
var seite1 = new RechnungBesondereWohnform();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
if (iDC.InvoiceBase.SupportConceptCostBearerRelDc != null &&
iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept != null)
{
long customerOid = iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept.Customer.CustomerOid;
int month = iDC.InvoiceBase.AccountingPeriodStart.Value.Month;
int year = iDC.InvoiceBase.AccountingPeriodStart.Value.Year;
var qb = CreateServiceOverviewSingleCustomerReport(customerOid, month, year, 0, 0, 78, 1,
DateTime.DaysInMonth(year, month));
qb.CreateDocument();
seite1.Pages.AddRange(qb.Pages);
}
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungEinzelfallhilfe")
{
var seite1 = new RechnungEinzelfallhilfe();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
if (iDC.InvoiceBase.SupportConceptCostBearerRelDc != null &&
iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept != null)
{
long customerOid = iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept.Customer.CustomerOid;
int month = iDC.InvoiceBase.AccountingPeriodStart.Value.Month;
int year = iDC.InvoiceBase.AccountingPeriodStart.Value.Year;
long? catOid = GetServiceCategory(iDC);
var qb = CreateServiceOverviewSingleCustomerReport(customerOid, month, year, 0, 0, catOid, 1,
DateTime.DaysInMonth(year, month));
qb.CreateDocument();
seite1.Pages.AddRange(qb.Pages);
}
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungHort")
{
var seite1 = new RechnungHort();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
int month = iDC.InvoiceBase.AccountingPeriodStart.Value.Month;
int year = iDC.InvoiceBase.AccountingPeriodStart.Value.Year;
long? catOid = GetServiceCategory(iDC);
var qb = CreateServiceOverviewAllCustomersReport(month, year, 0, 0, catOid, 1,
DateTime.DaysInMonth(year, month));
qb.CreateDocument();
seite1.Pages.AddRange(qb.Pages);
// Anhang Anwesenheitsliste Ferien aus "Ergänzende Dienste"
Monat monat;
Enum.TryParse(ro.AccountingPeriodStart.Month.ToString(), out monat);
var region = DAOFactory.GenericDAO.LoadByID<AdditionalServiceRegion>(22); //OID für Ferienbetreuung
var asbro = AdditionalServiceBookingRO.Create(region, monat, ro.AccountingPeriodStart.Year);
var anhang2 = new AnwesenheitFerien();
anhang2.SetReportDataSource(asbro);
anhang2.CreateDocument();
seite1.Pages.AddRange(anhang2.Pages);
invoiceReport = seite1;
}
else if (iDC.InvoiceBase.InvoiceId == "RechnungSbdPool")
{
var seite1 = new RechnungSbdPool();
var ro = ServiceInvoiceRO.Create(iDC);
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
var anhang1 = new RechnungSbdPoolAnhang();
anhang1.SetReportDataSource(ro);
anhang1.CreateDocument();
seite1.Pages.AddRange(anhang1.Pages);
// Anhang Anwesenheitsliste Ferien aus "Ergänzende Dienste"
Monat monat;
Enum.TryParse(ro.AccountingPeriodStart.Month.ToString(), out monat);
long regionOid = 24;
//Prüfe ob Pool 2:
foreach (var sip in ro.ServiceInvoicePeriods)
{
foreach (var item in sip.ServiceInvoiceItems)
{
if (!String.IsNullOrEmpty(item.ServiceDescription) && item.ServiceDescription.Contains("Pool 2"))
{
regionOid = 28;
}
}
}
var region = DAOFactory.GenericDAO.LoadByID<AdditionalServiceRegion>(regionOid); //OID für EFH
var asbro = AdditionalServiceBookingRO.Create(region, monat, ro.AccountingPeriodStart.Year);
var anhang2 = new AnwesenheitSbdPool();
//Anonymisiere Klienten, die nicht mit der Rechnung abgerechnet werden.
int index = 1;
foreach (var row in asbro.Rows)
{
bool klientVorhanden = false;
foreach (var sip in ro.ServiceInvoicePeriods)
{
if (row.CustomerDC.FirstName == sip.Customer.FirstName && row.CustomerDC.LastName == sip.Customer.LastName)
{
klientVorhanden = true;
}
}
if (!klientVorhanden)
{
row.Customer = String.Format("Klient {0}", index);
index++;
}
}
anhang2.SetReportDataSource(asbro);
anhang2.CreateDocument();
seite1.Pages.AddRange(anhang2.Pages);
invoiceReport = seite1;
}
else
{
IBeWoReport<ServiceInvoiceRO> singleReport = FindReportImp<ServiceInvoiceRO>(iDC.InvoiceBase.InvoiceId);
singleReport.SetReportDataSource(ServiceInvoiceRO.Create(iDC));
((XtraReport)singleReport).CreateDocument();
invoiceReport = singleReport as XtraReport;
}
if (allReports == null)
allReports = invoiceReport;
else
{
((XtraReport)allReports).Pages.AddRange(invoiceReport.Pages);
invoiceReport.Watermark.PageRange = "1";
if (invoiceReport.Pages.Count == 0)
{
invoiceReport.CreateDocument();
}
//master.Pages.AddRange(report.Pages);
XRWatermark wm = new XRWatermark();
wm.CopyFrom(invoiceReport.Watermark);
bool firstpage = true;
foreach (var item in invoiceReport.Pages)
{
var page2add = item as DevExpress.XtraPrinting.Page;
if (page2add != null)
{
allReports.Pages.Add(page2add);
if (wm != null && firstpage)
{
var newpage = allReports.Pages[allReports.Pages.Count - 1];
newpage.AssignWatermark(wm);
//newpage.AssignWatermark(page2add.Watermark);
}
}
firstpage = false;
}
}
}
return allReports as XtraReport;
}
private long? GetServiceCategory(ServiceInvoiceDC iDc)
{
if (iDc.ServiceInvoicePeriods != null)
{
foreach (var sip in iDc.ServiceInvoicePeriods)
{
if (sip.InvoiceItems != null)
{
foreach (var ii in sip.InvoiceItems)
{
if (!String.IsNullOrEmpty(ii.Notice))
{
var cat = DAOFactory.SearchDAO.FindServiceCategoryByName(ii.Notice);
if (cat != null)
{
return cat.Oid.Value;
}
}
}
}
}
}
return null;
}
private List<ServiceInvoiceDC> CreateAbrechnungTagesstruktur(DateTime start, DateTime end, long? customerOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
IList<CompactSupportConceptDC> supportConcepts = GetSupportConcepts(start, end, "Tagesstruktur", "pw11813", customerOid, null);
var supportConcepts2ServiceRecords = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var sc in supportConcepts)
{
if (!supportConcepts2ServiceRecords.ContainsKey(sc))
{
supportConcepts2ServiceRecords.Add(sc, new List<ServiceRecordDC>());
}
}
var creator = new TagesstrukturInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungWst(DateTime start, DateTime end, long? customerOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
IList<CompactSupportConceptDC> supportConcepts = GetSupportConcepts(start, end, "besondere Wohnform", "pw110840", customerOid, null);
var supportConcepts2ServiceRecords = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var sc in supportConcepts)
{
if (!supportConcepts2ServiceRecords.ContainsKey(sc))
{
supportConcepts2ServiceRecords.Add(sc, new List<ServiceRecordDC>());
}
}
var creator = new WstInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungFed(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
var quittierungsbelegRos = CreateServiceOverviewsForAbrechnung(start, end, customerOid, serviceCategoryOid);
var supportConcepts2ServiceRecords = CreateSc2ServiceRecordsForAbrechnung(quittierungsbelegRos);
var creator = new FudInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServicesOverviewRO> CreateServiceOverviewsForAbrechnung(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
List<ServicesOverviewRO> quittierungsbelegRos = null;
if (customerOid.HasValue)
{
quittierungsbelegRos = new List<ServicesOverviewRO>();
if (customerOid > 0)
{
var ro = ServicesOverviewRO.Create(customerOid.Value, start.Month, start.Year, true, 0, 0, 1,
DateTime.DaysInMonth(start.Year, start.Month), serviceCategoryOid);
if (ro != null)
{
quittierungsbelegRos.Add(ro);
}
}
}
else
{
quittierungsbelegRos = ServicesOverviewRO.Create(start.Month, start.Year, 0, 0, 1, DateTime.DaysInMonth(start.Year, start.Month), serviceCategoryOid);
}
return quittierungsbelegRos;
}
private Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> CreateSc2ServiceRecordsForAbrechnung(List<ServicesOverviewRO> quittierungsbelegRos)
{
var supportConcepts2ServiceRecords = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var ro in quittierungsbelegRos)
{
if (ro.CostBearer2SupportConceptList != null)
{
foreach (var c2s in ro.CostBearer2SupportConceptList)
{
var flatSc = CreateFlatSupportConcept(c2s.SupportConcept, c2s);
var sList = new List<ServiceRecordDC>();
foreach (var sd in ro.Services)
{
if (sd.ServiceRecordOid > 0)
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(sd.ServiceRecordOid);
bool add = sr.CostBearer2SupportConceptOid == c2s.Oid;
if (ro.CostBearer2SupportConceptList.Count == 1)
{
add = true;
}
if (sd.ServiceCategory.Contains("Alternatives Hort"))
{
add = true;
}
if (add)
{
var srDc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(sr);
sList.Add(srDc);
}
else
{
int tset = 0;
}
}
}
supportConcepts2ServiceRecords.Add(flatSc, sList);
}
}
}
return supportConcepts2ServiceRecords;
}
private List<ServiceInvoiceDC> CreateAbrechnungEinzelfallhilfe(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
List<ServicesOverviewRO> quittierungsbelegRos = CreateServiceOverviewsForAbrechnung(start, end, customerOid, serviceCategoryOid);
var supportConcepts2ServiceRecords = CreateSc2ServiceRecordsForAbrechnung(quittierungsbelegRos);
var creator = new EinzelfallhilfeInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungHortbetreuung(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
List<ServicesOverviewRO> quittierungsbelegRos = CreateServiceOverviewsForAbrechnung(start, end, customerOid, serviceCategoryOid);
ServicesOverviewRO hortRo = CreateHortSammelRo(quittierungsbelegRos);
quittierungsbelegRos = new List<ServicesOverviewRO>();
if (hortRo != null)
{
quittierungsbelegRos.Add(hortRo);
}
var supportConcepts2ServiceRecords = CreateSc2ServiceRecordsForAbrechnung(quittierungsbelegRos);
if (supportConcepts2ServiceRecords.Count == 0)
{
var sc = new CompactSupportConceptDC();
sc.IsApproved = true;
var sList = new List<ServiceRecordDC>();
sc.CostBearerList = new List<CompactCostBearerDC>();
sc.CostBearerList.Add(new CompactCostBearerDC { CostBearerOid = 119 }); //HACK: 119 ist die OID des Kostenträgers für Hort und Ferienbetreuung der Stadt Frankfurt Oder
supportConcepts2ServiceRecords.Add(sc, sList);
}
var creator = new HortInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungSbdPool(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
long? regionOid = null;
if (serviceCategoryOid == 77)
{
regionOid = 24;
}
else
{
regionOid = 28;
}
IList<CompactSupportConceptDC> supportConcepts = GetSupportConcepts(start, end, "Familienentlastender Dienst", "pool", customerOid, regionOid);
var supportConcepts2ServiceRecords = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
foreach (var sc in supportConcepts)
{
if (!supportConcepts2ServiceRecords.ContainsKey(sc))
{
supportConcepts2ServiceRecords.Add(sc, new List<ServiceRecordDC>());
}
}
var creator = new SbdPoolInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungAbw(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
List<ServicesOverviewRO> quittierungsbelegRos = CreateServiceOverviewsForAbrechnung(start, end, customerOid, serviceCategoryOid);
var supportConcepts2ServiceRecords = CreateSc2ServiceRecordsForAbrechnung(quittierungsbelegRos);
var creator = new AbwInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private List<ServiceInvoiceDC> CreateAbrechnungBesondereWohnform(DateTime start, DateTime end, long? customerOid, long serviceCategoryOid)
{
var invoicePeriod = new DateTimeSpan(start, end);
List<ServicesOverviewRO> quittierungsbelegRos = CreateServiceOverviewsForAbrechnung(start, end, customerOid, serviceCategoryOid);
var supportConcepts2ServiceRecords = CreateSc2ServiceRecordsForAbrechnung(quittierungsbelegRos);
var creator = new BesondereWohnformInvoiceCreation();
return creator.GenerateServiceInvoices(0, invoicePeriod, supportConcepts2ServiceRecords);
}
private IList<CompactSupportConceptDC> GetSupportConcepts(DateTime start, DateTime end, String serviceName, String categoryName, long? customerOid, long? regionOid)
{
var scList = new List<CompactSupportConceptDC>();
var service = DAOFactory.GenericDAO.GetAllActive<AdditionalService>().FirstOrDefault(s => s.Name == serviceName);
AdditionalServiceRegion region = null;
if (service != null)
{
if (regionOid.HasValue)
{
region = DAOFactory.GenericDAO.GetAllActive<AdditionalServiceRegion>().FirstOrDefault(s => s.Oid == regionOid.Value);
}
else
{
region = DAOFactory.GenericDAO.GetAllActive<AdditionalServiceRegion>().FirstOrDefault(s => s.AdditionalServiceOid == service.Oid);
}
}
if (region != null)
{
var additionalServiceBookings = DAOFactory.SearchDAO.GetAdditionalServiceBookings(region.Oid.Value, start, end);
var customerDict = new Dictionary<CompactCustomerDC, bool>();
foreach (var item in additionalServiceBookings)
{
if (item.Datum == null) continue;
foreach (var e in item.Customer2AddServiceBookings)
{
if (!customerOid.HasValue || customerOid.Value == e.CustomerOid)
{
var customer = DAOFactory.GenericDAO.GetByID<Customer>(e.CustomerOid);
var cdc = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(customer);
if (!customerDict.ContainsKey(cdc))
{
customerDict.Add(cdc, true);
foreach (var sc in customer.SupportConcepts)
{
foreach (var c2s in sc.CostBearer2SupportConceptList)
{
foreach (var scap in c2s.ApprovalPeriodList)
{
if (scap.StartDate.HasValue && scap.EndDate.HasValue)
{
DateTime scapStart = scap.StartDate.Value;
DateTime scapEnd = scap.EndDate.Value;
if (customer.TerminationDate.HasValue &&
customer.TerminationDate.Value < scapEnd)
{
scapEnd = customer.TerminationDate.Value;
}
if (scapStart < end && scapEnd >= start && scap.ServiceCategory != null)
{
String name = scap.ServiceCategory.Name.ToLower().Trim();
if (name.Contains(categoryName))
{
scList.Add(CreateFlatSupportConcept(sc, c2s));
}
}
}
}
}
}
}
}
}
}
}
return scList.OrderBy(s => !String.IsNullOrEmpty(s.Customer.DebitorNumber) ? s.Customer.DebitorNumber : "zzzzzz").ToList();
}
private CompactSupportConceptDC CreateFlatSupportConcept(SupportConcept sc, CostBearer2SupportConcept cb2sc)
{
var dc = new CompactSupportConceptDC();
dc.SupportConceptOid = sc.Oid.Value;
dc.SupportConceptVersion = sc.Version.Value;
dc.Customer = CreateCustomerForSupportConceptTree(sc.Customer);
dc.ActivationType = sc.IsActive;
dc.ConferenceDate = sc.ConferenceDate;
dc.IsApproved = cb2sc.Status == CostBearer2SupportConceptStatus.Approved;
var costBearer = new CompactCostBearerDC();
if (cb2sc.CostBearer.Organisation != null)
{
costBearer.Organisation = MapperFactory.CompactOrganisationDC_Organisation.MapToNewDC(cb2sc.CostBearer.Organisation);
}
costBearer.CostBearerID = cb2sc.CostBearer.ID;
costBearer.CostBearerOid = cb2sc.CostBearer.Oid.Value;
costBearer.CostBearer2SupportConceptOid = cb2sc.Oid.Value;
costBearer.SupportConceptStatus = cb2sc.Status;
costBearer.RequestedStartDate = cb2sc.RequestedStartDate;
costBearer.RequestedEndDate = cb2sc.RequestedEndDate;
costBearer.ApprovedStartDate = cb2sc.ApprovedStartDate;
costBearer.ApprovedEndDate = cb2sc.ApprovedEndDate;
costBearer.Bezeichnung = cb2sc.AuswahlBezeichnung;
// costBearer.ApprovedFLS = cb2sc.ApprovedFLS;
// costBearer.ApprovedFLSTotal = cb2sc.ApprovedFLSTotal;
costBearer.CustomerReferenceNumber = cb2sc.CustomerReferenceNumber;
costBearer.IsCalculatingWithFactor = cb2sc.CostBearer.IsCalculatingWithFactor;
dc.CostBearerList.Add(costBearer);
dc.CustomerReferenceNumbers.Add(cb2sc.CustomerReferenceNumber);
dc.CostBearerRelOids.Add(cb2sc.Oid.Value);
dc.CostBearerOids2CostBearerRelOids.Add(costBearer.CostBearerOid, cb2sc.Oid.Value);
return dc;
}
private CompactCustomerDC CreateCustomerForSupportConceptTree(Customer pEntity)
{
var dc = new CompactCustomerDC();
dc.CustomerOid = pEntity.Oid.Value;
dc.CustomerVersion = pEntity.Version.Value;
dc.FirstName = pEntity.Person.FirstName;
dc.LastName = pEntity.Person.LastName;
dc.DateOfBirth = pEntity.Person.DateOfBirth;
dc.ActivationType = pEntity.IsActive;
dc.TerminationDate = pEntity.TerminationDate;
dc.Sex = pEntity.Person.Sex;
dc.DebitorNumber = pEntity.DebitorNumber;
IList<VarFieldDef> defs = DAOFactory.SearchDAO.GetVarFieldDefs(TableID.Customer);
//foreach (var def in defs)
//{
// dc..Add(def.Oid.Value, MapperFactory.VarFieldDC_VarField);
//}
//dc.VarFields = MapperFactory.VarFieldDC_VarField.VarFieldMapToDCs(defs, pEntity.VarFieldValueList);
return dc;
}
}
public enum AbrechnungsEnum
{
Tagesstruktur = 0,
WST = 1,
FED = 2,
Einzelfallhilfe = 3,
ABW = 4,
BesondereWohnform = 5
}
}