|
|
|
|
@@ -78,7 +78,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
public (bool hasChekout, double FamilyAlloance, double OverTimePay, double RotatingShift, double Nightwork, double Fridaywork, double YraesPay) HasCheckout(long workshopId, long employeId, string year, string month)
|
|
|
|
|
{
|
|
|
|
|
var farisMonthName = Tools.ToFarsiMonthByNumber(month);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var res = _context.CheckoutSet.FirstOrDefault(x =>
|
|
|
|
|
x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName &&
|
|
|
|
|
x.IsActiveString == "true");
|
|
|
|
|
@@ -87,14 +87,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
var checkLeftDate = ($"{year}/{month}/01").ToGeorgianDateTime();
|
|
|
|
|
var hasLeftwork = _context.LeftWorkList.Any(x =>
|
|
|
|
|
x.EmployeeId == employeId && x.WorkshopId == workshopId && x.LeftWorkDate == checkLeftDate);
|
|
|
|
|
if(hasLeftwork)
|
|
|
|
|
if (hasLeftwork)
|
|
|
|
|
return (true, 0, 0, 0, 0, 0, 0);
|
|
|
|
|
|
|
|
|
|
return (false, 0, 0, 0, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return (true, res.FamilyAllowance, res.OvertimePay, res.ShiftPay, res.NightworkPay, res.FridayPay,res.YearsPay);
|
|
|
|
|
|
|
|
|
|
return (true, res.FamilyAllowance, res.OvertimePay, res.ShiftPay, res.NightworkPay, res.FridayPay, res.YearsPay);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public EditCheckout GetDetails(long id)
|
|
|
|
|
@@ -253,7 +253,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
var now = DateTime.Now;
|
|
|
|
|
DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
|
|
|
|
DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true");
|
|
|
|
|
|
|
|
|
|
if (chekoutCreated != null)
|
|
|
|
|
@@ -279,7 +279,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
}
|
|
|
|
|
var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
|
|
|
|
.contractWorkshopEmployee.employee.id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
|
|
|
|
|
.leftwork;
|
|
|
|
|
@@ -537,7 +537,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction);
|
|
|
|
|
entity.SetCheckoutRollCall(command.CheckoutRollCall);
|
|
|
|
|
entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours);
|
|
|
|
|
if(command.HasInsuranceShareTheSameAsList)
|
|
|
|
|
if (command.HasInsuranceShareTheSameAsList)
|
|
|
|
|
entity.SetInsuranceShare();
|
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
@@ -902,108 +902,108 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
foreach (var item in checkouts)
|
|
|
|
|
{
|
|
|
|
|
var ch = new CheckoutViewModel()
|
|
|
|
|
{
|
|
|
|
|
Id = item.id,
|
|
|
|
|
WorkshopId = item.WorkshopId,
|
|
|
|
|
ContractId = item.ContractId,
|
|
|
|
|
EmployeeId = item.EmployeeId,
|
|
|
|
|
EmployeeFullName = item.EmployeeFullName,
|
|
|
|
|
FathersName = item.FathersName,
|
|
|
|
|
NationalCode = item.NationalCode,
|
|
|
|
|
DateOfBirth = item.DateOfBirth,
|
|
|
|
|
WorkshopName = item.WorkshopName,
|
|
|
|
|
Month = item.Month,
|
|
|
|
|
Year = item.Year,
|
|
|
|
|
PersonnelCode = item.PersonnelCode,
|
|
|
|
|
PersonnelCodeInt = Convert.ToInt32(item.PersonnelCode),
|
|
|
|
|
ContractNo = item.ContractNo,
|
|
|
|
|
MonthlySalary = item.MonthlySalary.ToMoney(),
|
|
|
|
|
BaseYearsPay = item.BaseYearsPay.ToMoney(),
|
|
|
|
|
ConsumableItems = item.ConsumableItems.ToMoney(),
|
|
|
|
|
HousingAllowance = item.HousingAllowance.ToMoney(),
|
|
|
|
|
OvertimePay = item.OvertimePay.ToMoney(),
|
|
|
|
|
NightworkPay = item.NightworkPay.ToMoney(),
|
|
|
|
|
FridayPay = item.FridayPay.ToMoney(),
|
|
|
|
|
MissionPay = item.MissionPay.ToMoney(),
|
|
|
|
|
ShiftPay = item.ShiftPay.ToMoney(),
|
|
|
|
|
FamilyAllowance = item.FamilyAllowance.ToMoney(),
|
|
|
|
|
BonusesPay = item.BonusesPay.ToMoney(),
|
|
|
|
|
YearsPay = item.YearsPay.ToMoney(),
|
|
|
|
|
LeavePay = item.LeavePay.ToMoney(),
|
|
|
|
|
InsuranceDeduction = item.InsuranceDeduction.ToMoney(),
|
|
|
|
|
TaxDeducation = item.TaxDeducation.ToMoney(),
|
|
|
|
|
InstallmentDeduction = item.InstallmentDeduction.ToMoney(),
|
|
|
|
|
SalaryAidDeduction = item.SalaryAidDeduction.ToMoney(),
|
|
|
|
|
AbsenceDeduction = item.AbsenceDeduction.ToMoney(),
|
|
|
|
|
TotalClaims = item.TotalClaims,
|
|
|
|
|
TotalDeductions = item.TotalDeductions,
|
|
|
|
|
TotalPayment = item.TotalPayment.ToMoney(),
|
|
|
|
|
RewardPay = item.RewardPay.ToMoneyNullable(),
|
|
|
|
|
ContractStartGr = item.ContractStart,
|
|
|
|
|
ContractEndGr = item.ContractEnd,
|
|
|
|
|
IsLeft = false,
|
|
|
|
|
LeftWorkDate = "",
|
|
|
|
|
LastDayOfWork = "",
|
|
|
|
|
MarriedAllowance = item.MarriedAllowance.ToMoney(),
|
|
|
|
|
HasRollCall = item.HasRollCall,
|
|
|
|
|
SumOfWorkingDays = "-",
|
|
|
|
|
OverTimeWorkValue = item.OverTimeWorkValue,
|
|
|
|
|
OverNightWorkValue = item.OverNightWorkValue,
|
|
|
|
|
FridayWorkValue = item.FridayWorkValue,
|
|
|
|
|
RotatingShiftValue = item.RotatingShiftValue,
|
|
|
|
|
AbsenceValue = item.AbsenceValue,
|
|
|
|
|
MaritalStatus = "",
|
|
|
|
|
TotalDayOfLeaveCompute = "-",
|
|
|
|
|
TotalDayOfYearsCompute = "-",
|
|
|
|
|
TotalDayOfBunosesCompute = "-",
|
|
|
|
|
InstallmentViewModels = item.LoanInstallments.Select(i => new LoanInstallmentViewModel()
|
|
|
|
|
{
|
|
|
|
|
Id = item.id,
|
|
|
|
|
WorkshopId = item.WorkshopId,
|
|
|
|
|
ContractId = item.ContractId,
|
|
|
|
|
EmployeeId = item.EmployeeId,
|
|
|
|
|
EmployeeFullName = item.EmployeeFullName,
|
|
|
|
|
FathersName = item.FathersName,
|
|
|
|
|
NationalCode = item.NationalCode,
|
|
|
|
|
DateOfBirth = item.DateOfBirth,
|
|
|
|
|
WorkshopName = item.WorkshopName,
|
|
|
|
|
Month = item.Month,
|
|
|
|
|
Year = item.Year,
|
|
|
|
|
PersonnelCode = item.PersonnelCode,
|
|
|
|
|
PersonnelCodeInt = Convert.ToInt32(item.PersonnelCode),
|
|
|
|
|
ContractNo = item.ContractNo,
|
|
|
|
|
MonthlySalary = item.MonthlySalary.ToMoney(),
|
|
|
|
|
BaseYearsPay = item.BaseYearsPay.ToMoney(),
|
|
|
|
|
ConsumableItems = item.ConsumableItems.ToMoney(),
|
|
|
|
|
HousingAllowance = item.HousingAllowance.ToMoney(),
|
|
|
|
|
OvertimePay = item.OvertimePay.ToMoney(),
|
|
|
|
|
NightworkPay = item.NightworkPay.ToMoney(),
|
|
|
|
|
FridayPay = item.FridayPay.ToMoney(),
|
|
|
|
|
MissionPay = item.MissionPay.ToMoney(),
|
|
|
|
|
ShiftPay = item.ShiftPay.ToMoney(),
|
|
|
|
|
FamilyAllowance = item.FamilyAllowance.ToMoney(),
|
|
|
|
|
BonusesPay = item.BonusesPay.ToMoney(),
|
|
|
|
|
YearsPay = item.YearsPay.ToMoney(),
|
|
|
|
|
LeavePay = item.LeavePay.ToMoney(),
|
|
|
|
|
InsuranceDeduction = item.InsuranceDeduction.ToMoney(),
|
|
|
|
|
TaxDeducation = item.TaxDeducation.ToMoney(),
|
|
|
|
|
InstallmentDeduction = item.InstallmentDeduction.ToMoney(),
|
|
|
|
|
SalaryAidDeduction = item.SalaryAidDeduction.ToMoney(),
|
|
|
|
|
AbsenceDeduction = item.AbsenceDeduction.ToMoney(),
|
|
|
|
|
TotalClaims = item.TotalClaims,
|
|
|
|
|
TotalDeductions = item.TotalDeductions,
|
|
|
|
|
TotalPayment = item.TotalPayment.ToMoney(),
|
|
|
|
|
RewardPay = item.RewardPay.ToMoneyNullable(),
|
|
|
|
|
ContractStartGr = item.ContractStart,
|
|
|
|
|
ContractEndGr = item.ContractEnd,
|
|
|
|
|
IsLeft = false,
|
|
|
|
|
LeftWorkDate = "",
|
|
|
|
|
LastDayOfWork = "",
|
|
|
|
|
MarriedAllowance = item.MarriedAllowance.ToMoney(),
|
|
|
|
|
HasRollCall = item.HasRollCall,
|
|
|
|
|
SumOfWorkingDays = "-",
|
|
|
|
|
OverTimeWorkValue = item.OverTimeWorkValue,
|
|
|
|
|
OverNightWorkValue = item.OverNightWorkValue,
|
|
|
|
|
FridayWorkValue = item.FridayWorkValue,
|
|
|
|
|
RotatingShiftValue = item.RotatingShiftValue,
|
|
|
|
|
AbsenceValue = item.AbsenceValue,
|
|
|
|
|
MaritalStatus = "",
|
|
|
|
|
TotalDayOfLeaveCompute = "-",
|
|
|
|
|
TotalDayOfYearsCompute = "-",
|
|
|
|
|
TotalDayOfBunosesCompute = "-",
|
|
|
|
|
InstallmentViewModels = item.LoanInstallments.Select(i => new LoanInstallmentViewModel()
|
|
|
|
|
Amount = i.AmountForMonth,
|
|
|
|
|
AmountDouble = i.AmountForMonth.MoneyToDouble(),
|
|
|
|
|
Year = i.Year,
|
|
|
|
|
Month = i.Month,
|
|
|
|
|
IsActive = i.IsActive,
|
|
|
|
|
RemainingAmount = i.LoanRemaining,
|
|
|
|
|
LoanAmount = i.LoanAmount
|
|
|
|
|
}).ToList(),
|
|
|
|
|
SalaryAidViewModels = item.SalaryAids.Select(s => new SalaryAidViewModel()
|
|
|
|
|
{
|
|
|
|
|
Amount = s.Amount,
|
|
|
|
|
AmountDouble = s.Amount.MoneyToDouble(),
|
|
|
|
|
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
|
|
|
|
|
SalaryAidDateTimeGe = s.SalaryAidDateTime
|
|
|
|
|
}).ToList(),
|
|
|
|
|
CheckoutRollCall = item.CheckoutRollCall != null ? new CheckoutRollCallViewModel()
|
|
|
|
|
{
|
|
|
|
|
TotalPresentTimeSpan = item.CheckoutRollCall.TotalPresentTimeSpan,
|
|
|
|
|
TotalBreakTimeSpan = item.CheckoutRollCall.TotalBreakTimeSpan,
|
|
|
|
|
TotalWorkingTimeSpan = item.CheckoutRollCall.TotalWorkingTimeSpan,
|
|
|
|
|
TotalPaidLeaveTmeSpan = item.CheckoutRollCall.TotalPaidLeaveTmeSpan,
|
|
|
|
|
TotalMandatoryTimeSpan = item.CheckoutRollCall.TotalMandatoryTimeSpan,
|
|
|
|
|
TotalSickLeaveTimeSpan = item.CheckoutRollCall.TotalSickLeaveTimeSpan,
|
|
|
|
|
RollCallDaysCollection = item.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel()
|
|
|
|
|
{
|
|
|
|
|
Amount = i.AmountForMonth,
|
|
|
|
|
AmountDouble = i.AmountForMonth.MoneyToDouble(),
|
|
|
|
|
Year = i.Year,
|
|
|
|
|
Month = i.Month,
|
|
|
|
|
IsActive = i.IsActive,
|
|
|
|
|
RemainingAmount = i.LoanRemaining,
|
|
|
|
|
LoanAmount = i.LoanAmount
|
|
|
|
|
WorkingTimeSpan = d.WorkingTimeSpan,
|
|
|
|
|
BreakTimeSpan = d.BreakTimeSpan,
|
|
|
|
|
IsSliced = d.IsSliced,
|
|
|
|
|
IsAbsent = d.IsAbsent,
|
|
|
|
|
IsFriday = d.IsFriday,
|
|
|
|
|
IsHoliday = d.IsHoliday,
|
|
|
|
|
LeaveType = d.LeaveType,
|
|
|
|
|
CheckoutId = d.CheckoutId,
|
|
|
|
|
Date = d.Date,
|
|
|
|
|
FirstEndDate = d.FirstEndDate,
|
|
|
|
|
FirstStartDate = d.FirstStartDate,
|
|
|
|
|
Id = d.Id,
|
|
|
|
|
SecondEndDate = d.SecondEndDate,
|
|
|
|
|
SecondStartDate = d.SecondStartDate,
|
|
|
|
|
}).ToList(),
|
|
|
|
|
SalaryAidViewModels = item.SalaryAids.Select(s => new SalaryAidViewModel()
|
|
|
|
|
{
|
|
|
|
|
Amount = s.Amount,
|
|
|
|
|
AmountDouble = s.Amount.MoneyToDouble(),
|
|
|
|
|
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
|
|
|
|
|
SalaryAidDateTimeGe = s.SalaryAidDateTime
|
|
|
|
|
}).ToList(),
|
|
|
|
|
CheckoutRollCall = item.CheckoutRollCall != null ? new CheckoutRollCallViewModel()
|
|
|
|
|
{
|
|
|
|
|
TotalPresentTimeSpan = item.CheckoutRollCall.TotalPresentTimeSpan,
|
|
|
|
|
TotalBreakTimeSpan = item.CheckoutRollCall.TotalBreakTimeSpan,
|
|
|
|
|
TotalWorkingTimeSpan = item.CheckoutRollCall.TotalWorkingTimeSpan,
|
|
|
|
|
TotalPaidLeaveTmeSpan = item.CheckoutRollCall.TotalPaidLeaveTmeSpan,
|
|
|
|
|
TotalMandatoryTimeSpan = item.CheckoutRollCall.TotalMandatoryTimeSpan,
|
|
|
|
|
TotalSickLeaveTimeSpan = item.CheckoutRollCall.TotalSickLeaveTimeSpan,
|
|
|
|
|
RollCallDaysCollection = item.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel()
|
|
|
|
|
{
|
|
|
|
|
WorkingTimeSpan = d.WorkingTimeSpan,
|
|
|
|
|
BreakTimeSpan = d.BreakTimeSpan,
|
|
|
|
|
IsSliced = d.IsSliced,
|
|
|
|
|
IsAbsent = d.IsAbsent,
|
|
|
|
|
IsFriday = d.IsFriday,
|
|
|
|
|
IsHoliday = d.IsHoliday,
|
|
|
|
|
LeaveType = d.LeaveType,
|
|
|
|
|
CheckoutId = d.CheckoutId,
|
|
|
|
|
Date = d.Date,
|
|
|
|
|
FirstEndDate = d.FirstEndDate,
|
|
|
|
|
FirstStartDate = d.FirstStartDate,
|
|
|
|
|
Id = d.Id,
|
|
|
|
|
SecondEndDate = d.SecondEndDate,
|
|
|
|
|
SecondStartDate = d.SecondStartDate,
|
|
|
|
|
}).ToList(),
|
|
|
|
|
|
|
|
|
|
} : null,
|
|
|
|
|
HasAmountConflict =item.HasAmountConflict,
|
|
|
|
|
EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours,
|
|
|
|
|
EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours),item.EmployeeMandatoryHours.Minutes,"-")
|
|
|
|
|
};
|
|
|
|
|
} : null,
|
|
|
|
|
HasAmountConflict = item.HasAmountConflict,
|
|
|
|
|
EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours,
|
|
|
|
|
EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours), item.EmployeeMandatoryHours.Minutes, "-")
|
|
|
|
|
};
|
|
|
|
|
var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId);
|
|
|
|
|
ch.WorkshopName = workshopName.WorkshopName;
|
|
|
|
|
ch.TotalPaymentHide = workshopName.TotalPaymentHide;
|
|
|
|
|
@@ -2014,7 +2014,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
|
|
var checkouts =
|
|
|
|
|
_context.CheckoutSet.Include(w=>w.CheckoutWarningMessageList).Where(x => workshopAcounts.Contains(x.WorkshopId))
|
|
|
|
|
_context.CheckoutSet.Include(w => w.CheckoutWarningMessageList).Where(x => workshopAcounts.Contains(x.WorkshopId))
|
|
|
|
|
.Join(_context.Workshops.AsSplitQuery(),
|
|
|
|
|
ch => ch.WorkshopId,
|
|
|
|
|
workshop => workshop.id,
|
|
|
|
|
@@ -2037,7 +2037,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
{
|
|
|
|
|
res.ch,
|
|
|
|
|
res.workshop,
|
|
|
|
|
option = _context.EmployeeComputeOptionsSet.FirstOrDefault(x=>x.WorkshopId == res.ch.WorkshopId &&x.EmployeeId == res.ch.EmployeeId),
|
|
|
|
|
option = _context.EmployeeComputeOptionsSet.FirstOrDefault(x => x.WorkshopId == res.ch.WorkshopId && x.EmployeeId == res.ch.EmployeeId),
|
|
|
|
|
res.workshopEmployer,
|
|
|
|
|
contractingParty = _context.PersonalContractingParties
|
|
|
|
|
.Include(p => p.Employers)
|
|
|
|
|
@@ -2070,7 +2070,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
hasEmployeeOrWorkshpSearch = true;
|
|
|
|
|
checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//if (searchModel.IsActiveString == null)
|
|
|
|
|
@@ -2250,50 +2250,50 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!hasSearch && !hasEmployeeOrWorkshpSearch)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return checkouts.Select(x => new CheckoutViewModel()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Id = x.ch.id,
|
|
|
|
|
EmployeeFullName = x.ch.EmployeeFullName,
|
|
|
|
|
ContractStart = x.ch.ContractStart.ToFarsi(),
|
|
|
|
|
ContractEnd = x.ch.ContractEnd.ToFarsi(),
|
|
|
|
|
ContractStartGr = x.ch.ContractStart,
|
|
|
|
|
ContractEndGr = x.ch.ContractEnd,
|
|
|
|
|
PersonnelCode = x.ch.PersonnelCode,
|
|
|
|
|
PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode),
|
|
|
|
|
ArchiveCode = x.workshop.ArchiveCode,
|
|
|
|
|
SumOfWorkingDays = x.ch.SumOfWorkingDays,
|
|
|
|
|
WorkshopName = x.workshop.WorkshopName,
|
|
|
|
|
Month = x.ch.Month,
|
|
|
|
|
Year = x.ch.Year,
|
|
|
|
|
ContractNo = x.ch.ContractNo,
|
|
|
|
|
ContractId = x.ch.ContractId,
|
|
|
|
|
WorkshopId = x.ch.WorkshopId,
|
|
|
|
|
EmployeeId = x.ch.EmployeeId,
|
|
|
|
|
EmployerId = x.workshopEmployer.EmployerId,
|
|
|
|
|
IsActiveString = x.ch.IsActiveString,
|
|
|
|
|
Signature = x.ch.Signature,
|
|
|
|
|
CreationDate = x.ch.CreationDate,
|
|
|
|
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
|
|
|
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
|
|
|
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
|
|
|
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
|
|
|
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
|
|
|
|
{
|
|
|
|
|
WarningMessage = wm.WarningMessage,
|
|
|
|
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
|
|
|
|
|
|
|
|
|
Id = x.ch.id,
|
|
|
|
|
EmployeeFullName = x.ch.EmployeeFullName,
|
|
|
|
|
ContractStart = x.ch.ContractStart.ToFarsi(),
|
|
|
|
|
ContractEnd = x.ch.ContractEnd.ToFarsi(),
|
|
|
|
|
ContractStartGr = x.ch.ContractStart,
|
|
|
|
|
ContractEndGr = x.ch.ContractEnd,
|
|
|
|
|
PersonnelCode = x.ch.PersonnelCode,
|
|
|
|
|
PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode),
|
|
|
|
|
ArchiveCode = x.workshop.ArchiveCode,
|
|
|
|
|
SumOfWorkingDays = x.ch.SumOfWorkingDays,
|
|
|
|
|
WorkshopName = x.workshop.WorkshopName,
|
|
|
|
|
Month = x.ch.Month,
|
|
|
|
|
Year = x.ch.Year,
|
|
|
|
|
ContractNo = x.ch.ContractNo,
|
|
|
|
|
ContractId = x.ch.ContractId,
|
|
|
|
|
WorkshopId = x.ch.WorkshopId,
|
|
|
|
|
EmployeeId = x.ch.EmployeeId,
|
|
|
|
|
EmployerId = x.workshopEmployer.EmployerId,
|
|
|
|
|
IsActiveString = x.ch.IsActiveString,
|
|
|
|
|
Signature = x.ch.Signature,
|
|
|
|
|
CreationDate = x.ch.CreationDate,
|
|
|
|
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
|
|
|
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
|
|
|
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
|
|
|
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
|
|
|
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm=> new CheckoutWarningMessageModel
|
|
|
|
|
{
|
|
|
|
|
WarningMessage = wm.WarningMessage,
|
|
|
|
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
|
|
|
|
|
|
|
|
|
}).ToList()
|
|
|
|
|
}).ToList()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}).OrderByDescending(x=>x.Id).Take(3000).ToList().DistinctBy(x => x.Id)
|
|
|
|
|
}).OrderByDescending(x => x.Id).Take(3000).ToList().DistinctBy(x => x.Id)
|
|
|
|
|
.OrderByDescending(x => x.Id).ThenByDescending(x => x.Year)
|
|
|
|
|
.ThenBy(x => x.PersonnelCodeInt)
|
|
|
|
|
.Take(50).ToList();
|
|
|
|
|
@@ -2441,7 +2441,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
CreationDate = x.ch.CreationDate,
|
|
|
|
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
|
|
|
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
|
|
|
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
|
|
|
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
|
|
|
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
|
|
|
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
|
|
|
|
{
|
|
|
|
|
@@ -2454,8 +2454,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
.Select(x => x.First()).ToList()
|
|
|
|
|
.OrderByDescending(x => x.Id)
|
|
|
|
|
.ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@@ -2769,43 +2769,43 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
.Select(x => x.WorkshopId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var watch = new Stopwatch();
|
|
|
|
|
watch.Start();
|
|
|
|
|
var checkouts =
|
|
|
|
|
(
|
|
|
|
|
from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id))
|
|
|
|
|
join x in _context.CheckoutSet
|
|
|
|
|
on workshop.id equals x.WorkshopId
|
|
|
|
|
select new
|
|
|
|
|
{
|
|
|
|
|
Id = x.id,
|
|
|
|
|
EmployeeFullName = x.EmployeeFullName,
|
|
|
|
|
EmployeeId = x.EmployeeId,
|
|
|
|
|
ContractStart = x.ContractStart,
|
|
|
|
|
ContractEnd = x.ContractEnd,
|
|
|
|
|
PersonnelCode = x.PersonnelCode,
|
|
|
|
|
SumOfWorkingDays = x.SumOfWorkingDays,
|
|
|
|
|
Month = x.Month,
|
|
|
|
|
Year = x.Year,
|
|
|
|
|
ContractNo = x.ContractNo,
|
|
|
|
|
IsActiveString = x.IsActiveString,
|
|
|
|
|
Signature = x.Signature,
|
|
|
|
|
IsUpdateNeeded = x.IsUpdateNeeded,
|
|
|
|
|
WorkshopId = x.WorkshopId,
|
|
|
|
|
ArchiveCode = workshop.ArchiveCode,
|
|
|
|
|
WorkshopName = workshop.WorkshopFullName,
|
|
|
|
|
WorkshopSignCheckout = workshop.SignCheckout,
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
).OrderByDescending(x => x.Id)
|
|
|
|
|
.ThenByDescending(x => x.Year)
|
|
|
|
|
.ThenByDescending(x=>x.ContractStart)
|
|
|
|
|
.ThenBy(x => x.PersonnelCode).AsNoTracking();
|
|
|
|
|
var watch = new Stopwatch();
|
|
|
|
|
watch.Start();
|
|
|
|
|
var checkouts =
|
|
|
|
|
(
|
|
|
|
|
from workshop in _context.Workshops.Where(x => workshopAccounts.Contains(x.id))
|
|
|
|
|
join x in _context.CheckoutSet
|
|
|
|
|
on workshop.id equals x.WorkshopId
|
|
|
|
|
select new
|
|
|
|
|
{
|
|
|
|
|
Id = x.id,
|
|
|
|
|
EmployeeFullName = x.EmployeeFullName,
|
|
|
|
|
EmployeeId = x.EmployeeId,
|
|
|
|
|
ContractStart = x.ContractStart,
|
|
|
|
|
ContractEnd = x.ContractEnd,
|
|
|
|
|
PersonnelCode = x.PersonnelCode,
|
|
|
|
|
SumOfWorkingDays = x.SumOfWorkingDays,
|
|
|
|
|
Month = x.Month,
|
|
|
|
|
Year = x.Year,
|
|
|
|
|
ContractNo = x.ContractNo,
|
|
|
|
|
IsActiveString = x.IsActiveString,
|
|
|
|
|
Signature = x.Signature,
|
|
|
|
|
IsUpdateNeeded = x.IsUpdateNeeded,
|
|
|
|
|
WorkshopId = x.WorkshopId,
|
|
|
|
|
ArchiveCode = workshop.ArchiveCode,
|
|
|
|
|
WorkshopName = workshop.WorkshopFullName,
|
|
|
|
|
WorkshopSignCheckout = workshop.SignCheckout,
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
).OrderByDescending(x => x.Id)
|
|
|
|
|
.ThenByDescending(x => x.Year)
|
|
|
|
|
.ThenByDescending(x => x.ContractStart)
|
|
|
|
|
.ThenBy(x => x.PersonnelCode).AsNoTracking();
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("getList======================= : " + watch.Elapsed);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region SercheModel
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(searchModel.ContractNo))
|
|
|
|
|
@@ -2839,7 +2839,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
(string.IsNullOrWhiteSpace(searchModel.ContractStart) ||
|
|
|
|
|
string.IsNullOrWhiteSpace(searchModel.ContractEnd)))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var startYear = searchModel.Year + "/01/01";
|
|
|
|
|
var startyearGr = startYear.ToGeorgianDateTime();
|
|
|
|
|
var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth();
|
|
|
|
|
@@ -2855,7 +2855,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
string.IsNullOrWhiteSpace(searchModel.ContractStart) &&
|
|
|
|
|
string.IsNullOrWhiteSpace(searchModel.ContractEnd))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//سرچ سال و ماه
|
|
|
|
|
string y1 = $"{searchModel.Year}/{searchModel.Month}/01";
|
|
|
|
|
var startDate = y1.ToGeorgianDateTime();
|
|
|
|
|
@@ -2975,7 +2975,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
!string.IsNullOrWhiteSpace(searchModel.ContractEnd) &&
|
|
|
|
|
string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//سرچ تاریخ
|
|
|
|
|
var start = searchModel.ContractStart.ToGeorgianDateTime();
|
|
|
|
|
var endd = searchModel.ContractEnd.ToGeorgianDateTime();
|
|
|
|
|
@@ -2992,19 +2992,19 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
|
|
|
|
|
watch.Reset();
|
|
|
|
|
watch.Start();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var checkoutQueryFilter = await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
|
|
|
|
|
Console.WriteLine("pagination===================== : " + watch.Elapsed);
|
|
|
|
|
|
|
|
|
|
var employers =await
|
|
|
|
|
var employers = await
|
|
|
|
|
_context.WorkshopEmployers.Where(x => checkoutQueryFilter
|
|
|
|
|
.Select(c => c.WorkshopId).Contains(x.WorkshopId))
|
|
|
|
|
.Select(x=> new {x.Employer, x.WorkshopId}).ToListAsync();
|
|
|
|
|
.Select(x => new { x.Employer, x.WorkshopId }).ToListAsync();
|
|
|
|
|
var contractingPartiesIds = employers.Select(x => x.Employer.ContractingPartyId).ToList();
|
|
|
|
|
var warningMessages = await _context.CheckoutWarningMessages.Where(x => checkoutQueryFilter
|
|
|
|
|
.Select(c => c.Id).Contains(x.CheckoutId)).ToListAsync();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var contractnigParties = await _context.PersonalContractingParties
|
|
|
|
|
.Where(x => contractingPartiesIds.Contains(x.id)).ToListAsync();
|
|
|
|
|
|
|
|
|
|
@@ -3078,40 +3078,58 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
.Where(x => x.WorkshopId == getCheckouts.First().WorkshopId).AsNoTracking()
|
|
|
|
|
.Select(x => new CheckoutEmployersList
|
|
|
|
|
{
|
|
|
|
|
IsLegal = x.Employer.IsLegal == "true",
|
|
|
|
|
IsLegal = x.Employer.IsLegal,
|
|
|
|
|
EmployerFullName = x.Employer.FullName
|
|
|
|
|
}).ToListAsync();
|
|
|
|
|
|
|
|
|
|
var employees = (from x in _context.Employees.Where(x => getCheckouts.Select(ch => ch.EmployeeId).Contains(x.id))
|
|
|
|
|
select new
|
|
|
|
|
{
|
|
|
|
|
EmployeeId = x.id,
|
|
|
|
|
MaritalStatus = x.MaritalStatus
|
|
|
|
|
}
|
|
|
|
|
select new
|
|
|
|
|
{
|
|
|
|
|
EmployeeId = x.id,
|
|
|
|
|
MaritalStatus = x.MaritalStatus
|
|
|
|
|
}
|
|
|
|
|
).AsNoTracking();
|
|
|
|
|
var workshop = await _context.Workshops.AsNoTracking().FirstAsync(x => x.id == getCheckouts.First().WorkshopId);
|
|
|
|
|
var showSumOfPayments = workshop.TotalPaymentHide;
|
|
|
|
|
bool isLegal = employers.Any(x => x.IsLegal == "حقوقی");
|
|
|
|
|
|
|
|
|
|
var leftWorks = await _context.LeftWorkList.AsNoTracking()
|
|
|
|
|
.Where(x => x.WorkshopId == workshop.id).ToListAsync();
|
|
|
|
|
|
|
|
|
|
bool isLegal = employers.Any(x => x.IsLegal);
|
|
|
|
|
|
|
|
|
|
var result = getCheckouts.Select(x =>
|
|
|
|
|
{
|
|
|
|
|
var leftCheck = leftWorks
|
|
|
|
|
.FirstOrDefault(l => l.EmployeeId == x.EmployeeId && x.ContractStart >= l.StartWorkDate && x.ContractStart <= l.LeftWorkDate && l.HasLeft);
|
|
|
|
|
bool hasLeft = false;
|
|
|
|
|
var leftWorkDate = "";
|
|
|
|
|
var lastDayOfWork = "";
|
|
|
|
|
if (leftCheck != null)
|
|
|
|
|
{
|
|
|
|
|
var contractLeftWorkDate = x.ContractEnd.AddDays(1);
|
|
|
|
|
if (leftCheck.HasLeft && leftCheck.LeftWorkDate == contractLeftWorkDate)
|
|
|
|
|
{
|
|
|
|
|
hasLeft = true;
|
|
|
|
|
leftWorkDate = leftCheck.LeftWorkDate.ToFarsi();
|
|
|
|
|
lastDayOfWork = x.ContractEnd.ToFarsi();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
var overTimeWorkValue = x.OvertimePay > 0 ? x.OverTimeWorkValue : "-";
|
|
|
|
|
var overNightWorkValue = x.OvertimePay > 0 ? x.OverNightWorkValue : "-";
|
|
|
|
|
var overNightWorkValue = x.NightworkPay > 0 ? x.OverNightWorkValue : "-";
|
|
|
|
|
var fridayWorkValue = x.FridayPay > 0 ? x.FridayWorkValue : "-";
|
|
|
|
|
var maritalStatus = employees.First(e => e.EmployeeId == x.EmployeeId).MaritalStatus;
|
|
|
|
|
var rewardPay = x.RewardPay == null ? "-" : x.RewardPay.ToMoneyNullable();
|
|
|
|
|
var rewardPay = x.RewardPay == null ? "-" : x.RewardPay.ToMoneyCheckZeroNullable();
|
|
|
|
|
var rotatingShiftValue = x.ShiftPay > 0 ? x.RotatingShiftValue : "-";
|
|
|
|
|
var totalDeduction = "-";
|
|
|
|
|
var totalPayment = "-";
|
|
|
|
|
var totalClaims = "-";
|
|
|
|
|
if (!workshop.TotalPaymentHide)
|
|
|
|
|
if (showSumOfPayments)
|
|
|
|
|
{
|
|
|
|
|
totalDeduction = x.TotalDeductions;
|
|
|
|
|
totalPayment = x.TotalPayment.ToMoneyCheckZero();
|
|
|
|
|
totalClaims = x.TotalClaims;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new CheckoutPrintDto()
|
|
|
|
|
{
|
|
|
|
|
Id = x.id,
|
|
|
|
|
@@ -3125,12 +3143,15 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
FathersName = x.FathersName,
|
|
|
|
|
NationalCode = x.NationalCode,
|
|
|
|
|
DateOfBirth = x.DateOfBirth,
|
|
|
|
|
WorkshopName = x.WorkshopName,
|
|
|
|
|
WorkshopName = workshop.WorkshopName,
|
|
|
|
|
ContractNo = x.ContractNo,
|
|
|
|
|
Month = x.Month,
|
|
|
|
|
Year = x.Year,
|
|
|
|
|
EmployersLists = employers,
|
|
|
|
|
EmployerIslegal = isLegal,
|
|
|
|
|
HasLeft = hasLeft,
|
|
|
|
|
LastDayOfWork = lastDayOfWork,
|
|
|
|
|
LeftWorkDate = leftWorkDate,
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//جدول مطالبات و کسورات
|
|
|
|
|
@@ -3192,6 +3213,20 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|
|
|
|
TotalDeductions = totalDeduction,
|
|
|
|
|
TotalClaims = totalClaims,
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//لیست ورود و خروج پرسنل
|
|
|
|
|
//اطلاعات ساعات کار و موظقی
|
|
|
|
|
#region RollCallData
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//اقساط - مساعده
|
|
|
|
|
#region SalaryAidAndInstallmentData
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|