SBBMainzReports/Invoicing - Finetuning - lange Mail

SupportOID=168696
This commit is contained in:
2026-07-21 15:05:09 +02:00
parent b1f29972bc
commit 55153c43ca
4 changed files with 595 additions and 578 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -73,9 +73,15 @@ namespace SbbMainzReports.Invoicing
foreach (var ii in serviceInvoicePeriod.InvoiceItemList)
{
ii.ItemDescription = supportConceptApprovalPeriod.ServiceCategory.Name;
if (accountingPeriodStart != dtStart || accountingPeriodEnd != dtEnd && ii.AccountingInterval == BS.Shared.AccountingIntervalType.Monthly)
// AB, 21.07.2026: Erkennung ueber DaysInMonth statt Vergleich mit dem Abrechnungszeitraum.
if (dtStart.HasValue && dtEnd.HasValue && ii.AccountingInterval == BS.Shared.AccountingIntervalType.Monthly)
{
AnpassungAnAbrechenbareTage(ii, serviceInvoicePeriod, supportConceptApprovalPeriod, dtStart, dtEnd);
int daysInMonth = DateTime.DaysInMonth(dtStart.Value.Year, dtStart.Value.Month);
int abrechenbareTage = (int)(dtEnd.Value.Date - dtStart.Value.Date).TotalDays + 1;
if (abrechenbareTage < daysInMonth)
{
AnpassungAnAbrechenbareTage(ii, serviceInvoicePeriod, supportConceptApprovalPeriod, dtStart, dtEnd);
}
}
}
}
@@ -87,7 +93,9 @@ namespace SbbMainzReports.Invoicing
decimal amount = 0;
TimeUnit tu = TimeUnit.Month;
DateTimeUnit du = dtStart.Value.Date.GetDateTimeUnit(dtEnd.Value.Date, tu);
amount = Math.Round((decimal)(ii.AmountTotal / (365m / 12m)), 2, MidpointRounding.AwayFromZero);
// AB, 21.07.2026: Umstellung auf Monatsgenaue Abgrenzung statt Jahresgenau - Absprache Frau Setz
int daysInMonth = DateTime.DaysInMonth(dtStart.Value.Year, dtStart.Value.Month);
amount = Math.Round((decimal)(ii.AmountTotal / daysInMonth), 2, MidpointRounding.AwayFromZero);
unitCount = du.RestDays;
if (du.RestDays > 0)

View File

@@ -436,7 +436,7 @@ namespace SBBMainzReports
this.xrTableCell5.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Steuernr. 26/675/18688 KIII/1 Kö";
this.xrTableCell5.Text = "Steuernr. 26/675/06539";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.xrTableCell5.Weight = 1.0250293226450187D;
//
@@ -722,6 +722,7 @@ namespace SBBMainzReports
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
this.xrTableCell40.Font = new DevExpress.Drawing.DXFont("arial", 11F);
this.xrTableCell40.Name = "xrTableCell40";
this.xrTableCell40.Multiline = true;
this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell40.StylePriority.UseBorderColor = false;
this.xrTableCell40.StylePriority.UseBorders = false;

View File

@@ -91,7 +91,15 @@ namespace SBBMainzReports
{
if (!ii.ServiceDescription.ToLower().Contains("handgeld") && !ii.ServiceDescription.ToLower().Contains("hangeld") && !qa && !ts)
{
ii.ServiceDescription = "Fachleistungstunden / Monat";
// Bei Differenzrechnungen enthaelt die ServiceDescription einen Verweis
// "(am ... in Rechnung ... berechnet)" (siehe AccountingService) - diesen erhalten
string differenzVerweis = "";
int verweisIndex = ii.ServiceDescription.IndexOf("(am ");
if (verweisIndex >= 0 && ii.ServiceDescription.Contains("berechnet)"))
{
differenzVerweis = "\n" + ii.ServiceDescription.Substring(verweisIndex).Trim();
}
ii.ServiceDescription = "Fachleistungstunden / Monat" + differenzVerweis;
ii.HourlyRateString = String.Format("zu {0:0.00} €", ii.HourlyRate);
}
else if (ts || qa)