change leaving time on checkout for EndOfyear or OnLeftWork Employees

This commit is contained in:
SamSys
2025-09-09 18:41:16 +03:30
parent 3b12be04b5
commit f9947dc138
4 changed files with 36 additions and 2 deletions

View File

@@ -61,5 +61,9 @@ public class ComputingViewModel
/// </summary>
public TimeSpan EmployeeMandatoryHours { get; set; }
/// <summary>
/// مجموع مرخصی های پرسنل در این فیش حقوقی
/// </summary>
public TimeSpan TotalLeaveOnThisCheckout { get; set; }
//public List<string> holidays;
}

View File

@@ -1131,7 +1131,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
ch.TotalBreakTimeStr = ch.CheckoutRollCall.TotalBreakTimeSpan.ToFarsiHoursAndMinutes("-");
ch.TotalPresentTimeStr = ch.CheckoutRollCall.TotalPresentTimeSpan.ToFarsiHoursAndMinutes("-");
ch.TotalMandatoryTimeStr = ch.CheckoutRollCall.TotalMandatoryTimeSpan.ToFarsiHoursAndMinutes("-");
ch.TotalPaidLeave = ch.CheckoutRollCall.TotalPaidLeaveTmeSpan.ToFarsiDaysAndHoursAndMinutes("-");
ch.TotalPaidLeave = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(ch.CheckoutRollCall.TotalPaidLeaveTmeSpan.TotalHours), ch.CheckoutRollCall.TotalPaidLeaveTmeSpan.Minutes, "-");
ch.MonthlyRollCall = ch.CheckoutRollCall.RollCallDaysCollection
.Select(x => new CheckoutDailyRollCallViewModel
{

View File

@@ -323,6 +323,9 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
TimeSpan totalLeaveSpan = TimeSpan.Zero;
TimeSpan starndardHoursesPerTotalDaysSapn = new TimeSpan(hours, minutes, 0);
//محموع تمام مرخصی های این ماه
TimeSpan totalLeaveOnThisCheckout = TimeSpan.Zero;
if (leaveSearchResult.Count > 0 || hoursesleave.Count > 0)
{
if (leaveSearchResult.Any(x => x.HasShiftDuration))
@@ -342,6 +345,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
TimeSpan totalLeave = new TimeSpan(leaveSearchResult.Sum(x => x.ShiftDuration.Ticks));
totalLeave = totalLeave.Add(hoursesleaveTimeSpans);
totalLeaveOnThisCheckout = totalLeave;
var totalLeaveDouble = (totalLeave.TotalMinutes) / 60;
if (totalLeaveDouble > starndardHoursesPerTotalDays)
{
@@ -413,7 +417,11 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
totalLeaveSpan = sumLeave;
}
#region TotalLeaveOnThisCheckout
totalLeaveOnThisCheckout = (leavingDayCout * workingPerDayAve).Add(hoursesleaveTimeSpans);
#endregion
}
@@ -886,6 +894,10 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
// مرخصی استحقاقی
TotalPaidLeave = totalLeaveSpan,
// مجموع مرخصی های پرسنل در این فیش حقوقی
TotalLeaveOnThisCheckout = totalLeaveOnThisCheckout,
//مرخصی استعلاجی
TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)),

View File

@@ -31,6 +31,7 @@ using PersianTools.Core;
using ServiceHost.Hubs;
using System.Diagnostics.Contracts;
using WorkFlow.Application.Contracts.WorkFlow;
using System.Globalization;
namespace ServiceHost.Areas.Admin.Pages.Company.Checkouts;
@@ -949,6 +950,23 @@ public class IndexModel : PageModel
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, fridayStartToEnd,
officialHoliday, totalHoursH, totalHoursM, consumableItemDouble, housingAllowanceDouble,
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
switch (computeOption)
{
case "OnEndOfYear":
var endOfYearCheckout = separation.ContractEnd.Substring(5, 2);
mandatoryCompute.TotalPaidLeave = separation.HasLeft || endOfYearCheckout == "12" ? mandatoryCompute.TotalPaidLeave : mandatoryCompute.TotalLeaveOnThisCheckout;
break;
case "OnLeftWork":
mandatoryCompute.TotalPaidLeave = separation.HasLeft ? mandatoryCompute.TotalPaidLeave : mandatoryCompute.TotalLeaveOnThisCheckout;
break;
case "OnEndOfContract":
var startMonth = contract.ContarctStart.Substring(5, 2);
var endMonth = contract.ContractEnd.Substring(5, 2);
mandatoryCompute.TotalPaidLeave = startMonth != endMonth ? mandatoryCompute.TotalLeaveOnThisCheckout : mandatoryCompute.TotalPaidLeave;
break;
}
var command = new CreateCheckout
{
EmployeeFullName = employee.EmployeeFullName,