Files
BeWoPlaner/ReportImp/VereinBeratungTherapie/CollectiveBillingReportTab.cs

227 lines
11 KiB
C#

using BeWo.Report;
using BeWo.Report.ReportObjects;
using DevExpress.XtraReports.UI;
using BS.Shared.Core;
using System;
using System.Linq;
namespace VereinBeratungTherapie
{
[IDSpecificClass(Identifier = "Sammelrechnung")]
public partial class SammelrechnungTabBthg : XtraReport//, IBeWoReport<ServiceInvoiceRO>
{
public SammelrechnungTabBthg()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
if (pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept.ApprovedEndDate == null)
{
lblaktuell.Text = "Aktuell";
lblZeitraum.Text = "beantragter Zeitraum";
}
/*
Kontrolle der Summen nach Fehler im Januar
decimal sumSip = 0;
decimal sumII = 0;
decimal claim = 0;
foreach (var sip in pRO.ServiceInvoicePeriods)
{
string betrag = sip.Claim.Replace(" €", "");
decimal.TryParse(betrag, out claim);
sumSip += claim;
foreach (var ii in sip.ServiceInvoiceItems)
{
sumII += ii.NetAmount.Value;
if (ii.NetAmount.Value != claim)
{
int test = 1;
}
}
}
*/
pRO.ServiceInvoicePeriods = pRO.ServiceInvoicePeriods.OrderBy(a => a.Customer.CustomerOid).ThenByDescending(b => b.ServiceInvoiceItems[0].ServiceDescription).ToList();
var listLength = pRO.ServiceInvoicePeriods.Count;
for (int i = listLength - 1; i >= 0; i--)
{
var sip = pRO.ServiceInvoicePeriods[i];
if (sip.Customer.Name.Contains("Baba"))
{
int test = 1;
}
if (sip.ServiceInvoiceItems[0].ServiceDescription != null && sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Qualifizierte Assistenz TS"))
{
if (sip.Customer.Name.Contains("Baba"))
{
int test = 1;
}
if (i + 1 != listLength && pRO.ServiceInvoicePeriods[i + 1].ServiceInvoiceItems[0].ServiceDescription.StartsWith("Qualifizierte Assistenz"))
{
var ii = sip.ServiceInvoiceItems[0];
var iiNew = pRO.ServiceInvoicePeriods[i + 1].ServiceInvoiceItems[0];
decimal minTS = 0;
decimal minQa = 0;
decimal.TryParse(ii.Notice, out minTS);
decimal.TryParse(iiNew.Notice, out minQa);
if (minTS > 0 && minQa > 0)
{
minQa += minTS;
iiNew.Notice = minQa.ToString();
}
//iiNew.Notice = ii.Notice;
iiNew.HourlyRate += ii.HourlyRate;
iiNew.NetAmount += ii.NetAmount;
iiNew.GrossAmount = String.Format("{0:c2}", iiNew.NetAmount);
// im Falle vom Eigenanteil -> sehr unwahrscheinlich
if (ii.UnitDescription != "0,00 €")
{
if (iiNew.UnitDescription != "0,00 €")
{
decimal eigenTS = 0;
decimal eigenQa = 0;
ii.UnitDescription.Replace(" €", "");
iiNew.UnitDescription.Replace(" €", "");
decimal.TryParse(ii.UnitDescription, out eigenTS);
decimal.TryParse(iiNew.UnitDescription, out eigenQa);
if (eigenTS > 0 && eigenQa > 0)
{
eigenQa += eigenTS;
iiNew.UnitDescription = String.Format("{0:c2}", eigenQa);
}
}
else
{
iiNew.UnitDescription = ii.UnitDescription;
}
}
pRO.ServiceInvoicePeriods.Remove(sip);
}
else
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Qualifizierte Assistenz";
}
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription != null && sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische Assistenz TS"))
{
if (i + 1 != listLength && pRO.ServiceInvoicePeriods[i + 1].ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische Assistenz"))
{
var ii = sip.ServiceInvoiceItems[0];
var iiNew = pRO.ServiceInvoicePeriods[i + 1].ServiceInvoiceItems[0];
decimal minTS = 0;
decimal minQa = 0;
decimal.TryParse(ii.Notice, out minTS);
decimal.TryParse(iiNew.Notice, out minQa);
if (minTS > 0 && minQa > 0)
{
minQa += minTS;
iiNew.Notice = minQa.ToString();
}
//iiNew.Notice = ii.Notice;
iiNew.HourlyRate += ii.HourlyRate;
iiNew.NetAmount += ii.NetAmount;
iiNew.GrossAmount = String.Format("{0:c2}", iiNew.NetAmount);
// im Falle vom Eigenanteil -> sehr unwahrscheinlich
if (ii.UnitDescription != "0,00 €")
{
if (iiNew.UnitDescription != "0,00 €")
{
decimal eigenTS = 0;
decimal eigenQa = 0;
ii.UnitDescription.Replace(" €", "");
iiNew.UnitDescription.Replace(" €", "");
decimal.TryParse(ii.UnitDescription, out eigenTS);
decimal.TryParse(iiNew.UnitDescription, out eigenQa);
if (eigenTS > 0 && eigenQa > 0)
{
eigenQa += eigenTS;
iiNew.UnitDescription = String.Format("{0:c2}", eigenQa);
}
}
else
{
iiNew.UnitDescription = ii.UnitDescription;
}
}
pRO.ServiceInvoicePeriods.Remove(sip);
}
else
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Kompensatorische Assistenz";
}
}
else
{
if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Qualifizierte"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Qualifizierte Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Kompensatorische Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Kompensatorische Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Fahrzeit"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = sip.ServiceInvoiceItems[0].ServiceDescription.Substring(0, 11);
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Ges."))
{
sip.ServiceInvoiceItems[0].ServiceDescription = sip.ServiceInvoiceItems[0].ServiceDescription.Substring(0, 18);
}
}
}
pRO.ServiceInvoicePeriods.Sort((a, b) => a.Customer.LastNameFirstName.CompareTo(b.Customer.LastNameFirstName));
var count = pRO.ServiceInvoicePeriods.Count;
for (int i = 0; i < count; i++)
{
var sip = pRO.ServiceInvoicePeriods[i];
if (sip.Customer.Name.Contains("Baba"))
{
int test = 1;
}
sip.NotBillableString = i.ToString();
if (sip.ServiceInvoiceItems.Count > 0)
{
sip.ServiceInvoiceItems[0].CustomerFirstname = i.ToString();
sip.ServiceInvoiceItems[0].CustomerLastname = sip.Customer.CustomerOid.ToString();
}
//if (sip.Notice != null)
//{
// if (sip.ServiceInvoiceItems.Count > 0)
// //sip.NotBillableString = sip.ServiceInvoiceItems[0].UnitDescription;
//}
if (sip.SupportConceptApprovalPeriod != null)
{
if (sip.SupportConceptApprovalPeriod.ServiceCategory == null || sip.SupportConceptApprovalPeriod.ServiceCategory != null && sip.SupportConceptApprovalPeriod.ServiceCategory.Name.Contains("Monat"))
sip.ApprovedHours = 1;
else
{
DateTime end = sip.SupportConceptApprovalPeriod.EndDate ?? pRO.AccountingPeriodEnd;
DateTime start = sip.SupportConceptApprovalPeriod.StartDate ?? pRO.AccountingPeriodStart;
sip.ApprovedHours = (decimal)(end - start).TotalDays;
}
}
if (sip.CostBearer2SupportConcept != null && sip.CostBearer2SupportConcept.CustomerReferenceNumber == null)
{
sip.CostBearer2SupportConcept.CustomerReferenceNumber = "";
}
}
//var anhang = new SammelrechnungAnhang();
//xrSubreport1.ReportSource = anhang;
//anhang.SetReportDataSource(pRO);
this.bindingSource1.DataSource = pRO;
}
}
}