Merge From Master
This commit is contained in:
@@ -38,7 +38,7 @@ public class UidBasicInformation
|
||||
{
|
||||
"GENDER_MALE" => Application.Gender.Male,
|
||||
"GENDER_FEMALE" => Application.Gender.Female,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
_ => Application.Gender.None
|
||||
};
|
||||
}
|
||||
public record IdentificationInformation(string NationalId, string BirthDate, string ShenasnameSeri, string ShenasnameSerial, string ShenasnamehNumber);
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace Company.Domain.RollCallAgg;
|
||||
public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
||||
{
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected);
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, bool totalLeaveCompute);
|
||||
|
||||
/// <summary>
|
||||
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب
|
||||
|
||||
@@ -8,7 +8,8 @@ namespace CompanyManagment.App.Contracts.RollCall;
|
||||
public interface IRollCallMandatoryApplication
|
||||
{
|
||||
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart);
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected);
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// گزارش نوبت کاری حضور غیاب
|
||||
|
||||
@@ -197,7 +197,8 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
{
|
||||
command.AbsenceDeduction = command.AbsenceDeduction - command.OvertimePay;
|
||||
command.OvertimePay = 0;
|
||||
}
|
||||
command.OverTimeWorkValue = "00:00";
|
||||
}
|
||||
else
|
||||
{
|
||||
command.OvertimePay = command.OvertimePay - command.AbsenceDeduction;
|
||||
|
||||
@@ -1735,7 +1735,7 @@ namespace CompanyManagment.Application
|
||||
if (file.Length > (50 * 1024 * 1024))
|
||||
return op.Failed("حجم فایل نمی تواند بیشتر از 50 مگابایت باشد");
|
||||
|
||||
if (!allowedExtensions.Contains(fileExtension))
|
||||
if (!allowedExtensions.Contains(fileExtension.ToLower()))
|
||||
{
|
||||
var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد";
|
||||
operationMessage += "\n";
|
||||
|
||||
@@ -21,9 +21,11 @@ public class RollCallMandatoryApplication : IRollCallMandatoryApplication
|
||||
return _rollCallMandatoryRepository.Exists(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date);
|
||||
}
|
||||
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected)
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute)
|
||||
|
||||
{
|
||||
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute, dailyWageUnAffected);
|
||||
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
|
||||
|
||||
}
|
||||
|
||||
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd,
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -39,6 +39,7 @@ using PersianTools.Core;
|
||||
|
||||
|
||||
|
||||
|
||||
namespace CompanyManagment.EFCore.Repository;
|
||||
|
||||
public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRollCallMandatoryRepository
|
||||
@@ -67,9 +68,10 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
#region OfficialChckout
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart,
|
||||
DateTime contractEnd,
|
||||
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,double dailyWageUnAffected)
|
||||
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,double dailyWageUnAffected, bool totalLeaveCompute)
|
||||
{
|
||||
#region Entities
|
||||
|
||||
#region Entities
|
||||
|
||||
string SumWorkeTime = string.Empty;
|
||||
var weeklyTime = new TimeSpan();
|
||||
@@ -197,19 +199,19 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
BreakTimeSpan = x.BreakTimeSpan
|
||||
}).ToList();
|
||||
|
||||
groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x =>
|
||||
{
|
||||
TimeSpan breakTime;
|
||||
if (contractStart > endOfFarvardin)
|
||||
{
|
||||
breakTime = CalculateBreakTime(
|
||||
x.First().BreakTimeSpan,
|
||||
new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)));
|
||||
}
|
||||
else
|
||||
{
|
||||
breakTime = CalculateBreakTime(breakTimeEntity, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)));
|
||||
}
|
||||
groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x =>
|
||||
{
|
||||
TimeSpan breakTime;
|
||||
if (contractStart > endOfFarvardin)
|
||||
{
|
||||
breakTime = CalculateBreakTime(
|
||||
x.First().BreakTimeSpan,
|
||||
new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)));
|
||||
}
|
||||
else
|
||||
{
|
||||
breakTime = CalculateBreakTime(breakTimeEntity, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)));
|
||||
}
|
||||
|
||||
DateTime friday = new DateTime();
|
||||
|
||||
@@ -233,15 +235,15 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
}
|
||||
|
||||
return new GroupedRollCalls()
|
||||
{
|
||||
CreationDate = x.Key,
|
||||
ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value, EndWithOutResTime = s.EndDate!.Value })
|
||||
.ToList(),
|
||||
//HasFriday = x.Any(s =>
|
||||
// s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday ||
|
||||
// s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)),
|
||||
{
|
||||
CreationDate = x.Key,
|
||||
ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value, EndWithOutResTime = s.EndDate!.Value })
|
||||
.ToList(),
|
||||
//HasFriday = x.Any(s =>
|
||||
// s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday ||
|
||||
// s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)),
|
||||
|
||||
Fridays = friday,
|
||||
Fridays = friday,
|
||||
|
||||
SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - breakTime,
|
||||
|
||||
@@ -265,7 +267,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
|
||||
|
||||
TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks));
|
||||
TimeSpan sumSpansWhitOutleaves = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks));
|
||||
TimeSpan sumSpansWhitOutleaves = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks));
|
||||
|
||||
|
||||
//بدست آوردن مرخصی ساعتی
|
||||
@@ -323,6 +325,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,8 +347,11 @@ 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)
|
||||
|
||||
//اگر مدت مرخصی از مجاز بیشتر بود و مدل محاسبه کامل نبود
|
||||
if (totalLeaveDouble > starndardHoursesPerTotalDays && !totalLeaveCompute)
|
||||
{
|
||||
|
||||
sumSpans = sumSpans.Add(starndardHoursesPerTotalDaysSapn);
|
||||
@@ -402,7 +410,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
}
|
||||
|
||||
|
||||
if (sumLeave > starndardHoursesPerTotalDaysSapn)
|
||||
if (sumLeave > starndardHoursesPerTotalDaysSapn && !totalLeaveCompute)
|
||||
{
|
||||
sumSpans = sumSpans.Add(starndardHoursesPerTotalDaysSapn);
|
||||
totalLeaveSpan = starndardHoursesPerTotalDaysSapn;
|
||||
@@ -413,7 +421,11 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
totalLeaveSpan = sumLeave;
|
||||
}
|
||||
|
||||
//#region TotalLeaveOnThisCheckout
|
||||
|
||||
//totalLeaveOnThisCheckout = (leavingDayCout * workingPerDayAve).Add(hoursesleaveTimeSpans);
|
||||
|
||||
//#endregion
|
||||
}
|
||||
|
||||
|
||||
@@ -914,6 +926,10 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
|
||||
// مرخصی استحقاقی
|
||||
TotalPaidLeave = totalLeaveSpan,
|
||||
|
||||
//// مجموع مرخصی های پرسنل در این فیش حقوقی
|
||||
//TotalLeaveOnThisCheckout = totalLeaveOnThisCheckout,
|
||||
|
||||
//مرخصی استعلاجی
|
||||
TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)),
|
||||
|
||||
@@ -1822,6 +1838,69 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
var startDateAndTime = new PersianDateTime(syear, smonth, sday, start.Hour, start.Minute);
|
||||
var startContract = new PersianDateTime(syear, smonth, sday, start.Hour, start.Minute);
|
||||
var endContract = new PersianDateTime(eyear, emonth, eday, 23, 59);
|
||||
var countLeves = leaveSearchResult.Where(x => x.PaidLeaveType == "روزانه").ToList();
|
||||
//int totalLeaveDays = countLeves.Sum(x => int.Parse(x.LeaveHourses));
|
||||
List<LeaveViewModel> affectedLeaves = new List<LeaveViewModel>();
|
||||
|
||||
DateTime contractStart = ($"{startContract}").ToGeorgianDateTime();
|
||||
DateTime contractEnd = ($"{endContract}").ToGeorgianDateTime();
|
||||
int leavingDayCout = 0;
|
||||
List<LeaveViewModel> thisCheckoutLeaves = new List<LeaveViewModel>();
|
||||
|
||||
|
||||
if (leaveSearchResult.Count > 0)
|
||||
{
|
||||
foreach (var leave in leaveSearchResult)
|
||||
{
|
||||
//مرخصی های مابین
|
||||
if (leave.StartLeaveGr >= contractStart && leave.EndLeaveGr <= contractEnd)
|
||||
{
|
||||
var modifyleave = new LeaveViewModel()
|
||||
{
|
||||
Id = leave.Id,
|
||||
StartLeaveGr = leave.StartLeaveGr,
|
||||
EndLeaveGr = leave.EndLeaveGr
|
||||
};
|
||||
thisCheckoutLeaves.Add(leave);
|
||||
}
|
||||
|
||||
// مرخصی که شروعش قبل از شروع تصفیه حساب است
|
||||
if (leave.StartLeaveGr < contractStart && leave.EndLeaveGr <= contractEnd)
|
||||
{
|
||||
var modifyleave = new LeaveViewModel()
|
||||
{
|
||||
Id = leave.Id,
|
||||
StartLeaveGr = contractStart,
|
||||
EndLeaveGr = leave.EndLeaveGr
|
||||
};
|
||||
thisCheckoutLeaves.Add(modifyleave);
|
||||
}
|
||||
// مرخصی که پایانش بعد از پایان تصفیه حساب است
|
||||
if (leave.EndLeaveGr > contractEnd && leave.StartLeaveGr >= contractStart)
|
||||
{
|
||||
var modifyleave = new LeaveViewModel()
|
||||
{
|
||||
Id = leave.Id,
|
||||
StartLeaveGr = leave.StartLeaveGr,
|
||||
EndLeaveGr = contractEnd,
|
||||
};
|
||||
thisCheckoutLeaves.Add(modifyleave);
|
||||
}
|
||||
|
||||
//مرخصی استثنا که تمام بازه فیش را پوشش میدهد
|
||||
if (leave.StartLeaveGr < contractStart && leave.EndLeaveGr > contractEnd)
|
||||
{
|
||||
var modifyleave = new LeaveViewModel()
|
||||
{
|
||||
Id = leave.Id,
|
||||
StartLeaveGr = leave.StartLeaveGr,
|
||||
EndLeaveGr = contractEnd,
|
||||
};
|
||||
thisCheckoutLeaves.Add(modifyleave);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var da = startDateAndTime; da <= endContract; da = da.AddHours(addHours))
|
||||
{
|
||||
|
||||
@@ -1845,14 +1924,31 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
end.Second);
|
||||
Console.WriteLine($"{currentDateFa} - {currentDateGr.Date} - start : {startComplex} end : {endComplex}");
|
||||
|
||||
rollCallList.Add(new RollCallViewModel()
|
||||
|
||||
var hasLeave = thisCheckoutLeaves.Any(x => startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date);
|
||||
if (!hasLeave)
|
||||
{
|
||||
StartDate = startComplex,
|
||||
EndDate = endComplex,
|
||||
ShiftSpan = (endComplex - startComplex),
|
||||
ShiftDate = currentDateGr,
|
||||
ShiftEndWithoutRest = endComplex
|
||||
});
|
||||
rollCallList.Add(new RollCallViewModel()
|
||||
{
|
||||
StartDate = startComplex,
|
||||
EndDate = endComplex,
|
||||
ShiftSpan = (endComplex - startComplex),
|
||||
ShiftDate = currentDateGr,
|
||||
ShiftEndWithoutRest = endComplex
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var affected = thisCheckoutLeaves.FirstOrDefault(x => startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date);
|
||||
var modifyleave = new LeaveViewModel()
|
||||
{
|
||||
Id = affected.Id,
|
||||
StartLeaveGr = affected.StartLeaveGr,
|
||||
EndLeaveGr = affected.EndLeaveGr
|
||||
};
|
||||
affectedLeaves.Add(modifyleave);
|
||||
}
|
||||
|
||||
|
||||
|
||||
var endCal = end - start;
|
||||
@@ -1861,14 +1957,20 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
|
||||
}
|
||||
|
||||
var countLeves = leaveSearchResult.Where(x => x.PaidLeaveType == "روزانه").ToList();
|
||||
if (countLeves.Count > 0)
|
||||
|
||||
|
||||
affectedLeaves = affectedLeaves.DistinctBy(x => x.Id).ToList();
|
||||
|
||||
//مرخصی هایی که تاریخ آن ها بین رکورد های حضور پرسنل بوده و اعمال نشده
|
||||
var exceptionLeaves = thisCheckoutLeaves
|
||||
.Where(t => !affectedLeaves.Select(a => a.Id).Contains(t.Id))
|
||||
.ToList();
|
||||
|
||||
//حذف رکورد های حضور به تعداد مرخصی های اعمال نشده
|
||||
if (exceptionLeaves.Count > 0)
|
||||
{
|
||||
int totalDays = countLeves.Sum(x => int.Parse(x.LeaveHourses));
|
||||
|
||||
|
||||
int countRollCall = rollCallList.Count();
|
||||
int takRollCall = totalDays < countRollCall ? (countRollCall - totalDays) : 0;
|
||||
int takRollCall = exceptionLeaves.Count < countRollCall ? (countRollCall - exceptionLeaves.Count) : 0;
|
||||
rollCallList = rollCallList.Take(takRollCall).ToList();
|
||||
}
|
||||
|
||||
|
||||
@@ -2349,24 +2349,26 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
// تعداد روزهایی که برای پرسنل مرخصی حساب شده
|
||||
result.TotalDayOfLeaveCompute = $"{resEndOfYear.CountChekoutDays}";
|
||||
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
var startDate = startWorkDate >= start1403 ? startWorkDate : start1403;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
var startDate = startWorkDate >= start1403 ? startWorkDate : start1403;
|
||||
|
||||
var endOfYearRes = EndOfYearCantoleaveList(startDate, separationEndDate, workshopId, employeeId, hasleft, leftWorkDate, fridayStartToEnd, officialHoliday, totalHoursH, totalHorsM, separationStartDate)
|
||||
.FirstOrDefault(x => x.ContractStart == separationStartDate);
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || (separationEndDate == contractEnd && checkoutMonth == "12"))
|
||||
{
|
||||
var end = EndOfYearCantoleaveList(startDate, separationEndDate, workshopId, employeeId,
|
||||
hasleft, leftWorkDate, fridayStartToEnd, officialHoliday, totalHoursH, totalHorsM,
|
||||
separationStartDate);
|
||||
|
||||
//وضعیت تصفیه مزد مرخصی
|
||||
result.LeaveCheckout = true;
|
||||
var endOfYearRes = EndOfYearCantoleaveList(startDate, separationEndDate, workshopId, employeeId, hasleft, leftWorkDate, fridayStartToEnd, officialHoliday, totalHoursH, totalHorsM, separationStartDate)
|
||||
.FirstOrDefault(x => x.ContractStart == separationStartDate);
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || (separationEndDate == contractEnd && checkoutMonth == "12"))
|
||||
{
|
||||
var end = EndOfYearCantoleaveList(startDate, separationEndDate, workshopId, employeeId,
|
||||
hasleft, leftWorkDate, fridayStartToEnd, officialHoliday, totalHoursH, totalHorsM,
|
||||
separationStartDate);
|
||||
|
||||
var canTolv = endOfYearRes.CanToLeave;
|
||||
var absence = end.Sum(x => x.PeriodOfAbsence);
|
||||
|
||||
//وضعیت تصفیه مزد مرخصی
|
||||
result.LeaveCheckout = true;
|
||||
|
||||
var canTolv = endOfYearRes.CanToLeave;
|
||||
var absence = end.Where(x=>x.ContractStart >= startDayOfYearGr).Sum(x => x.PeriodOfAbsence);
|
||||
|
||||
if (canTolv >= absence)
|
||||
{
|
||||
@@ -2427,12 +2429,12 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
hasleft, leftWorkDate, fridayStartToEnd, officialHoliday, totalHoursH, totalHorsM,
|
||||
separationStartDate);
|
||||
|
||||
var canTolv = endOfYearRes.CanToLeave;
|
||||
var absence = end.Sum(x => x.PeriodOfAbsence);
|
||||
var canTolv = endOfYearRes.CanToLeave;
|
||||
var absence = end.Where(x => x.ContractStart >= startDayOfYearGr).Sum(x => x.PeriodOfAbsence);
|
||||
if (canTolv >= absence)
|
||||
{
|
||||
canTolv -= absence;
|
||||
absence = 0;
|
||||
{
|
||||
canTolv -= absence;
|
||||
absence = 0;
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -770,6 +771,48 @@ public class IndexModel : PageModel
|
||||
|
||||
if (separation.checker)
|
||||
{
|
||||
//workshopInfo
|
||||
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
|
||||
|
||||
var employeeOptions =
|
||||
_employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds);
|
||||
var getYearsOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var yearsOption = getYearsOption == null ? workshop.YearsOptions : getYearsOption.YearsOptions;
|
||||
var getBonusesOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var bonusesOption = getBonusesOption == null
|
||||
? workshop.BonusesOptions
|
||||
: getBonusesOption.BonusesOptions;
|
||||
var getComputeOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var computeOption = getComputeOption == null
|
||||
? workshop.ComputeOptions
|
||||
: getComputeOption.ComputeOptions;
|
||||
//آیا کل مرخصی به ساعت کاراضافه شود؟
|
||||
bool totalLeaveCompute = false;
|
||||
//آیا غیبت محاسبه شود؟
|
||||
bool abcenseDeduction = false;
|
||||
switch (computeOption)
|
||||
{
|
||||
case "OnEndOfYear":
|
||||
var endOfYearCheckout = separation.ContractEnd.Substring(5, 2);
|
||||
|
||||
|
||||
totalLeaveCompute = true;
|
||||
abcenseDeduction = separation.HasLeft || endOfYearCheckout == "12";
|
||||
break;
|
||||
case "OnLeftWork":
|
||||
|
||||
totalLeaveCompute = true;
|
||||
abcenseDeduction = separation.HasLeft;
|
||||
break;
|
||||
case "OnEndOfContract":
|
||||
var startMonth = contract.ContarctStart.Substring(5, 2);
|
||||
var endMonth = contract.ContractEnd.Substring(5, 2);
|
||||
|
||||
totalLeaveCompute = startMonth == endMonth ? false : true;
|
||||
abcenseDeduction = (startMonth != endMonth && separation.HasLeft) || (startMonth != endMonth && contract.ContractEndGr == separation.ContractEndGr);
|
||||
break;
|
||||
}
|
||||
|
||||
workingHours.ContractStartGr = separation.ContractStartGr;
|
||||
workingHours.ContractEndGr = separation.ContractEndGr;
|
||||
workingHours.ContarctStart = separation.ContarctStart;
|
||||
@@ -778,8 +821,7 @@ public class IndexModel : PageModel
|
||||
workingHours.GetWorkDateHide = contract.GetWorkDate;
|
||||
workingHours.WorkshopId = contract.WorkshopIds;
|
||||
workingHours.EmployeeId = contract.EmployeeId;
|
||||
//workshopInfo
|
||||
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
|
||||
|
||||
var mandatoryCompute = new ComputingViewModel();
|
||||
|
||||
#region DailyWageCompute
|
||||
@@ -799,13 +841,15 @@ public class IndexModel : PageModel
|
||||
{
|
||||
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
|
||||
|
||||
//var hasLeave = _leaveApplication.LeavOnChekout(separation.ContractStartGr,
|
||||
// separation.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
|
||||
//if (hasLeave != null)
|
||||
@@ -851,18 +895,6 @@ public class IndexModel : PageModel
|
||||
// workshop.ComputeOptions = "OnEndOfContract";
|
||||
//}
|
||||
|
||||
var employeeOptions =
|
||||
_employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds);
|
||||
var getYearsOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var yearsOption = getYearsOption == null ? workshop.YearsOptions : getYearsOption.YearsOptions;
|
||||
var getBonusesOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var bonusesOption = getBonusesOption == null
|
||||
? workshop.BonusesOptions
|
||||
: getBonusesOption.BonusesOptions;
|
||||
var getComputeOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||
var computeOption = getComputeOption == null
|
||||
? workshop.ComputeOptions
|
||||
: getComputeOption.ComputeOptions;
|
||||
|
||||
//سنوات
|
||||
var yearsPay = _yearlySalaryRepository.Years(separation.ContractStartGr, separation.LeftWorkDate,
|
||||
@@ -913,7 +945,8 @@ public class IndexModel : PageModel
|
||||
{
|
||||
foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
@@ -958,6 +991,8 @@ public class IndexModel : PageModel
|
||||
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, fridayStartToEnd,
|
||||
officialHoliday, totalHoursH, totalHoursM, consumableItemDouble, housingAllowanceDouble,
|
||||
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
|
||||
|
||||
|
||||
var command = new CreateCheckout
|
||||
{
|
||||
EmployeeFullName = employee.EmployeeFullName,
|
||||
@@ -1006,7 +1041,7 @@ public class IndexModel : PageModel
|
||||
//مدت غیبت
|
||||
AbsencePeriod = leavePayNew.AbsencePeriod,
|
||||
//کسری غیبت
|
||||
AbsenceDeduction = 0,
|
||||
AbsenceDeduction = abcenseDeduction ? leavePayNew.AbsenceDeduction : 0,
|
||||
//وضعیت تصفیه مزد مرخصی
|
||||
LeaveCheckout = leavePayNew.LeaveCheckout,
|
||||
//میانگین ساعت کار در روز
|
||||
|
||||
@@ -571,6 +571,12 @@
|
||||
} else if (response.data.gender === 1) {
|
||||
$('#GenderFemale').prop('checked', true);
|
||||
$('#soldier').prop('disabled', true);
|
||||
}
|
||||
else{
|
||||
$('#GenderMale').removeClass("disable");
|
||||
$('#GenderFemale').removeClass("disable");
|
||||
$('#divGender .radio-box').removeClass('disable');
|
||||
|
||||
}
|
||||
currentStep++;
|
||||
showStep(currentStep);
|
||||
|
||||
@@ -571,6 +571,11 @@
|
||||
} else if (response.data.gender === 1) {
|
||||
$('#GenderFemale').prop('checked', true);
|
||||
$('#soldier').prop('disabled', true);
|
||||
}
|
||||
else{
|
||||
$('#GenderMale').removeClass("disable");
|
||||
$('#GenderFemale').removeClass("disable");
|
||||
$('#divGender .radio-box').removeClass('disable');
|
||||
}
|
||||
currentStep++;
|
||||
showStep(currentStep);
|
||||
|
||||
@@ -314,6 +314,7 @@ app.UseCors("AllowSpecificOrigins");
|
||||
|
||||
//the backend Tester
|
||||
if (builder.Environment.IsDevelopment())
|
||||
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var tester = scope.ServiceProvider.GetRequiredService<Tester>();
|
||||
|
||||
Reference in New Issue
Block a user