MH: AsbRheinErftDuerenSBD Differenzrechnungseinrichtung

This commit is contained in:
2026-02-04 17:25:31 +01:00
parent 36ff304bae
commit 70ee6c7efa
2 changed files with 68 additions and 47 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
@@ -59,9 +60,11 @@ namespace AsbRheinErftDuerenSBD
decimal stundenAnzahl = 0;
decimal stundenSatz = 0;
string bezeichnung = "Stundenabrechnung Nicht-Fachkraft";
decimal stundenAnzahl2 = 0;
decimal stundenSatz2 = 0;
string bezeichnung2 = "Stundenabrechnung Nicht-Fachkraft";
String prozentZuschlag = "";
decimal anzahlZuschlag = 0;
@@ -76,11 +79,22 @@ namespace AsbRheinErftDuerenSBD
if (sip.ServiceInvoiceItems != null)
{
sip.ServiceInvoiceItems = sip.ServiceInvoiceItems.Where(item => item.NetAmount.HasValue && item.NetAmount.Value != 0).ToList();
foreach (var ii in sip.ServiceInvoiceItems)
{
if (ii.ServiceDescription != null)
{
if (ii.ServiceDescription == "Betreuungseinsätze" || ii.ServiceDescription.Contains("Integrationshilfe"))
if (ii.NetAmount < 0)
{
ii.AmountPerUnit *= -1;
if (i == 0)
bezeichnung = ii.ServiceDescription.Substring(ii.ServiceDescription.IndexOf('(') + 1, ii.ServiceDescription.Length - ii.ServiceDescription.IndexOf('(') - 2);
else if (i == 1)
bezeichnung2 = ii.ServiceDescription.Substring(ii.ServiceDescription.IndexOf('(') + 1, ii.ServiceDescription.Length - ii.ServiceDescription.IndexOf('(') - 2); ;
}
if (ii.ServiceDescription.Contains("Betreuungseinsätze") || ii.ServiceDescription.Contains("Integrationshilfe"))
{
if (i == 0)
{
@@ -150,7 +164,7 @@ namespace AsbRheinErftDuerenSBD
lblBezeichnung2.Text = ii.ServiceDescription;
}
}
i++;
}
}
}
@@ -189,6 +203,7 @@ namespace AsbRheinErftDuerenSBD
lblStunden.Text = String.Format("{0:0.00}", stundenAnzahl);
lblStundensatz.Text = String.Format("{0:c}", stundenSatz);
lblBetragStunden.Text = String.Format("{0:c}", stundenAnzahl * stundenSatz);
lblBezeichnung.Text = bezeichnung;
if (stundenAnzahl2 == 0 && stundenSatz2 == 0)
{
@@ -202,8 +217,9 @@ namespace AsbRheinErftDuerenSBD
lblStunden2.Text = String.Format("{0:0.00}", stundenAnzahl2);
lblStundensatz2.Text = String.Format("{0:c}", stundenSatz2);
lblBetragStunden2.Text = String.Format("{0:c}", stundenAnzahl2 * stundenSatz2);
lblBezeichnung2.Text = bezeichnung2;
}
//if (!String.IsNullOrWhiteSpace(prozentZuschlag))
//{

View File

@@ -37,55 +37,60 @@ namespace AsbRheinErftDuerenSBD.Service
return i;
}
protected override ServiceInvoiceDC ErstelleDifferenzRechnung(DifferenzRechnungCheck item)
{
ServiceInvoiceDC diffRechnung = null;
var alterBetrag = item.VorhandeneRechungen.Sum(i => i.ClaimSum ?? 0);
//protected override ServiceInvoiceDC ErstelleDifferenzRechnung(DifferenzRechnungCheck item)
//{
// ServiceInvoiceDC diffRechnung = null;
// //var alterBetrag = item.VorhandeneRechungen.Sum(i => i.ClaimSum ?? 0);
// var letzteRg = item.VorhandeneRechungen.OrderByDescending(r => r.ServiceInvoiceOid).FirstOrDefault();
if (item.NeueRechnung.ClaimSum == alterBetrag)
{
diffRechnung = item.NeueRechnung;
diffRechnung.InvoiceBase.NeuErstellen = false;
diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnung wurde bereits erstellt");
}
else
{
diffRechnung = new ServiceInvoiceDC();
// letzteRg = item.VorhandeneRechungen.FirstOrDefault(r => item.NeueRechnung.InvoiceBase.CustomerOid == r.InvoiceBase.CustomerOid);
// if (letzteRg != null)
// {
// if (item.NeueRechnung.ClaimSum == letzteRg.ClaimSum)
// {
// diffRechnung = item.NeueRechnung;
// diffRechnung.InvoiceBase.NeuErstellen = false;
// diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnung wurde bereits erstellt");
// }
// else
// {
// diffRechnung = new ServiceInvoiceDC();
diffRechnung.InvoiceBase.InvoiceId = "SBD Aldenhoven DIFF";
// diffRechnung.InvoiceBase.InvoiceId = "SBD Aldenhoven DIFF";
diffRechnung.OriginalZurDifferenz = item.NeueRechnung;
diffRechnung.InvoiceBase = new InvoiceBaseDC();
CopyInvoiceBaseDC(item.NeueRechnung.InvoiceBase, diffRechnung);
// diffRechnung.OriginalZurDifferenz = item.NeueRechnung;
// diffRechnung.InvoiceBase = new InvoiceBaseDC();
// CopyInvoiceBaseDC(item.NeueRechnung.InvoiceBase, diffRechnung);
diffRechnung.ServiceInvoicePeriods = item.NeueRechnung.ServiceInvoicePeriods;
var newItem = new InvoiceItemDC();
newItem.ItemPeriodStart = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
newItem.ItemPeriodEnd = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
newItem.UnitCount = 1;
if (item.VorhandeneRechungen.Count == 1)
newItem.ItemDescription = String.Format("Abzug von Betrag aus Rechnung {0} vom {1:dd.MM.yyyy}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, item.VorhandeneRechungen[0].InvoiceBase.InvoiceDate);
else if (item.VorhandeneRechungen.Count > 1)
{
string rechnungsnummern = string.Join(", ", item.VorhandeneRechungen.Select(r => r.InvoiceBase.InvoiceNumber));
newItem.ItemDescription = String.Format("Abzug von Gesamtbetrag aus Rechnungen {0} vom {1:dd.MM.yyyy}", rechnungsnummern, item.VorhandeneRechungen[0].InvoiceBase.InvoiceDate);
// diffRechnung.ServiceInvoicePeriods = item.NeueRechnung.ServiceInvoicePeriods;
// var newItem = new InvoiceItemDC();
// newItem.ItemPeriodStart = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
// newItem.ItemPeriodEnd = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
// newItem.UnitCount = 1;
// if (item.VorhandeneRechungen.Count == 1)
// newItem.ItemDescription = String.Format("Abzug von Betrag aus Rechnung {0} vom {1:dd.MM.yyyy}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, item.VorhandeneRechungen[0].InvoiceBase.InvoiceDate);
// else if (item.VorhandeneRechungen.Count > 1)
// {
// string rechnungsnummern = string.Join(", ", item.VorhandeneRechungen.Select(r => r.InvoiceBase.InvoiceNumber));
// newItem.ItemDescription = String.Format("Abzug von Gesamtbetrag aus Rechnungen {0} vom {1:dd.MM.yyyy}", rechnungsnummern, item.VorhandeneRechungen[0].InvoiceBase.InvoiceDate);
}
newItem.AmountTotal = alterBetrag * -1;
newItem.GrossAmountTotal = alterBetrag * -1;
newItem.AmountPerUnit = alterBetrag * -1;
// }
// newItem.AmountTotal = letzteRg.ClaimSum * -1;
// newItem.GrossAmountTotal = letzteRg.ClaimSum * -1;
// newItem.AmountPerUnit = letzteRg.ClaimSum * -1;
var newSip = new ServiceInvoicePeriodDC();
newSip.Claim = newItem.AmountTotal;
newSip.Start = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
newSip.End = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
diffRechnung.ServiceInvoicePeriods.Add(newSip);
newSip.InvoiceItems = new List<InvoiceItemDC>();
newSip.InvoiceItems.Add(newItem);
// var newSip = new ServiceInvoicePeriodDC();
// newSip.Claim = newItem.AmountTotal;
// newSip.Start = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
// newSip.End = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
// diffRechnung.ServiceInvoicePeriods.Add(newSip);
// newSip.InvoiceItems = new List<InvoiceItemDC>();
// newSip.InvoiceItems.Add(newItem);
diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnungsdifferenz zu Rechnung {0} in Höhe von {1:c}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, alterBetrag);
}
return diffRechnung;
}
}
// diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnungsdifferenz zu Rechnung {0} in Höhe von {1:c}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, letzteRg.ClaimSum);
// }
// }
// return diffRechnung;
//}
}
}