Files
BeWoPlaner/ReportImp/KetteReports/ServiceInvoiceReport.cs

185 lines
7.7 KiB
C#

using System;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Extensions;
using DevExpress.XtraReports.UI;
namespace KetteReports
{
public partial class ServiceInvoiceReport : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public ServiceInvoiceReport()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
if (pRO.RecipientOrganisation.IsNotNullOrEmpty() && pRO.RecipientOrganisation.ToLower().Contains("lvr"))
{
lblGP.Visible = true;
}
if (!String.IsNullOrEmpty(pRO.SenderContactPersonMail))
{
pRO.SenderContactPersonMail = pRO.SenderContactPersonMail.Replace("E-Mail:", "").Trim();
}
if (!String.IsNullOrEmpty(pRO.SenderContactPersonPhone))
{
pRO.SenderContactPersonPhone = pRO.SenderContactPersonPhone.Replace("Tel.:", "").Trim();
}
if (!String.IsNullOrEmpty(pRO.SenderContactPersonFax))
{
pRO.SenderContactPersonFax = pRO.SenderContactPersonFax.Replace("Fax:", "").Trim();
}
//Rechnung an Sozialamt Bergisch Gladbach, Gybowitch und Herrn Schulze. Adresse Abrechnungsbetreuungsleistung für steht kein Name
SetzeAdresse(pRO);
DateTime start = pRO.AccountingPeriodStart;
DateTime end = pRO.AccountingPeriodEnd;
if (start.Month == end.Month && start.Year == end.Year)
{
lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start);
}
else
{
lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end);
}
String notice = String.Format("Bitte überweisen Sie den geforderten Betrag bis zum {0:dd.MM.yyyy} auf die unten aufgeführte Bankverbindung.", pRO.InvoiceDateTime.Value.AddDays(21));
// Die haben verschiedene Bereiche, zwei Anpassungen sind nur für Fachbereich Jugend - Erkennungsmerkmal ist "Jugendamt"
// oder seit August 2025 auch bestimmte Paragraphen in der Leistungskategorie
bool jugend = false;
string[] cats = { "30", "31", "35", "35a", "41", "Autismus" };
if (pRO.RecipientOrganisation.ToLower().Contains("jugendamt") || (pRO.RecipientOrganisation.ToLower().Contains("kinder") && pRO.RecipientOrganisation.ToLower().Contains("jugend")))
{
jugend = true;
}
else if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0
&& pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems != null && pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems.Count > 0)
{
if (pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems[0].UnitDescription != null && cats.Any(c => pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems[0].UnitDescription.Contains(c)))
{
jugend = true;
}
}
if (jugend && pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems[0].UnitDescription != null)
{
pRO.CustomerReferenceNumber += " " + pRO.ServiceInvoicePeriods[0].ServiceInvoiceItems[0].UnitDescription;
}
if (jugend)
{
lblAbsender.Visible = false;
lblAbsenderJA.Visible = true;
lblAdresszeile.Visible = false;
lblAdresszeileJA.Visible = true;
if (pRO.CreatorName.Contains("Kierspel"))
{
lblCreatorKierspel.Visible = true;
lblUnterschrift.Visible = true;
lblCreatorNichtKierspel.Visible = false;
}
notice +=
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können, bitten wir Sie um die Angabe der Rechnungsnummer.";
}
else
notice +=
"\nSollten Sie dem Lastschriftverfahren zugestimmt haben, wird der Rechnungsbetrag in den nächsten Tagen von ihrem Konto eingezogen.\nUm Ihre Überweisung besser zuordnen zu können, bitten wir Sie um die Angabe des Leistungsmonats, der Kundennummer und der Rechnungsnummer.";
if (String.IsNullOrEmpty(pRO.Notice))
{
pRO.Notice = notice;
}
else
{
pRO.Notice += "\n\n" + notice;
}
foreach (var list in pRO.ServiceInvoicePeriods)
{
list.ServiceInvoiceItems = list.ServiceInvoiceItems.OrderBy(i => i.Duration).ThenBy(i => i.ServiceDescription).ToList();
}
this.bindingSource1.DataSource = pRO;
}
private void SetzeAdresse(ServiceInvoiceRO pRO)
{
if (pRO.CustomerOid.HasValue)
{
Customer c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid.Value);
if (c.Person.InvoiceAddress != null)
{
StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmpty(c.Person.InvoiceAddress.AddressLine1))
{
sb.AppendLine(c.Person.InvoiceAddress.AddressLine1);
}
if (!String.IsNullOrEmpty(c.Person.InvoiceAddress.AddressLine2))
{
sb.AppendLine(c.Person.InvoiceAddress.AddressLine2);
}
if (!String.IsNullOrEmpty(c.Person.InvoiceAddress.Street))
{
sb.AppendLine(c.Person.InvoiceAddress.Street);
}
if (!String.IsNullOrEmpty(c.Person.InvoiceAddress.PostalCode) || !String.IsNullOrEmpty(c.Person.InvoiceAddress.Town))
{
sb.AppendLine(String.Format("{0} {1}", c.Person.InvoiceAddress.PostalCode, c.Person.InvoiceAddress.Town).Trim());
}
lblAdresse.Text = sb.ToString();
return;
}
}
SetzeDefaultAdresse(pRO);
}
private void SetzeDefaultAdresse(ServiceInvoiceRO pRO)
{
StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmpty(pRO.RecipientAddressLine1))
{
if (pRO.RecipientAddressLine1.StartsWith("Herrn "))
{
pRO.RecipientAddressLine1 = pRO.RecipientAddressLine1.Replace("Herrn", "Herr");
}
pRO.RecipientOrganisation = pRO.RecipientAddressLine1;
}
if (!String.IsNullOrEmpty(pRO.RecipientOrganisation))
{
sb.AppendLine(pRO.RecipientOrganisation);
}
if (!String.IsNullOrEmpty(pRO.RecipientContactPerson))
{
sb.AppendLine(pRO.RecipientContactPerson);
}
if (!String.IsNullOrEmpty(pRO.RecipientDivision))
{
sb.AppendLine(pRO.RecipientDivision);
}
if (!String.IsNullOrEmpty(pRO.RecipientStreet))
{
sb.AppendLine(pRO.RecipientStreet);
}
if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown))
{
sb.AppendLine(pRO.RecipientPostCodeAndTown);
}
lblAdresse.Text = sb.ToString();
}
}
}