add loan and salaryAid to checkout
This commit is contained in:
@@ -296,4 +296,16 @@ public class Checkout : EntityBase
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,9 @@ using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
|
||||
using CompanyManagment.App.Contracts.Contract;
|
||||
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
||||
using CompanyManagment.App.Contracts.Leave;
|
||||
using CompanyManagment.App.Contracts.Loan;
|
||||
using CompanyManagment.App.Contracts.RollCall;
|
||||
using CompanyManagment.App.Contracts.SalaryAid;
|
||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||
|
||||
namespace Company.Domain.RollCallAgg;
|
||||
@@ -22,4 +24,10 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
||||
|
||||
List<LateToWorkEarlyExistSpannig> LateToWorkEarlyExit(List<GroupedRollCalls> groupedRollCall,
|
||||
ICollection<CustomizeWorkshopEmployeeSettingsShift> shiftSettings, List<LeaveViewModel> leavList);
|
||||
|
||||
List<LoanInstallmentViewModel> GetCheckoutLoanInstallments(long employeeId, long workshopId, DateTime contractStart,
|
||||
DateTime contractEnd);
|
||||
|
||||
List<SalaryAidViewModel> GetCheckoutSalaryAids(long employeeId, long workshopId, DateTime checkoutStart,
|
||||
DateTime checkoutEnd);
|
||||
}
|
||||
@@ -40,20 +40,5 @@ public class ComputingViewModel
|
||||
public List<RotatingShiftViewModel> RotatingResultList { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// مساعده
|
||||
/// </summary>
|
||||
public double SalaryAidDeduction { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// قسط وام
|
||||
/// </summary>
|
||||
public double InstallmentDeduction { get; set; }
|
||||
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
|
||||
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
|
||||
|
||||
|
||||
//public List<string> holidays;
|
||||
}
|
||||
@@ -5,9 +5,11 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using Company.Domain.CheckoutAgg;
|
||||
using Company.Domain.CheckoutAgg.ValueObjects;
|
||||
using Company.Domain.LeftWorkAgg;
|
||||
using Company.Domain.YearlySalaryAgg;
|
||||
using Company.Domain.empolyerAgg;
|
||||
using Company.Domain.RollCallAgg;
|
||||
using CompanyManagment.App.Contracts.Checkout;
|
||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||
using CompanyManagment.App.Contracts.Leave;
|
||||
@@ -24,11 +26,12 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
private readonly IPersonalContractingPartyApp _contractingPartyApp;
|
||||
private readonly ILeaveApplication _leaveApplication;
|
||||
private readonly IMandatoryHoursApplication _mandatoryHoursApplication;
|
||||
private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository;
|
||||
|
||||
|
||||
public CheckoutApplication(ICheckoutRepository checkoutRepository, IYearlySalaryRepository yearlySalaryRepository,
|
||||
ILeftWorkRepository leftWorkRepository,
|
||||
IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication)
|
||||
IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication, IRollCallMandatoryRepository rollCallMandatoryRepository)
|
||||
{
|
||||
_checkoutRepository = checkoutRepository;
|
||||
_yearlySalaryRepository = yearlySalaryRepository;
|
||||
@@ -37,6 +40,7 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
_contractingPartyApp = contractingPartyApp;
|
||||
_leaveApplication = leaveApplication;
|
||||
_mandatoryHoursApplication = mandatoryHoursApplication;
|
||||
_rollCallMandatoryRepository = rollCallMandatoryRepository;
|
||||
}
|
||||
|
||||
[SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records", MessageId = "count: 241")]
|
||||
@@ -177,13 +181,29 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
{
|
||||
command.Signature = "0";
|
||||
}
|
||||
|
||||
|
||||
var checkoutStart = $"{command.Year}/{command.Month}/01";
|
||||
var checkoutEnd = checkoutStart.FindeEndOfMonth();
|
||||
var salaryAids =
|
||||
_rollCallMandatoryRepository.GetCheckoutSalaryAids(command.EmployeeId, command.WorkshopId,checkoutStart.ToGeorgianDateTime(),checkoutEnd.ToGeorgianDateTime())
|
||||
.Select(x=> new CheckoutSalaryAid(x.Amount,x.SalaryAidDateTimeGe,x.SalaryAidDateTimeFa,x.CalculationDateTimeGe,x.CalculationDateTimeFa)).ToList();
|
||||
|
||||
command.SalaryAidDeduction = salaryAids.Sum(x => x.Amount.MoneyToDouble());
|
||||
|
||||
|
||||
var loanInstallments = _rollCallMandatoryRepository.GetCheckoutLoanInstallments(command.EmployeeId,
|
||||
command.WorkshopId, command.ContractStartGr, command.ContractEndGr)
|
||||
.Select(x=>new CheckoutLoanInstallment(x.Amount,x.Month,x.Year,x.IsActive,x.RemainingAmount,x.LoanAmount)).ToList();
|
||||
|
||||
command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());
|
||||
|
||||
|
||||
var checkout = new Checkout(command.EmployeeFullName, command.FathersName ,command.NationalCode
|
||||
, command.DateOfBirth, command.EmployeeId, command.WorkshopName, command.WorkshopId, command.ContractNo, command.ContractStartGr, command.ContractEndGr, month, year,
|
||||
command.ContractId, command.WorkingHoursId, monthlyWage, bacicYears, consumableItem, housingAllowance
|
||||
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, 0, 0, command.AbsenceDeduction, sumOfWorkingDays,
|
||||
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
|
||||
command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature,marriedAllowance,command.LeaveCheckout,command.CreditLeaves,command.AbsencePeriod,command.AverageHoursPerDay,command.HasRollCall,command.OverTimeWorkValue,command.OverNightWorkValue
|
||||
,command.FridayWorkValue, command.RotatingShiftValue,command.AbsenceValue,command.TotalDayOfLeaveCompute,command.TotalDayOfYearsCompute,command.TotalDayOfBunosesCompute);
|
||||
,command.FridayWorkValue, command.RotatingShiftValue,command.AbsenceValue,command.TotalDayOfLeaveCompute,command.TotalDayOfYearsCompute,command.TotalDayOfBunosesCompute,loanInstallments, salaryAids);
|
||||
_checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
|
||||
//_checkoutRepository.SaveChanges();
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Company.Domain.CheckoutAgg;
|
||||
using System;
|
||||
using _0_Framework.Application;
|
||||
using Company.Domain.CheckoutAgg;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
@@ -52,5 +54,24 @@ class CheckoutMapping : IEntityTypeConfiguration<Checkout>
|
||||
.WithMany(x => x.Checkouts)
|
||||
.HasForeignKey(x => x.WorkshopId);
|
||||
|
||||
builder.OwnsMany(x => x.LoanInstallments, installments =>
|
||||
{
|
||||
installments.Property(x => x.AmountForMonth).HasMaxLength(25);
|
||||
installments.Property(x => x.IsActive).HasConversion(
|
||||
v => v.ToString(),
|
||||
v => (IsActive)Enum.Parse(typeof(IsActive), v)).HasMaxLength(5);
|
||||
installments.Property(x => x.Year).HasMaxLength(4);
|
||||
installments.Property(x => x.Month).HasMaxLength(2);
|
||||
installments.Property(x => x.LoanRemaining).HasMaxLength(25);
|
||||
installments.Property(x => x.LoanAmount).HasMaxLength(30);
|
||||
|
||||
});
|
||||
|
||||
builder.OwnsMany(x => x.SalaryAids, salaryAid =>
|
||||
{
|
||||
salaryAid.Property(x => x.SalaryAidDateTimeFa).HasMaxLength(15);
|
||||
salaryAid.Property(x => x.Amount).HasMaxLength(25);
|
||||
salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15);
|
||||
});
|
||||
}
|
||||
}
|
||||
9508
CompanyManagment.EFCore/Migrations/20250423132557_add salaryAid and loan to checkout.Designer.cs
generated
Normal file
9508
CompanyManagment.EFCore/Migrations/20250423132557_add salaryAid and loan to checkout.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace CompanyManagment.EFCore.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class addsalaryAidandloantocheckout : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "CheckoutLoanInstallment",
|
||||
columns: table => new
|
||||
{
|
||||
Checkoutid = table.Column<long>(type: "bigint", nullable: false),
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
AmountForMonth = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
|
||||
Month = table.Column<string>(type: "nvarchar(2)", maxLength: 2, nullable: true),
|
||||
Year = table.Column<string>(type: "nvarchar(4)", maxLength: 4, nullable: true),
|
||||
LoanRemaining = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
|
||||
IsActive = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: false),
|
||||
LoanAmount = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_CheckoutLoanInstallment", x => new { x.Checkoutid, x.Id });
|
||||
table.ForeignKey(
|
||||
name: "FK_CheckoutLoanInstallment_Checkouts_Checkoutid",
|
||||
column: x => x.Checkoutid,
|
||||
principalTable: "Checkouts",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "CheckoutSalaryAid",
|
||||
columns: table => new
|
||||
{
|
||||
Checkoutid = table.Column<long>(type: "bigint", nullable: false),
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
Amount = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
|
||||
SalaryAidDateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||
SalaryAidDateTimeFa = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
|
||||
CalculationDateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||
CalculationDateTimeFa = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_CheckoutSalaryAid", x => new { x.Checkoutid, x.Id });
|
||||
table.ForeignKey(
|
||||
name: "FK_CheckoutSalaryAid_Checkouts_Checkoutid",
|
||||
column: x => x.Checkoutid,
|
||||
principalTable: "Checkouts",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "CheckoutLoanInstallment");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "CheckoutSalaryAid");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5987,6 +5987,91 @@ namespace CompanyManagment.EFCore.Migrations
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutLoanInstallment", "LoanInstallments", b1 =>
|
||||
{
|
||||
b1.Property<long>("Checkoutid")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b1.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<int>("Id"));
|
||||
|
||||
b1.Property<string>("AmountForMonth")
|
||||
.HasMaxLength(25)
|
||||
.HasColumnType("nvarchar(25)");
|
||||
|
||||
b1.Property<string>("IsActive")
|
||||
.IsRequired()
|
||||
.HasMaxLength(5)
|
||||
.HasColumnType("nvarchar(5)");
|
||||
|
||||
b1.Property<string>("LoanAmount")
|
||||
.HasMaxLength(30)
|
||||
.HasColumnType("nvarchar(30)");
|
||||
|
||||
b1.Property<string>("LoanRemaining")
|
||||
.HasMaxLength(25)
|
||||
.HasColumnType("nvarchar(25)");
|
||||
|
||||
b1.Property<string>("Month")
|
||||
.HasMaxLength(2)
|
||||
.HasColumnType("nvarchar(2)");
|
||||
|
||||
b1.Property<string>("Year")
|
||||
.HasMaxLength(4)
|
||||
.HasColumnType("nvarchar(4)");
|
||||
|
||||
b1.HasKey("Checkoutid", "Id");
|
||||
|
||||
b1.ToTable("CheckoutLoanInstallment");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Checkoutid");
|
||||
});
|
||||
|
||||
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 =>
|
||||
{
|
||||
b1.Property<long>("Checkoutid")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b1.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<int>("Id"));
|
||||
|
||||
b1.Property<string>("Amount")
|
||||
.HasMaxLength(25)
|
||||
.HasColumnType("nvarchar(25)");
|
||||
|
||||
b1.Property<DateTime>("CalculationDateTime")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b1.Property<string>("CalculationDateTimeFa")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
||||
b1.Property<DateTime>("SalaryAidDateTime")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b1.Property<string>("SalaryAidDateTimeFa")
|
||||
.HasMaxLength(15)
|
||||
.HasColumnType("nvarchar(15)");
|
||||
|
||||
b1.HasKey("Checkoutid", "Id");
|
||||
|
||||
b1.ToTable("CheckoutSalaryAid");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Checkoutid");
|
||||
});
|
||||
|
||||
b.Navigation("LoanInstallments");
|
||||
|
||||
b.Navigation("SalaryAids");
|
||||
|
||||
b.Navigation("Workshop");
|
||||
});
|
||||
|
||||
|
||||
@@ -104,8 +104,13 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
||||
.SqlQuery<long>(
|
||||
$"EXEC InsertQuery_CreateChekoute {command.EmployeeFullName},{"true"},{command.Signature},{command.FathersName},{command.NationalCode},{command.DateOfBirth},{command.EmployeeId},{command.WorkshopName},{command.WorkshopId},{command.ContractNo},{command.ContractStart},{command.ContractEnd},{command.Month},{command.Year},{command.ContractId},{command.WorkingHoursId},{command.MonthlySalary},{command.BaseYearsPay},{command.ConsumableItems},{command.HousingAllowance},{command.OvertimePay},{command.NightworkPay},{command.FridayPay},{command.MissionPay},{command.ShiftPay},{command.FamilyAllowance},{command.BonusesPay},{command.YearsPay},{command.LeavePay},{command.InsuranceDeduction},{command.TaxDeducation},{command.InstallmentDeduction},{command.SalaryAidDeduction},{command.AbsenceDeduction},{creationDates},{command.ArchiveCode},{command.PersonnelCode},{command.SumOfWorkingDays},{command.TotalClaims},{command.TotalDeductions},{command.TotalPayment},{0},{command.MarriedAllowance},{command.AbsencePeriod},{command.AverageHoursPerDay},{command.CreditLeaves},{command.LeaveCheckout},{command.HasRollCall},{command.OverTimeWorkValue},{command.OverNightWorkValue},{command.FridayWorkValue},{command.RotatingShiftValue},{command.AbsenceValue}, {command.TotalDayOfLeaveCompute},{command.TotalDayOfYearsCompute},{command.TotalDayOfBunosesCompute}")
|
||||
.AsEnumerable())// این قسمت مهمه!
|
||||
.FirstOrDefault();
|
||||
Console.WriteLine(result);
|
||||
.FirstOrDefault();
|
||||
|
||||
var entity = await _context.CheckoutSet.FirstOrDefaultAsync(x => x.id == result);
|
||||
|
||||
entity.SetSalaryAid(command.SalaryAids,command.SalaryAidDeduction);
|
||||
entity.SetLoanInstallment(command.LoanInstallments,command.InstallmentDeduction);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -557,34 +557,6 @@ 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
|
||||
|
||||
@@ -617,10 +589,6 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
DayliFeeComplete = dayliFeeComplete,
|
||||
MarriedAllowance = MarriedAllowanceStr,
|
||||
RotatingShiftValue = shiftPayValue,
|
||||
InstallmentDeduction = loanDeduction,
|
||||
InstallmentViewModels = loanInstallments,
|
||||
SalaryAidDeduction = salaryAidDeduction,
|
||||
SalaryAidViewModels = salaryAidViewModel
|
||||
};
|
||||
|
||||
#endregion
|
||||
@@ -2111,23 +2079,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
|
||||
#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(),
|
||||
LoanAmount = _context.Loans.FirstOrDefault(l => l.id == x.LoanId).Amount.ToMoney()
|
||||
}).ToList();
|
||||
var loanInstallments = GetCheckoutLoanInstallments(employeeId, workshopId, contractStart, contractEnd);
|
||||
|
||||
double loanDeduction = loanInstallments.Sum(x => x.AmountDouble);
|
||||
|
||||
@@ -2629,6 +2581,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private CustomizeCheckoutMandatoryViewModel CheckoutWithoutCalculationForKebabMahdi(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd)
|
||||
{
|
||||
var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime();
|
||||
@@ -2732,10 +2685,32 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
};
|
||||
}
|
||||
|
||||
private List<SalaryAidViewModel> GetCheckoutSalaryAids(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
|
||||
public List<LoanInstallmentViewModel> GetCheckoutLoanInstallments(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
|
||||
{
|
||||
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(),
|
||||
LoanAmount = _context.Loans.FirstOrDefault(l => l.id == x.LoanId).Amount.ToMoney()
|
||||
}).ToList();
|
||||
return loanInstallments;
|
||||
}
|
||||
|
||||
public List<SalaryAidViewModel> GetCheckoutSalaryAids(long employeeId, long workshopId, DateTime checkoutStart, DateTime checkoutEnd)
|
||||
{
|
||||
var salaryAidViewModel = _context.SalaryAids
|
||||
.Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel()
|
||||
.Where(x => x.SalaryAidDateTime >= checkoutStart && x.SalaryAidDateTime <= checkoutEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel()
|
||||
{
|
||||
Amount = x.Amount.ToMoney(),
|
||||
AmountDouble = x.Amount,
|
||||
|
||||
Reference in New Issue
Block a user