checkout group and one print

This commit is contained in:
gozareshgir
2026-01-20 14:16:00 +03:30
parent 5cd30e5910
commit 3317bde6d6
5 changed files with 291 additions and 203 deletions

View File

@@ -457,6 +457,18 @@ public static class Tools
return "-";
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
}
/// <summary>
/// اگر مبلغ صفر یا نال باشد خط تیره برمیگرداند
/// </summary>
/// <param name="myMoney"></param>
/// <returns></returns>
public static string ToMoneyCheckZeroNullable(this double? myMoney)
{
if (myMoney == 0 || myMoney == null)
return "-";
return myMoney?.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
}
public static string ToMoneyNullable(this double? myMoney)
{

View File

@@ -63,6 +63,22 @@ public class CheckoutPrintDto
/// آیا کارقرما حقوقی است
/// </summary>
public bool EmployerIslegal { get; set; }
/// <summary>
/// آیا ترک کار کرده
/// </summary>
public bool HasLeft { get; set; }
/// <summary>
/// آخرین روز کاری
/// </summary>
public string LastDayOfWork { get; set; }
/// <summary>
/// روز ترک کار
/// </summary>
public string LeftWorkDate { get; set; }
#endregion
//جدول مطالبات و کسورات
@@ -109,8 +125,8 @@ public class CheckoutPrintDto
#endregion
//اقساط
#region LoneAndInstallmentData
//اقساط - مساعده
#region SalaryAidAndInstallmentData
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
@@ -213,7 +229,7 @@ public class PaymentAndDeductionList
/// </summary>
public class CheckoutEmployersList
{
public bool IsLegal { get; set; }
public string IsLegal { get; set; }
public string EmployerFullName { get; set; }
}

View File

@@ -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
};

View File

@@ -3,6 +3,7 @@ using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Checkout.Dto;
using CompanyManagment.App.Contracts.InstitutionPlan;
using Microsoft.AspNetCore.Mvc;
using NuGet.Packaging.Signing;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Admin.Controllers;
@@ -39,5 +40,29 @@ public class CheckoutController : AdminBaseController
return result;
}
/// <summary>
/// پرینت گروهی فیش حقوقی
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpGet("GroupPrint")]
public async Task<List<CheckoutPrintDto>> Print(List<long> ids)
{
var result =await _checkoutApplication.CheckoutPrint(ids);
return result;
}
/// <summary>
/// پرینت تکی فیش حقوقی
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("PrintOne")]
public async Task<List<CheckoutPrintDto>> Print(long id)
{
var result = await _checkoutApplication.CheckoutPrint([id]);
return result;
}
}

View File

@@ -26,7 +26,7 @@ public class CheckoutPrintAllModel : PageModel
var ids = ExtractNumbers(idlist);
var test = _checkoutApplication.CheckoutPrint(ids).GetAwaiter().GetResult();
var resultList = new List<CheckoutGroupPrintViewModel>();
var res = _checkoutApplication.PrintAll(ids);