Files
BeWoPlaner/ReportImp/DiePerspektive/Finanzauswertung.cs
2020-11-29 17:56:11 +01:00

127 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DiePerspektive.Invoicing;
namespace DiePerspektive
{
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)
CalculateBillableAmountInReportTimeSpan(scRo, pRO.ReportStartDate.Value, pRO.ReportEndDate.Value);
//String kst = GetKostenStelle(scRo);
//scRo.Custom1 = (String.IsNullOrEmpty(kst)) ? " " : String.Format("Kostenstelle {0}", kst);
}
}
pRO.CalculateBillableAmountInReportTimeSpan();
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 CalculateBillableAmountInReportTimeSpan(FinanceRO.SupportConceptFinanceRO scRo, DateTime start, DateTime end)
{
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;
}
}
//if (scRo.Costbearer2Supportconcept.SupportConcept != null && scRo.Costbearer2Supportconcept.SupportConcept.CustomerFullName != null && scRo.Costbearer2Supportconcept.SupportConcept.CustomerFullName.Contains("Grote"))
//{
// int test = 0;
//}
dict.Add(sc, scRo.ServiceRecords);
var creator = new DefaultInvoiceCreation();
DateTimeSpan span = new DateTimeSpan();
span.StartDate = start;
span.EndDate = end;
var invoices = creator.GenerateServiceInvoices(scRo.Costbearer2Supportconcept.CostBearer.CostBearerOid.Value, span, dict);
if (invoices != null && invoices.Count == 1)
{
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 = true;
return dc;
}
}
}