Files
Backend-Api/Company.Domain/CheckoutAgg/Checkout.cs
2025-04-23 17:06:12 +03:30

311 lines
12 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using _0_Framework.Application;
using _0_Framework.Domain;
using Company.Domain.CheckoutAgg.ValueObjects;
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
using Company.Domain.WorkshopAgg;
namespace Company.Domain.CheckoutAgg;
public class Checkout : EntityBase
{
private Checkout()
{
}
public Checkout(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
long employeeId, string workshopName, long workshopId, string contractNo, DateTime contractStart,
DateTime contractEnd, string month, string year, long contractId, long workingHoursId,
double monthlySalary, double baseYearsPay, double consumableItems, double housingAllowance,
double overtimePay, double nightworkPay, double fridayPay, double missionPay, double shiftPay,
double familyAllowance, double bonusesPay, double yearsPay, double leavePay,
double insuranceDeduction, double taxDeducation, double installmentDeduction,
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
, string archiveCode, string personnelCode,
string totalClaims, string totalDeductions, double totalPayment, string signature, double marriedAllowance, bool leaveCheckout,
double creditLeaves, double absencePeriod, double averageHoursPerDay, bool hasRollCall, string overTimeWorkvalue,
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
ICollection<CheckoutLoanInstallment> loanInstallments,
ICollection<CheckoutSalaryAid> salaryAids)
{
EmployeeFullName = employeeFullName;
FathersName = fathersName;
NationalCode = nationalCode;
DateOfBirth = dateOfBirth;
EmployeeId = employeeId;
WorkshopName = workshopName;
WorkshopId = workshopId;
ContractNo = contractNo;
ContractStart = contractStart;
ContractEnd = contractEnd;
Month = month;
Year = year;
ContractId = contractId;
WorkingHoursId = workingHoursId;
MonthlySalary = monthlySalary;
BaseYearsPay = baseYearsPay;
ConsumableItems = consumableItems;
HousingAllowance = housingAllowance;
OvertimePay = overtimePay;
NightworkPay = nightworkPay;
FridayPay = fridayPay;
MissionPay = missionPay;
ShiftPay = shiftPay;
FamilyAllowance = familyAllowance;
BonusesPay = bonusesPay;
YearsPay = yearsPay;
LeavePay = leavePay;
InsuranceDeduction = insuranceDeduction;
TaxDeducation = taxDeducation;
InstallmentDeduction = installmentDeduction;
SalaryAidDeduction = salaryAidDeduction;
AbsenceDeduction = absenceDeduction;
SumOfWorkingDays = sumOfWorkingDays;
ArchiveCode = archiveCode;
PersonnelCode = personnelCode;
TotalClaims = totalClaims;
TotalDeductions = totalDeductions;
TotalPayment = totalPayment;
RewardPay = 0;
IsActiveString = "true";
Signature = signature;
MarriedAllowance = marriedAllowance;
LeaveCheckout = leaveCheckout;
CreditLeaves = creditLeaves;
AbsencePeriod = absencePeriod;
AverageHoursPerDay = averageHoursPerDay;
HasRollCall = hasRollCall;
OverTimeWorkValue = overTimeWorkvalue;
OverNightWorkValue = overNightWorkValue;
FridayWorkValue = fridayWorkValue;
RotatingShiftValue = rotatingShifValue;
AbsenceValue = absenceValue;
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
TotalDayOfYearsCompute = totalDayOfYearsCompute;
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
LoanInstallments = loanInstallments;
SalaryAids = salaryAids;
}
public string EmployeeFullName { get; private set; }
public string IsActiveString { get; private set; }
public string Signature { get; private set; }
public string FathersName { get; private set; }
public string NationalCode { get; private set; }
public string DateOfBirth { get; private set; }
public long EmployeeId { get; private set; }
public string WorkshopName { get; private set; }
public long WorkshopId { get; private set; }
public string ContractNo { get; private set; }
public DateTime ContractStart { get; set; }
public DateTime ContractEnd { get; private set; }
public string Month { get; private set; }
public string Year { get; private set; }
public long ContractId { get; private set; }
public long WorkingHoursId { get; private set; }
public double MonthlySalary { get; private set; }
public double BaseYearsPay { get; private set; }
public double ConsumableItems { get; private set; }
public double HousingAllowance { get; private set; }
public double MarriedAllowance { get; private set; }
public double OvertimePay { get; private set; }
public double NightworkPay { get; private set; }
public double FridayPay { get; private set; }
public double MissionPay { get; private set; }
public double ShiftPay { get; private set; }
public double FamilyAllowance { get; private set; }
public double BonusesPay { get; private set; }
public double YearsPay { get; private set; }
public double LeavePay { get; private set; }
public double? RewardPay { get; private set; }
public double InsuranceDeduction { get; private set; }
public double TaxDeducation { get; private set; }
public double InstallmentDeduction { get; private set; }
public double SalaryAidDeduction { get; private set; }
public double AbsenceDeduction { get; private set; }
public string SumOfWorkingDays { get; private set; }
public string ArchiveCode { get; private set; }
public string PersonnelCode { get; private set; }
public string TotalClaims { get; private set; }
public string TotalDeductions { get; private set; }
public double TotalPayment { get; private set; }
//public Contract Contract { get; set; }
//public Employee Employee { get; set; }
//وضعیت تصفیه مزد مرخصی
public bool LeaveCheckout { get; private set; }
//مدت طلب مرخصی
public double CreditLeaves { get; private set; }
//مدت غیبت
public double AbsencePeriod { get; private set; }
//میانگین ساعت کار در یک روز
public double AverageHoursPerDay { get; private set; }
public bool HasRollCall { get; private set; }
/// <summary>
/// مقدار اضافه کار
/// </summary>
public string OverTimeWorkValue { get; private set; }
/// <summary>
/// مقدار شبکاری
/// </summary>
public string OverNightWorkValue { get; private set; }
/// <summary>
/// مقدار جمعه کاری
/// </summary>
public string FridayWorkValue { get; private set; }
/// <summary>
/// درصد نوبت کاری
/// </summary>
public string RotatingShiftValue { get; private set; }
/// <summary>
/// مقدار غیبت
/// </summary>
public string AbsenceValue { get; private set; }
/// <summary>
/// تعداد روزهای محاسبه شده برای مزد مرخصی
/// </summary>
public string TotalDayOfLeaveCompute { get; private set; }
/// <summary>
/// تعداد روزهای محاسبه شده برای سنوات
/// </summary>
public string TotalDayOfYearsCompute { get; private set; }
/// <summary>
/// تعداد روزهای محاسبه شده برای عیدی و پاداش
/// </summary>
public string TotalDayOfBunosesCompute { get; private set; }
#region valueObjects
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
#endregion
public Workshop Workshop { get; set; }
//public WorkingHours WorkingHours { get; set; }
public void Edit(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
long employeeId, string workshopName, long workshopId, string contractNo, DateTime contractStart,
DateTime contractEnd, string month, string year, long contractId, long workingHoursId,
double monthlySalary, double baseYearsPay, double consumableItems, double housingAllowance,
double overtimePay, double nightworkPay, double fridayPay, double missionPay, double shiftPay,
double familyAllowance, double bonusesPay, double yearsPay, double leavePay,
double insuranceDeduction, double taxDeducation, double installmentDeduction,
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
, string archiveCode, string personnelCode,
string totalClaims, string totalDeductions, double totalPayment, double? rewardPay)
{
EmployeeFullName = employeeFullName;
FathersName = fathersName;
NationalCode = nationalCode;
DateOfBirth = dateOfBirth;
EmployeeId = employeeId;
WorkshopName = workshopName;
WorkshopId = workshopId;
ContractNo = contractNo;
ContractStart = contractStart;
ContractEnd = contractEnd;
Month = month;
Year = year;
ContractId = contractId;
WorkingHoursId = workingHoursId;
MonthlySalary = monthlySalary;
BaseYearsPay = baseYearsPay;
ConsumableItems = consumableItems;
HousingAllowance = housingAllowance;
OvertimePay = overtimePay;
NightworkPay = nightworkPay;
FridayPay = fridayPay;
MissionPay = missionPay;
ShiftPay = shiftPay;
FamilyAllowance = familyAllowance;
BonusesPay = bonusesPay;
YearsPay = yearsPay;
LeavePay = leavePay;
RewardPay = rewardPay;
InsuranceDeduction = insuranceDeduction;
TaxDeducation = taxDeducation;
InstallmentDeduction = installmentDeduction;
SalaryAidDeduction = salaryAidDeduction;
AbsenceDeduction = absenceDeduction;
SumOfWorkingDays = sumOfWorkingDays;
ArchiveCode = archiveCode;
PersonnelCode = personnelCode;
TotalClaims = totalClaims;
TotalDeductions = totalDeductions;
TotalPayment = totalPayment;
}
public void EditPersonnelCode(long personnelCode, DateTime contarctStart, string archiveCode)
{
var personnelcodeString = personnelCode.ToString();
PersonnelCode = personnelcodeString;
var month = contarctStart.ToFarsiMonth();
var year = contarctStart.ToFarsiYear();
var sumYear = year.Substring(Math.Max(0, year.Length - 2));
ContractNo = archiveCode + "/" + personnelCode + "/" + sumYear + "/" + month;
}
public void Active()
{
this.IsActiveString = "true";
}
public void DeActive()
{
this.IsActiveString = "false";
}
public void Sign()
{
this.Signature = "1";
}
public void UnSign()
{
this.Signature = "0";
}
public void CustomSet(double rewardPay, double salaryAidDeduction, string totalClaims, string totalDeductions, double totalPayment)
{
this.RewardPay = rewardPay;
this.SalaryAidDeduction = salaryAidDeduction;
this.TotalClaims = totalClaims;
this.TotalDeductions = totalDeductions;
this.TotalPayment = totalPayment;
}
public void SetSalaryAid(ICollection<CheckoutSalaryAid> salaryAids,double salaryAidAmount)
{
SalaryAids = salaryAids;
SalaryAidDeduction = salaryAidAmount;
}
public void SetLoanInstallment(ICollection<CheckoutLoanInstallment> lonaInstallments, double installmentsAmount)
{
LoanInstallments = lonaInstallments;
InstallmentDeduction = installmentsAmount;
}
}