From 5a8bccb98f414656c1abb5fabce2b35cdb07cfbf Mon Sep 17 00:00:00 2001 From: SamSys Date: Wed, 14 May 2025 18:49:44 +0330 Subject: [PATCH] checkout complex chang - rotatingShiftReport change - add new Description to contract print --- .../IRollCallMandatoryRepository.cs | 11 +++- .../RollCall/IRollCallMandatoryApplication.cs | 2 +- .../RollCallMandatoryApplication.cs | 4 +- .../Repository/RollCallMandatoryRepository.cs | 60 ++++++++++++++----- .../Repository/SalaryAidRepository.cs | 4 +- .../Repository/YearlySalaryRepository.cs | 3 + .../Pages/Company/Checkouts/Index.cshtml.cs | 12 ++-- .../RotatingShiftReportDesktop.cshtml | 12 ++-- .../Company/Contracts/ContractPrintAll.cshtml | 8 +++ .../Pages/Company/Contracts/Details.cshtml | 8 +++ .../Pages/Company/Contracts/PrintAll.cshtml | 8 +++ 11 files changed, 101 insertions(+), 31 deletions(-) diff --git a/Company.Domain/RollCallAgg/IRollCallMandatoryRepository.cs b/Company.Domain/RollCallAgg/IRollCallMandatoryRepository.cs index 9cac44c2..869797c9 100644 --- a/Company.Domain/RollCallAgg/IRollCallMandatoryRepository.cs +++ b/Company.Domain/RollCallAgg/IRollCallMandatoryRepository.cs @@ -24,6 +24,15 @@ public interface IRollCallMandatoryRepository : IRepository List LateToWorkEarlyExit(List groupedRollCall, ICollection shiftSettings, List leavList); + /// + /// گزارش نوبت کاری حضور غیاب + /// + /// + /// + /// + /// + /// + /// Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, - DateTime contractEnd, string shiftwork); + DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/RollCall/IRollCallMandatoryApplication.cs b/CompanyManagment.App.Contracts/RollCall/IRollCallMandatoryApplication.cs index 68e3dcf7..a7b954ad 100644 --- a/CompanyManagment.App.Contracts/RollCall/IRollCallMandatoryApplication.cs +++ b/CompanyManagment.App.Contracts/RollCall/IRollCallMandatoryApplication.cs @@ -20,5 +20,5 @@ public interface IRollCallMandatoryApplication /// /// Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, - DateTime contractEnd, string shiftwork); + DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking); } \ No newline at end of file diff --git a/CompanyManagment.Application/RollCallMandatoryApplication.cs b/CompanyManagment.Application/RollCallMandatoryApplication.cs index 45598951..9e1d0b1f 100644 --- a/CompanyManagment.Application/RollCallMandatoryApplication.cs +++ b/CompanyManagment.Application/RollCallMandatoryApplication.cs @@ -27,8 +27,8 @@ public class RollCallMandatoryApplication : IRollCallMandatoryApplication } public async Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, - string shiftwork) + string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking) { - return await _rollCallMandatoryRepository.RotatingShiftReport(workshopId, employeeId, contractStart, contractEnd, shiftwork); + return await _rollCallMandatoryRepository.RotatingShiftReport(workshopId, employeeId, contractStart, contractEnd, shiftwork,hasRollCall, command, holidayWorking); } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index 9276e8db..fe288890 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -89,6 +89,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } int TotalDaysNoFriday = TotalContractDays - fridays; int mandatorDays = TotalContractDays - (fridays + holiday); + if (command.ShiftWork != "4" && isStaticCheckout) + mandatorDays = TotalDaysNoFriday; //if (holidayWorking) // mandatorDays = TotalContractDays - fridays; //***********************************// @@ -720,32 +722,55 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll return res; } - public async Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, string shiftwork) + public async Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking) { - List rollCallResult = await _context.RollCalls.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && - x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() + List rollCallResult = new List(); + List groupedRollCall = new List(); + if (hasRollCall) + { + rollCallResult = await _context.RollCalls.Where(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && + x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() { StartDate = x.StartDate, EndDate = x.EndDate, ShiftSpan = (x.EndDate.Value - x.StartDate.Value), CreationDate = x.ShiftDate, }).ToListAsync(); - List groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls() + groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls() + { + CreationDate = x.Key, + ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = 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)), + + + + }).OrderBy(x => x.CreationDate).ToList(); + } + else { - CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = 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)), + command.WorkshopId = workshopId; + command.EmployeeId = employeeId; + command.ContractStartGr = contractStart; + command.ContractEndGr = contractEnd; + rollCallResult = ConvertStaticHoursToRollCall(command, holidayWorking); + groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => new GroupedRollCalls() + { + CreationDate = x.Key, + ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = 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)), + + SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) + + }).OrderBy(x => x.CreationDate).ToList(); + } - }).OrderBy(x => x.CreationDate).ToList(); + //****** نوبت کاری و شب کاری **** + #region RotatingShiftCheckAndNightWorkOver22 - - //****** نوبت کاری و شب کاری **** - #region RotatingShiftCheckAndNightWorkOver22 - - string shiftPayValue = "0"; + string shiftPayValue = "0"; List rotatingResultList = RotatingShiftCheck(groupedRollCall); int moriningCount = 0; int eveningCount = 0; @@ -856,6 +881,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion } + + + + //public static TimeSpan CalculateBreakTime(BreakTime breakTime, TimeSpan sumOneDaySpan) //{ // if (breakTime.BreakTimeType != BreakTimeType.WithTime) @@ -1529,6 +1558,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll end = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, end.Hour, end.Minute, 0); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); + if ((command.ShiftWork is "6" or "8") && start == end) + end = end.AddDays(1); + } var startComplex = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, diff --git a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs index 842b56c7..ba9df547 100644 --- a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs +++ b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs @@ -125,8 +125,8 @@ public class SalaryAidRepository : RepositoryBase, ISalaryAidRe EmployeeId = x.EmployeeId, CreationDate = x.CreationDate.ToFarsi(), Id = x.id, - MonthFa = pc.GetMonth(x.SalaryAidDateTime).ToFarsiMonthByIntNumber(), - YearFa = pc.GetYear(x.SalaryAidDateTime).ToString(), + MonthFa = pc.GetMonth(x.CalculationDate).ToFarsiMonthByIntNumber(), + YearFa = pc.GetYear(x.CalculationDate).ToString(), PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode.ToString(), SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), SalaryAidDateTimeGe = x.SalaryAidDateTime, diff --git a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs index ccff40d4..c7d32ba0 100644 --- a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs @@ -124,6 +124,9 @@ public class YearlySalaryRepository : RepositoryBase, IYearl ////اگر حضورغیاب داشت //if (hasRollCall) var MandatoryDays = TotalDays - fridayStartToEnd - officialholiday; + + if (!hasRollCall && weeklyWorkingTime !="4") + MandatoryDays = TotalDays - fridayStartToEnd; //بدست آوردن ساعت موظفی این ماه var TotalMandatoryHours = MandatoryDays * 7.33;//ساعت موظفی این ماه diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs index c506663b..fa9fd92c 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs @@ -160,7 +160,7 @@ public class IndexModel : PageModel var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId); if (checkout.HasRollCall) { - result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId,checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork); + result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId,checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork,true,workingHours,false); result.HasRollCall = true; } else @@ -181,9 +181,10 @@ public class IndexModel : PageModel workingHours.WorkshopId = contract.WorkshopIds; workingHours.EmployeeId = contract.EmployeeId; - result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0); + //result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0); + result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking); + - } @@ -201,7 +202,7 @@ public class IndexModel : PageModel var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId); if (checkout.HasRollCall) { - result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork); + result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false); result.HasRollCall = true; } else @@ -222,7 +223,8 @@ public class IndexModel : PageModel workingHours.WorkshopId = contract.WorkshopIds; workingHours.EmployeeId = contract.EmployeeId; - result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0); + //result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0); + result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking); diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/RotatingShiftReportDesktop.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/RotatingShiftReportDesktop.cshtml index ae1be0de..8bed762a 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/RotatingShiftReportDesktop.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/RotatingShiftReportDesktop.cshtml @@ -22,11 +22,11 @@ } .modal-body2 { - background-color: #f2fbfb; - width: 100%; - height: 674px; - border-radius: 25px; - position: absolute; + background-color: #f2fbfb; + width: 100%; + height: 720px; + border-radius: 25px; + position: absolute; } .rotateHead { @@ -168,7 +168,7 @@ -
+
بستن diff --git a/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml index 849389b4..bc9a2bb4 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml @@ -507,6 +507,14 @@ بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.

+
+ break; + case 683 or 687: + +
+

+ در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید +

break; default: diff --git a/ServiceHost/Areas/Admin/Pages/Company/Contracts/Details.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Contracts/Details.cshtml index 569d980f..93ea8b1d 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Contracts/Details.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Contracts/Details.cshtml @@ -450,6 +450,14 @@
break; + case 683 or 687: + +
+

+ در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید + +

+ break; default: break; diff --git a/ServiceHost/Areas/Admin/Pages/Company/Contracts/PrintAll.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Contracts/PrintAll.cshtml index d3aadbcc..2b48f398 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Contracts/PrintAll.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Contracts/PrintAll.cshtml @@ -447,6 +447,14 @@ بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.

+
+ break; + case 683 or 687: + +
+

+ در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید +

break; default: