2022-01-05 17:27:49 +01:00
|
|
|
|
using System;
|
2023-07-03 16:44:26 +02:00
|
|
|
|
using System.Linq;
|
2022-01-05 17:27:49 +01:00
|
|
|
|
using BeWo.Data.Entities;
|
|
|
|
|
|
using BeWo.Report;
|
|
|
|
|
|
using BeWo.Report.ReportObjects;
|
|
|
|
|
|
using BS.Shared;
|
|
|
|
|
|
using BS.Shared.Core;
|
|
|
|
|
|
using DevExpress.XtraReports.UI;
|
|
|
|
|
|
|
|
|
|
|
|
namespace LebensWert
|
|
|
|
|
|
{
|
|
|
|
|
|
[IDSpecificClass(Identifier = "NI")]
|
|
|
|
|
|
|
|
|
|
|
|
public partial class RechnungNI : XtraReport, IBeWoReport<ServiceInvoiceRO>
|
|
|
|
|
|
{
|
|
|
|
|
|
public RechnungNI()
|
|
|
|
|
|
{
|
|
|
|
|
|
this.InitializeComponent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SetReportDataSource(ServiceInvoiceRO pRO)
|
|
|
|
|
|
{
|
|
|
|
|
|
DateTime start = pRO.AccountingPeriodStart;
|
|
|
|
|
|
DateTime end = pRO.AccountingPeriodEnd;
|
|
|
|
|
|
lblZeitraum.Text = String.Format("Rechnung {0:MMMM yyyy} - {1:MMMM yyyy}", start, end);
|
|
|
|
|
|
cellAbschlag.Text = String.Format("Abschlagszahlungen {0:MMM yyyy} - {1:MMM yyyy}", start, end);
|
|
|
|
|
|
double Claim = Convert.ToDouble(pRO.NetClaim.Replace("<22>", "").Trim());
|
|
|
|
|
|
|
|
|
|
|
|
if (Claim > 0)
|
|
|
|
|
|
lblAbschluss.Text = String.Format("Den Rechnungsbetrag, in H<>he von {0}, bitte ich sofort nach Erhalt der Rechnung, " +
|
|
|
|
|
|
"unter Angabe der Rechnungsnummer, auf das oben angegebene Konto zu <20>berweisen.", pRO.NetClaim);
|
|
|
|
|
|
|
|
|
|
|
|
else if (Claim == 0)
|
|
|
|
|
|
lblAbschluss.Text = "Alle Anspr<70>che sind ausgeglichen.";
|
|
|
|
|
|
|
|
|
|
|
|
else if (Claim < 0)
|
|
|
|
|
|
lblAbschluss.Text = String.Format("Aus den Abschlagszahlungen und den tats<74>chlich geleisteten Stunden ergibt sich eine Differenz in H<>he von {0}. " +
|
|
|
|
|
|
"Diese <20>berzahlung wird sofort nach Erhalt des Kassenzeichens <20>berwiesen.", pRO.NetClaim);
|
2022-01-17 16:38:00 +01:00
|
|
|
|
|
|
|
|
|
|
SetAnrede(pRO);
|
2022-01-05 17:27:49 +01:00
|
|
|
|
|
2023-07-03 16:44:26 +02:00
|
|
|
|
|
|
|
|
|
|
foreach (var sip in pRO.ServiceInvoicePeriods)
|
|
|
|
|
|
{
|
|
|
|
|
|
var crp = sip.CostBearer2SupportConcept.CostBearer.CostRatePeriods;
|
|
|
|
|
|
decimal minsProFLS = 60;
|
|
|
|
|
|
if (crp != null && crp.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var minutesPerServiceUnit = crp.FirstOrDefault(c => c.CostRateType == BS.Shared.CostRatePeriodType.MinutesPerServiceUnit);
|
|
|
|
|
|
minsProFLS = minutesPerServiceUnit.CostRateValue.Value;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var item in sip.ServiceInvoiceItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (item.ServiceDescription == "Kontaktpauschale")
|
|
|
|
|
|
item.Hours *= minsProFLS;
|
|
|
|
|
|
else
|
|
|
|
|
|
item.Hours *= 60;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-05 17:27:49 +01:00
|
|
|
|
this.bindingSource1.DataSource = pRO;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SetAnrede(ServiceInvoiceRO pRO)
|
|
|
|
|
|
{
|
|
|
|
|
|
String anrede = "Sehr geehrte Damen und Herren,";
|
|
|
|
|
|
|
|
|
|
|
|
var p = GetKontaktPerson(pRO);
|
|
|
|
|
|
|
|
|
|
|
|
if (p != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (p.Sex.HasValue && p.Sex.Value == Sex.Male)
|
|
|
|
|
|
anrede = "Sehr geehrter Herr " + p.LastName + ",";
|
|
|
|
|
|
else if (p.Sex.HasValue && p.Sex.Value == Sex.Female)
|
|
|
|
|
|
anrede = "Sehr geehrte Frau " + p.LastName + ",";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
lblAnrede.Text = anrede;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private Person GetKontaktPerson(ServiceInvoiceRO pRO)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pRO.ServiceInvoicePeriods.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var c2s = pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept;
|
|
|
|
|
|
return c2s.CostBearerContactPerson;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|