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 "-";
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir")); 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) public static string ToMoneyNullable(this double? myMoney)
{ {

View File

@@ -63,6 +63,22 @@ public class CheckoutPrintDto
/// آیا کارقرما حقوقی است /// آیا کارقرما حقوقی است
/// </summary> /// </summary>
public bool EmployerIslegal { get; set; } 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 #endregion
//جدول مطالبات و کسورات //جدول مطالبات و کسورات
@@ -109,8 +125,8 @@ public class CheckoutPrintDto
#endregion #endregion
//اقساط //اقساط - مساعده
#region LoneAndInstallmentData #region SalaryAidAndInstallmentData
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; } public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; } public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
@@ -213,7 +229,7 @@ public class PaymentAndDeductionList
/// </summary> /// </summary>
public class CheckoutEmployersList public class CheckoutEmployersList
{ {
public bool IsLegal { get; set; } public string IsLegal { get; set; }
public string EmployerFullName { 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) 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 farisMonthName = Tools.ToFarsiMonthByNumber(month);
var res = _context.CheckoutSet.FirstOrDefault(x => var res = _context.CheckoutSet.FirstOrDefault(x =>
x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName && x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName &&
x.IsActiveString == "true"); x.IsActiveString == "true");
@@ -87,14 +87,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
var checkLeftDate = ($"{year}/{month}/01").ToGeorgianDateTime(); var checkLeftDate = ($"{year}/{month}/01").ToGeorgianDateTime();
var hasLeftwork = _context.LeftWorkList.Any(x => var hasLeftwork = _context.LeftWorkList.Any(x =>
x.EmployeeId == employeId && x.WorkshopId == workshopId && x.LeftWorkDate == checkLeftDate); x.EmployeeId == employeId && x.WorkshopId == workshopId && x.LeftWorkDate == checkLeftDate);
if(hasLeftwork) if (hasLeftwork)
return (true, 0, 0, 0, 0, 0, 0); return (true, 0, 0, 0, 0, 0, 0);
return (false, 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) public EditCheckout GetDetails(long id)
@@ -253,7 +253,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
var now = DateTime.Now; var now = DateTime.Now;
DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime(); DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime(); DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true");
if (chekoutCreated != null) if (chekoutCreated != null)
@@ -279,7 +279,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
} }
var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
.contractWorkshopEmployee.employee.id; .contractWorkshopEmployee.employee.id;
var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork
.leftwork; .leftwork;
@@ -537,7 +537,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction); entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction);
entity.SetCheckoutRollCall(command.CheckoutRollCall); entity.SetCheckoutRollCall(command.CheckoutRollCall);
entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours); entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours);
if(command.HasInsuranceShareTheSameAsList) if (command.HasInsuranceShareTheSameAsList)
entity.SetInsuranceShare(); entity.SetInsuranceShare();
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
@@ -902,108 +902,108 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
foreach (var item in checkouts) foreach (var item in checkouts)
{ {
var ch = new CheckoutViewModel() 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, Amount = i.AmountForMonth,
WorkshopId = item.WorkshopId, AmountDouble = i.AmountForMonth.MoneyToDouble(),
ContractId = item.ContractId, Year = i.Year,
EmployeeId = item.EmployeeId, Month = i.Month,
EmployeeFullName = item.EmployeeFullName, IsActive = i.IsActive,
FathersName = item.FathersName, RemainingAmount = i.LoanRemaining,
NationalCode = item.NationalCode, LoanAmount = i.LoanAmount
DateOfBirth = item.DateOfBirth, }).ToList(),
WorkshopName = item.WorkshopName, SalaryAidViewModels = item.SalaryAids.Select(s => new SalaryAidViewModel()
Month = item.Month, {
Year = item.Year, Amount = s.Amount,
PersonnelCode = item.PersonnelCode, AmountDouble = s.Amount.MoneyToDouble(),
PersonnelCodeInt = Convert.ToInt32(item.PersonnelCode), SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
ContractNo = item.ContractNo, SalaryAidDateTimeGe = s.SalaryAidDateTime
MonthlySalary = item.MonthlySalary.ToMoney(), }).ToList(),
BaseYearsPay = item.BaseYearsPay.ToMoney(), CheckoutRollCall = item.CheckoutRollCall != null ? new CheckoutRollCallViewModel()
ConsumableItems = item.ConsumableItems.ToMoney(), {
HousingAllowance = item.HousingAllowance.ToMoney(), TotalPresentTimeSpan = item.CheckoutRollCall.TotalPresentTimeSpan,
OvertimePay = item.OvertimePay.ToMoney(), TotalBreakTimeSpan = item.CheckoutRollCall.TotalBreakTimeSpan,
NightworkPay = item.NightworkPay.ToMoney(), TotalWorkingTimeSpan = item.CheckoutRollCall.TotalWorkingTimeSpan,
FridayPay = item.FridayPay.ToMoney(), TotalPaidLeaveTmeSpan = item.CheckoutRollCall.TotalPaidLeaveTmeSpan,
MissionPay = item.MissionPay.ToMoney(), TotalMandatoryTimeSpan = item.CheckoutRollCall.TotalMandatoryTimeSpan,
ShiftPay = item.ShiftPay.ToMoney(), TotalSickLeaveTimeSpan = item.CheckoutRollCall.TotalSickLeaveTimeSpan,
FamilyAllowance = item.FamilyAllowance.ToMoney(), RollCallDaysCollection = item.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel()
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, WorkingTimeSpan = d.WorkingTimeSpan,
AmountDouble = i.AmountForMonth.MoneyToDouble(), BreakTimeSpan = d.BreakTimeSpan,
Year = i.Year, IsSliced = d.IsSliced,
Month = i.Month, IsAbsent = d.IsAbsent,
IsActive = i.IsActive, IsFriday = d.IsFriday,
RemainingAmount = i.LoanRemaining, IsHoliday = d.IsHoliday,
LoanAmount = i.LoanAmount 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(), }).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, } : null,
HasAmountConflict =item.HasAmountConflict, HasAmountConflict = item.HasAmountConflict,
EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours, EmployeeMandatoryHoursTimeSpan = item.EmployeeMandatoryHours,
EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours),item.EmployeeMandatoryHours.Minutes,"-") EmployeeMandatoryHoursStr = Tools.ToFarsiHoursAndMinutes(Convert.ToInt32(item.EmployeeMandatoryHours.TotalHours), item.EmployeeMandatoryHours.Minutes, "-")
}; };
var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId);
ch.WorkshopName = workshopName.WorkshopName; ch.WorkshopName = workshopName.WorkshopName;
ch.TotalPaymentHide = workshopName.TotalPaymentHide; ch.TotalPaymentHide = workshopName.TotalPaymentHide;
@@ -2014,7 +2014,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
// ); // );
var checkouts = 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(), .Join(_context.Workshops.AsSplitQuery(),
ch => ch.WorkshopId, ch => ch.WorkshopId,
workshop => workshop.id, workshop => workshop.id,
@@ -2037,7 +2037,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
{ {
res.ch, res.ch,
res.workshop, 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, res.workshopEmployer,
contractingParty = _context.PersonalContractingParties contractingParty = _context.PersonalContractingParties
.Include(p => p.Employers) .Include(p => p.Employers)
@@ -2070,7 +2070,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
hasEmployeeOrWorkshpSearch = true; hasEmployeeOrWorkshpSearch = true;
checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo); checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo);
} }
//if (searchModel.IsActiveString == null) //if (searchModel.IsActiveString == null)
@@ -2250,50 +2250,50 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
} }
#endregion #endregion
if (!hasSearch && !hasEmployeeOrWorkshpSearch) if (!hasSearch && !hasEmployeeOrWorkshpSearch)
{ {
return checkouts.Select(x => new CheckoutViewModel() 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, }).ToList()
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()
}).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) .OrderByDescending(x => x.Id).ThenByDescending(x => x.Year)
.ThenBy(x => x.PersonnelCodeInt) .ThenBy(x => x.PersonnelCodeInt)
.Take(50).ToList(); .Take(50).ToList();
@@ -2441,7 +2441,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
CreationDate = x.ch.CreationDate, CreationDate = x.ch.CreationDate,
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
IsBlockCantracingParty = x.contractingParty.IsBlock, 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, IsUpdateNeeded = x.ch.IsUpdateNeeded,
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
{ {
@@ -2454,8 +2454,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
.Select(x => x.First()).ToList() .Select(x => x.First()).ToList()
.OrderByDescending(x => x.Id) .OrderByDescending(x => x.Id)
.ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList();
} }
} }
@@ -2769,43 +2769,43 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
.Select(x => x.WorkshopId); .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) var watch = new Stopwatch();
.ThenByDescending(x => x.Year) watch.Start();
.ThenByDescending(x=>x.ContractStart) var checkouts =
.ThenBy(x => x.PersonnelCode).AsNoTracking(); (
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); Console.WriteLine("getList======================= : " + watch.Elapsed);
#region SercheModel #region SercheModel
if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) if (!string.IsNullOrWhiteSpace(searchModel.ContractNo))
@@ -2839,7 +2839,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
(string.IsNullOrWhiteSpace(searchModel.ContractStart) || (string.IsNullOrWhiteSpace(searchModel.ContractStart) ||
string.IsNullOrWhiteSpace(searchModel.ContractEnd))) string.IsNullOrWhiteSpace(searchModel.ContractEnd)))
{ {
var startYear = searchModel.Year + "/01/01"; var startYear = searchModel.Year + "/01/01";
var startyearGr = startYear.ToGeorgianDateTime(); var startyearGr = startYear.ToGeorgianDateTime();
var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); 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.ContractStart) &&
string.IsNullOrWhiteSpace(searchModel.ContractEnd)) string.IsNullOrWhiteSpace(searchModel.ContractEnd))
{ {
//سرچ سال و ماه //سرچ سال و ماه
string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; string y1 = $"{searchModel.Year}/{searchModel.Month}/01";
var startDate = y1.ToGeorgianDateTime(); var startDate = y1.ToGeorgianDateTime();
@@ -2975,7 +2975,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
!string.IsNullOrWhiteSpace(searchModel.ContractEnd) && !string.IsNullOrWhiteSpace(searchModel.ContractEnd) &&
string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month))
{ {
//سرچ تاریخ //سرچ تاریخ
var start = searchModel.ContractStart.ToGeorgianDateTime(); var start = searchModel.ContractStart.ToGeorgianDateTime();
var endd = searchModel.ContractEnd.ToGeorgianDateTime(); var endd = searchModel.ContractEnd.ToGeorgianDateTime();
@@ -2992,19 +2992,19 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
watch.Reset(); watch.Reset();
watch.Start(); watch.Start();
var checkoutQueryFilter = await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync(); var checkoutQueryFilter = await checkouts.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
Console.WriteLine("pagination===================== : " + watch.Elapsed); Console.WriteLine("pagination===================== : " + watch.Elapsed);
var employers =await var employers = await
_context.WorkshopEmployers.Where(x => checkoutQueryFilter _context.WorkshopEmployers.Where(x => checkoutQueryFilter
.Select(c => c.WorkshopId).Contains(x.WorkshopId)) .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 contractingPartiesIds = employers.Select(x => x.Employer.ContractingPartyId).ToList();
var warningMessages = await _context.CheckoutWarningMessages.Where(x => checkoutQueryFilter var warningMessages = await _context.CheckoutWarningMessages.Where(x => checkoutQueryFilter
.Select(c => c.Id).Contains(x.CheckoutId)).ToListAsync(); .Select(c => c.Id).Contains(x.CheckoutId)).ToListAsync();
var contractnigParties = await _context.PersonalContractingParties var contractnigParties = await _context.PersonalContractingParties
.Where(x => contractingPartiesIds.Contains(x.id)).ToListAsync(); .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() .Where(x => x.WorkshopId == getCheckouts.First().WorkshopId).AsNoTracking()
.Select(x => new CheckoutEmployersList .Select(x => new CheckoutEmployersList
{ {
IsLegal = x.Employer.IsLegal == "true", IsLegal = x.Employer.IsLegal,
EmployerFullName = x.Employer.FullName EmployerFullName = x.Employer.FullName
}).ToListAsync(); }).ToListAsync();
var employees = (from x in _context.Employees.Where(x => getCheckouts.Select(ch => ch.EmployeeId).Contains(x.id)) var employees = (from x in _context.Employees.Where(x => getCheckouts.Select(ch => ch.EmployeeId).Contains(x.id))
select new select new
{ {
EmployeeId = x.id, EmployeeId = x.id,
MaritalStatus = x.MaritalStatus MaritalStatus = x.MaritalStatus
} }
).AsNoTracking(); ).AsNoTracking();
var workshop = await _context.Workshops.AsNoTracking().FirstAsync(x => x.id == getCheckouts.First().WorkshopId); 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 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 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 fridayWorkValue = x.FridayPay > 0 ? x.FridayWorkValue : "-";
var maritalStatus = employees.First(e => e.EmployeeId == x.EmployeeId).MaritalStatus; 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 rotatingShiftValue = x.ShiftPay > 0 ? x.RotatingShiftValue : "-";
var totalDeduction = "-"; var totalDeduction = "-";
var totalPayment = "-"; var totalPayment = "-";
var totalClaims = "-"; var totalClaims = "-";
if (!workshop.TotalPaymentHide) if (showSumOfPayments)
{ {
totalDeduction = x.TotalDeductions; totalDeduction = x.TotalDeductions;
totalPayment = x.TotalPayment.ToMoneyCheckZero(); totalPayment = x.TotalPayment.ToMoneyCheckZero();
totalClaims = x.TotalClaims; totalClaims = x.TotalClaims;
} }
return new CheckoutPrintDto() return new CheckoutPrintDto()
{ {
Id = x.id, Id = x.id,
@@ -3125,12 +3143,15 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
FathersName = x.FathersName, FathersName = x.FathersName,
NationalCode = x.NationalCode, NationalCode = x.NationalCode,
DateOfBirth = x.DateOfBirth, DateOfBirth = x.DateOfBirth,
WorkshopName = x.WorkshopName, WorkshopName = workshop.WorkshopName,
ContractNo = x.ContractNo, ContractNo = x.ContractNo,
Month = x.Month, Month = x.Month,
Year = x.Year, Year = x.Year,
EmployersLists = employers, EmployersLists = employers,
EmployerIslegal = isLegal, EmployerIslegal = isLegal,
HasLeft = hasLeft,
LastDayOfWork = lastDayOfWork,
LeftWorkDate = leftWorkDate,
#endregion #endregion
//جدول مطالبات و کسورات //جدول مطالبات و کسورات
@@ -3192,6 +3213,20 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
TotalDeductions = totalDeduction, TotalDeductions = totalDeduction,
TotalClaims = totalClaims, TotalClaims = totalClaims,
#endregion #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.Checkout.Dto;
using CompanyManagment.App.Contracts.InstitutionPlan; using CompanyManagment.App.Contracts.InstitutionPlan;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NuGet.Packaging.Signing;
using ServiceHost.BaseControllers; using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Admin.Controllers; namespace ServiceHost.Areas.Admin.Controllers;
@@ -39,5 +40,29 @@ public class CheckoutController : AdminBaseController
return result; 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 ids = ExtractNumbers(idlist);
var test = _checkoutApplication.CheckoutPrint(ids).GetAwaiter().GetResult();
var resultList = new List<CheckoutGroupPrintViewModel>(); var resultList = new List<CheckoutGroupPrintViewModel>();
var res = _checkoutApplication.PrintAll(ids); var res = _checkoutApplication.PrintAll(ids);