Mittelpunkt: Stundenlohn für ZuschlägeArbeit-Bereicht aus Bruttogehalt berechnen (to be tested)

This commit is contained in:
2025-10-29 15:24:01 +01:00
parent 1a3e8b8dd1
commit dc3ad25f21
2 changed files with 81 additions and 10 deletions

View File

@@ -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;
}
}

View File

@@ -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<Employee>(eOid);
SettingsLogic.AddToUsersHistory<Employee>(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;
}
}
}