From dc3ad25f2133306d148b83eeb2585b4a075eb3bc Mon Sep 17 00:00:00 2001 From: Kojo Date: Wed, 29 Oct 2025 15:24:01 +0100 Subject: [PATCH] =?UTF-8?q?Mittelpunkt:=20Stundenlohn=20f=C3=BCr=20Zuschl?= =?UTF-8?q?=C3=A4geArbeit-Bereicht=20aus=20Bruttogehalt=20berechnen=20(to?= =?UTF-8?q?=20be=20tested)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReportImp/Mittelpunkt/Lohnliste.cs | 3 +- .../Service/CustomEmployeeService.cs | 88 +++++++++++++++++-- 2 files changed, 81 insertions(+), 10 deletions(-) diff --git a/ReportImp/Mittelpunkt/Lohnliste.cs b/ReportImp/Mittelpunkt/Lohnliste.cs index 89373a9bc..867bd5ef6 100644 --- a/ReportImp/Mittelpunkt/Lohnliste.cs +++ b/ReportImp/Mittelpunkt/Lohnliste.cs @@ -73,13 +73,12 @@ namespace Mittelpunkt row.Field14 = String.Format("{0:0.00}", c.HourlyRate); } - /* string entgeldStufe = LeseEntgeldstufenVarfield(emp); if (!String.IsNullOrEmpty(entgeldStufe)) { row.Field15 = entgeldStufe; } - */ + row.Field16 = emp.Notice2; } } diff --git a/ReportImp/Mittelpunkt/Service/CustomEmployeeService.cs b/ReportImp/Mittelpunkt/Service/CustomEmployeeService.cs index 5d0e9de3c..8822af657 100644 --- a/ReportImp/Mittelpunkt/Service/CustomEmployeeService.cs +++ b/ReportImp/Mittelpunkt/Service/CustomEmployeeService.cs @@ -17,24 +17,96 @@ namespace Mittelpunkt.Service Contract currentContract = employee.GetValidContractForDate(DateTime.Now); if (currentContract != null) { - // Falls Stundensatz noch leer aus Bruttogehalt und Wochenstunden berechnen (durchschn. 4,33 Wochen pro Monat) + // falls Stundensatz noch leer aus Bruttogehalt und Wochenstunden berechnen (durchschn. 4,33 Wochen pro Monat) if (!currentContract.HourlyRate.HasValue) { if (currentContract.GrossSalary.HasValue && currentContract.WeeklyTotalHours.HasValue) { - decimal? stundensatz = currentContract.GrossSalary / currentContract.WeeklyTotalHours / (decimal) 4.33; - currentContract.HourlyRate = Math.Round((decimal) stundensatz, 2, MidpointRounding.AwayFromZero); + decimal? stundensatz = currentContract.GrossSalary / currentContract.WeeklyTotalHours / (decimal)4.33; + currentContract.HourlyRate = Math.Round((decimal)stundensatz, 2, MidpointRounding.AwayFromZero); DAOFactory.GenericDAO.Update(employee); - - // erst nach Serverlieferung - //SettingsLogic.AddToUsersHistory(eOid); + + SettingsLogic.AddToUsersHistory(eOid); } } - } - + + // das gleiche fuer den Zuschlaege-Arbeit-Stundensatz, aus Zuschlaege-Arbeit-Bruttogehalt + decimal? bruttogehaltFuerArbeitszuschlaege = null; + decimal? stundensatzFuerArbeitszuschlaege = null; + foreach (var vv in employee.VarFieldValueList) + { + if (vv.VarFieldDefOid == 3) + { + var varFieldValue = BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName)); + decimal dec = 0; + if (varFieldValue != null && Decimal.TryParse(varFieldValue.ToString(), out dec)) + { + if (dec > 0) + { + bruttogehaltFuerArbeitszuschlaege = dec; + } + } + } + else if (vv.VarFieldDefOid == 4) + { + var varFieldValue = BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName)); + decimal dec = 0; + if (varFieldValue != null && Decimal.TryParse(varFieldValue.ToString(), out dec)) + { + if (dec > 0) + { + stundensatzFuerArbeitszuschlaege = dec; + } + } + } + + } + + if (bruttogehaltFuerArbeitszuschlaege != null && stundensatzFuerArbeitszuschlaege is null) + { + stundensatzFuerArbeitszuschlaege = bruttogehaltFuerArbeitszuschlaege / currentContract.WeeklyTotalHours / (decimal)4.33; + stundensatzFuerArbeitszuschlaege = Math.Round((decimal)stundensatzFuerArbeitszuschlaege, 2, MidpointRounding.AwayFromZero); + } + + DAOFactory.GenericDAO.Update(employee); + + } + var employeeDc = MapperFactory.EmployeeDC_Employee.MapToNewDC(employee); return employeeDc; + } + + + private string LeseEntgeldstufenVarfield(Employee employee) + { + string entgeldstufe = null; + foreach (var vv in employee.VarFieldValueList) + { + if (vv.VarFieldDefOid == 2) + { + var varFieldValue = BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName)); + if (varFieldValue != null) + { + entgeldstufe = varFieldValue.ToString(); + } + + /* + var varFieldValue = BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName)); + + decimal dec = 0; + if (varFieldValue != null && Decimal.TryParse(varFieldValue.ToString(), out dec)) + { + if (dec > 0) + { + return dec / 5; + } + } + */ + } + } + + return entgeldstufe; } } }