From 62502fcedebecda726931fec46a0a8b261301d99 Mon Sep 17 00:00:00 2001 From: SamSys Date: Mon, 5 May 2025 20:30:36 +0330 Subject: [PATCH] add HasCheckout Validation in InsuranceList --- .../CheckoutAgg/ICheckoutRepository.cs | 9 ++++ .../EmployeeInsurancListDataViewModel.cs | 2 +- ...mployeeDetailsForInsuranceListViewModel.cs | 7 +++ .../CreateInsuranceWorkshopInfo.cs | 9 ++++ .../InsuranceListApplication.cs | 52 +++++++++++++++---- .../InsuranceWorkshopInfoApplication.cs | 4 ++ .../Repository/CheckoutRepository.cs | 17 ++++++ .../InsuranceList/EmployeeDatatable.cshtml | 22 ++++++-- .../InsuranceList/EmployeeListForEdit.cshtml | 22 ++++++-- .../Company/InsuranceList/Index.cshtml.cs | 2 +- 10 files changed, 127 insertions(+), 19 deletions(-) diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs index edb34ef8..48293370 100644 --- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs +++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs @@ -10,6 +10,15 @@ namespace Company.Domain.CheckoutAgg; public interface ICheckoutRepository : IRepository { + /// + /// چک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر + /// + /// + /// + /// + /// + /// + bool HasCheckout(long workshopId, long employeId, string year, string month); EditCheckout GetDetails(long id); void CreateCkeckout(Checkout command); diff --git a/CompanyManagment.App.Contracts/EmployeeInsurancListData/EmployeeInsurancListDataViewModel.cs b/CompanyManagment.App.Contracts/EmployeeInsurancListData/EmployeeInsurancListDataViewModel.cs index 6fe5ba6d..10112977 100644 --- a/CompanyManagment.App.Contracts/EmployeeInsurancListData/EmployeeInsurancListDataViewModel.cs +++ b/CompanyManagment.App.Contracts/EmployeeInsurancListData/EmployeeInsurancListDataViewModel.cs @@ -50,7 +50,7 @@ public class EmployeeInsurancListDataViewModel /// public double BenefitsIncludedNonContinuous { get; set; } /// - /// جمع کل دستمزد و مزایای ماهانه + /// جمع کل دستمزد و مزایای ماهانه مشمول و غیر مشمول /// DSW_TOTL /// public double IncludedAndNotIncluded { get; set; } diff --git a/CompanyManagment.App.Contracts/InsuranceList/EmployeeDetailsForInsuranceListViewModel.cs b/CompanyManagment.App.Contracts/InsuranceList/EmployeeDetailsForInsuranceListViewModel.cs index 52e56b27..79957ec3 100644 --- a/CompanyManagment.App.Contracts/InsuranceList/EmployeeDetailsForInsuranceListViewModel.cs +++ b/CompanyManagment.App.Contracts/InsuranceList/EmployeeDetailsForInsuranceListViewModel.cs @@ -253,6 +253,13 @@ public class EmployeeDetailsForInsuranceListViewModel /// DSW_SPOUSE /// public double MarriedAllowance { get; set; } + + /// + /// آیا پرسنل دارای فیش حقوقی برای این ماه است + /// - + /// جهت محاسبه اضافه کار و حق اولاد + /// + public bool EmployeeHasCheckout { get; set; } ///// ///// مجموع پایه سنواتی کارکنان ///// DSK_INC diff --git a/CompanyManagment.App.Contracts/InsuranceWorkshopInfo/CreateInsuranceWorkshopInfo.cs b/CompanyManagment.App.Contracts/InsuranceWorkshopInfo/CreateInsuranceWorkshopInfo.cs index 53d4a976..c95f39c6 100644 --- a/CompanyManagment.App.Contracts/InsuranceWorkshopInfo/CreateInsuranceWorkshopInfo.cs +++ b/CompanyManagment.App.Contracts/InsuranceWorkshopInfo/CreateInsuranceWorkshopInfo.cs @@ -28,4 +28,13 @@ public class CreateInsuranceWorkshopInfo public long? InsuranceJobId { get; set; } //public bool ConfirmSentlist { get; set; } + /// + /// محاسبه اضافه کار فیش حقوقی در لیست بیمه + /// + public bool InsuranceCheckoutOvertime { get; set; } + /// + /// محاسبه حق اولاد در لیست بیمه + /// + public bool InsuranceCheckoutFamilyAllowance { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index ff63467e..8b15afb3 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Runtime.InteropServices; using _0_Framework.Application; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; +using Company.Domain.CheckoutAgg; using Company.Domain.DateSalaryAgg; using Company.Domain.DateSalaryItemAgg; using Company.Domain.EmployeeAgg; @@ -55,8 +56,9 @@ public class InsuranceListApplication: IInsuranceListApplication private readonly IPersonalContractingPartyApp _contractingPartyApp; private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository; private readonly IInsuranceYearlySalaryApplication _insuranceYearlySalaryApplication; + private readonly ICheckoutRepository _checkoutRepository; - public InsuranceListApplication( IInsuranceListRepository insuranceListRepositpry, IEmployeeInsurancListDataRepository employeeInsurancListDataRepository, IInsuranceEmployeeInfoRepository insuranceEmployeeInfoRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workShopRepository, ILeftWorkInsuranceApplication leftWorkInsuranceApplication, IInsuranceEmployeeInfoApplication insuranceEmployeeInfoApplication, IEmployeeInsurancListDataApplication employeeInsurancListDataApplication, IYearlySalaryApplication yearlySalaryApplication,IYearlySalaryItemApplication yearlySalaryItemApplication ,IInsuranceWorkshopInfoRepository insuranceWorkshopInfoRepository,IInsuranceJobItemRepositpry insuranceJobItemRepository, IDateSalaryRepository dateSalaryRepository, IDateSalaryItemRepository dateSalaryItemRepository, IPersonalContractingPartyApp contractingPartyApp, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IInsuranceYearlySalaryApplication insuranceYearlySalaryApplication) + public InsuranceListApplication( IInsuranceListRepository insuranceListRepositpry, IEmployeeInsurancListDataRepository employeeInsurancListDataRepository, IInsuranceEmployeeInfoRepository insuranceEmployeeInfoRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workShopRepository, ILeftWorkInsuranceApplication leftWorkInsuranceApplication, IInsuranceEmployeeInfoApplication insuranceEmployeeInfoApplication, IEmployeeInsurancListDataApplication employeeInsurancListDataApplication, IYearlySalaryApplication yearlySalaryApplication,IYearlySalaryItemApplication yearlySalaryItemApplication ,IInsuranceWorkshopInfoRepository insuranceWorkshopInfoRepository,IInsuranceJobItemRepositpry insuranceJobItemRepository, IDateSalaryRepository dateSalaryRepository, IDateSalaryItemRepository dateSalaryItemRepository, IPersonalContractingPartyApp contractingPartyApp, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IInsuranceYearlySalaryApplication insuranceYearlySalaryApplication, ICheckoutRepository checkoutRepository) { // _transactionManager = transactionManager; @@ -77,6 +79,7 @@ public class InsuranceListApplication: IInsuranceListApplication _contractingPartyApp = contractingPartyApp; _leftWorkInsuranceRepository = leftWorkInsuranceRepository; _insuranceYearlySalaryApplication = insuranceYearlySalaryApplication; + _checkoutRepository = checkoutRepository; } public OperationResult Create(CreateInsuranceList command) @@ -379,7 +382,7 @@ public class InsuranceListApplication: IInsuranceListApplication var result = new MainEmployeeDetailsViewModel(); var workshopId = searchModel.WorkshopIds.FirstOrDefault(); - //var employerId = _workShopRepository.GetDetails(workshopId).EmployerIdList.FirstOrDefault(); + var workshop = _workShopRepository.GetDetails(workshopId); //var isBolock = _contractingPartyApp.IsBlockByEmployerId(employerId); var isBolock = _contractingPartyApp.IsBlockCheckByWorkshopId(workshopId); double monthlybaseYear = 0; @@ -408,10 +411,27 @@ public class InsuranceListApplication: IInsuranceListApplication _insuranceListRepositpry.GetEmployeeInsuranceDataAmonthAgo(startDateGr, workshopId); watch.Start(); var computeResult = employeesInfoAndLeftWorks.Select(employee => - { - var dateOfBirth = employee.DateOfBirthGr.ToFarsi(); - var dateOfIssue = employee.DateOfIssueGr.ToFarsi(); - var leftDate = employee.LeftWorkDateGr != null ? employee.LeftWorkDateGr.Value.AddDays(-1) : new DateTime(); + { + var dateOfBirth = employee.DateOfBirthGr.ToFarsi(); + var dateOfIssue = employee.DateOfIssueGr.ToFarsi(); + var leftDate = employee.LeftWorkDateGr != null ? employee.LeftWorkDateGr.Value.AddDays(-1) : new DateTime(); + + + //آیا در کارگاه تیک محاسبه اضافه کار یا حق اولاد زده شده است؟ + bool hasWorkshopOverTimeOrFamilyAllowance = + workshop.InsuranceCheckoutFamilyAllowance || workshop.InsuranceCheckoutOvertime; + + //آیا پرسنل فیش حقوق دارد + //این مورد زمانی چک می شود که تیک محاسبه در کارگاه زده شده باشد + // در غیر اینصورت بصورت پیشفرض دارای فیش حقوق در نظر گرفته می شود + bool employeeHasCheckout = true; + if (hasWorkshopOverTimeOrFamilyAllowance && (leftDate >= startDateGr || employee.LeftWorkDateGr == null)) + { + employeeHasCheckout = _checkoutRepository.HasCheckout(workshopId, employee.EmployeeId, + searchModel.Year, searchModel.Month); + } + + var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employee.StartWorkDateGr, leftDate, startDateGr,endDateGr, employee.EmployeeId); var leftWorkFa = workingDays.hasLeftWorkInMonth ? employee.LeftWorkDateGr.ToFarsi(): ""; @@ -472,8 +492,8 @@ public class InsuranceListApplication: IInsuranceListApplication return new EmployeeDetailsForInsuranceListViewModel { #region EmployeeInfo - - InsuranceEmployeeInformationId = employee.InsuranceEmployeeInformationId, + EmployeeHasCheckout = employeeHasCheckout, + InsuranceEmployeeInformationId = employee.InsuranceEmployeeInformationId, EmployeeId = employee.EmployeeId, FName = employee.FName, LName = employee.LName, @@ -1423,6 +1443,7 @@ public class InsuranceListApplication: IInsuranceListApplication var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employeeData.StartWorkDateGr, leftDate, startDateGr, endDateGr, employeeData.EmployeeId); var leftWorkFa = workingDays.hasLeftWorkInMonth ? employeeData.LeftWorkDateGr.ToFarsi() : ""; var startWorkFa = employeeData.StartWorkDateGr.ToFarsi(); + var workshop = _workShopRepository.GetDetails(workshopId); //آیا کارفرما است bool isManager = employeeData.JobId is 10 or 16 or 17 or 18 or 3498; @@ -1432,9 +1453,22 @@ public class InsuranceListApplication: IInsuranceListApplication // محاسبه بیمه بیکاری var unEmploymentInsurance = (employeeData.BenefitsIncludedContinuous * 3) / 100; + + + //آیا در کارگاه تیک محاسبه اضافه کار یا حق اولاد زده شده است؟ + bool hasWorkshopOverTimeOrFamilyAllowance = + workshop.InsuranceCheckoutFamilyAllowance || workshop.InsuranceCheckoutOvertime; + + bool employeeHasCheckout = true; + if (hasWorkshopOverTimeOrFamilyAllowance && (leftDate >= startDateGr || employeeData.LeftWorkDateGr == null)) + { + employeeHasCheckout = _checkoutRepository.HasCheckout(workshopId, employeeData.EmployeeId, + searchModel.Year, searchModel.Month); + } return new EmployeeDetailsForInsuranceListViewModel { - #region EmployeeInfo + #region EmployeeInfo + EmployeeHasCheckout = employeeHasCheckout, EmployeeInsurancListDataId = employeeData.EmployeeInsurancListDataId, InsuranceEmployeeInformationId = employeeData.InsuranceEmployeeInformationId, diff --git a/CompanyManagment.Application/InsuranceWorkshopInfoApplication.cs b/CompanyManagment.Application/InsuranceWorkshopInfoApplication.cs index f63f741a..d551e9ec 100644 --- a/CompanyManagment.Application/InsuranceWorkshopInfoApplication.cs +++ b/CompanyManagment.Application/InsuranceWorkshopInfoApplication.cs @@ -44,6 +44,8 @@ public class InsuranceWorkshopInfoApplication: IInsuranceWorkshopInfoApplication workshop.InsuranceJobId = workshopObj.InsuranceJobId; workshop.InsuranceCode = workshopObj.InsuranceCode; workshop.AgreementNumber = workshopObj.AgreementNumber; + workshop.InsuranceCheckoutOvertime = workshopObj.InsuranceCheckoutOvertime; + workshop.InsuranceCheckoutFamilyAllowance = workshopObj.InsuranceCheckoutFamilyAllowance; return workshop; } else @@ -60,6 +62,8 @@ public class InsuranceWorkshopInfoApplication: IInsuranceWorkshopInfoApplication workshop.FixedSalary = workshopObj.FixedSalary; workshop.Population = workshopObj.Population; workshop.InsuranceJobId = workshopObj.InsuranceJobId; + workshop.InsuranceCheckoutOvertime = workshopObj.InsuranceCheckoutOvertime; + workshop.InsuranceCheckoutFamilyAllowance = workshopObj.InsuranceCheckoutFamilyAllowance; return workshop; } } diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 472fbddb..64d57f17 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -47,6 +47,23 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos _rollCallRepository = rollCallRepository; } + /// + /// چیک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر + /// + /// + /// + /// + /// + /// + public bool HasCheckout(long workshopId, long employeId, string year, string month) + { + var farisMonthName = Tools.ToFarsiMonthByNumber(month); + + return _context.CheckoutSet.Any(x => + x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName && + x.IsActiveString == "true"); + } + public EditCheckout GetDetails(long id) { return _context.CheckoutSet.Select(x => new EditCheckout() diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml index d8783edf..448d679c 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml @@ -32,7 +32,7 @@ { var index = 1; - if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet)) + if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet || !x.EmployeeHasCheckout)) {