89 lines
3.6 KiB
C#
89 lines
3.6 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using DevExpress.XtraReports.UI;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Report;
|
|
using BS.Shared.DataContracts;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace BeWo.BUGeVReports
|
|
{
|
|
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<Settlement2RO>
|
|
{
|
|
public Spitzabrechnung()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(Settlement2RO pRO)
|
|
{
|
|
int idx = 0;
|
|
foreach (var ii in pRO.InvoiceItems)
|
|
{
|
|
ii.DetailDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}", ii.PeriodStartDate, ii.PeriodEndDate);
|
|
|
|
if (pRO.InvoiceDate >= new DateTime(2024, 08, 08)) // Nötig durch Änderungen in der LWLInvoiceCreationBasis
|
|
ii.DetailDescription += String.Format(": {0:0.##} FLS x {1:c}", ii.UnitCount, ii.AmountPerUnit);
|
|
else
|
|
ii.DetailDescription += String.Format(": {0:0.##} FLS {1}x {2:c}", ii.UnitCount, pRO.RateFactor == 1 ? "" : "x " + pRO.RateFactorText2 + " ", ii.AmountPerUnit);
|
|
|
|
ii.ItemDescription = "Fachleistungsstunden";
|
|
|
|
if (pRO.FehlkontakteString != null && pRO.FehlkontakteString.Length > 0 && ii.RateFactor == 0)
|
|
{
|
|
if (pRO.InvoiceDate < new DateTime(2024, 1, 1))
|
|
{
|
|
ii.UnitCount = ii.UnitCount / ((2 - Convert.ToDecimal(pRO.RateFactor)) * 100) * 100;
|
|
ii.AmountPerUnit = ii.AmountPerUnit / 100 * ((2 - Convert.ToDecimal(pRO.RateFactor)) * 100);
|
|
}
|
|
Zwischensumme.Visible = true;
|
|
ii.DetailDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} h x {3:c}", ii.PeriodStartDate, ii.PeriodEndDate, ii.UnitCount, ii.AmountPerUnit);
|
|
ii.ItemDescription = "Fehlkontakte";
|
|
}
|
|
|
|
AddTatsaechlichGeleisteteFLS(ii, idx, pRO.InvoiceDate);
|
|
idx++;
|
|
}
|
|
|
|
this.bindingSource1.DataSource = pRO;
|
|
}
|
|
|
|
private void AddTatsaechlichGeleisteteFLS(Settlement2RO.SettlementInvoiceItemRO ii, int rowIndex, DateTime invoiceDate)
|
|
{
|
|
decimal rateFactor = 0;
|
|
if (ii.RateFactor.HasValue && ii.RateFactor != 0)
|
|
{
|
|
rateFactor = (100 + ii.RateFactor.Value) / 100;
|
|
}
|
|
|
|
XRTableRow row = null;
|
|
|
|
if (rowIndex == 0)
|
|
{
|
|
row = tableGeleisteteFLS.Rows[rowIndex + 1];
|
|
}
|
|
else
|
|
{
|
|
row = tableGeleisteteFLS.InsertRowBelow(tableGeleisteteFLS.Rows[tableGeleisteteFLS.Rows.Count - 1]);
|
|
}
|
|
row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", ii.PeriodStartDate);
|
|
row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", ii.PeriodEndDate);
|
|
row.Cells[2].Text = String.Format("{0:0.00}", ii.AmountPerUnit);
|
|
if (rateFactor == 0)
|
|
{
|
|
row.Cells[4].Text = String.Format("{0:0.00}", ii.UnitCount);
|
|
}
|
|
else
|
|
{
|
|
if (invoiceDate >= new DateTime(2024, 08, 08)) // Nötig durch Änderungen in der LWLInvoiceCreationBasis
|
|
row.Cells[3].Text = String.Format("{0:0.00}", ii.UnitCount);
|
|
else
|
|
row.Cells[3].Text = String.Format("{0:0.00}", ii.UnitCount * rateFactor);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|