diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs index 23afe3cb..db65625e 100644 --- a/0_Framework/Application/Tools.cs +++ b/0_Framework/Application/Tools.cs @@ -445,6 +445,18 @@ public static class Tools return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir")); } + + /// + /// اگر مبلغ صفر باشد خط تیره برمیگرداند + /// + /// + /// + public static string ToMoneyCheckZero(this double myMoney) + { + if (myMoney == 0) + return "-"; + return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir")); + } public static string ToMoneyNullable(this double? myMoney) { diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs index daa2c35d..c1bba732 100644 --- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs +++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs @@ -92,5 +92,14 @@ public interface ICheckoutRepository : IRepository /// Task> GetList(CheckoutSearchModelDto searchModel); + + /// + /// پرینت فیش حقوقی + /// Api + /// + /// + /// + Task> CheckoutPrint(List ids); + #endregion } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs new file mode 100644 index 00000000..a007e448 --- /dev/null +++ b/CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs @@ -0,0 +1,231 @@ +using System; +using CompanyManagment.App.Contracts.Loan; +using CompanyManagment.App.Contracts.RollCall; +using CompanyManagment.App.Contracts.SalaryAid; +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.Checkout.Dto; + +public class CheckoutPrintDto +{ + // هدر فیش + // اطلاعات هویتی + // اطلاعات کارگاه + #region Header + public long Id { get; set; } + + /// + /// نام پرسنل + /// + public string EmployeeFullName { get; set; } + + /// + /// نام پدر + /// + public string FathersName { get; set; } + + /// + /// کد ملی + /// + public string NationalCode { get; set; } + + /// + /// تاریخ تولد + /// + public string DateOfBirth { get; set; } + + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } + + /// + /// شماره قراداد + /// + public string ContractNo { get; set; } + + /// + /// ماه + /// + public string Month { get; set; } + + /// + /// سال + /// + public string Year { get; set; } + + /// + /// لیست کارفرما + /// + public List EmployersLists { get; set; } + + /// + /// آیا کارقرما حقوقی است + /// + public bool EmployerIslegal { get; set; } + #endregion + + //جدول مطالبات و کسورات + #region PaymentAndDeductionTable + /// + /// مطالبات + /// + public List PaymentList { get; set; } + + /// + /// کسورات + /// + public List DeductionList { get; set; } + + /// + /// جمع مطالبات + /// + public string TotalPayment { get; set; } + + /// + /// جمع کسورات + /// + public string TotalDeductions { get; set; } + + + /// + /// مبلغ قابل پرداخت + /// + public string TotalClaims { get; set; } + #endregion + + //لیست ورود و خروج پرسنل + //اطلاعات ساعات کار و موظقی + #region RollCallData + /// + /// لیست حضورغیاب + /// + public List MonthlyRollCall { get; set; } + + /// + /// دیتای جدول حضورغیاب + /// + public CheckoutRollCallViewModel CheckoutRollCall { get; set; } + + #endregion + + //اقساط + #region LoneAndInstallmentData + + public List InstallmentViewModels { get; set; } + public List SalaryAidViewModels { get; set; } + + #endregion +} + +/// +/// کسورات +/// +public class PaymentData +{ + /// + /// حقوق و مزد + /// + public string MonthlySalary { get; set; } + + /// + /// پایه سنوات + /// + public string BaseYearsPay { get; set; } + + /// + /// کمک هزینه اقلام مصرفی + /// + public string ConsumableItems { get; set; } + + /// + /// کمک هزینه مسکن + /// + public string HousingAllowance { get; set; } + + /// + /// فوق العاده اضافه کاری + /// + public string OvertimePay { get; set; } + + /// + /// فوق العاده شبکاری + /// + public string NightworkPay { get; set; } + + /// + /// فوق العاده جمعه کاری + /// + public string FridayPay { get; set; } + + /// + /// فوق العاده ماموریت + /// + public string MissionPay { get; set; } + + /// + /// فوق العاده نوبت کاری + /// + public string ShiftPay { get; set; } + + /// + /// کمک هزینه عائله مندی + /// + public string FamilyAllowance { get; set; } + + /// + /// حق تاهل + /// + public string MarriedAllowance { get; set; } + +} + +/// +/// کسورات +/// +public class DeductionData +{ + +} + +public class PaymentAndDeductionList +{ + public int RowNumber { get; set; } + /// + /// عنوان + /// + public string Title { get; set; } + + /// + /// مقدار/روز/ساعت + /// + public string Value { get; set; } + + /// + /// مبلغ + /// + public string Amount { get; set; } +} + + +/// +/// لیست کارفرما +/// +public class CheckoutEmployersList +{ + public bool IsLegal { get; set; } + public string EmployerFullName { get; set; } +} + + + + +public class CheckoutGetData : CheckoutPrintDto +{ + public DateTime ContractStart { get; set; } + + public int PersonnelCode { get; set; } + + public long WorkshopId { get; set; } + public long EmployeeId { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs index cdc831af..a3e75d18 100644 --- a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs +++ b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs @@ -81,5 +81,12 @@ public interface ICheckoutApplication /// Task GetRotatingShiftApi(long id); + /// + /// پرینت فیش حقوقی + /// Api + /// + /// + /// + Task> CheckoutPrint(List ids); #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs index 1681fe34..30263813 100644 --- a/CompanyManagment.Application/CheckoutApplication.cs +++ b/CompanyManagment.Application/CheckoutApplication.cs @@ -772,5 +772,11 @@ public class CheckoutApplication : ICheckoutApplication RotatingShiftList = items }; } + + public Task> CheckoutPrint(List ids) + { + return _checkoutRepository.CheckoutPrint(ids); + } + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 1e56389a..637dcf1e 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -3060,5 +3060,146 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos }; } + + + public async Task> CheckoutPrint(List ids) + { + if (ids.Count == 0) + return new List(); + + var watch = new Stopwatch(); + watch.Start(); + + var getCheckouts = await _context.CheckoutSet.Where(x => ids.Contains(x.id)) + .AsNoTracking() + .ToListAsync(); + + var employers = await _context.WorkshopEmployers + .Where(x => x.WorkshopId == getCheckouts.First().WorkshopId).AsNoTracking() + .Select(x => new CheckoutEmployersList + { + IsLegal = x.Employer.IsLegal == "true", + 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 + } + ).AsNoTracking(); + var workshop = await _context.Workshops.AsNoTracking().FirstAsync(x => x.id == getCheckouts.First().WorkshopId); + + bool isLegal = employers.Any(x => x.IsLegal); + + var result = getCheckouts.Select(x => + { + + var overTimeWorkValue = x.OvertimePay > 0 ? x.OverTimeWorkValue : "-"; + var overNightWorkValue = x.OvertimePay > 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 rotatingShiftValue = x.ShiftPay > 0 ? x.RotatingShiftValue : "-"; + var totalDeduction = "-"; + var totalPayment = "-"; + var totalClaims = "-"; + if (!workshop.TotalPaymentHide) + { + totalDeduction = x.TotalDeductions; + totalPayment = x.TotalPayment.ToMoneyCheckZero(); + totalClaims = x.TotalClaims; + } + + return new CheckoutPrintDto() + { + Id = x.id, + + // هدر فیش + // اطلاعات هویتی + // اطلاعات کارگاه + #region Header + + EmployeeFullName = x.EmployeeFullName, + FathersName = x.FathersName, + NationalCode = x.NationalCode, + DateOfBirth = x.DateOfBirth, + WorkshopName = x.WorkshopName, + ContractNo = x.ContractNo, + Month = x.Month, + Year = x.Year, + EmployersLists = employers, + EmployerIslegal = isLegal, + #endregion + + //جدول مطالبات و کسورات + + #region PaymentAndDeductionTable + + //مطالبات + PaymentList = new List + { + new PaymentAndDeductionList() + {RowNumber = 1, Title = "حقوق و مزد", Value = $"{x.SumOfWorkingDays}", Amount = x.MonthlySalary.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 2, Title = "پایه سنوات", Value = "-", Amount = x.BaseYearsPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 3, Title = "کمک هزینه اقلام مصرفی خانوار", Value = "-", Amount = x.ConsumableItems.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 4, Title = "کمک هزینه مسکن", Value = "-", Amount = x.HousingAllowance.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 5, Title = "فوق العاده اضافه کاری", Value = overTimeWorkValue, Amount = x.OvertimePay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 6, Title = "فوق العاده شب کاری", Value = overNightWorkValue, Amount = x.NightworkPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 7, Title = "فوق العاده جمعه کاری", Value = fridayWorkValue, Amount = x.FridayPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 8, Title = "فوق العاده ماموریت", Value = "-", Amount = "-",}, + new PaymentAndDeductionList() + {RowNumber = 9, Title = "فوق العاده نوبت کاری", Value = rotatingShiftValue, Amount = x.ShiftPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 10, Title = "کمک هزینه عائله مندی", Value = "-", Amount = x.FamilyAllowance.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 11, Title = "حق تاهل", Value = maritalStatus, Amount = x.MarriedAllowance.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 12, Title = "پاداش", Value = "-", Amount = rewardPay,}, + new PaymentAndDeductionList() + {RowNumber = 13, Title = "عیدی و پاداش", Value = "-", Amount = x.BonusesPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 14, Title = "سنوات", Value = "-", Amount = x.YearsPay.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 15, Title = "مزد مرخصی", Value = "-", Amount = x.LeavePay.ToMoneyCheckZero(),}, + }, + + //کسورات + DeductionList = new List + { + new PaymentAndDeductionList() + {RowNumber = 1, Title = "حق بیمه سهم کارگر", Value = "-", Amount = x.InsuranceDeduction.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 2, Title = "مالیات بر حقوق", Value = "-", Amount = x.TaxDeducation.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 3, Title = "قسط تسهیلات", Value = "-", Amount = x.InstallmentDeduction.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 4, Title = "مساعده", Value = "-", Amount = x.SalaryAidDeduction.ToMoneyCheckZero(),}, + new PaymentAndDeductionList() + {RowNumber = 5, Title = "غیبت", Value = "-", Amount = "-",}, + }, + + + TotalPayment = totalPayment, + TotalDeductions = totalDeduction, + TotalClaims = totalClaims, + #endregion + }; + + + + }).ToList(); + + Console.WriteLine("print : " + watch.Elapsed); + return result; + } #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs index a98a852a..09858586 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CheckoutPrintAll.cshtml.cs @@ -22,9 +22,12 @@ public class CheckoutPrintAllModel : PageModel } public void OnGet(string idlist) - { - var ids = ExtractNumbers(idlist); - var resultList = new List(); + { + + + var ids = ExtractNumbers(idlist); + var test = _checkoutApplication.CheckoutPrint(ids).GetAwaiter().GetResult(); + var resultList = new List(); var res = _checkoutApplication.PrintAll(ids);