117 lines
5.7 KiB
C#
117 lines
5.7 KiB
C#
using BeWo.Report;
|
|
using BeWo.Report.ReportObjects;
|
|
using BS.Shared.Core;
|
|
using System;
|
|
|
|
namespace UebergangshilfeUnnaEV
|
|
{
|
|
[IDSpecificClass(Identifier = "QuittierungsbelegAlt")]
|
|
public partial class ServicesOverviewReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
|
|
{
|
|
public ServicesOverviewReport()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(ServicesOverviewRO pRO)
|
|
{
|
|
if (pRO.StartDate >= new DateTime(2024, 05, 01))
|
|
pbLogoNeu.Visible = true;
|
|
else
|
|
pbLogoAlt.Visible = true;
|
|
|
|
//Notice 2 = Anzahl Stunden mit CustomerCount multipliziert
|
|
//Notice 3 = mögliche mittelbare k.-b. Leistungen
|
|
//Notice 4 = Summe direkt + mittelbar
|
|
//Notice 5 = abrechenbar gesamt
|
|
|
|
var sumNotice2 = 0;
|
|
var sumNotice3 = 0.0;
|
|
var sumNotice4 = 0.0;
|
|
var sumNotice5 = 0;
|
|
|
|
var sumDirekteLeistungen = 0;
|
|
|
|
foreach (var service in pRO.Services)
|
|
{
|
|
service.Notice = "";
|
|
service.Notice2 = "";
|
|
service.Notice3 = "";
|
|
service.Notice4 = "";
|
|
service.Notice5 = "";
|
|
sumDirekteLeistungen += service.MinutesDateTime.Hour * 60 + service.MinutesDateTime.Minute;
|
|
|
|
// Notice 2
|
|
int totalMinutes = service.MinutesDateTime.Hour * 60 + service.MinutesDateTime.Minute;
|
|
totalMinutes *= service.CustomerCount;
|
|
sumNotice2 += totalMinutes;
|
|
double hours = totalMinutes / 60;
|
|
double minutes = totalMinutes % 60;
|
|
var hoursString = hours < 10 ? "0" + hours : hours.ToString();
|
|
var minutesString = minutes < 10 ? "0" + minutes : minutes.ToString();
|
|
service.Notice2 = string.Format("{0}:{1}", hoursString, minutesString);
|
|
|
|
// Notice 3
|
|
var totalMinutes20Prozent = service.IsBillable ? (service.MinutesDateTime.Hour * 60 + service.MinutesDateTime.Minute) / 100 * 20 : 0;
|
|
sumNotice3 += totalMinutes20Prozent;
|
|
hours = (int)(totalMinutes20Prozent / 60);
|
|
minutes = (int)(totalMinutes20Prozent % 60);
|
|
hoursString = hours < 10 ? "0" + hours : hours.ToString();
|
|
minutesString = minutes < 10 ? "0" + minutes : minutes.ToString();
|
|
service.Notice3 = string.Format("{0}:{1}", hoursString, minutesString);
|
|
|
|
// Notice 4
|
|
var totalMinutesPlus20Prozent = service.MinutesDateTime.Hour * 60 + service.MinutesDateTime.Minute + totalMinutes20Prozent;
|
|
sumNotice4 += totalMinutesPlus20Prozent;
|
|
hours = (int)(totalMinutesPlus20Prozent / 60);
|
|
minutes = (int)(totalMinutesPlus20Prozent % 60);
|
|
hoursString = hours < 10 ? "0" + hours : hours.ToString();
|
|
minutesString = minutes < 10 ? "0" + minutes : minutes.ToString();
|
|
service.Notice4 = string.Format("{0}:{1}", hoursString, minutesString);
|
|
|
|
// Notice 5
|
|
var totalMinutesRounded = totalMinutesPlus20Prozent;
|
|
if (totalMinutesPlus20Prozent % 5 != 0)
|
|
{
|
|
totalMinutesRounded = (int)(Math.Ceiling(totalMinutesPlus20Prozent / 10.0d)*10);
|
|
}
|
|
sumNotice5 += totalMinutesRounded;
|
|
hours = (int)(totalMinutesRounded / 60);
|
|
minutes = (int)(totalMinutesRounded % 60);
|
|
hoursString = hours < 10 ? "0" + hours : hours.ToString();
|
|
minutesString = minutes < 10 ? "0" + minutes : minutes.ToString();
|
|
service.Notice5 = string.Format("{0}:{1}", hoursString, minutesString);
|
|
|
|
service.Minutes = totalMinutesRounded;
|
|
}
|
|
|
|
// Summe Direkte Leistungen
|
|
var direkteLeistungenHours = sumDirekteLeistungen / 60 < 10 ? "0" + sumDirekteLeistungen / 60 : (sumDirekteLeistungen / 60).ToString();
|
|
var direkteLeistungenMinutes = sumDirekteLeistungen % 60 < 10 ? "0" + sumDirekteLeistungen % 60 : (sumDirekteLeistungen % 60).ToString();
|
|
tc_SumDirekteLeistungen.Text = string.Format("{0}:{1}", direkteLeistungenHours, direkteLeistungenMinutes);
|
|
|
|
// Summe Notice 2
|
|
var n2Hours = sumNotice2 / 60 < 10 ? "0" + sumNotice2 / 60 : (sumNotice2 / 60).ToString();
|
|
var n2Minutes = sumNotice2 % 60 < 10 ? "0" + sumNotice2 % 60 : (sumNotice2 % 60).ToString();
|
|
tc_SumNotice2.Text = string.Format("{0}:{1}", n2Hours, n2Minutes);
|
|
|
|
// Summe Notice 3
|
|
var n3Hours = sumNotice3 / 60 < 10 ? "0" + (int)(sumNotice3 / 60) : ((int)(sumNotice3 / 60)).ToString();
|
|
var n3Minutes = sumNotice3 % 60 < 10 ? "0" + (int)(sumNotice3 % 60) : ((int)(sumNotice3 % 60)).ToString();
|
|
tc_SumNotice3.Text = string.Format("{0}:{1}", n3Hours, n3Minutes);
|
|
|
|
// Summe Notice 4
|
|
var n4Hours = sumNotice4 / 60 < 10 ? "0" + (int)(sumNotice4 / 60) : ((int)(sumNotice4 / 60)).ToString();
|
|
var n4Minutes = sumNotice4 % 60 < 10 ? "0" + (int)(sumNotice4 % 60) : ((int)(sumNotice4 % 60)).ToString();
|
|
tc_SumNotice4.Text = string.Format("{0}:{1}", n4Hours, n4Minutes);
|
|
|
|
// Summe Notice 5
|
|
var n5Hours = sumNotice5 / 60 < 10 ? "0" + (int)(sumNotice5 / 60) : ((int)(sumNotice5 / 60)).ToString();
|
|
var n5Minutes = sumNotice5 % 60 < 10 ? "0" + (int)(sumNotice5 % 60) : ((int)(sumNotice5 % 60)).ToString();
|
|
tc_SumNotice5.Text = string.Format("{0}:{1}", n5Hours, n5Minutes);
|
|
|
|
bindingSource1.DataSource = pRO;
|
|
}
|
|
}
|
|
}
|