diff --git a/Company.Domain/RollCallAgg/DomainService/IRollCallDomainService.cs b/Company.Domain/RollCallAgg/DomainService/IRollCallDomainService.cs index 0abe6b9b..100af86d 100644 --- a/Company.Domain/RollCallAgg/DomainService/IRollCallDomainService.cs +++ b/Company.Domain/RollCallAgg/DomainService/IRollCallDomainService.cs @@ -182,7 +182,7 @@ public class RollCallDomainService : IRollCallDomainService return shiftDetails.shiftType switch { WorkshopShiftStatus.Regular => CalculateRegularShiftDate(rollCallStartDate, offset), - WorkshopShiftStatus.Rotating => FindRotatingShift(rollCallEndDate,rollCallEndDate,shiftDetails.rotatingShifts).start.Date, + WorkshopShiftStatus.Rotating => FindRotatingShift(rollCallStartDate,rollCallEndDate,shiftDetails.rotatingShifts).start.Date, WorkshopShiftStatus.Irregular => rollCallStartDate.Date, _ => throw new ArgumentOutOfRangeException() }; diff --git a/CompanyManagment.Application/RollCallApplication.cs b/CompanyManagment.Application/RollCallApplication.cs index 62f786ab..77dc4110 100644 --- a/CompanyManagment.Application/RollCallApplication.cs +++ b/CompanyManagment.Application/RollCallApplication.cs @@ -336,15 +336,19 @@ public class RollCallApplication : IRollCallApplication public OperationResult ManualEdit(CreateOrEditEmployeeRollCall command) { var operation = new OperationResult(); + var now = DateTime.Now; DateTime date = command.DateFa.ToGeorgianDateTime(); if (date == Tools.GetUndefinedDateTime()) return operation.Failed("فرمت تاریخ وارد شده صحیح نمی باشد"); - if (date >= DateTime.Now.Date) - { - return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); - } + + + + //if (date >= DateTime.Now.Date) + //{ + // return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); + //} var twoDaysEarlier = date.AddDays(-2).Date; var twoDaysLater = date.AddDays(2).Date >= DateTime.Today @@ -407,8 +411,8 @@ public class RollCallApplication : IRollCallApplication if (startDateTime >= endDateTime) return operation.Failed("زمان ورود نمی تواند بعد یا مساوی زمان خروج باشد"); - if (endDateTime.Date >= DateTime.Today) - return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); + //if (endDateTime.Date >= DateTime.Today) + // return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); var rollCall = new EditRollCall { @@ -420,7 +424,10 @@ public class RollCallApplication : IRollCallApplication } - + if (newRollCallDates.Any(x => x.StartDate >= now || x.EndDate >= now)) + { + return operation.Failed("حضورغیاب وارد شده نمیتواند در آینده باشد"); + } if (newRollCallDates.Any(x => newRollCallDates.Any(y => x != y && x.EndDate >= y.StartDate && x.StartDate <= y.EndDate))) return operation.Failed("بازه های وارد شده با هم تداخل دارند"); @@ -447,7 +454,7 @@ public class RollCallApplication : IRollCallApplication { x.ShiftDate = _rollCallDomainService.GetEmployeeShiftDateByRollCallStartDate(command.WorkshopId, command.EmployeeId, - x.StartDate!.Value,x.EndDate!.Value); + x.StartDate!.Value,x.EndDate.Value); }); if (newRollCallDates.Any(x => x.ShiftDate.Date != date.Date)) @@ -455,14 +462,13 @@ public class RollCallApplication : IRollCallApplication return operation.Failed("حضور غیاب در حال ویرایش را نمیتوانید از تاریخ شیفت عقب تر یا جلو تر ببرید"); } - - if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) - { - return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); - } + if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) + { + return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); + } - if (newRollCallDates.Any(x => employeeRollCalls.Any(y => + if (newRollCallDates.Any(x => employeeRollCalls.Any(y => y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date && x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value))) return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد"); @@ -496,26 +502,27 @@ public class RollCallApplication : IRollCallApplication _rollCallRepository.AddRange(rollCallsAsEntityModels); _rollCallRepository.SaveChanges(); - foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels) { rollCallsAsEntityModel.Edit(rollCallsAsEntityModel.StartDate.Value, rollCallsAsEntityModel.EndDate.Value, _rollCallDomainService); } _rollCallRepository.SaveChanges(); + return operation.Succcedded(); } public OperationResult ManualEditForUndefined(CreateOrEditEmployeeRollCall command) { var operation = new OperationResult(); + var now = DateTime.Now; DateTime date = command.DateFa.ToGeorgianDateTime(); if (date == Tools.GetUndefinedDateTime()) return operation.Failed("فرمت تاریخ وارد شده صحیح نمی باشد"); - if (date >= DateTime.Now.Date) - { - return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); - } + //if (date >= DateTime.Now.Date) + //{ + // return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); + //} var twoDaysEarlier = date.AddDays(-2).Date; var twoDaysLater = date.AddDays(2).Date >= DateTime.Today @@ -578,8 +585,8 @@ public class RollCallApplication : IRollCallApplication if (startDateTime >= endDateTime) return operation.Failed("زمان ورود نمی تواند بعد یا مساوی زمان خروج باشد"); - if (endDateTime.Date >= DateTime.Today) - return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); + //if (endDateTime.Date >= DateTime.Today) + // return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); var rollCall = new EditRollCall { @@ -594,6 +601,12 @@ public class RollCallApplication : IRollCallApplication { }); + + if (newRollCallDates.Any(x => x.StartDate >= now || x.EndDate >= now)) + { + return operation.Failed("حضورغیاب وارد شده نمیتواند در آینده باشد"); + } + if (newRollCallDates.Any(x => newRollCallDates.Any(y => x != y && x.EndDate >= y.StartDate && x.StartDate <= y.EndDate))) return operation.Failed("بازه های وارد شده با هم تداخل دارند"); @@ -618,7 +631,7 @@ public class RollCallApplication : IRollCallApplication { x.ShiftDate = _rollCallDomainService.GetEmployeeShiftDateByRollCallStartDate(command.WorkshopId, command.EmployeeId, - x.StartDate!.Value,x.EndDate!.Value); + x.StartDate!.Value,x.EndDate.Value); }); if (newRollCallDates.Any(x => x.ShiftDate.Date != date.Date)) { @@ -626,10 +639,10 @@ public class RollCallApplication : IRollCallApplication } if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) { - return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); + return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); } - if (newRollCallDates.Any(x => employeeRollCalls.Any(y => + if (newRollCallDates.Any(x => employeeRollCalls.Any(y => y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date && x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value))) return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد"); diff --git a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs index 93f5aef3..8b95f3a0 100644 --- a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs +++ b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs @@ -106,7 +106,7 @@ namespace CompanyManagment.Application } else { - skipRollCallByWorkshopId = workshopId is 585 or 604 or 605 or 368 or 367 or 286; + skipRollCallByWorkshopId = workshopId is 368 or 367; } @@ -123,7 +123,10 @@ namespace CompanyManagment.Application bool skipRollCallByEmployeeId = employeeId is 42550; if (skipRollCallByEmployeeId) return false; - + + //9211 محسا تازه + if (employeeId == 9211 && contractStart >= start1404) + return false; var service = _rollCallServiceRepository.GetAllServiceByWorkshopId(workshopId); diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs index f8ea01bd..4f585986 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs @@ -84,7 +84,7 @@ namespace CompanyManagment.EFCore.Repository //var year = pc.GetYear(monthStart); //var month = pc.GetMonth(monthStart); - IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckouts + IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckouts.AsSplitQuery() .Where(x => customizeCheckoutIds.Contains(x.id)).Include(x => x.CheckoutFines); IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs index 82721bdb..fbee660a 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs @@ -226,7 +226,8 @@ namespace CompanyManagment.EFCore.Repository //var year = pc.GetYear(monthStart); //var month = pc.GetMonth(monthStart); - IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.Where(x => customizeCheckoutIds.Contains(x.id)); + IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.AsSplitQuery() + .Where(x => customizeCheckoutIds.Contains(x.id)); IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index 8c795eec..24ff10d8 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -29,6 +29,7 @@ using CompanyManagment.App.Contracts.Reward; using CompanyManagment.App.Contracts.SalaryAid; using Company.Domain.RewardAgg; using CompanyManagment.App.Contracts.Reward.Enums; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace CompanyManagment.EFCore.Repository; @@ -68,7 +69,24 @@ CreateWorkingHoursTemp command, bool holidayWorking) int numberOfFridays = 0; #endregion - + int TotalContractDays = (int)(contractEnd - contractStart).TotalDays + 1; + int fridays = 0; + int holiday = _context.HolidayItems.Count(x => x.Holidaydate >= contractStart && x.Holidaydate <= contractEnd); + ; + for (var gDate = contractStart; gDate <= contractEnd; gDate = gDate.AddDays(1)) + { + if (gDate.DayOfWeek == DayOfWeek.Friday) + { + fridays += 1; + } + } + int TotalDaysNoFriday = TotalContractDays - fridays; + int mandatorDays = TotalContractDays - (fridays + holiday); + //if (holidayWorking) + // mandatorDays = TotalContractDays - fridays; + //***********************************// + //This Time Mandatory Hourse + double mandatoryHours = Math.Round((mandatorDays * 7.33), 2); //گرفتن ساعت استراحت پرسنل از تنظیمات #region breakTime @@ -127,50 +145,103 @@ CreateWorkingHoursTemp command, bool holidayWorking) IsAccepted = true, }; var leaveSearchResult = _leaveRepository.search(leaveSearch); + // {مقدار ساعت مجاز مرخصی در برای یک روز{کامل + var leaveHoursesPerDay = 190.58 / 365; + + // {مقدار ساعت مجاز مرخصی در مدت این فیش حقوقی{کامل + var starndardHoursesPerTotalDays = leaveHoursesPerDay * TotalContractDays; + // جدا کردن ساعت و دقیقه + int hours = (int)starndardHoursesPerTotalDays; + double minutesDecimal = (starndardHoursesPerTotalDays - hours) * 60; + int minutes = (int)minutesDecimal; + + + TimeSpan starndardHoursesPerTotalDaysSapn = new TimeSpan(hours, minutes, 0); if (leaveSearchResult.Count > 0) { - //if (leaveSearchResult.Any(x => x.HasShiftDuration)) - //{ - // TimeSpan totalLeave = new TimeSpan(leaveSearchResult.Sum(x => x.ShiftDuration.Ticks)); - //} - - int leavingDayCout = 0; - //مرخصی های مابین - List beatweenCheckout = leaveSearchResult.Where(x => x.StartLeaveGr >= contractStart && x.EndLeaveGr <= contractEnd).Select(x => new LeaveViewModel() + if (leaveSearchResult.Any(x => x.HasShiftDuration)) { - DayCounter = Convert.ToInt32(x.LeaveHourses), + + + + + var sumSpansDouble = (sumSpans.TotalMinutes) / 60; + if (sumSpansDouble < mandatoryHours) + { + starndardHoursesPerTotalDays = (sumSpansDouble * starndardHoursesPerTotalDays) / mandatoryHours; + // جدا کردن ساعت و دقیقه + hours = (int)starndardHoursesPerTotalDays; + minutesDecimal = (starndardHoursesPerTotalDays - hours) * 60; + minutes = (int)minutesDecimal; + + + starndardHoursesPerTotalDaysSapn = new TimeSpan(hours, minutes, 0); + } + + TimeSpan totalLeave = new TimeSpan(leaveSearchResult.Sum(x => x.ShiftDuration.Ticks)); + var totalLeaveDouble = (totalLeave.TotalMinutes) / 60; + if(totalLeaveDouble > starndardHoursesPerTotalDays) + { + + sumSpans = sumSpans.Add(starndardHoursesPerTotalDaysSapn); + } + else + { + sumSpans = sumSpans.Add(totalLeave); + } - }).ToList(); - leavingDayCout += beatweenCheckout.Sum(x => x.DayCounter); - // مرخصی که شروعش قبل از شروع تصفیه حساب است - List beforeCheckout = leaveSearchResult.Where(x => x.StartLeaveGr < contractStart).Select(x => new LeaveViewModel() - { - DayCounter = (int)(contractStart - x.EndLeaveGr).TotalDays + 1, - - }).ToList(); - leavingDayCout += beforeCheckout.Sum(x => x.DayCounter); - // مرخصی که پایانش بعد از پایان تصفیه حساب است - List afterCheckout = leaveSearchResult.Where(x => x.EndLeaveGr > contractEnd).Select(x => new LeaveViewModel() - { - DayCounter = (int)(x.StartLeaveGr - contractEnd).TotalDays + 1, - - }).ToList(); - leavingDayCout += afterCheckout.Sum(x => x.DayCounter); - Console.WriteLine(leavingDayCout); - TimeSpan workingPerDayAve = sumSpans / groupedRollCall.Count;//میانگین ساعت کار در روز - TimeSpan sumLeave = new TimeSpan(); - if (workingPerDayAve <= new TimeSpan(7, 20, 0)) - { - sumLeave = leavingDayCout * workingPerDayAve; } else { - sumLeave = leavingDayCout * new TimeSpan(7, 20, 0); + int leavingDayCout = 0; + //مرخصی های مابین + List beatweenCheckout = leaveSearchResult.Where(x => x.StartLeaveGr >= contractStart && x.EndLeaveGr <= contractEnd).Select(x => new LeaveViewModel() + { + DayCounter = Convert.ToInt32(x.LeaveHourses), + + }).ToList(); + leavingDayCout += beatweenCheckout.Sum(x => x.DayCounter); + // مرخصی که شروعش قبل از شروع تصفیه حساب است + List beforeCheckout = leaveSearchResult.Where(x => x.StartLeaveGr < contractStart).Select(x => new LeaveViewModel() + { + DayCounter = (int)(contractStart - x.EndLeaveGr).TotalDays + 1, + + }).ToList(); + leavingDayCout += beforeCheckout.Sum(x => x.DayCounter); + // مرخصی که پایانش بعد از پایان تصفیه حساب است + List afterCheckout = leaveSearchResult.Where(x => x.EndLeaveGr > contractEnd).Select(x => new LeaveViewModel() + { + DayCounter = (int)(x.StartLeaveGr - contractEnd).TotalDays + 1, + + }).ToList(); + leavingDayCout += afterCheckout.Sum(x => x.DayCounter); + Console.WriteLine(leavingDayCout); + + + TimeSpan workingPerDayAve = sumSpans / groupedRollCall.Count;//میانگین ساعت کار در روز + TimeSpan sumLeave = new TimeSpan(); + if (workingPerDayAve <= new TimeSpan(7, 20, 0)) + { + sumLeave = leavingDayCout * workingPerDayAve; + } + else + { + sumLeave = leavingDayCout * new TimeSpan(7, 20, 0); + } + + if (sumLeave > starndardHoursesPerTotalDaysSapn) + { + sumSpans = sumSpans.Add(starndardHoursesPerTotalDaysSapn); + } + else + { + sumSpans = sumSpans.Add(sumLeave); + } } - sumSpans = sumSpans.Add(sumLeave); + } Console.WriteLine(sumSpans); @@ -186,24 +257,8 @@ CreateWorkingHoursTemp command, bool holidayWorking) //********** محاسبه مدت اضافه کاری ***********// #region ComputeMandatoryAtThisTime - int TotalContractDays = (int)(contractEnd - contractStart).TotalDays + 1; - int fridays = 0; - int holiday = _context.HolidayItems.Count(x => x.Holidaydate >= contractStart && x.Holidaydate <= contractEnd); - ; - for (var gDate = contractStart; gDate <= contractEnd; gDate = gDate.AddDays(1)) - { - if (gDate.DayOfWeek == DayOfWeek.Friday) - { - fridays += 1; - } - } - int TotalDaysNoFriday = TotalContractDays - fridays; - int mandatorDays = TotalContractDays - (fridays + holiday); - //if (holidayWorking) - // mandatorDays = TotalContractDays - fridays; - //***********************************// - //This Time Mandatory Hourse - double mandatoryHours = Math.Round((mandatorDays * 7.33), 2); + + //***********************************// var dailyFix = TimeSpan.Parse("07:20"); TimeSpan mandatoryHoursTimeSpan = new TimeSpan(7, 20, 0).Multiply(mandatorDays); @@ -790,7 +845,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) if (shift.Start >= eveningStart // 22<---<14 && shift.End <= eveningEnd) { - eveningWorkingTime = morningWorkingTime.Add(eveningEnd - eveningStart); + eveningWorkingTime = eveningWorkingTime.Add(shift.End - shift.Start); } else if (shift.Start >= eveningStart && shift.Start < eveningEnd // 6<---22---14 && shift.End > nightStart && shift.End <= nightEndNextday) diff --git a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs index 27dae631..109075dd 100644 --- a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs @@ -2389,13 +2389,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < startDate ? startDate : item.StartLeave; end = item.EndLeave > endDate ? endDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { @@ -2474,13 +2479,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < startDate ? startDate : item.StartLeave; end = item.EndLeave > endDate ? endDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); @@ -2521,13 +2531,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < startSerach ? startSerach : item.StartLeave; end = item.EndLeave > leftWorkDate ? leftWorkDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); @@ -2865,17 +2880,23 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { foreach (var item in leaveList) { + var start = new DateTime(); var end = new DateTime(); start = item.StartLeave < startDate ? startDate : item.StartLeave; end = item.EndLeave > endDate ? endDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { @@ -2944,13 +2965,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < startAfter365 ? startAfter365 : item.StartLeave; end = item.EndLeave > leftWorkDate ? leftWorkDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); @@ -3009,13 +3035,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < contract.ContarctStart ? contract.ContarctStart : item.StartLeave; end = item.EndLeave > leftWorkDate ? leftWorkDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); @@ -3052,17 +3083,23 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { foreach (var item in leaveList) { + var start = new DateTime(); var end = new DateTime(); start = item.StartLeave < startSerach ? startSerach : item.StartLeave; end = item.EndLeave > leftWorkDate ? leftWorkDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * workingHoursePerDay; usedLeaves += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeaves += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); @@ -3198,12 +3235,18 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var end = new DateTime(); start = item.StartLeave < startDate ? startDate : item.StartLeave; end = item.EndLeave > endDate ? endDate : item.EndLeave; - if (item.PaidLeaveType == "روزانه") + + if (item.PaidLeaveType == "روزانه" && !item.HasShiftDuration) { var leaveSpan = (end - start).TotalDays + 1; var usedLeave = leaveSpan * hoursePerDay; usedLeavesChekout += usedLeave; } + else if (item.PaidLeaveType == "روزانه" && item.HasShiftDuration) + { + var usedLeave = (item.ShiftDuration.TotalMinutes) / 60; + usedLeavesChekout += usedLeave; + } else { var leavingHourses = TimeSpan.Parse(item.LeaveHourses); diff --git a/ServiceHost/Areas/Admin/Pages/Accounts/Account/CreateRole.cshtml b/ServiceHost/Areas/Admin/Pages/Accounts/Account/CreateRole.cshtml index 692bb1a7..eb43fef0 100644 --- a/ServiceHost/Areas/Admin/Pages/Accounts/Account/CreateRole.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Accounts/Account/CreateRole.cshtml @@ -712,6 +712,36 @@ + @*صفحه اصلی*@ +
+ + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ @*لیست مشاغل مقطوع*@
-@* بیمه *@ -
- + @* بیمه *@ +
+ - - @*لیست مشاغل مقطوع*@ -
- - + + @*صفحه اصلی*@ +
+ + -
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
-
+ @*لیست مشاغل مقطوع*@ +
+ + + +
+ +
@* کارپوشه *@
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs index d35ba248..84f27416 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs @@ -7123,6 +7123,36 @@ public class IndexModel : PageModel familyAllowance = familyAllowanceStep4.ToMoney(); } } + else + { + var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); + var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); + var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); + + var HousingStep1 = HousingAllowonceNumberType / 30; + var HousingStep4 = HousingStep1 * AllDaysCountWithOutSickLive; + HousingAllowance = HousingStep4.ToMoney(); + + + var consumableItemsStep1 = ConsumableItemsNumberType / 30; + var consumableItemsStep4 = consumableItemsStep1 * AllDaysCountWithOutSickLive; + ConsumableItems = consumableItemsStep4.ToMoney(); + + //حق تاهل + if (MarriedAllowance > 0) + { + var MarriedStep1 = MarriedAllowance / 30; + var MarriedStep4 = MarriedStep1 * AllDaysCountWithOutSickLive; + MarriedAllowanceStr = MarriedStep4.ToMoney(); + } + + if (familyAllowance != "0") + { + var familyAllowanceStep1 = familyAllowanceNumberType / 30; + var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; + familyAllowance = familyAllowanceStep4.ToMoney(); + } + } } #endregion diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml index e774af6d..dc880e4d 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/Index.cshtml @@ -91,7 +91,7 @@

@* pull-right *@ - ایجاد لیست بیمه + ایجاد لیست بیمه

diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/MainSearch.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/MainSearch.cshtml index df9e2e06..2c6a19b4 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/MainSearch.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/MainSearch.cshtml @@ -78,13 +78,13 @@ @if ((currentAccout.RoleId == 1 && item.ConfirmSentlist) || !item.ConfirmSentlist) { - + - + - @@ -93,10 +93,10 @@ href="#"> *@ - + - + @* @@ -106,10 +106,10 @@ @* Download DBF File*@ - + - + diff --git a/ServiceHost/Areas/Admin/Pages/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Index.cshtml index c59f1adf..583742c6 100644 --- a/ServiceHost/Areas/Admin/Pages/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Index.cshtml @@ -1,4 +1,5 @@ -@page + +@page @using _0_Framework.Application @using AccountManagement.Application.Contracts.TicketAccessAccount @using Microsoft.AspNetCore.Mvc.TagHelpers @@ -17,12 +18,7 @@ @@ -197,25 +240,34 @@
- -
-
+ + + + + + +

بکاپ

+ + +
+
diff --git a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml index 83cf0976..716abfc2 100644 --- a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml @@ -221,10 +221,18 @@ لیست مشاغل
  • - - - - تعطیلات رسمی + + + + تعطیلات رسمی +
  • +
  • + + + + + مبالغ سرویس‌ها +
  • @@ -392,7 +400,7 @@
      -
    • +
    • diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/CreateServiceModal.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/CreateServiceModal.cshtml new file mode 100644 index 00000000..d52deade --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/CreateServiceModal.cshtml @@ -0,0 +1,126 @@ +@model CompanyManagment.App.Contracts.InstitutionPlan.EditInstitutionPlanPercentage + +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + +} + +
      + + +
      + + + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml new file mode 100644 index 00000000..2f184282 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml @@ -0,0 +1,251 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.ServiceAmountsManagement.IndexModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + var index = 1; +} + + +@section Styles { + + + + + + + + + + + + + +} + + +
      + + + +@* *@ + + +
      +
      +
      + @*Search Box *@ + +
      + +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      + + + +
      + +
      +
      +
      + +
      + +
      +
      + +
      +
      + + لیست سرویس ها + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      تعداد پرسنل
      +
      مبلغ قرداد و تصفیه
      +
      خدمات بیمه
      +
      خدمات خصور و غیاب
      +
      خدمات فیش حقوقی غیر رسمی
      +
      خدمات حضوری قرارداد و تصفیه
      +
      خدمات حضور بیمه
      +
      خدمات حضوری موسسه
      +
      مبلغ کل خدمات سامانه بدون خدمات خصوری
      +
      مبلغ کل خدمات سامانه + خدمات خصوری
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      + + + + + +@section Script { + + + + +} \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml.cs new file mode 100644 index 00000000..f12dd9c7 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/ServiceAmountsManagement/Index.cshtml.cs @@ -0,0 +1,50 @@ +using CompanyManagment.App.Contracts.InstitutionPlan; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.ServiceAmountsManagement +{ + [Authorize] + public class IndexModel : PageModel + { + private readonly IInstitutionPlanApplication _institutionPlanApplication; + + public IndexModel(IInstitutionPlanApplication institutionPlanApplication) + { + _institutionPlanApplication = institutionPlanApplication; + } + + public void OnGet() + { + } + + public IActionResult OnGetInstitutionPlanList(int pageIndex, int countPeron) + { + var resultData = _institutionPlanApplication.GetInstitutionPlanList(pageIndex, countPeron); + return new JsonResult(new + { + success = true, + data = resultData, + pageIndex = resultData.Count() + }); + } + + public IActionResult OnGetCreateInstitutionPlan() + { + var command = _institutionPlanApplication.GetByFirst(); + return Partial("CreateServiceModal", command); + } + + public IActionResult OnPostCreateInstitutionPlan(CreateInstitutionPlanPercentage command) + { + var result = _institutionPlanApplication.CreateInstitutionPlanPercentage(command); + + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml b/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml index a32ad9c5..c41df2fe 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml @@ -60,7 +60,9 @@ - + + + @* *@ diff --git a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml index 3e407686..d0a6fb1b 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml @@ -304,6 +304,14 @@ تعطیلات رسمی
    • +
    • + + + + + مبالغ سرویس‌ها + +
    • @@ -592,7 +600,7 @@
        -
      • +
      • diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml index b0058daf..3c858e2d 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml @@ -18,73 +18,73 @@ @section Styles { - - - - - - - - + + + + + + + + - + - } @@ -99,464 +99,464 @@
        - - -
        +
        +
        +
        +
        + +
        +

        اطلاعات فیش حقوقی موقت

        +
        @Model.WorkshopFullName
        +
        +
        + +
        +
        +
        + + -
        -
        - +
        +
        + - - - -
        -
        + + + +
        +
        -
        +
        -
        -
        - -
        -
        - - لیست فیش حقوقی موقت - -
        -
        -
        - - +
        +
        + +
        +
        + + لیست فیش حقوقی موقت + +
        +
        +
        + + - -
        -
        + +
        +
        -
        +
        - -
        -
        - -
        -
        - -@if (@Model.CustomizeCheckouts.Count > 0) -{ -
        -
        - - -
        -
        - - - -
        -
        + +
        +
        + +
        +
        + + @if (@Model.CustomizeCheckouts.Count > 0) + { +
        +
        + + +
        +
        + + + +
        +
        -
        -
        -
        - - - - -
        -
        شماره پرسنلی
        -
        سال
        -
        ماه
        - @*
        شماره قرارداد
        *@ -
        نام پرسنل
        -
        آغاز قرارداد
        -
        پایان قرارداد
        -
        روزهای کارکرد
        -
        تاخیر در ورود
        -
        غیبت
        -
        مساعده
        -
        مبلغ قابل پرداخت
        -
        عملیات
        -
        +
        +
        +
        + + + + +
        +
        شماره پرسنلی
        +
        سال
        +
        ماه
        + @*
        شماره قرارداد
        *@ +
        نام پرسنل
        +
        آغاز قرارداد
        +
        پایان قرارداد
        +
        روزهای کارکرد
        +
        تاخیر در ورود
        +
        غیبت
        +
        مساعده
        +
        مبلغ قابل پرداخت
        +
        عملیات
        +
        - @foreach (var item in @Model.CustomizeCheckouts) - { -
        -
        -
        - ردیف -
        - -
        -
        -
        شماره پرسنلی
        -
        @item.PersonnelCode
        -
        -
        -
        سال
        -
        @item.Year
        -
        -
        -
        ماه
        -
        @item.Month
        -
        -@*
        + @foreach (var item in @Model.CustomizeCheckouts) + { +
        +
        +
        + ردیف +
        + +
        +
        +
        شماره پرسنلی
        +
        @item.PersonnelCode
        +
        +
        +
        سال
        +
        @item.Year
        +
        +
        +
        ماه
        +
        @item.Month
        +
        + @*
        شماره قرارداد
        @item.ContractNo
        *@ -
        -
        نام پرسنل
        -
        @item.EmployeeFullName
        -
        -
        -
        آغاز قرارداد
        -
        @item.ContractStartFa
        -
        -
        -
        پایان قرارداد
        -
        @item.ContractEndFa
        -
        -
        -
        روزهای کارکرد
        -
        @item.SumOfWorkingDays
        -
        -
        -
        تاخیر در ورود
        -
        @item.TotalLateToWorkDeduction
        -
        -
        -
        غیبت
        -
        @item.AbsenceDeduction
        -
        -
        -
        مساعده
        -
        @item.SalaryAidDeduction
        -
        -
        -
        -
        مبلغ قابل پرداخت
        -
        @(item.TotalPayment + " ریال")
        -
        -
        -
        -
        - - +
        +
        نام پرسنل
        +
        @item.EmployeeFullName
        +
        +
        +
        آغاز قرارداد
        +
        @item.ContractStartFa
        +
        +
        +
        پایان قرارداد
        +
        @item.ContractEndFa
        +
        +
        +
        روزهای کارکرد
        +
        @item.SumOfWorkingDays
        +
        +
        +
        تاخیر در ورود
        +
        @item.TotalLateToWorkDeduction
        +
        +
        +
        غیبت
        +
        @item.AbsenceDeduction
        +
        +
        +
        مساعده
        +
        @item.SalaryAidDeduction
        +
        +
        +
        +
        مبلغ قابل پرداخت
        +
        @(item.TotalPayment + " ریال")
        +
        +
        +
        +
        + + - -
        -
        + +
        +
        - -
        + +
        -
        -
        - - @(i) -
        +
        +
        + + @(i) +
        -
        - - @item.EmployeeFullName - -
        -
        +
        + + @item.EmployeeFullName + +
        +
        -
        +
        -
        - آغاز قرارداد - @item.ContractStartFa -
        -
        - پایان قرارداد - @item.ContractEndFa -
        -
        - - -
        -
        -
        - +
        + آغاز قرارداد + @item.ContractStartFa +
        +
        + پایان قرارداد + @item.ContractEndFa +
        +
        + + +
        +
        +
        + -
        - } -
        -} -else -{ -
        -
        -
        -
        - -
        اطلاعاتی وجود ندارد.
        -
        -
        -
        -
        -} +
        + } +
        + } + else + { +
        +
        +
        +
        + +
        اطلاعاتی وجود ندارد.
        +
        +
        +
        +
        + } -
        +
        -
        -
        -
        - -
        +
        +
        +
        + +
        @@ -587,37 +587,37 @@ else
        -
        -
        - -
        -
        - تاریخ شروع - -
        -
        - تاریخ پایان - -
        +
        +
        + +
        +
        + تاریخ شروع + +
        +
        + تاریخ پایان + +
        -
        - - -
        +
        + + +
        -
        - -
        -
        +
        + +
        +
        -
        +

        جستجو بر اساس سال و ماه

        diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml index 34d1a236..fcc7bdbf 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutUnofficial.cshtml @@ -257,7 +257,7 @@ پرینت گروهی -