Files
BeWoPlaner/ReportImp/BUGeVReports/SettlementReport2.cs

82 lines
3.1 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);
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);
idx++;
}
this.bindingSource1.DataSource = pRO;
}
private void AddTatsaechlichGeleisteteFLS(Settlement2RO.SettlementInvoiceItemRO ii, int rowIndex)
{
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
{
row.Cells[3].Text = String.Format("{0:0.00}", ii.UnitCount * rateFactor);
}
}
}
}