diff --git a/Company.Domain/CheckoutAgg/Checkout.cs b/Company.Domain/CheckoutAgg/Checkout.cs index 7bab01ed..9cda9002 100644 --- a/Company.Domain/CheckoutAgg/Checkout.cs +++ b/Company.Domain/CheckoutAgg/Checkout.cs @@ -1,6 +1,10 @@ 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; @@ -21,7 +25,11 @@ public class Checkout : EntityBase 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) + 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 loanInstallments, + ICollection salaryAids) { EmployeeFullName = employeeFullName; FathersName = fathersName; @@ -78,6 +86,8 @@ public class Checkout : EntityBase TotalDayOfLeaveCompute = totalDayOfLeaveCompute; TotalDayOfYearsCompute = totalDayOfYearsCompute; TotalDayOfBunosesCompute = totalDayOfBunosesCompute; + LoanInstallments = loanInstallments; + SalaryAids = salaryAids; } public string EmployeeFullName { get; private set; } @@ -181,7 +191,15 @@ public class Checkout : EntityBase /// public string TotalDayOfBunosesCompute { get; private set; } - public Workshop Workshop { get; set; } + + #region valueObjects + + public ICollection LoanInstallments { get; set; } = []; + public ICollection 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, diff --git a/Company.Domain/CheckoutAgg/ValueObjects/CheckoutLoanInstallment.cs b/Company.Domain/CheckoutAgg/ValueObjects/CheckoutLoanInstallment.cs new file mode 100644 index 00000000..da0e9370 --- /dev/null +++ b/Company.Domain/CheckoutAgg/ValueObjects/CheckoutLoanInstallment.cs @@ -0,0 +1,23 @@ +using _0_Framework.Application; + +namespace Company.Domain.CheckoutAgg.ValueObjects; + +public class CheckoutLoanInstallment +{ + public CheckoutLoanInstallment(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount) + { + AmountForMonth = amountForMonth; + Month = month; + Year = year; + IsActive = isActive; + LoanRemaining = loanRemaining; + LoanAmount = loanAmount; + } + + public string AmountForMonth { get; private set; } + public string Month { get; private set; } + public string Year { get; private set; } + public string LoanRemaining { get; set; } + public IsActive IsActive { get; private set; } + public string LoanAmount { get; set; } +} \ No newline at end of file diff --git a/Company.Domain/CheckoutAgg/ValueObjects/CheckoutSalaryAid.cs b/Company.Domain/CheckoutAgg/ValueObjects/CheckoutSalaryAid.cs new file mode 100644 index 00000000..d14bc4be --- /dev/null +++ b/Company.Domain/CheckoutAgg/ValueObjects/CheckoutSalaryAid.cs @@ -0,0 +1,22 @@ +using System; +using AccountManagement.Domain.AccountAgg; + +namespace Company.Domain.CheckoutAgg.ValueObjects; + +public class CheckoutSalaryAid +{ + public CheckoutSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa, DateTime calculationDateTime, string calculationDateTimeFa) + { + Amount = amount; + SalaryAidDateTime = salaryAidDateTime; + SalaryAidDateTimeFa = salaryAidDateTimeFa; + CalculationDateTime = calculationDateTime; + CalculationDateTimeFa = calculationDateTimeFa; + } + public string Amount { get; private set; } + public DateTime SalaryAidDateTime { get; private set; } + public string SalaryAidDateTimeFa { get; private set; } + + public DateTime CalculationDateTime { get; private set; } + public string CalculationDateTimeFa { get; private set; } +} \ No newline at end of file diff --git a/Company.Domain/Company.Domain.csproj b/Company.Domain/Company.Domain.csproj index c84c4d43..76106517 100644 --- a/Company.Domain/Company.Domain.csproj +++ b/Company.Domain/Company.Domain.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -14,4 +14,8 @@ + + + + diff --git a/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs b/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs index 6a53dfda..7147a845 100644 --- a/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs +++ b/CompanyManagment.App.Contracts/Contract/ComputingViewModel.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using CompanyManagment.App.Contracts.Loan; +using CompanyManagment.App.Contracts.SalaryAid; using CompanyManagment.App.Contracts.WorkingHoursTemp; namespace CompanyManagment.App.Contracts.Contract; @@ -39,5 +41,19 @@ public class ComputingViewModel + + /// + /// مساعده + /// + public double SalaryAidDeduction { get; set; } + + /// + /// قسط وام + /// + public double InstallmentDeduction { get; set; } + public List InstallmentViewModels { get; set; } + public List SalaryAidViewModels { get; set; } + + //public List holidays; } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index 0519b651..7660ada6 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -557,6 +557,35 @@ CreateWorkingHoursTemp command, bool holidayWorking) #endregion + #region SalaryAidDeduction + + var salaryAidViewModel = GetCheckoutSalaryAids(employeeId, workshopId, contractStart, contractEnd); + + double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); + + #endregion + + #region Loan + + var loanInstallments = _context.Loans + .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) + .SelectMany(x => x.LoanInstallments) + .Where(i => i.InstallmentDate > contractStart && i.InstallmentDate < contractEnd && i.IsActive == IsActive.True) + .Select(x => new LoanInstallmentViewModel() + { + Month = x.Month, + IsActive = x.IsActive, + Amount = x.AmountForMonth.ToMoney(), + Year = x.Year, + AmountDouble = x.AmountForMonth, + RemainingAmount = _context.Loans.SelectMany(l => l.LoanInstallments).Where(i => i.LoanId == x.LoanId && i.IsActive == IsActive.True && i.InstallmentDate > x.InstallmentDate) + .Sum(i => i.AmountForMonth).ToMoney() + }).ToList(); + + double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); + + #endregion + #region Result var res = new ComputingViewModel() @@ -587,7 +616,11 @@ CreateWorkingHoursTemp command, bool holidayWorking) TotalHolidayAndNotM = totalHolidaysAndNotM.ToString(), DayliFeeComplete = dayliFeeComplete, MarriedAllowance = MarriedAllowanceStr, - RotatingShiftValue = shiftPayValue + RotatingShiftValue = shiftPayValue, + InstallmentDeduction = loanDeduction, + InstallmentViewModels = loanInstallments, + SalaryAidDeduction = salaryAidDeduction, + SalaryAidViewModels = salaryAidViewModel }; #endregion @@ -1276,14 +1309,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #endregion #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - }).ToList(); + var salaryAidViewModel = GetCheckoutSalaryAids(employeeId, workshopId, contractStart, contractEnd); double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion @@ -2078,17 +2104,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.CalculationDate >= checkoutStart && x.CalculationDate <= checkoutEnd && - x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - CalculationDateTimeGe = x.CalculationDate, - CalculationDateTimeFa = x.CalculationDate.ToFarsi() - }).ToList(); + var salaryAidViewModel = GetCheckoutSalaryAids(employeeId, workshopId, checkoutStart, checkoutEnd); double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion @@ -2635,16 +2651,8 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - CalculationDateTimeGe = x.CalculationDate, - CalculationDateTimeFa = x.CalculationDate.ToFarsi() - }).ToList(); + var salaryAidViewModel = GetCheckoutSalaryAids(employeeId, workshopId, contractStart, contractEnd); + double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion @@ -2724,6 +2732,18 @@ CreateWorkingHoursTemp command, bool holidayWorking) }; } + private List GetCheckoutSalaryAids(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd) + { + var salaryAidViewModel = _context.SalaryAids + .Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() + { + Amount = x.Amount.ToMoney(), + AmountDouble = x.Amount, + SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), + SalaryAidDateTimeGe = x.SalaryAidDateTime, + }).ToList(); + return salaryAidViewModel; + } private void CreateRewardForBirthDay(long employeeId, long workshopId, double amount, int month, int year, DateTime contractStart) {