add HasCheckout Validation in InsuranceList

This commit is contained in:
SamSys
2025-05-05 20:30:36 +03:30
parent 4022a1afd8
commit 62502fcede
10 changed files with 127 additions and 19 deletions

View File

@@ -10,6 +10,15 @@ namespace Company.Domain.CheckoutAgg;
public interface ICheckoutRepository : IRepository<long, Checkout>
{
/// <summary>
/// چک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeId"></param>
/// <param name="سال به صورت رشته عددی"></param>
/// <param name="ماه بصورت رشته عددی"></param>
/// <returns></returns>
bool HasCheckout(long workshopId, long employeId, string year, string month);
EditCheckout GetDetails(long id);
void CreateCkeckout(Checkout command);

View File

@@ -50,7 +50,7 @@ public class EmployeeInsurancListDataViewModel
/// </summary>
public double BenefitsIncludedNonContinuous { get; set; }
/// <summary>
/// جمع کل دستمزد و مزایای ماهانه
/// جمع کل دستمزد و مزایای ماهانه مشمول و غیر مشمول
/// DSW_TOTL
/// </summary>
public double IncludedAndNotIncluded { get; set; }

View File

@@ -253,6 +253,13 @@ public class EmployeeDetailsForInsuranceListViewModel
/// DSW_SPOUSE
/// </summary>
public double MarriedAllowance { get; set; }
/// <summary>
/// آیا پرسنل دارای فیش حقوقی برای این ماه است
/// -
/// جهت محاسبه اضافه کار و حق اولاد
/// </summary>
public bool EmployeeHasCheckout { get; set; }
///// <summary>
///// مجموع پایه سنواتی کارکنان
///// DSK_INC

View File

@@ -28,4 +28,13 @@ public class CreateInsuranceWorkshopInfo
public long? InsuranceJobId { get; set; }
//public bool ConfirmSentlist { get; set; }
/// <summary>
/// محاسبه اضافه کار فیش حقوقی در لیست بیمه
/// </summary>
public bool InsuranceCheckoutOvertime { get; set; }
/// <summary>
/// محاسبه حق اولاد در لیست بیمه
/// </summary>
public bool InsuranceCheckoutFamilyAllowance { get; set; }
}

View File

@@ -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,

View File

@@ -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;
}
}

View File

@@ -47,6 +47,23 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
_rollCallRepository = rollCallRepository;
}
/// <summary>
/// چیک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeId"></param>
/// <param name="سال به صورت رشته عددی"></param>
/// <param name="ماه بصورت رشته عددی"></param>
/// <returns></returns>
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()

View File

@@ -32,7 +32,7 @@
{
var index = 1;
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet))
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet || !x.EmployeeHasCheckout))
{
<script>
@@ -51,12 +51,12 @@
<th colspan="4">
<p style="color: red">
ابتدا وضعیت تاهل پرسنل در لیست زیر را مشخص نمایید
ابتدا خطاهای پرسنل در لیست زیر را برطرف نمایید
</p>
</th>
</tr>
<tr>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نوع خطا </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> کدملی </th>
<th class="header-styledit-btn sorting_asc_disabled sorting_desc_disabled"> نام خانوادگی </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نام </th>
@@ -69,10 +69,24 @@
<tbody>
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
if (!item.IsMaritalStatusSet)
if (!item.IsMaritalStatusSet || !item.EmployeeHasCheckout)
{
<tr>
<td class="td-ellipsis emptyTR" >
@{
if (!item.IsMaritalStatusSet)
{
<span style="color: #ff00ce"> وضعیت تاهل ندارد </span>
<br />
}
if (!item.EmployeeHasCheckout)
{
<span style="color: red">فیش حقوقی ندارد</span>
}
}
</td>
<td class="td-ellipsis @(item.Nationality == "ایرانی" ? "emptyTR" : "")">@item.NationalCode</td>
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>

View File

@@ -32,7 +32,7 @@
{
var index = 1;
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet))
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet || !x.EmployeeHasCheckout))
{
<script>
@@ -51,12 +51,12 @@
<th colspan="4">
<p style="color: red">
ابتدا وضعیت تاهل پرسنل در لیست زیر را مشخص نمایید
ابتدا خطاهای پرسنل در لیست زیر را برطرف نمایید
</p>
</th>
</tr>
<tr>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نوع خطا </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> کدملی </th>
<th class="header-styledit-btn sorting_asc_disabled sorting_desc_disabled"> نام خانوادگی </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نام </th>
@@ -69,10 +69,24 @@
<tbody>
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
if (!item.IsMaritalStatusSet)
if (!item.IsMaritalStatusSet || !item.EmployeeHasCheckout)
{
<tr>
<td class="td-ellipsis emptyTR">
@{
if (!item.IsMaritalStatusSet)
{
<span style="color: #ff00ce"> وضعیت تاهل ندارد </span>
<br />
}
if (!item.EmployeeHasCheckout)
{
<span style="color: red">فیش حقوقی ندارد</span>
}
}
</td>
<td class="td-ellipsis @(item.Nationality == "ایرانی" ? "emptyTR" : "")">@item.NationalCode</td>
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>

View File

@@ -785,7 +785,7 @@ public class IndexModel : PageModel
dswrec[20] = item.MonthlyBenefits.ToString();
//دستمزد و مزایای ماهانه مشمول
dswrec[21] = item.MonthlyBenefitsIncluded.ToString();
//جمع کل دستمزد و مزایای ماهانه مسمول غیرمشمول
//جمع کل دستمزد و مزایای ماهانه مشمول غیرمشمول
dswrec[22] = item.IncludedAndNotIncluded.ToString();
//حق بیمه سهم بیمه شده
dswrec[23] = item.InsuranceShare.ToString();