452 lines
18 KiB
C#
452 lines
18 KiB
C#
using System;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Report;
|
|
using DevExpress.XtraReports.UI;
|
|
using System.Data;
|
|
using BeWo.Data.Access;
|
|
using System.Collections.Generic;
|
|
using System.Drawing.Imaging;
|
|
using System.Linq;
|
|
using System.Xml.Schema;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Service.DCEntityMapper;
|
|
using BeWo.Service.Plugins;
|
|
using BeWo.Service.ServiceImplementations;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Services;
|
|
using DevExpress.Xpo.DB;
|
|
|
|
namespace HphBersenbrueckFreizeitUndReisen
|
|
{
|
|
[IDSpecificClass(Identifier = "Helferentgelt")]
|
|
public partial class Helferentgelt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
|
|
{
|
|
protected Dictionary<long, VarFieldDef> Oid2VarfieldDef { get; set; }
|
|
public Helferentgelt()
|
|
{
|
|
InitializeComponent();
|
|
|
|
}
|
|
|
|
public void SetReportDataSource(QueryRO queryRo)
|
|
{
|
|
Oid2VarfieldDef = new Dictionary<long, VarFieldDef>();
|
|
var varFieldDefs = DAOFactory.GenericDAO.GetAllActive<VarFieldDef>();
|
|
|
|
foreach (var varFieldDef in varFieldDefs)
|
|
{
|
|
Oid2VarfieldDef.Add(varFieldDef.Oid.Value, varFieldDef);
|
|
}
|
|
var ro = CreateRo(queryRo);
|
|
|
|
|
|
this.bindingSource1.DataSource = ro;
|
|
}
|
|
|
|
private HelferentgeltRO CreateRo(QueryRO queryRo)
|
|
{
|
|
HelferentgeltRO result = new HelferentgeltRO();
|
|
result.DetailList = new List<HelferentgeltDetailRO>();
|
|
|
|
DateTime reportMonat = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
|
|
|
|
DateTime instsStart = DateTime.MinValue;
|
|
DateTime instsStop = DateTime.MaxValue;
|
|
long? empOid = null;
|
|
|
|
if (queryRo.Rows.Count > 0)
|
|
{
|
|
if (queryRo.Rows[0].Field1 != null)
|
|
{
|
|
DateTime.TryParse(queryRo.Rows[0].Field1.ToString(), out reportMonat);
|
|
}
|
|
if (queryRo.Rows[0].Field2 != null)
|
|
{
|
|
DateTime.TryParse(queryRo.Rows[0].Field2.ToString(), out instsStart);
|
|
}
|
|
if (queryRo.Rows[0].Field3 != null)
|
|
{
|
|
DateTime.TryParse(queryRo.Rows[0].Field3.ToString(), out instsStop);
|
|
}
|
|
if (queryRo.Rows[0].Field4 != null)
|
|
{
|
|
long oid = 0;
|
|
if (Int64.TryParse(queryRo.Rows[0].Field4.ToString(), out oid))
|
|
{
|
|
empOid = oid;
|
|
}
|
|
}
|
|
}
|
|
|
|
int idx = 1;
|
|
|
|
IList<Employee> employees = null;
|
|
|
|
if (empOid.HasValue && empOid.Value > 0)
|
|
{
|
|
employees = new List<Employee>();
|
|
employees.Add(DAOFactory.GenericDAO.GetByID<Employee>(empOid.Value));
|
|
}
|
|
else
|
|
{
|
|
employees = DAOFactory.GenericDAO.GetAllActiveAndArchived<Employee>();
|
|
}
|
|
|
|
|
|
foreach (var emp in employees)
|
|
{
|
|
HelferentgeltDetailRO ro = new HelferentgeltDetailRO();
|
|
|
|
bool isMinijobber = false;
|
|
|
|
var contract = emp.GetValidContractForDate(reportMonat);
|
|
|
|
if (contract != null)
|
|
{
|
|
if (contract.EmploymentType != null && contract.EmploymentType.Name == "Minijob")
|
|
{
|
|
isMinijobber = true;
|
|
}
|
|
}
|
|
|
|
ro.Nummer = idx++;
|
|
|
|
ro.KlientNachname = emp.Person.LastName;
|
|
ro.KlientVorname = emp.Person.FirstName;
|
|
ro.Personalnummer = emp.PersonnelNumber;
|
|
|
|
DateTimeSpan span = new DateTimeSpan();
|
|
span.StartDate = reportMonat;
|
|
span.EndDate = reportMonat.AddMonths(1);
|
|
|
|
var serviceRecords = DAOFactory.SearchDAO.FindEmployeeServiceRecords(emp.Oid.Value, span, null, null);
|
|
|
|
if (ro.KlientVorname == "Herbort")
|
|
{
|
|
int test = 0;
|
|
}
|
|
|
|
|
|
//Eingliederungshilfe Einzelbetreuung
|
|
//Eingliederungshilfe Einzelbetreuung (hauptl)
|
|
//Führungszeugnisauszahlung Führungszeugnisauszahlung
|
|
|
|
//Helferentgelt Freizeithelfer
|
|
//Helferentgelt Reisehelfer
|
|
//Helferentgelt Reiseleitung
|
|
|
|
//Interne Dokumentation Aktenvermerk
|
|
//Selbstzahler Einzelbetreuung
|
|
//Selbstzahler Einzelbetreuung(hauptamtl.)
|
|
//Selbstzahler Freizzeitangebote
|
|
//Selbstzahler Freizzeittreff + Ausflüge
|
|
//Selbstzahler Kurzurlaub
|
|
//Selbstzahler Reisen
|
|
//Stadt Salzgitter Eingliederungshilfe Freizeittreff + Ausflüge
|
|
//Umwandlung Pflegesachleistung Einzelbetreuung
|
|
//Umwandlung Pflegesachleistung Einzelbetreuung(hauptl)
|
|
//Umwandlung Pflegesachleistung Freizeittreff + Ausflüge
|
|
//Umwandlung Pflegesachleistung Freizzeitangebote
|
|
//Umwandlung Pflegesachleistung Reisen
|
|
//Wirtschaftliche Jugendhilfe Freizeittreff + Ausflüge
|
|
//§ 42 Kurzzeitpflege Kurzurlaub
|
|
//§ 45b Entlastungsbetrag Einzelbetreuung
|
|
//§ 45b Entlastungsbetrag Einzelbetreuung(hauptamtl.)
|
|
//§ 45b Entlastungsbetrag Freizeitangebote
|
|
//§ 45b Entlastungsbetrag Freizzeittreff + Ausflüge
|
|
//§ 45b Entlastungsbetrag Kurzzurlaub
|
|
//§ 45b Entlastungsbetrag Reisen
|
|
//§39 Verhinderungspflege Einzelbetreuung
|
|
//§39 Verhinderungspflege Einzelbetreuung(hauptamtl)
|
|
//§39 Verhinderungspflege Freizzeitangebote
|
|
//§39 Verhinderungspflege Freizzeitreff + Ausflüge
|
|
//§39 Verhinderungspflege Kurzurlaub
|
|
//§39 Verhinderungspflege Reisen
|
|
|
|
//Nicht Minijob => Loa 53
|
|
|
|
//Frau Ludwig und Frau Tütü? Beschäftigungsart
|
|
//Spalte Reisen = Betrag aus Kategorie Helferentgelt
|
|
//Spalte 1+2 => Einzelbetreuung + Helferentgelt->Freizeithelfer
|
|
// Spalte Führungszeugnisse => Kategorie-> Führungszeugnisse
|
|
|
|
bool add = false;
|
|
|
|
|
|
//CB: Bis 10.01.2025
|
|
//foreach (var sr in serviceRecords)
|
|
//{
|
|
// bool cont = false;
|
|
|
|
// if (sr.InsTs.HasValue && instsStart <= sr.InsTs && sr.InsTs < instsStop.Date)
|
|
// {
|
|
// cont = true;
|
|
// }
|
|
// if (cont)
|
|
// {
|
|
// if (sr.ServiceDescription.Name.Contains("Einzelbetreuung") || sr.ServiceDescription.Name.Contains("Freizeithelfer"))
|
|
// {
|
|
// add = true;
|
|
// if (isMinijobber)
|
|
// {
|
|
// ro.StundenLoa51_35800 = (ro.StundenLoa51_35800 ?? 0) + sr.RoundedDuration/60;
|
|
// }
|
|
// else
|
|
// {
|
|
// ro.StundenLoA53_35700 = (ro.StundenLoA53_35700 ?? 0) + sr.RoundedDuration/60;
|
|
|
|
// }
|
|
|
|
// if (sr.DistanceInMeter.HasValue)
|
|
// {
|
|
// ro.KilometerLoa497 = (ro.KilometerLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
// }
|
|
// }
|
|
// else if (sr.ServiceDescription.Name.Contains("Führungszeugnis"))
|
|
// {
|
|
// add = true;
|
|
|
|
// var preis = GetPreisVonServiceDescription(sr.ServiceDescription, reportMonat);
|
|
// if (preis.HasValue)
|
|
// {
|
|
// ro.FührungszeugnisseLoa494 = (ro.FührungszeugnisseLoa494 ?? 0) + preis;
|
|
// }
|
|
// }
|
|
// else if (sr.ServiceDescription.ServiceCategory.Name.Contains("Helferentgelt"))
|
|
// {
|
|
// add = true;
|
|
|
|
// if (sr.ServiceDescription.Name.Contains("Kurzreise"))
|
|
// {
|
|
// ro.StundenLoA44_35900 = (ro.StundenLoa51_35900 ?? 0) + sr.RoundedDuration / 60;
|
|
// }
|
|
// else if (sr.ServiceDescription.Name.Contains("Reise"))
|
|
// {
|
|
// ro.StundenLoA44_35900 = (ro.StundenLoA44_35900 ?? 0) + sr.RoundedDuration / 60;
|
|
// }
|
|
// else
|
|
// {
|
|
// var preis = GetPreisVonServiceDescription(sr.ServiceDescription, reportMonat);
|
|
// if (preis.HasValue)
|
|
// {
|
|
// //ro.FührungszeugnisseMinijobLoa494 = (ro.FührungszeugnisseMinijobLoa494 ?? 0) + preis;
|
|
// }
|
|
// }
|
|
// //var preis = GetPreisVonServiceDescription(sr.ServiceDescription, reportMonat);
|
|
// //if (preis.HasValue)
|
|
// //{
|
|
// // int tage = 0;
|
|
|
|
// // var start = sr.Start.Value;
|
|
// // while (start.Date <= sr.End.Value.Date)
|
|
// // {
|
|
// // tage++;
|
|
// // start = start.AddDays(1);
|
|
// // }
|
|
// // preis *= tage;
|
|
// // ro.ReisenLoa44 = (ro.ReisenLoa44 ?? 0) + preis;
|
|
// //}
|
|
|
|
// if (sr.DistanceInMeter.HasValue)
|
|
// {
|
|
// ro.KilometerLoa497 = (ro.KilometerLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
//CB: Ab 11.01.2025
|
|
foreach (var sr in serviceRecords)
|
|
{
|
|
bool cont = false;
|
|
|
|
if (sr.InsTs.HasValue && instsStart <= sr.InsTs && sr.InsTs < instsStop.Date)
|
|
{
|
|
cont = true;
|
|
}
|
|
if (cont)
|
|
{
|
|
// Leistung:
|
|
|
|
// LoA 53(Kostenstelle 35700 & 35800)
|
|
|
|
//Einzelbetreuung + Einzelbetreuung hauptamtlich
|
|
|
|
// = Kategorie Entlastungsbetrag, Verhinderungspflege, Eingliederungshilfe, Selbstzahler
|
|
|
|
|
|
|
|
// LoA 44(Kostenstelle 35950)
|
|
|
|
//Freizeitangebote, Freizeittreff + Ausflüge, Tagesfahrten
|
|
|
|
//= Kategorie Entlastungsbetrag, Verhinderungspflege, Selbstzahler
|
|
|
|
|
|
|
|
//LoA 44(Kostenstelle 35900)
|
|
|
|
//Reisen
|
|
|
|
//= Kategorie Entlastungsbetrag, Verhinderungspflege, Selbstzahler
|
|
|
|
|
|
|
|
//Zudem kann bei den Kategorien raus:
|
|
|
|
// Kurzzeitpflege
|
|
|
|
// Wirtschaftl.Jugendhilfe
|
|
|
|
// Stadt Salzgitter
|
|
|
|
|
|
|
|
//Zudem kann die Leistung raus:
|
|
|
|
// Kurzurlaub
|
|
|
|
|
|
|
|
//Zudem nochmal die erste Mail: Können Sie die Helferentgeltliste aus dem BeWo so überarbeiten, dass die Stunden der Helfer für Einzelbetreuungen und Freizeitangebote(LoA 53) nicht mehr zusammengefasst, sondern jeweils in separaten Spalten aufgeführt werden?
|
|
|
|
//Zudem kann LoA 51 ? nur Kostenstelle 35700 raus und LoA 54 soll durch LoA 497 ersetzt werden.
|
|
|
|
var cat = sr.ServiceDescription.ServiceCategory.Name;
|
|
var desc = sr.ServiceDescription.Name;
|
|
|
|
//Kostenstelle 35700+35800
|
|
//if (desc.Contains("Einzelbetreuung") && (cat.Contains("Entlastungsbetrag") || cat.Contains("Verhinderungspflege") || cat.Contains("Eingliederungshilfe") || cat.Contains("Selbstzahler")))
|
|
if (desc.Contains("Einzelbetreuung"))
|
|
{
|
|
add = true;
|
|
|
|
//if (ro.KlientNachname.Contains("Tüting"))
|
|
//{
|
|
// int test = 0;
|
|
//}
|
|
if (isMinijobber)
|
|
{
|
|
ro.StundenLoa51_35800 = (ro.StundenLoa51_35800 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
else
|
|
{
|
|
if (cat.Contains("Eingliederungshilfe"))
|
|
{
|
|
ro.StundenLoA53_35800 = (ro.StundenLoA53_35800 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
else
|
|
{
|
|
ro.StundenLoA53_35700 = (ro.StundenLoA53_35700 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
}
|
|
|
|
if (sr.DistanceInMeter.HasValue)
|
|
{
|
|
ro.KilometerEinzelstundenLoa497 = (ro.KilometerEinzelstundenLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
}
|
|
}
|
|
//Kostenstelle 35950
|
|
else if ((desc.Contains("Freizeitangebot") || desc.Contains("Freizeittreff") || desc.Contains("Tagesfahrt") || desc.Contains("Ausflug") || desc.Contains("Freizeithelfer")) && (cat.Contains("Entlastungsbetrag") || cat.Contains("Verhinderungspflege") || cat.Contains("Selbstzahler") || cat.Contains("Helferentgelt")))
|
|
{
|
|
if (sr.RoundedDuration > 0)
|
|
{
|
|
add = true;
|
|
|
|
if (isMinijobber)
|
|
{
|
|
ro.StundenLoa51_35950 = (ro.StundenLoa51_35950 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
else
|
|
{
|
|
ro.StundenLoA44_35950 = (ro.StundenLoA44_35950 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
}
|
|
if (sr.DistanceInMeter.HasValue)
|
|
{
|
|
ro.KilometerFreizeitangeboteLoa497 = (ro.KilometerFreizeitangeboteLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
}
|
|
}
|
|
//Kostenstelle 35900
|
|
else if (desc.ToLower().Contains("reise") && (cat.Contains("Entlastungsbetrag") || cat.Contains("Verhinderungspflege") || cat.Contains("Selbstzahler") || cat.Contains("Helferentgelt")))
|
|
{
|
|
add = true;
|
|
|
|
if (isMinijobber)
|
|
{
|
|
ro.StundenLoa51_35900 = (ro.StundenLoa51_35900 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
else
|
|
{
|
|
ro.StundenLoA44_35900 = (ro.StundenLoA44_35900 ?? 0) + sr.RoundedDuration / 60;
|
|
}
|
|
|
|
if (sr.DistanceInMeter.HasValue)
|
|
{
|
|
ro.KilometerReisenLoa497 = (ro.KilometerReisenLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
}
|
|
}
|
|
else if ((desc.Contains("Prämie Basisschulung") || desc.Contains("Führungszeugnis")) && (cat.Contains("Führungszeugnis") || cat.Contains("Helferentgelt")))
|
|
{
|
|
add = true;
|
|
|
|
var preis = GetPreisVonServiceDescription(sr.ServiceDescription, reportMonat);
|
|
if (preis.HasValue)
|
|
{
|
|
ro.FührungszeugnisseLoa494 = (ro.FührungszeugnisseLoa494 ?? 0) + preis;
|
|
}
|
|
//ro.FührungszeugnisseLoa494 = (ro.FührungszeugnisseLoa494 ?? 0) + sr.RoundedDuration / 60;
|
|
|
|
if (sr.DistanceInMeter.HasValue)
|
|
{
|
|
//ro.KilometerReisenLoa497 = (ro.KilometerReisenLoa497 ?? 0) + sr.DistanceInMeter.Value;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//public decimal? StundenLoa53 { get; set; }
|
|
//public decimal? KilometerLoa54 { get; set; }
|
|
//public decimal? ReisenLoa44 { get; set; }
|
|
//public decimal? StundenMinijobLoa51 { get; set; }
|
|
//public decimal? KilometerMinijobLoa497 { get; set; }
|
|
//public decimal? FührungszeugnisseMinijobLoa494 { get; set; }
|
|
if (add)
|
|
{
|
|
result.DetailList.Add(ro);
|
|
}
|
|
}
|
|
result.DetailList = result.DetailList.OrderBy(d => d.KlientNachname).ToList();
|
|
|
|
idx = 1;
|
|
foreach (var ro in result.DetailList)
|
|
{
|
|
ro.Nummer = idx++;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private decimal? GetPreisVonServiceDescription(ServiceDescription serviceDescription, DateTime monat)
|
|
{
|
|
if (serviceDescription != null && serviceDescription.CostRatePeriods != null)
|
|
{
|
|
var crpDcList =
|
|
MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(serviceDescription.CostRatePeriods);
|
|
|
|
var crp = crpDcList.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, monat);
|
|
|
|
if (crp != null)
|
|
{
|
|
return crp.CostRateValue;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|