feat: add dynamic deduction items for late entry and insurance fines to checkout calculations

This commit is contained in:
2025-11-20 12:58:25 +03:30
parent 2035b6fff8
commit 3937cd8a9f
9 changed files with 166 additions and 101 deletions

View File

@@ -0,0 +1,9 @@
namespace _0_Framework.Application.Enums
{
public class CheckoutDynamicDeductionItem
{
public string Name { get; set; }
public int Count { get; set; }
public string Amount { get; set; }
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using _0_Framework.Application; using _0_Framework.Application;
using _0_Framework.Application.Enums;
using _0_Framework.Domain; using _0_Framework.Domain;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
@@ -33,7 +34,8 @@ public class CustomizeCheckout : EntityBase
ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids,
ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary,
double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift,
ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts) ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts,
ICollection<CheckoutDynamicDeductionItem> checkoutDynamicDeductions)
{ {
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
@@ -83,6 +85,7 @@ public class CustomizeCheckout : EntityBase
IrregularShift = irregularShift; IrregularShift = irregularShift;
CustomizeRotatingShifts = customizeRotatingShifts; CustomizeRotatingShifts = customizeRotatingShifts;
RegularShifts = employeeSettingsShifts; RegularShifts = employeeSettingsShifts;
CheckoutDynamicDeductions = checkoutDynamicDeductions;
} }
@@ -286,6 +289,7 @@ public class CustomizeCheckout : EntityBase
public ICollection<CustomizeCheckoutLoanInstallments> CustomizeCheckoutLoanInstallments { get; set; } public ICollection<CustomizeCheckoutLoanInstallments> CustomizeCheckoutLoanInstallments { get; set; }
public ICollection<CustomizeCheckoutSalaryAid> CustomizeCheckoutSalaryAids { get; set; } public ICollection<CustomizeCheckoutSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
public ICollection<CustomizeCheckoutReward> CustomizeCheckoutRewards { get; set; } public ICollection<CustomizeCheckoutReward> CustomizeCheckoutRewards { get; set; }
public ICollection<CheckoutDynamicDeductionItem> CheckoutDynamicDeductions { get; private set; }
public IrregularShift IrregularShift { get; set; } public IrregularShift IrregularShift { get; set; }
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }

View File

@@ -9,6 +9,7 @@ using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
using System.Linq; using System.Linq;
using _0_Framework.Application.Enums;
namespace Company.Domain.CustomizeCheckoutTempAgg; namespace Company.Domain.CustomizeCheckoutTempAgg;
@@ -21,7 +22,8 @@ public class CustomizeCheckoutTemp : EntityBase
{ {
LateToWorkValue = lateToWorkValue; LateToWorkValue = lateToWorkValue;
} }
public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, public CustomizeCheckoutTemp(
DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
string employeeLName, DateTime employeeDateOfBirth, string employeeLName, DateTime employeeDateOfBirth,
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId, string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay, double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
@@ -37,7 +39,8 @@ public class CustomizeCheckoutTemp : EntityBase
ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids,
ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards, ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards,
TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift,
ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts) ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts,
ICollection<CheckoutDynamicDeductionItem> checkoutDynamicDeductions)
{ {
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
@@ -87,6 +90,7 @@ public class CustomizeCheckoutTemp : EntityBase
IrregularShift = irregularShift; IrregularShift = irregularShift;
CustomizeRotatingShifts = customizeRotatingShifts; CustomizeRotatingShifts = customizeRotatingShifts;
RegularShifts = employeeSettingsShifts; RegularShifts = employeeSettingsShifts;
CheckoutDynamicDeductions = checkoutDynamicDeductions;
} }
#region Getters #region Getters
@@ -123,6 +127,7 @@ public class CustomizeCheckoutTemp : EntityBase
public IrregularShift IrregularShift { get; set; } public IrregularShift IrregularShift { get; set; }
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
public ICollection<CustomizeCheckoutRegularShift> RegularShifts { get; set; } public ICollection<CustomizeCheckoutRegularShift> RegularShifts { get; set; }
public ICollection<CheckoutDynamicDeductionItem> CheckoutDynamicDeductions { get; private set; }
#endregion #endregion
@@ -389,4 +394,4 @@ public class CustomizeCheckoutTemp : EntityBase
{ {
HasAmountConflict = hasConflict; HasAmountConflict = hasConflict;
} }
} }

View File

@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Security.AccessControl; using System.Security.AccessControl;
using _0_Framework.Application; using _0_Framework.Application;
using _0_Framework.Application.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Base;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
@@ -18,8 +19,6 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout;
public class CustomizeCheckoutMandatoryViewModel public class CustomizeCheckoutMandatoryViewModel
{ {
/// <summary> /// <summary>
/// حقوق ماهانه /// حقوق ماهانه
/// </summary> /// </summary>
@@ -207,6 +206,8 @@ public class CustomizeCheckoutMandatoryViewModel
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } = []; public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } = [];
public ICollection<CustomizeSifts> EmployeeSettingsShifts { get; set; } = []; public ICollection<CustomizeSifts> EmployeeSettingsShifts { get; set; } = [];
public List<CheckoutDynamicDeductionItem> DynamicDeductions { get; set; } = new();
} }

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime; using System.Runtime;
using System.Security.AccessControl; using System.Security.AccessControl;
using _0_Framework.Application.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Base;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
@@ -12,116 +13,115 @@ using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.Reward; using CompanyManagment.App.Contracts.Reward;
using CompanyManagment.App.Contracts.SalaryAid; using CompanyManagment.App.Contracts.SalaryAid;
namespace CompanyManagment.App.Contracts.CustomizeCheckout namespace CompanyManagment.App.Contracts.CustomizeCheckout;
public class CustomizeCheckoutViewModel
{ {
public class CustomizeCheckoutViewModel public long Id { get; set; }
{ public DateTime CreationDate { get; set; }
public long Id { get; set; } public string Month { get; set; }
public DateTime CreationDate { get; set; } public string Year { get; set; }
public string Month { get; set; } public int PrintCounter { get; set; }
public string Year { get; set; }
public int PrintCounter { get; set; }
public long EmployeeId { get; set; } public long EmployeeId { get; set; }
public string EmployeeFName { get; set; } public string EmployeeFName { get; set; }
public string EmployeeLName { get; set; } public string EmployeeLName { get; set; }
public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}"; public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}";
public string FatherName { get; set; } public string FatherName { get; set; }
public string NationalCode { get; set; } public string NationalCode { get; set; }
public string DateOfBirth { get; set; } public string DateOfBirth { get; set; }
public long PersonnelCode { get; set; } public long PersonnelCode { get; set; }
public string PersonnelCodeString => PersonnelCode.ToString(); public string PersonnelCodeString => PersonnelCode.ToString();
public string WorkshopName { get; set; } public string WorkshopName { get; set; }
public long WorkshopId { get; set; } public long WorkshopId { get; set; }
public long EmployerId { get; set; } public long EmployerId { get; set; }
public string EmployerName { get; set; } public string EmployerName { get; set; }
public List<EmployerViewModel> EmployerList { get; set; } public List<EmployerViewModel> EmployerList { get; set; }
public long ContractId { get; set; } public long ContractId { get; set; }
public string ContractNo { get; set; } public string ContractNo { get; set; }
public DateTime ContractStartGr { get; set; } public DateTime ContractStartGr { get; set; }
public DateTime ContractEndGr { get; set; } public DateTime ContractEndGr { get; set; }
public string ContractStartFa { get; set; } public string ContractStartFa { get; set; }
public string ContractEndFa { get; set; } public string ContractEndFa { get; set; }
//[JsonIgnore] //[JsonIgnore]
//public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi(); //public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi();
//[JsonIgnore] //[JsonIgnore]
//public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi(); //public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi();
public DateTime LeftWorkDateGr { get; set; } public DateTime LeftWorkDateGr { get; set; }
public string SumOfWorkingDays { get; set; } public string SumOfWorkingDays { get; set; }
public string MonthlySalary { get; set; } public string MonthlySalary { get; set; }
public string BaseYearsPay { get; set; } public string BaseYearsPay { get; set; }
public string MarriedAllowance { get; set; } public string MarriedAllowance { get; set; }
public string OvertimePay { get; set; } public string OvertimePay { get; set; }
public string NightworkPay { get; set; } public string NightworkPay { get; set; }
public string FridayPay { get; set; } public string FridayPay { get; set; }
public string MissionPay { get; set; } public string MissionPay { get; set; }
public string ShiftPay { get; set; } public string ShiftPay { get; set; }
public string FamilyAllowance { get; set; } public string FamilyAllowance { get; set; }
public string BonusesPay { get; set; } public string BonusesPay { get; set; }
public string LeavePay { get; set; } public string LeavePay { get; set; }
public string RewardPay { get; set; } public string RewardPay { get; set; }
public bool IsBirthday { get; set; } = true; public bool IsBirthday { get; set; } = true;
public string FineDeduction { get; set; } public string FineDeduction { get; set; }
public string InsuranceDeduction { get; set; } public string InsuranceDeduction { get; set; }
public string TaxDeducation { get; set; } public string TaxDeducation { get; set; }
public string InstallmentDeduction { get; set; } public string InstallmentDeduction { get; set; }
public string SalaryAidDeduction { get; set; } public string SalaryAidDeduction { get; set; }
public string AbsenceDeduction { get; set; } public string AbsenceDeduction { get; set; }
public string EarlyExitDeduction { get; set; } public string EarlyExitDeduction { get; set; }
public string LateToWorkDeduction { get; set; } public string LateToWorkDeduction { get; set; }
public string TotalClaims { get; set; } public string TotalClaims { get; set; }
public string TotalDeductions { get; set; } public string TotalDeductions { get; set; }
public string TotalPayment { get; set; } public string TotalPayment { get; set; }
public List<FineViewModel> FineViewModelList { get; set; } public List<FineViewModel> FineViewModelList { get; set; }
public List<RewardViewModel> RewardViewModels { get; set; } public List<RewardViewModel> RewardViewModels { get; set; }
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; } public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; } public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
public bool TotalPaymentHide { get; set; } public bool TotalPaymentHide { get; set; }
public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; } public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; }
public double TotalPaymentD { get; set; } public double TotalPaymentD { get; set; }
public string TotalLateToWorkDeduction { get; set; } public string TotalLateToWorkDeduction { get; set; }
public string LateToWorkValue { get; set; } public string LateToWorkValue { get; set; }
public string SettingSalary { get; set; } public string SettingSalary { get; set; }
public string DailyWage { get; set; } public string DailyWage { get; set; }
public WorkshopShiftStatus ShiftStatus { get; set; } public WorkshopShiftStatus ShiftStatus { get; set; }
public string EmployeePicture { get; set; } public string EmployeePicture { get; set; }
public IrregularShift IrregularShift { get; set; } public IrregularShift IrregularShift { get; set; }
public List<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } public List<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
public List<CustomizeSifts> RegularShift { get; set; } public List<CustomizeSifts> RegularShift { get; set; }
public bool HasAmountConflict { get; set; } public bool HasAmountConflict { get; set; }
// New: up to three dynamic deduction items (title -> amount string) // New: up to three dynamic deduction items (name, count, amount)
public IDictionary<string, string> DynamicDeductions { get; set; } = new Dictionary<string, string>(); public List<CheckoutDynamicDeductionItem> CheckoutDynamicDeductions { get; set; } = new List<CheckoutDynamicDeductionItem>();
//public bool HasLeft { get; set; } //public bool HasLeft { get; set; }
//public string IsBlockCantracingParty { get; set; } //public string IsBlockCantracingParty { get; set; }
//public string IsActiveString { get; set; } //public string IsActiveString { get; set; }
//public long WorkingHoursId { get; set; } //public long WorkingHoursId { get; set; }
//public string ArchiveCode { get; set; } //public string ArchiveCode { get; set; }
//public string ConsumableItems { get; set; } //public string ConsumableItems { get; set; }
//public string HousingAllowance { get; set; } //public string HousingAllowance { get; set; }
//public string YearsPay { get; set; } //public string YearsPay { get; set; }
}
} }

View File

@@ -123,7 +123,7 @@ namespace CompanyManagment.Application
result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction,
result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts,
regularShift); regularShift,result.DynamicDeductions);
_customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.Create(entity);
@@ -187,7 +187,7 @@ namespace CompanyManagment.Application
computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction,
computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift,
computations.CustomizeRotatingShifts, regularShift); computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions);
_customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.Create(entity);
_customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); _customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd);

View File

@@ -98,7 +98,7 @@ namespace CompanyManagment.Application
result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction,
result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts,
regularShift); regularShift,result.DynamicDeductions);
_customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.Create(entity);
@@ -146,7 +146,8 @@ namespace CompanyManagment.Application
var regularShift = computations.EmployeeSettingsShifts.Select(x => var regularShift = computations.EmployeeSettingsShifts.Select(x =>
new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList(); new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList();
var entity = new CustomizeCheckoutTemp(command.ContractStart, command.ContractEnd, employeeId, employee.FName, employee.LName, employee.DateOfBirth, employee.NationalCode, var entity = new CustomizeCheckoutTemp(command.ContractStart, command.ContractEnd, employeeId, employee.FName, employee.LName, employee.DateOfBirth, employee.NationalCode,
workshop.WorkshopFullName, command.WorkshopId, contract?.Id, workshop.WorkshopFullName, command.WorkshopId, contract?.Id,
computations.MonthlySalary, computations.FridayPay, computations.OverTimePay, computations.BaseYearsPay, computations.MonthlySalary, computations.FridayPay, computations.OverTimePay, computations.BaseYearsPay,
@@ -155,7 +156,7 @@ namespace CompanyManagment.Application
computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction,
computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift,
computations.CustomizeRotatingShifts, regularShift); computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions);
_customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.Create(entity);
_customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); _customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd);
} }

View File

@@ -20,6 +20,7 @@ using CompanyManagment.App.Contracts.Fine;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using _0_Framework.Application.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Base;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
@@ -4304,19 +4305,25 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
long workshopId, long workshopId,
DateTime contractStart, DateTime contractEnd) DateTime contractStart, DateTime contractEnd)
{ {
var dynamicdeductions = new List<CheckoutDynamicDeductionItem>();
//مقدار جریمه تاخیر ورود //مقدار جریمه تاخیر ورود
double lateEntryFine = 0; double lateEntryFine = 0;
//مرز جریمه جداگانه تاخیر ورود //مرز جریمه جداگانه تاخیر ورود
int minuteThresholdForLateEntryFine = 16; int minuteThresholdForLateEntryFine = 16;
//تعداد دفعاتی که پرسنل بیش از مرز تاخیر ورود داشته است
int lateEntryFineTimes = 0; int lateEntryFineTimes = 0;
//مرز محاسبه تعجیل خروج //مرز محاسبه تعجیل خروج
int minuteThresholdForEarlyExitCalculation = 30; int minuteThresholdForEarlyExitCalculation = 30;
//مبلغ جریمه تاخیر ورود //مبلغ جریمه تاخیر ورود
int lateEntryFineAmount = 40_000; int lateEntryFineAmount = 400_000;
//مقدار جریمه افرادی که دارای بیمه هستند ولی غیبت کرده اند //مقدار جریمه افرادی که دارای بیمه هستند ولی غیبت کرده اند
int absenceForInsuranceEmployeesAmount = 150_000; int absenceForInsuranceEmployeesAmount = 1500_000;
//جریمه غیبت برای پرسنل بیمه شده
double absenceForInsuranceFine = 0;
//تعداد روز غیبت پرسنل بیمه شده
int absenceForInsuranceDays = 0;
var checkoutEnd = contractEnd; var checkoutEnd = contractEnd;
@@ -4726,12 +4733,14 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
leavePermittedDays -= absenceDays; leavePermittedDays -= absenceDays;
leavePayAmount = leavePermittedDays * dailyWage; leavePayAmount = leavePermittedDays * dailyWage;
absentsDeductionAmount = 0; absentsDeductionAmount = 0;
absenceDays = 0;
} }
else else
{ {
absenceDays -= leavePermittedDays; absenceDays -= leavePermittedDays;
absentsDeductionAmount = absenceDays * dailyWage; absentsDeductionAmount = absenceDays * dailyWage;
leavePayAmount = 0; leavePayAmount = 0;
leavePermittedDays = 0;
} }
#endregion #endregion
@@ -5046,6 +5055,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
{ {
lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine; lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine;
lateEntryFine = lateEntryFineTimes * lateEntryFineAmount; lateEntryFine = lateEntryFineTimes * lateEntryFineAmount;
} }
lateToWorkDeduction += dayMinuteWage * minutes; lateToWorkDeduction += dayMinuteWage * minutes;
@@ -5060,6 +5070,14 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
} }
} }
dynamicdeductions.Add(new()
{
Amount = lateEntryFine.ToMoney(),
Name = "جریمه 40 تومانی",
Count = lateEntryFineTimes
});
// if (mandatoryDays == 31) // if (mandatoryDays == 31)
// { // {
@@ -5067,6 +5085,28 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
// } // }
#endregion #endregion
# region جریمه افراد غایبی که بیمه هستند
var leftWorkInsurance = _context.LeftWorkInsuranceList.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId
&&( x.StartWorkDate <= contractEnd &&
x.LeftWorkDate >= contractStart)
|| (x.LeftWorkDate == null && x.StartWorkDate <= contractEnd));
if (leftWorkInsurance != null && absenceDays >0)
{
absenceForInsuranceFine = absenceDays * absenceForInsuranceEmployeesAmount;
absenceForInsuranceDays = absenceDays;
dynamicdeductions.Add(new CheckoutDynamicDeductionItem
{
Amount = absenceForInsuranceFine.ToMoney(),
Name = "جریمه بیمه",
Count = absenceForInsuranceDays
});
}
#endregion
return new CustomizeCheckoutMandatoryViewModel return new CustomizeCheckoutMandatoryViewModel
{ {
@@ -5110,6 +5150,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
CustomizeRotatingShifts = customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, CustomizeRotatingShifts = customizeWorkshopEmployeeSettings.CustomizeRotatingShifts,
EmployeeSettingsShifts = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts EmployeeSettingsShifts = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts
.Select(x => (CustomizeSifts)x).ToList(), .Select(x => (CustomizeSifts)x).ToList(),
DynamicDeductions = dynamicdeductions,
}; };
} }

View File

@@ -13,4 +13,8 @@
<PackageReference Include="PersianTools.Core" Version="2.0.4" /> <PackageReference Include="PersianTools.Core" Version="2.0.4" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Domain\CustomizeCheckoutShared\ValueObjects\" />
</ItemGroup>
</Project> </Project>