468 lines
16 KiB
C#
468 lines
16 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using _0_Framework.Application;
|
|
using _0_Framework.Domain;
|
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
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,CheckoutRollCall checkoutRollCall)
|
|
{
|
|
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;
|
|
CheckoutRollCall = checkoutRollCall;
|
|
}
|
|
|
|
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; }
|
|
|
|
/// <summary>
|
|
/// دارای تداخل مبلغ است. این در زمانی اتفاق می افتد که فیش مبلغ آن تغییر کرده ولی به دلیل مسائل قانونی امکان صدور دوباره آن وجود ندارد
|
|
/// </summary>
|
|
public bool HasAmountConflict { get; private set; }
|
|
|
|
#region valueObjects
|
|
|
|
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
|
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
|
public CheckoutRollCall CheckoutRollCall { get; private 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;
|
|
}
|
|
|
|
public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall)
|
|
{
|
|
CheckoutRollCall = checkoutRollCall;
|
|
}
|
|
|
|
public void SetAmountConflict(bool hasAmountConflict)
|
|
{
|
|
HasAmountConflict = hasAmountConflict;
|
|
}
|
|
}
|
|
|
|
public class CheckoutRollCall
|
|
{
|
|
private CheckoutRollCall(){}
|
|
public CheckoutRollCall(TimeSpan totalMandatoryTimeSpan, TimeSpan totalPresentTimeSpan, TimeSpan totalBreakTimeSpan,
|
|
TimeSpan totalWorkingTimeSpan, TimeSpan totalPaidLeaveTmeSpan, TimeSpan totalSickLeaveTimeSpan,
|
|
ICollection<CheckoutRollCallDay> rollCallDaysCollection)
|
|
{
|
|
TotalMandatoryTimeSpan = totalMandatoryTimeSpan;
|
|
TotalPresentTimeSpan = totalPresentTimeSpan;
|
|
TotalBreakTimeSpan = totalBreakTimeSpan;
|
|
TotalWorkingTimeSpan = totalWorkingTimeSpan;
|
|
TotalPaidLeaveTmeSpan = totalPaidLeaveTmeSpan;
|
|
TotalSickLeaveTimeSpan = totalSickLeaveTimeSpan;
|
|
RollCallDaysCollection = rollCallDaysCollection;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت موظفی
|
|
/// </summary>
|
|
public TimeSpan TotalMandatoryTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت حضور
|
|
/// </summary>
|
|
public TimeSpan TotalPresentTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت استراحت
|
|
/// </summary>
|
|
public TimeSpan TotalBreakTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت کارکرد
|
|
/// </summary>
|
|
public TimeSpan TotalWorkingTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت مرخصی استحقاقی
|
|
/// </summary>
|
|
public TimeSpan TotalPaidLeaveTmeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مجموع ساعت مرخصی استعلاجی
|
|
/// </summary>
|
|
public TimeSpan TotalSickLeaveTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// روز های حضور غیاب
|
|
/// </summary>
|
|
public ICollection<CheckoutRollCallDay> RollCallDaysCollection { get; private set; }
|
|
}
|
|
|
|
public class CheckoutRollCallDay
|
|
{
|
|
private CheckoutRollCallDay(){}
|
|
public CheckoutRollCallDay(DateTime date, string firstStartDate, string firstEndDate,
|
|
string secondStartDate, string secondEndDate, TimeSpan breakTimeSpan,
|
|
bool isSliced, TimeSpan workingTimeSpan, bool isAbsent, bool isFriday,
|
|
bool isHoliday, string leaveType)
|
|
{
|
|
Date = date;
|
|
FirstStartDate = firstStartDate;
|
|
FirstEndDate = firstEndDate;
|
|
SecondStartDate = secondStartDate;
|
|
SecondEndDate = secondEndDate;
|
|
BreakTimeSpan = breakTimeSpan;
|
|
IsSliced = isSliced;
|
|
WorkingTimeSpan = workingTimeSpan;
|
|
IsAbsent = isAbsent;
|
|
IsFriday = isFriday;
|
|
IsHoliday = isHoliday;
|
|
LeaveType = leaveType;
|
|
}
|
|
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// تاریخ
|
|
/// </summary>
|
|
public DateTime Date { get; private set; }
|
|
/// <summary>
|
|
/// ورود اول
|
|
/// </summary>
|
|
public string FirstStartDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// خروج اول
|
|
/// </summary>
|
|
public string FirstEndDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// ورود دوم
|
|
/// </summary>
|
|
public string SecondStartDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// خروج دوم
|
|
/// </summary>
|
|
public string SecondEndDate { get; private set; }
|
|
|
|
/// <summary>
|
|
/// ساعت استراحت
|
|
/// </summary>
|
|
public TimeSpan BreakTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// مقدار زمان کارکرد
|
|
/// </summary>
|
|
public TimeSpan WorkingTimeSpan { get; private set; }
|
|
|
|
/// <summary>
|
|
/// آیا منقطع است؟
|
|
/// </summary>
|
|
public bool IsSliced { get; private set; }
|
|
|
|
/// <summary>
|
|
/// آیا غیبت است
|
|
/// </summary>
|
|
public bool IsAbsent { get; private set; }
|
|
|
|
/// <summary>
|
|
/// آیا جمعه است
|
|
/// </summary>
|
|
public bool IsFriday { get; private set; }
|
|
|
|
/// <summary>
|
|
/// آیا تعطیل رسمی است
|
|
/// </summary>
|
|
public bool IsHoliday { get; private set; }
|
|
|
|
/// <summary>
|
|
/// نوع مرخصی - درصورت نداشتن مرخصی مقدارش null میباشد
|
|
/// </summary>
|
|
public string LeaveType { get; private set; }
|
|
|
|
public long CheckoutId { get; set; }
|
|
|
|
} |