127 lines
4.5 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|