161 lines
5.6 KiB
C#
161 lines
5.6 KiB
C#
|
|
using System;
|
|||
|
|
using System.Linq;
|
|||
|
|
using BS.Shared;
|
|||
|
|
using BeWo.Report;
|
|||
|
|
using BeWo.Report.ReportObjects;
|
|||
|
|
using BeWo.Data.Entities;
|
|||
|
|
using BeWo.Data.Access;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using BeWo.Data;
|
|||
|
|
using BS.Shared.Core;
|
|||
|
|
using BS.Shared.Services;
|
|||
|
|
using BS.Shared.DataContracts;
|
|||
|
|
using BeWo.Service.DCEntityMapper;
|
|||
|
|
using BeWo.Service.Invoicing;
|
|||
|
|
using BeWo.Service.Plugins;
|
|||
|
|
using BeWo.Service.ServiceImplementations;
|
|||
|
|
using BS.Shared.DataContracts.Compact;
|
|||
|
|
|
|||
|
|
namespace BeWo.Club74
|
|||
|
|
{
|
|||
|
|
public partial class Finanzauswertung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<FinanceRO>
|
|||
|
|
{
|
|||
|
|
public Finanzauswertung()
|
|||
|
|
{
|
|||
|
|
InitializeComponent();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void SetReportDataSource(FinanceRO pRO)
|
|||
|
|
{
|
|||
|
|
if (pRO.SupportConceptFinanceList != null)
|
|||
|
|
{
|
|||
|
|
foreach (var scRo in pRO.SupportConceptFinanceList)
|
|||
|
|
{
|
|||
|
|
if (scRo.Costbearer2Supportconcept != null)
|
|||
|
|
{
|
|||
|
|
CalculateBillableAmountInTimeSpan(scRo, scRo.Costbearer2Supportconcept.StartDate, pRO.ReportEndDate, true);
|
|||
|
|
scRo.OpenAmount = scRo.BillableAmountUntilNow - scRo.AmountPaid;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pRO.ReportStartDate.HasValue && pRO.ReportEndDate.HasValue)
|
|||
|
|
{
|
|||
|
|
DateTime start = pRO.ReportStartDate.Value;
|
|||
|
|
DateTime end = pRO.ReportEndDate.Value;
|
|||
|
|
|
|||
|
|
if (start.Year == end.Year && start.Month == end.Month && start.Day == 1 &&
|
|||
|
|
end.Day == DateTime.DaysInMonth(end.Year, end.Month))
|
|||
|
|
{
|
|||
|
|
lblTitel.Text = String.Format("Finanzauswertung {0:MMMM yyyy}", start);
|
|||
|
|
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:MMMM}", start);
|
|||
|
|
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:MMMM}", start);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
lblTitel.Text = String.Format("Finanzauswertung {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
|
|||
|
|
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
|
|||
|
|
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if (pRO.RateFactor.HasValue)
|
|||
|
|
{
|
|||
|
|
cellRateFactorHeader.Text = String.Format("geleistete Std. x {0:0.##}", pRO.RateFactor);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
cellRateFactorHeader.Visible = false;
|
|||
|
|
cellRateFactor.Visible = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
cellBewilligtImZeitraumHeader.Visible = false;
|
|||
|
|
cellBewilligteFLSImBereich.Visible = false;
|
|||
|
|
cellGeleistetImBereich.Visible = false;
|
|||
|
|
cellGeleistetImZeitraumHeader.Visible = false;
|
|||
|
|
cellRateFactorHeader.Visible = false;
|
|||
|
|
cellRateFactor.Visible = false;
|
|||
|
|
}
|
|||
|
|
this.bindingSource1.DataSource = pRO;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void CalculateBillableAmountInTimeSpan(FinanceRO.SupportConceptFinanceRO scRo, DateTime? start, DateTime? end, bool totalOrReportTimeSpan)
|
|||
|
|
{
|
|||
|
|
String tenant = null;
|
|||
|
|
|
|||
|
|
if (MultitenancyOperationContextExt.Current != null)
|
|||
|
|
tenant = MultitenancyOperationContextExt.Current.Tenant;
|
|||
|
|
else
|
|||
|
|
tenant = SessionFacade.Tenant;
|
|||
|
|
|
|||
|
|
var factory = PluginLoader.FindClass<InvoiceFactory>(tenant);
|
|||
|
|
if (factory == null)
|
|||
|
|
{
|
|||
|
|
factory = InvoiceFactory.GetInstance(tenant);
|
|||
|
|
}
|
|||
|
|
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> dict = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
|
|||
|
|
|
|||
|
|
CompactSupportConceptDC sc = CreateCompactSupportConcept(scRo.Costbearer2Supportconcept);
|
|||
|
|
if (scRo.ServiceRecords != null)
|
|||
|
|
{
|
|||
|
|
foreach (var sr in scRo.ServiceRecords)
|
|||
|
|
{
|
|||
|
|
sr.AlreadyAccounted = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
dict.Add(sc, scRo.ServiceRecords);
|
|||
|
|
|
|||
|
|
var creator = factory.CreateInvoiceCreator("Finanzauswertung", tenant, dict);
|
|||
|
|
|
|||
|
|
//String text = String.Format("Tenant={0}, Context=Null? {1}, Factory = {2}", tenant,
|
|||
|
|
// MultitenancyOperationContextExt.Current == null, factory);
|
|||
|
|
|
|||
|
|
//Utils.SendErrorMail("CB DEBUG", text);
|
|||
|
|
DateTimeSpan span = null;
|
|||
|
|
if (start.HasValue && end.HasValue)
|
|||
|
|
{
|
|||
|
|
span = new DateTimeSpan();
|
|||
|
|
span.StartDate = start.Value;
|
|||
|
|
span.EndDate = end.Value;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (scRo.CustomerName.Contains("L<>b"))
|
|||
|
|
{
|
|||
|
|
int test = 0;
|
|||
|
|
}
|
|||
|
|
var invoices = creator.GenerateServiceInvoices(scRo.Costbearer2Supportconcept.CostBearer.CostBearerOid.Value, span, dict);
|
|||
|
|
|
|||
|
|
if (invoices != null && invoices.Count == 1)
|
|||
|
|
{
|
|||
|
|
//var i = invoices[0];
|
|||
|
|
if (totalOrReportTimeSpan)
|
|||
|
|
{
|
|||
|
|
scRo.BillableAmountUntilNow = invoices[0].ClaimSum ?? 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
scRo.BillableAmountInReportTimeSpan = invoices[0].ClaimSum ?? 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private CompactSupportConceptDC CreateCompactSupportConcept(SupportConceptCostBearerRelDC c2s)
|
|||
|
|
{
|
|||
|
|
var dc = new CompactSupportConceptDC();
|
|||
|
|
dc.SupportConceptOid = c2s.SupportConcept.SupportConceptOid;
|
|||
|
|
dc.CostBearerRelOids = new List<long>();
|
|||
|
|
dc.CostBearerRelOids.Add(c2s.CostBearer2SupportConceptOid.Value);
|
|||
|
|
//dc.IsApproved = c2s.ApprovedStartDate.HasValue && c2s.ApprovedEndDate.HasValue;
|
|||
|
|
dc.IsApproved = true;
|
|||
|
|
return dc;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|