From 3317bde6d6c5f9ca4965b2e07a7cf770da92471d Mon Sep 17 00:00:00 2001 From: gozareshgir Date: Tue, 20 Jan 2026 14:16:00 +0330 Subject: [PATCH] checkout group and one print --- 0_Framework/Application/Tools.cs | 12 + .../Checkout/Dto/CheckoutPrintDto.cs | 22 +- .../Repository/CheckoutRepository.cs | 433 ++++++++++-------- .../Admin/Controllers/CheckoutController.cs | 25 + .../Checkouts/CheckoutPrintAll.cshtml.cs | 2 +- 5 files changed, 291 insertions(+), 203 deletions(-) diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs index db65625e..47de9e95 100644 --- a/0_Framework/Application/Tools.cs +++ b/0_Framework/Application/Tools.cs @@ -457,6 +457,18 @@ public static class Tools return "-"; return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir")); } + + /// + /// اگر مبلغ صفر یا نال باشد خط تیره برمیگرداند + /// + /// + /// + public static string ToMoneyCheckZeroNullable(this double? myMoney) + { + if (myMoney == 0 || myMoney == null) + return "-"; + return myMoney?.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir")); + } public static string ToMoneyNullable(this double? myMoney) { diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs index a007e448..201d2679 100644 --- a/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs +++ b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs @@ -63,6 +63,22 @@ public class CheckoutPrintDto /// آیا کارقرما حقوقی است /// public bool EmployerIslegal { get; set; } + + /// + /// آیا ترک کار کرده + /// + public bool HasLeft { get; set; } + + /// + /// آخرین روز کاری + /// + public string LastDayOfWork { get; set; } + + /// + /// روز ترک کار + /// + public string LeftWorkDate { get; set; } + #endregion //جدول مطالبات و کسورات @@ -109,8 +125,8 @@ public class CheckoutPrintDto #endregion - //اقساط - #region LoneAndInstallmentData + //اقساط - مساعده + #region SalaryAidAndInstallmentData public List InstallmentViewModels { get; set; } public List SalaryAidViewModels { get; set; } @@ -213,7 +229,7 @@ public class PaymentAndDeductionList /// public class CheckoutEmployersList { - public bool IsLegal { get; set; } + public string IsLegal { get; set; } public string EmployerFullName { get; set; } } diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 637dcf1e..51f6b8c7 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -78,7 +78,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos public (bool hasChekout, double FamilyAlloance, double OverTimePay, double RotatingShift, double Nightwork, double Fridaywork, double YraesPay) HasCheckout(long workshopId, long employeId, string year, string month) { var farisMonthName = Tools.ToFarsiMonthByNumber(month); - + var res = _context.CheckoutSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName && x.IsActiveString == "true"); @@ -87,14 +87,14 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos var checkLeftDate = ($"{year}/{month}/01").ToGeorgianDateTime(); var hasLeftwork = _context.LeftWorkList.Any(x => x.EmployeeId == employeId && x.WorkshopId == workshopId && x.LeftWorkDate == checkLeftDate); - if(hasLeftwork) + if (hasLeftwork) return (true, 0, 0, 0, 0, 0, 0); return (false, 0, 0, 0, 0, 0, 0); } - - return (true, res.FamilyAllowance, res.OvertimePay, res.ShiftPay, res.NightworkPay, res.FridayPay,res.YearsPay); + + return (true, res.FamilyAllowance, res.OvertimePay, res.ShiftPay, res.NightworkPay, res.FridayPay, res.YearsPay); } public EditCheckout GetDetails(long id) @@ -253,7 +253,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos var now = DateTime.Now; DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime(); DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime(); - + var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); if (chekoutCreated != null) @@ -279,7 +279,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos } var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork .contractWorkshopEmployee.employee.id; - + var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork .leftwork; @@ -537,7 +537,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction); entity.SetCheckoutRollCall(command.CheckoutRollCall); entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours); - if(command.HasInsuranceShareTheSameAsList) + if (command.HasInsuranceShareTheSameAsList) entity.SetInsuranceShare(); await _context.SaveChangesAsync(); @@ -902,108 +902,108 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos foreach (var item in checkouts) { var ch = new CheckoutViewModel() + { + Id = item.id, + WorkshopId = item.WorkshopId, + ContractId = item.ContractId, + EmployeeId = item.EmployeeId, + EmployeeFullName = item.EmployeeFullName, + FathersName = item.FathersName, + NationalCode = item.NationalCode, + DateOfBirth = item.DateOfBirth, + WorkshopName = item.WorkshopName, + Month = item.Month, + Year = item.Year, + PersonnelCode = item.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(item.PersonnelCode), + ContractNo = item.ContractNo, + MonthlySalary = item.MonthlySalary.ToMoney(), + BaseYearsPay = item.BaseYearsPay.ToMoney(), + ConsumableItems = item.ConsumableItems.ToMoney(), + HousingAllowance = item.HousingAllowance.ToMoney(), + OvertimePay = item.OvertimePay.ToMoney(), + NightworkPay = item.NightworkPay.ToMoney(), + FridayPay = item.FridayPay.ToMoney(), + MissionPay = item.MissionPay.ToMoney(), + ShiftPay = item.ShiftPay.ToMoney(), + FamilyAllowance = item.FamilyAllowance.ToMoney(), + BonusesPay = item.BonusesPay.ToMoney(), + YearsPay = item.YearsPay.ToMoney(), + LeavePay = item.LeavePay.ToMoney(), + InsuranceDeduction = item.InsuranceDeduction.ToMoney(), + TaxDeducation = item.TaxDeducation.ToMoney(), + InstallmentDeduction = item.InstallmentDeduction.ToMoney(), + SalaryAidDeduction = item.SalaryAidDeduction.ToMoney(), + AbsenceDeduction = item.AbsenceDeduction.ToMoney(), + TotalClaims = item.TotalClaims, + TotalDeductions = item.TotalDeductions, + TotalPayment = item.TotalPayment.ToMoney(), + RewardPay = item.RewardPay.ToMoneyNullable(), + ContractStartGr = item.ContractStart, + ContractEndGr = item.ContractEnd, + IsLeft = false, + LeftWorkDate = "", + LastDayOfWork = "", + MarriedAllowance = item.MarriedAllowance.ToMoney(), + HasRollCall = item.HasRollCall, + SumOfWorkingDays = "-", + OverTimeWorkValue = item.OverTimeWorkValue, + OverNightWorkValue = item.OverNightWorkValue, + FridayWorkValue = item.FridayWorkValue, + RotatingShiftValue = item.RotatingShiftValue, + AbsenceValue = item.AbsenceValue, + MaritalStatus = "", + TotalDayOfLeaveCompute = "-", + TotalDayOfYearsCompute = "-", + TotalDayOfBunosesCompute = "-", + InstallmentViewModels = item.LoanInstallments.Select(i => new LoanInstallmentViewModel() { - Id = item.id, - WorkshopId = item.WorkshopId, - ContractId = item.ContractId, - EmployeeId = item.EmployeeId, - EmployeeFullName = item.EmployeeFullName, - FathersName = item.FathersName, - NationalCode = item.NationalCode, - DateOfBirth = item.DateOfBirth, - WorkshopName = item.WorkshopName, - Month = item.Month, - Year = item.Year, - PersonnelCode = item.PersonnelCode, - PersonnelCodeInt = Convert.ToInt32(item.PersonnelCode), - ContractNo = item.ContractNo, - MonthlySalary = item.MonthlySalary.ToMoney(), - BaseYearsPay = item.BaseYearsPay.ToMoney(), - ConsumableItems = item.ConsumableItems.ToMoney(), - HousingAllowance = item.HousingAllowance.ToMoney(), - OvertimePay = item.OvertimePay.ToMoney(), - NightworkPay = item.NightworkPay.ToMoney(), - FridayPay = item.FridayPay.ToMoney(), - MissionPay = item.MissionPay.ToMoney(), - ShiftPay = item.ShiftPay.ToMoney(), - FamilyAllowance = item.FamilyAllowance.ToMoney(), - BonusesPay = item.BonusesPay.ToMoney(), - YearsPay = item.YearsPay.ToMoney(), - LeavePay = item.LeavePay.ToMoney(), - InsuranceDeduction = item.InsuranceDeduction.ToMoney(), - TaxDeducation = item.TaxDeducation.ToMoney(), - InstallmentDeduction = item.InstallmentDeduction.ToMoney(), - SalaryAidDeduction = item.SalaryAidDeduction.ToMoney(), - AbsenceDeduction = item.AbsenceDeduction.ToMoney(), - TotalClaims = item.TotalClaims, - TotalDeductions = item.TotalDeductions, - TotalPayment = item.TotalPayment.ToMoney(), - RewardPay = item.RewardPay.ToMoneyNullable(), - ContractStartGr = item.ContractStart, - ContractEndGr = item.ContractEnd, - IsLeft = false, - LeftWorkDate = "", - LastDayOfWork = "", - MarriedAllowance = item.MarriedAllowance.ToMoney(), - HasRollCall = item.HasRollCall, - SumOfWorkingDays = "-", - OverTimeWorkValue = item.OverTimeWorkValue, - OverNightWorkValue = item.OverNightWorkValue, - FridayWorkValue = item.FridayWorkValue, - RotatingShiftValue = item.RotatingShiftValue, - AbsenceValue = item.AbsenceValue, - MaritalStatus = "", - TotalDayOfLeaveCompute = "-", - TotalDayOfYearsCompute = "-", - TotalDayOfBunosesCompute = "-", - InstallmentViewModels = item.LoanInstallments.Select(i => new LoanInstallmentViewModel() + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + SalaryAidViewModels = item.SalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), + CheckoutRollCall = item.CheckoutRollCall != null ? new CheckoutRollCallViewModel() + { + TotalPresentTimeSpan = item.CheckoutRollCall.TotalPresentTimeSpan, + TotalBreakTimeSpan = item.CheckoutRollCall.TotalBreakTimeSpan, + TotalWorkingTimeSpan = item.CheckoutRollCall.TotalWorkingTimeSpan, + TotalPaidLeaveTmeSpan = item.CheckoutRollCall.TotalPaidLeaveTmeSpan, + TotalMandatoryTimeSpan = item.CheckoutRollCall.TotalMandatoryTimeSpan, + TotalSickLeaveTimeSpan = item.CheckoutRollCall.TotalSickLeaveTimeSpan, + RollCallDaysCollection = item.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel() { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount + WorkingTimeSpan = d.WorkingTimeSpan, + BreakTimeSpan = d.BreakTimeSpan, + IsSliced = d.IsSliced, + IsAbsent = d.IsAbsent, + IsFriday = d.IsFriday, + IsHoliday = d.IsHoliday, + LeaveType = d.LeaveType, + CheckoutId = d.CheckoutId, + Date = d.Date, + FirstEndDate = d.FirstEndDate, + FirstStartDate = d.FirstStartDate, + Id = d.Id, + SecondEndDate = d.SecondEndDate, + SecondStartDate = d.SecondStartDate, }).ToList(), - SalaryAidViewModels = item.SalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), - CheckoutRollCall = item.CheckoutRollCall != null ? new CheckoutRollCallViewModel() - { - TotalPresentTimeSpan = item.CheckoutRollCall.TotalPresentTimeSpan, - TotalBreakTimeSpan = item.CheckoutRollCall.TotalBreakTimeSpan, - TotalWorkingTimeSpan = item.CheckoutRollCall.TotalWorkingTimeSpan, - TotalPaidLeaveTmeSpan = item.CheckoutRollCall.TotalPaidLeaveTmeSpan, - TotalMandatoryTimeSpan = item.CheckoutRollCall.TotalMandatoryTimeSpan, - TotalSickLeaveTimeSpan = item.CheckoutRollCall.TotalSickLeaveTimeSpan, - RollCallDaysCollection = item.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel() - { - WorkingTimeSpan = d.WorkingTimeSpan, - BreakTimeSpan = d.BreakTimeSpan, - IsSliced = d.IsSliced, - IsAbsent = d.IsAbsent, - IsFriday = d.IsFriday, - IsHoliday = d.IsHoliday, - LeaveType = d.LeaveType, - CheckoutId = d.CheckoutId, - Date = d.Date, - FirstEndDate = d.FirstEndDate, - FirstStartDate = d.FirstStartDate, - Id = d.Id, - SecondEndDate = d.SecondEndDate, - SecondStartDate = d.SecondStartDate, - }).ToList(), - } : null, - HasAmountConflict =item.HasAmountConflict, - EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours, - EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours),item.EmployeeMandatoryHours.Minutes,"-") - }; + } : null, + HasAmountConflict = item.HasAmountConflict, + EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours, + EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours), item.EmployeeMandatoryHours.Minutes, "-") + }; var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); ch.WorkshopName = workshopName.WorkshopName; ch.TotalPaymentHide = workshopName.TotalPaymentHide; @@ -2014,7 +2014,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos // ); var checkouts = - _context.CheckoutSet.Include(w=>w.CheckoutWarningMessageList).Where(x => workshopAcounts.Contains(x.WorkshopId)) + _context.CheckoutSet.Include(w => w.CheckoutWarningMessageList).Where(x => workshopAcounts.Contains(x.WorkshopId)) .Join(_context.Workshops.AsSplitQuery(), ch => ch.WorkshopId, workshop => workshop.id, @@ -2037,7 +2037,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos { res.ch, res.workshop, - option = _context.EmployeeComputeOptionsSet.FirstOrDefault(x=>x.WorkshopId == res.ch.WorkshopId &&x.EmployeeId == res.ch.EmployeeId), + option = _context.EmployeeComputeOptionsSet.FirstOrDefault(x => x.WorkshopId == res.ch.WorkshopId && x.EmployeeId == res.ch.EmployeeId), res.workshopEmployer, contractingParty = _context.PersonalContractingParties .Include(p => p.Employers) @@ -2070,7 +2070,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos hasEmployeeOrWorkshpSearch = true; checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo); } - + //if (searchModel.IsActiveString == null) @@ -2250,50 +2250,50 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos } - + #endregion if (!hasSearch && !hasEmployeeOrWorkshpSearch) { - + return checkouts.Select(x => new CheckoutViewModel() + { + + Id = x.ch.id, + EmployeeFullName = x.ch.EmployeeFullName, + ContractStart = x.ch.ContractStart.ToFarsi(), + ContractEnd = x.ch.ContractEnd.ToFarsi(), + ContractStartGr = x.ch.ContractStart, + ContractEndGr = x.ch.ContractEnd, + PersonnelCode = x.ch.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), + ArchiveCode = x.workshop.ArchiveCode, + SumOfWorkingDays = x.ch.SumOfWorkingDays, + WorkshopName = x.workshop.WorkshopName, + Month = x.ch.Month, + Year = x.ch.Year, + ContractNo = x.ch.ContractNo, + ContractId = x.ch.ContractId, + WorkshopId = x.ch.WorkshopId, + EmployeeId = x.ch.EmployeeId, + EmployerId = x.workshopEmployer.EmployerId, + IsActiveString = x.ch.IsActiveString, + Signature = x.ch.Signature, + CreationDate = x.ch.CreationDate, + EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", + IsBlockCantracingParty = x.contractingParty.IsBlock, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout, + IsUpdateNeeded = x.ch.IsUpdateNeeded, + CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel { + WarningMessage = wm.WarningMessage, + TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning, - Id = x.ch.id, - EmployeeFullName = x.ch.EmployeeFullName, - ContractStart = x.ch.ContractStart.ToFarsi(), - ContractEnd = x.ch.ContractEnd.ToFarsi(), - ContractStartGr = x.ch.ContractStart, - ContractEndGr = x.ch.ContractEnd, - PersonnelCode = x.ch.PersonnelCode, - PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), - ArchiveCode = x.workshop.ArchiveCode, - SumOfWorkingDays = x.ch.SumOfWorkingDays, - WorkshopName = x.workshop.WorkshopName, - Month = x.ch.Month, - Year = x.ch.Year, - ContractNo = x.ch.ContractNo, - ContractId = x.ch.ContractId, - WorkshopId = x.ch.WorkshopId, - EmployeeId = x.ch.EmployeeId, - EmployerId = x.workshopEmployer.EmployerId, - IsActiveString = x.ch.IsActiveString, - Signature = x.ch.Signature, - CreationDate = x.ch.CreationDate, - EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", - IsBlockCantracingParty = x.contractingParty.IsBlock, - HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout, - IsUpdateNeeded = x.ch.IsUpdateNeeded, - CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm=> new CheckoutWarningMessageModel - { - WarningMessage = wm.WarningMessage, - TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning, - - }).ToList() + }).ToList() - }).OrderByDescending(x=>x.Id).Take(3000).ToList().DistinctBy(x => x.Id) + }).OrderByDescending(x => x.Id).Take(3000).ToList().DistinctBy(x => x.Id) .OrderByDescending(x => x.Id).ThenByDescending(x => x.Year) .ThenBy(x => x.PersonnelCodeInt) .Take(50).ToList(); @@ -2441,7 +2441,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos CreationDate = x.ch.CreationDate, EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", IsBlockCantracingParty = x.contractingParty.IsBlock, - HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout, IsUpdateNeeded = x.ch.IsUpdateNeeded, CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel { @@ -2454,8 +2454,8 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos .Select(x => x.First()).ToList() .OrderByDescending(x => x.Id) .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); - - + + } } @@ -2769,43 +2769,43 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos .Select(x => x.WorkshopId); - - var watch = new Stopwatch(); - watch.Start(); - var checkouts = - ( - from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id)) - join x in _context.CheckoutSet - on workshop.id equals x.WorkshopId - select new - { - Id = x.id, - EmployeeFullName = x.EmployeeFullName, - EmployeeId = x.EmployeeId, - ContractStart = x.ContractStart, - ContractEnd = x.ContractEnd, - PersonnelCode = x.PersonnelCode, - SumOfWorkingDays = x.SumOfWorkingDays, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - IsActiveString = x.IsActiveString, - Signature = x.Signature, - IsUpdateNeeded = x.IsUpdateNeeded, - WorkshopId = x.WorkshopId, - ArchiveCode = workshop.ArchiveCode, - WorkshopName = workshop.WorkshopFullName, - WorkshopSignCheckout = workshop.SignCheckout, - - } - ).OrderByDescending(x => x.Id) - .ThenByDescending(x => x.Year) - .ThenByDescending(x=>x.ContractStart) - .ThenBy(x => x.PersonnelCode).AsNoTracking(); + var watch = new Stopwatch(); + watch.Start(); + var checkouts = + ( + from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id)) + join x in _context.CheckoutSet + on workshop.id equals x.WorkshopId + select new + { + Id = x.id, + EmployeeFullName = x.EmployeeFullName, + EmployeeId = x.EmployeeId, + ContractStart = x.ContractStart, + ContractEnd = x.ContractEnd, + PersonnelCode = x.PersonnelCode, + SumOfWorkingDays = x.SumOfWorkingDays, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + IsActiveString = x.IsActiveString, + Signature = x.Signature, + IsUpdateNeeded = x.IsUpdateNeeded, + WorkshopId = x.WorkshopId, + ArchiveCode = workshop.ArchiveCode, + WorkshopName = workshop.WorkshopFullName, + WorkshopSignCheckout = workshop.SignCheckout, + + } + + ).OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year) + .ThenByDescending(x => x.ContractStart) + .ThenBy(x => x.PersonnelCode).AsNoTracking(); Console.WriteLine("getList======================= : " + watch.Elapsed); - + #region SercheModel if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) @@ -2839,7 +2839,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos (string.IsNullOrWhiteSpace(searchModel.ContractStart) || string.IsNullOrWhiteSpace(searchModel.ContractEnd))) { - + var startYear = searchModel.Year + "/01/01"; var startyearGr = startYear.ToGeorgianDateTime(); var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); @@ -2855,7 +2855,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos string.IsNullOrWhiteSpace(searchModel.ContractStart) && string.IsNullOrWhiteSpace(searchModel.ContractEnd)) { - + //سرچ سال و ماه string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; var startDate = y1.ToGeorgianDateTime(); @@ -2975,7 +2975,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) { - + //سرچ تاریخ var start = searchModel.ContractStart.ToGeorgianDateTime(); var endd = searchModel.ContractEnd.ToGeorgianDateTime(); @@ -2992,19 +2992,19 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos watch.Reset(); watch.Start(); - + var checkoutQueryFilter = await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync(); Console.WriteLine("pagination===================== : " + watch.Elapsed); - var employers =await + var employers = await _context.WorkshopEmployers.Where(x => checkoutQueryFilter .Select(c => c.WorkshopId).Contains(x.WorkshopId)) - .Select(x=> new {x.Employer, x.WorkshopId}).ToListAsync(); + .Select(x => new { x.Employer, x.WorkshopId }).ToListAsync(); var contractingPartiesIds = employers.Select(x => x.Employer.ContractingPartyId).ToList(); var warningMessages = await _context.CheckoutWarningMessages.Where(x => checkoutQueryFilter .Select(c => c.Id).Contains(x.CheckoutId)).ToListAsync(); - + var contractnigParties = await _context.PersonalContractingParties .Where(x => contractingPartiesIds.Contains(x.id)).ToListAsync(); @@ -3078,40 +3078,58 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos .Where(x => x.WorkshopId == getCheckouts.First().WorkshopId).AsNoTracking() .Select(x => new CheckoutEmployersList { - IsLegal = x.Employer.IsLegal == "true", + IsLegal = x.Employer.IsLegal, EmployerFullName = x.Employer.FullName }).ToListAsync(); var employees = (from x in _context.Employees.Where(x => getCheckouts.Select(ch => ch.EmployeeId).Contains(x.id)) - select new - { - EmployeeId = x.id, - MaritalStatus = x.MaritalStatus - } + select new + { + EmployeeId = x.id, + MaritalStatus = x.MaritalStatus + } ).AsNoTracking(); var workshop = await _context.Workshops.AsNoTracking().FirstAsync(x => x.id == getCheckouts.First().WorkshopId); + var showSumOfPayments = workshop.TotalPaymentHide; + bool isLegal = employers.Any(x => x.IsLegal == "حقوقی"); + + var leftWorks = await _context.LeftWorkList.AsNoTracking() + .Where(x => x.WorkshopId == workshop.id).ToListAsync(); - bool isLegal = employers.Any(x => x.IsLegal); - var result = getCheckouts.Select(x => { + var leftCheck = leftWorks + .FirstOrDefault(l => l.EmployeeId == x.EmployeeId && x.ContractStart >= l.StartWorkDate && x.ContractStart <= l.LeftWorkDate && l.HasLeft); + bool hasLeft = false; + var leftWorkDate = ""; + var lastDayOfWork = ""; + if (leftCheck != null) + { + var contractLeftWorkDate = x.ContractEnd.AddDays(1); + if (leftCheck.HasLeft && leftCheck.LeftWorkDate == contractLeftWorkDate) + { + hasLeft = true; + leftWorkDate = leftCheck.LeftWorkDate.ToFarsi(); + lastDayOfWork = x.ContractEnd.ToFarsi(); + } + } var overTimeWorkValue = x.OvertimePay > 0 ? x.OverTimeWorkValue : "-"; - var overNightWorkValue = x.OvertimePay > 0 ? x.OverNightWorkValue : "-"; + var overNightWorkValue = x.NightworkPay > 0 ? x.OverNightWorkValue : "-"; var fridayWorkValue = x.FridayPay > 0 ? x.FridayWorkValue : "-"; var maritalStatus = employees.First(e => e.EmployeeId == x.EmployeeId).MaritalStatus; - var rewardPay = x.RewardPay == null ? "-" : x.RewardPay.ToMoneyNullable(); + var rewardPay = x.RewardPay == null ? "-" : x.RewardPay.ToMoneyCheckZeroNullable(); var rotatingShiftValue = x.ShiftPay > 0 ? x.RotatingShiftValue : "-"; var totalDeduction = "-"; var totalPayment = "-"; var totalClaims = "-"; - if (!workshop.TotalPaymentHide) + if (showSumOfPayments) { totalDeduction = x.TotalDeductions; totalPayment = x.TotalPayment.ToMoneyCheckZero(); totalClaims = x.TotalClaims; } - + return new CheckoutPrintDto() { Id = x.id, @@ -3125,12 +3143,15 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos FathersName = x.FathersName, NationalCode = x.NationalCode, DateOfBirth = x.DateOfBirth, - WorkshopName = x.WorkshopName, + WorkshopName = workshop.WorkshopName, ContractNo = x.ContractNo, Month = x.Month, Year = x.Year, EmployersLists = employers, EmployerIslegal = isLegal, + HasLeft = hasLeft, + LastDayOfWork = lastDayOfWork, + LeftWorkDate = leftWorkDate, #endregion //جدول مطالبات و کسورات @@ -3192,6 +3213,20 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos TotalDeductions = totalDeduction, TotalClaims = totalClaims, #endregion + + //لیست ورود و خروج پرسنل + //اطلاعات ساعات کار و موظقی + #region RollCallData + + + + #endregion + + + //اقساط - مساعده + #region SalaryAidAndInstallmentData + + #endregion }; diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs index 8f3df3e9..3056151b 100644 --- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs +++ b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs @@ -3,6 +3,7 @@ using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Checkout.Dto; using CompanyManagment.App.Contracts.InstitutionPlan; using Microsoft.AspNetCore.Mvc; +using NuGet.Packaging.Signing; using ServiceHost.BaseControllers; namespace ServiceHost.Areas.Admin.Controllers; @@ -39,5 +40,29 @@ public class CheckoutController : AdminBaseController return result; } + /// + /// پرینت گروهی فیش حقوقی + /// + /// + /// + [HttpGet("GroupPrint")] + public async Task> Print(List ids) + { + var result =await _checkoutApplication.CheckoutPrint(ids); + return result; + } + + /// + /// پرینت تکی فیش حقوقی + /// + /// + /// + [HttpGet("PrintOne")] + public async Task> Print(long id) + { + var result = await _checkoutApplication.CheckoutPrint([id]); + return result; + } + } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs index 09858586..a1a37028 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs @@ -26,7 +26,7 @@ public class CheckoutPrintAllModel : PageModel var ids = ExtractNumbers(idlist); - var test = _checkoutApplication.CheckoutPrint(ids).GetAwaiter().GetResult(); + var resultList = new List(); var res = _checkoutApplication.PrintAll(ids);