customizesheckout bug fixed

This commit is contained in:
SamSys
2025-03-05 21:17:38 +03:30
parent 2843ab8b47
commit 417a453806
33 changed files with 10590 additions and 1099 deletions

View File

@@ -968,6 +968,12 @@ public static class Tools
}
#region Vafa
public static string ToFarsiWithoutYear(this DateTime date)
{
if (date == new DateTime()) return "";
var pc = new PersianCalendar();
return $"{pc.GetMonth(date):00}/{pc.GetDayOfMonth(date):00}";
}
public static int ToMonthByStringValue(this string value)
{
if (value == "") return 0;

View File

@@ -17,12 +17,20 @@ public class CustomizeCheckout : EntityBase
private CustomizeCheckout()
{
}
public CustomizeCheckout(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, string employeeLName, DateTime employeeDateOfBirth,
public CustomizeCheckout(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
string employeeLName, DateTime employeeDateOfBirth,
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay, double nightWorkPay,
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction, double fineAbsenceDeduction,
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction, double installmentDeduction,
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions, double totalPayment, string contractNo, ICollection<CustomizeCheckoutFine> checkoutFines, ICollection<CustomizeCheckoutLoanInstallments> customizeCheckoutLoanInstallments, ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutReward> customizeCheckoutRewards)
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
double nightWorkPay,
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction,
double fineAbsenceDeduction,
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction,
double installmentDeduction,
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions,
double totalPayment, string contractNo, ICollection<CustomizeCheckoutFine> checkoutFines,
ICollection<CustomizeCheckoutLoanInstallments> customizeCheckoutLoanInstallments,
ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids,
ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue)
{
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
@@ -64,8 +72,11 @@ public class CustomizeCheckout : EntityBase
DateOfBirth = employeeDateOfBirth;
NationalCode = employeeNationalCode;
WorkshopFullName = workshopFullName;
LateToWorkValue = lateToWorkValue;
}
#region Getters
/// <summary>
/// سال به صورت استرینگ
@@ -239,7 +250,12 @@ public class CustomizeCheckout : EntityBase
public double TotalPayment { get; private set; }
#region Values
public TimeSpan LateToWorkValue { get; private set; }
#endregion
#endregion

View File

@@ -14,15 +14,19 @@ namespace Company.Domain.CustomizeCheckoutTempAgg;
/// </summary>
public class CustomizeCheckoutTemp : EntityBase
{
private CustomizeCheckoutTemp()
private CustomizeCheckoutTemp(TimeSpan lateToWorkValue)
{
LateToWorkValue = lateToWorkValue;
}
public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, string employeeLName, DateTime employeeDateOfBirth,
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay, double nightWorkPay,
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction, double fineAbsenceDeduction,
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction, double installmentDeduction,
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions, double totalPayment, string contractNo, ICollection<CustomizeCheckoutTempFine> checkoutFines, ICollection<CustomizeCheckoutTempLoanInstallments> customizeCheckoutLoanInstallments, ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards)
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions, double totalPayment, string contractNo,
ICollection<CustomizeCheckoutTempFine> checkoutFines, ICollection<CustomizeCheckoutTempLoanInstallments> customizeCheckoutLoanInstallments,
ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards,
TimeSpan lateToWorkValue)
{
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
@@ -64,6 +68,8 @@ public class CustomizeCheckoutTemp : EntityBase
DateOfBirth = employeeDateOfBirth;
NationalCode = employeeNationalCode;
WorkshopFullName = workshopFullName;
LateToWorkValue = lateToWorkValue;
}
#region Getters
@@ -248,12 +254,21 @@ public class CustomizeCheckoutTemp : EntityBase
/// </summary>
public double TotalPayment { get; private set; }
#endregion
#region Values
public TimeSpan LateToWorkValue { get; private set; }
#region Relations
#endregion
public Workshop Workshop { get; set; }
#endregion
#region Relations
public Workshop Workshop { get; set; }
public Employee Employee { get; set; }
#endregion

View File

@@ -515,15 +515,15 @@ public class RollCallDomainService : IRollCallDomainService
#region اشتراک حضور غیاب و شیفت
var overlapChosenShift = endFilteredTimes.Select(shift => new
var overlapShifts = endFilteredTimes.Select(shift => new
{
Shift = shift,
Overlap = new TimeSpan(Math.Max(0,
Math.Min(shift.End.Ticks, oneHourAfterEnd.Ticks) -
Math.Max(shift.Start.Ticks, oneHourBeforeEnd.Ticks)))
}).MaxBy(s => s.Overlap);
Math.Max(shift.Start.Ticks, oneHourBeforeStart.Ticks)))
});
var overlapChosenShift = overlapShifts.MaxBy(s => s.Overlap);
var end = overlapChosenShift.Shift.End;
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
end = overlapChosenShift.Shift.End.AddDays(1);

View File

@@ -37,6 +37,11 @@ namespace Company.Domain.RollCallAgg
throw new NotFoundException("اطلاعات گروهبندی شخص نامعتبر است");
}
//if (endDate.HasValue)
//{
// Edit(StartDate.Value,endDate.Value,service);
//}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.File1;
@@ -126,7 +127,9 @@ public class CustomizeCheckoutMandatoryViewModel
public double TaxDeduction { get; set; }
#endregion
#region Values
public TimeSpan LateToWorkValue { get; set; }
#endregion
/// <summary>
/// تعداد روزهای کارکرد
/// </summary>

View File

@@ -90,6 +90,12 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout
public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; }
public string TotalLateToWorkDeduction { get; set; }
public string LateToWorkValue { get; set; }
//public bool HasLeft { get; set; }
//public string IsBlockCantracingParty { get; set; }
//public string IsActiveString { get; set; }

View File

@@ -2,23 +2,26 @@
namespace CompanyManagment.App.Contracts.RollCall
{
#region Pooya
#region Pooya
public class CheckoutDailyRollCallViewModel
{
public string RollCallDateFa { get; set; }
public string StartDate1 { get; set; }
public string EndDate1 { get; set; }
public class CheckoutDailyRollCallViewModel
{
public string RollCallDateFa { get; set; }
public string StartDate1 { get; set; }
public string EndDate1 { get; set; }
public string StartDate2 { get; set; }
public string EndDate2 { get; set; }
public DateTime DateTimeGr { get; set; }
//منقطع بودن شیفت کاری
public bool IsSliced { get; set; }
//منقطع بودن شیفت کاری
public bool IsSliced { get; set; }
public TimeSpan TotalhourseSpan { get; set; }
public string TotalWorkingHours { get; set; }
public string DayOfWeek { get; set; }
public string DayOfWeek { get; set; }
public TimeSpan BreakTimeTimeSpan { get; set; }
public string BreakTimeString { get; set; }
@@ -32,7 +35,14 @@ namespace CompanyManagment.App.Contracts.RollCall
public bool IsHoliday { get; set; }
public bool IsBirthDay { get; set; }
public string EnterDifferencesMinutes1 { get; set; }
public string ExitDifferencesMinutes1 { get; set; }
public string EnterDifferencesMinutes2 { get; set; }
public string ExitDifferencesMinutes2 { get; set; }
}
#endregion
#endregion
}

View File

@@ -110,7 +110,7 @@ namespace CompanyManagment.Application
result.FamilyAllowance, result.LeavePay, result.InsuranceDeduction, result.FineAbsenceDeduction,
result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction,
result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-",
fines,loanInstallments,salaryAids,rewards);
fines,loanInstallments,salaryAids,rewards, result.LateToWorkValue);
_customizeCheckoutRepository.Create(entity);
@@ -150,7 +150,7 @@ namespace CompanyManagment.Application
x.IsActive,x.Title)).ToList();
var loanInstallments = computations.InstallmentViewModels.Select(x =>
new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive,x.RemainingAmount,x.LoanAmount)).ToList();
new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive,x.RemainingAmount, x.LoanAmount)).ToList();
var salaryAids = computations.SalaryAidViewModels.Select(x =>
new CustomizeCheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList();
@@ -162,7 +162,7 @@ namespace CompanyManagment.Application
computations.FamilyAllowance, computations.LeavePay, computations.InsuranceDeduction, computations.FineAbsenceDeduction,
computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction,
computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-",
fines,loanInstallments,salaryAids,rewards);
fines,loanInstallments,salaryAids,rewards, computations.LateToWorkValue);
_customizeCheckoutRepository.Create(entity);
_customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd);
@@ -209,6 +209,14 @@ namespace CompanyManagment.Application
if (yearFa < 1398 || yearFa > 1550 || monthFa < 1 || monthFa > 12)
return op.Failed("خطای سیستمی");
var pc = new PersianCalendar();
var checkoutDate = new DateTime(yearFa, monthFa, 1,pc);
var nextMonth = checkoutDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date;
var today = DateTime.Today;
if (nextMonth > today)
return op.Failed("امکان ایجاد فیش برای ماه جاری یا آینده وجود ندارد");
//validate parsed datetime
var startOfMonth = new DateTime(yearFa, monthFa, 1, new PersianCalendar()).Date;
// var endOfMonth = startOfMonth.AddMonthsFa(1, out _).ToGeorgianDateTime().Date.AddTicks(-1);
@@ -248,8 +256,6 @@ namespace CompanyManagment.Application
var employeeSettings = _customizeWorkshopSettingsRepository.GetEmployeeSettingsByWorkshopId(workshopId);
var today = DateTime.Now.Date;
var pc = new PersianCalendar();
if (pc.GetYear(today) == yearFa && pc.GetMonth(today) == monthFa)
{
workshopLeftWorksInMonth = workshopLeftWorksInMonth.Where(x => x.LeftWorkDateGr.Date <= today).ToList();

View File

@@ -91,7 +91,7 @@ namespace CompanyManagment.Application
result.FamilyAllowance, result.LeavePay, result.InsuranceDeduction, result.FineAbsenceDeduction,
result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction,
result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards);
fines, loanInstallments, salaryAids, rewards,result.LateToWorkValue);
_customizeCheckoutTempRepository.Create(entity);
@@ -128,7 +128,7 @@ namespace CompanyManagment.Application
x.IsActive,x.Title)).ToList();
var loanInstallments = computations.InstallmentViewModels.Select(x =>
new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount)).ToList();
new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount,x.LoanAmount)).ToList();
var salaryAids = computations.SalaryAidViewModels.Select(x =>
new CustomizeCheckoutTempSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList();
@@ -144,7 +144,7 @@ namespace CompanyManagment.Application
computations.FamilyAllowance, computations.LeavePay, computations.InsuranceDeduction, computations.FineAbsenceDeduction,
computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction,
computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-",
fines, loanInstallments, salaryAids, rewards);
fines, loanInstallments, salaryAids, rewards,computations.LateToWorkValue);
_customizeCheckoutTempRepository.Create(entity);
_customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd);
}

View File

@@ -496,6 +496,12 @@ public class RollCallApplication : IRollCallApplication
_rollCallRepository.AddRange(rollCallsAsEntityModels);
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{
rollCallsAsEntityModel.Edit(rollCallsAsEntityModel.StartDate.Value, rollCallsAsEntityModel.EndDate.Value, _rollCallDomainService);
}
_rollCallRepository.SaveChanges();
return operation.Succcedded();
}
public OperationResult ManualEditForUndefined(CreateOrEditEmployeeRollCall command)
@@ -653,6 +659,12 @@ public class RollCallApplication : IRollCallApplication
_rollCallRepository.AddRange(rollCallsAsEntityModels);
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{
rollCallsAsEntityModel.Edit(rollCallsAsEntityModel.StartDate.Value, rollCallsAsEntityModel.EndDate.Value, _rollCallDomainService);
}
_rollCallRepository.SaveChanges();
return operation.Succcedded();
}
#endregion

View File

@@ -1,5 +1,6 @@
using System;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.CustomizeCheckoutAgg;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.EntityFrameworkCore;
@@ -54,6 +55,8 @@ public class CustomizeCheckoutMapping : IEntityTypeConfiguration<CustomizeChecko
builder.Property(x => x.NationalCode).HasMaxLength(10);
builder.Property(x => x.WorkshopFullName).HasMaxLength(255);
builder.Property(x => x.LateToWorkValue).HasTimeSpanConversion();
builder.OwnsMany(x => x.CheckoutFines, checkoutFine =>
{
checkoutFine.Property(x => x.IsActive).HasConversion(
@@ -74,7 +77,8 @@ public class CustomizeCheckoutMapping : IEntityTypeConfiguration<CustomizeChecko
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.CustomizeCheckoutSalaryAids, salaryAid =>
{

View File

@@ -1,5 +1,6 @@
using _0_Framework.Application;
using System;
using _0_Framework.InfraStructure;
using Company.Domain.CustomizeCheckoutAgg;
using Company.Domain.CustomizeCheckoutTempAgg;
using Microsoft.EntityFrameworkCore;
@@ -54,6 +55,8 @@ public class CustomizeCheckoutTempMapping : IEntityTypeConfiguration<CustomizeCh
builder.Property(x => x.NationalCode).HasMaxLength(10);
builder.Property(x => x.WorkshopFullName).HasMaxLength(255);
builder.Property(x => x.LateToWorkValue).HasTimeSpanConversion();
builder.OwnsMany(x => x.CheckoutFines, checkoutFine =>
{
checkoutFine.Property(x => x.IsActive).HasConversion(

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,42 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addLateToWorkToCustomizeCheckout : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "LateToWorkValue",
table: "CustomizeCheckoutTemps",
type: "nvarchar(30)",
maxLength: 30,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "LateToWorkValue",
table: "CustomizeCheckouts",
type: "nvarchar(30)",
maxLength: 30,
nullable: false,
defaultValue: "");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "LateToWorkValue",
table: "CustomizeCheckoutTemps");
migrationBuilder.DropColumn(
name: "LateToWorkValue",
table: "CustomizeCheckouts");
}
}
}

View File

@@ -930,6 +930,11 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<double>("LateToWorkDeduction")
.HasColumnType("float");
b.Property<string>("LateToWorkValue")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<double>("LeavePay")
.HasColumnType("float");
@@ -1063,6 +1068,11 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<double>("LateToWorkDeduction")
.HasColumnType("float");
b.Property<string>("LateToWorkValue")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<double>("LeavePay")
.HasColumnType("float");

View File

@@ -22,362 +22,369 @@ using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.Reward;
using CompanyManagment.App.Contracts.SalaryAid;
namespace CompanyManagment.EFCore.Repository;
public class CustomizeCheckoutRepository : RepositoryBase<long, CustomizeCheckout>, ICustomizeCheckoutRepository
namespace CompanyManagment.EFCore.Repository
{
private readonly CompanyContext _companyContext;
private readonly IRollCallRepository _rollCallRepository;
public CustomizeCheckoutRepository(CompanyContext context, IRollCallRepository rollCallRepository) : base(context)
public class CustomizeCheckoutRepository : RepositoryBase<long, CustomizeCheckout>, ICustomizeCheckoutRepository
{
_companyContext = context;
_rollCallRepository = rollCallRepository;
}
#region Pooya
public List<CustomizeCheckoutViewModel> GetByWorkshopIdInDates(long workshopId, DateTime startOfMonth, DateTime endOfMonth)
{
return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId == workshopId && x.ContractEnd.Date >= startOfMonth.Date &&
x.ContractStart.Date <= endOfMonth.Date).Select(x => new CustomizeCheckoutViewModel
private readonly CompanyContext _companyContext;
private readonly IRollCallRepository _rollCallRepository;
public CustomizeCheckoutRepository(CompanyContext context, IRollCallRepository rollCallRepository) : base(context)
{
BaseYearsPay = x.BaseYearsPay.ToMoney(),
EmployeeId = x.EmployeeId,
BonusesPay = x.BonusesPay.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractNo = x.ContractNo,
ContractStartFa = x.ContractStart.ToFarsi(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString()
}).ToList();
}
public List<CustomizeCheckoutViewModel> PrintAll(long workshopId, IEnumerable<long> customizeCheckoutIds)
{
//var pc = new PersianCalendar();
//var year = pc.GetYear(monthStart);
//var month = pc.GetMonth(monthStart);
IQueryable<CustomizeCheckout> customizeCheckoutsQuery = _companyContext.CustomizeCheckouts
.Where(x => customizeCheckoutIds.Contains(x.id)).Include(x => x.CheckoutFines);
IQueryable<Workshop> workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id));
IQueryable<long> workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId);
IQueryable<Employer> employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id));
IQueryable<PersonnelCodeDomain> personnelCodesQuery = _companyContext.PersonnelCodeSet
.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId));
//IQueryable<LeftWork> leftWorksQuery = _companyContext.LeftWorkList
// .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) &&
// x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd);
//IQueryable<Employee> employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id));
var loans = _companyContext.Loans.AsSplitQuery().Where(x => x.WorkshopId == workshopId).ToList();
List<CustomizeCheckoutViewModel> customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel
{
Id = x.id,
WorkshopId = x.WorkshopId,
ContractId = x.ContractId == null ? 0 : x.ContractId.Value,
EmployeeId = x.EmployeeId,
Month = x.Month,
Year = x.Year,
ContractNo = x.ContractNo,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MarriedAllowance = x.MarriedAllowance.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
CreationDate = x.CreationDate,
SumOfWorkingDays = x.SumOfWorkingDays,
WorkshopName = x.WorkshopFullName,
DateOfBirth = x.DateOfBirth.ToFarsi(),
NationalCode = x.NationalCode,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel()
{
Amount = y.Amount,
FineDate = y.FineDateFa,
Title = y.Title
}).ToList(),
InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.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(),
RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel()
{
IsActive = r.IsActive,
Title = r.Title,
Amount = r.Amount,
AmountDouble = r.Amount.MoneyToDouble(),
Description = r.Description,
GrantDateFa = r.GrantDateFa,
GrantDateGr = r.GrantDate
}).ToList(),
SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
}).ToList();
List<WorkshopViewModel> workshopsList = workshopsQuery.Select(x => new WorkshopViewModel
{
WorkshopFullName = x.WorkshopFullName,
Id = x.id
}).ToList();
List<EmployerViewModel> workshopEmployersList = employersQuery.Select(x => new EmployerViewModel
{
Id = x.id,
FullName = x.FullName
}).ToList();
//List<LeftWorkViewModel> leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel
//{
// EmployeeId = x.EmployeeId,
// WorkshopId = x.WorkshopId,
// Id = x.id,
// StartWorkDateGr = x.StartWorkDate,
// LeftWorkDateGr = x.LeftWorkDate
//}).ToList();
//List<EmployeeViewModel> employees = employeesQuery.Select(x => new EmployeeViewModel()
//{
// Id = x.id,
// FName = x.FName,
// LName = x.LName,
// FatherName = x.FatherName,
// NationalCode = x.NationalCode,
// DateOfBirth = x.DateOfBirth.ToFarsi()
//}).ToList();
List<PersonnelCodeViewModel> personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel
{
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
PersonnelCode = Convert.ToInt64(x.PersonnelCode)
}).ToList();
var date = customizeCheckoutsList.FirstOrDefault();
if (date == null)
return new();
var startDate = date.ContractStartGr.AddMonthsFa(0, out _).ToGeorgianDateTime().Date;
var endDate = startDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date.AddTicks(-1);
List<PersonnelCheckoutDailyRollCallViewModel> personnelRollCalls = _rollCallRepository
.GetEmployeeRollCallsForMonth(customizeCheckoutsList.Select(x => x.EmployeeId), workshopId, startDate, endDate);
int counter = 1;
foreach (var checkout in customizeCheckoutsList)
{
checkout.PrintCounter = counter++;
//var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId);
//checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr;
//var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId);
checkout.EmployerList = workshopEmployersList;
checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-";
checkout.MonthlyRollCall = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId);
checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0;
_companyContext = context;
_rollCallRepository = rollCallRepository;
}
return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList();
}
public void RemoveEmployeeCustomizeCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth)
{
var checkout = _companyContext.CustomizeCheckouts.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId &&
x.ContractStart.Date <= endOfMonth.Date && x.ContractEnd.Date >= startOfMonth.Date);
if (checkout == null) return;
_companyContext.CustomizeCheckouts.Remove(checkout);
}
public IEnumerable<CustomizeCheckout> GetRange(long workshopId,List<long> ids)
{
return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId==workshopId && ids.Contains(x.id)).AsEnumerable();
}
#endregion
public IEnumerable<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel)
{
OperationResult op = new();
var query = _companyContext.CustomizeCheckouts.Include(x => x.Employee).ThenInclude(x => x.PersonnelCodeList)
.AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId);
#region parameters initialize
////start of search is the first day of the current month by default and end of search is today
//var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date;
//var endSearchDate = DateTime.Today;
var pc = new PersianCalendar();
var currentYear = pc.GetYear(DateTime.Now);
var currentMonth = pc.GetMonth(DateTime.Now);
if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) &&
searchModel.Year == 0 && searchModel.Month == 0)
#region Pooya
public List<CustomizeCheckoutViewModel> GetByWorkshopIdInDates(long workshopId, DateTime startOfMonth, DateTime endOfMonth)
{
var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date;
var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date;
return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId == workshopId && x.ContractEnd.Date >= startOfMonth.Date &&
x.ContractStart.Date <= endOfMonth.Date).Select(x => new CustomizeCheckoutViewModel
{
BaseYearsPay = x.BaseYearsPay.ToMoney(),
EmployeeId = x.EmployeeId,
BonusesPay = x.BonusesPay.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractNo = x.ContractNo,
ContractStartFa = x.ContractStart.ToFarsi(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString()
}).ToList();
}
//if (queryEndDate > queryStartDate && queryEndDate <= DateTime.Today)
public List<CustomizeCheckoutViewModel> PrintAll(long workshopId, IEnumerable<long> customizeCheckoutIds)
{
//var pc = new PersianCalendar();
//var year = pc.GetYear(monthStart);
//var month = pc.GetMonth(monthStart);
IQueryable<CustomizeCheckout> customizeCheckoutsQuery = _companyContext.CustomizeCheckouts
.Where(x => customizeCheckoutIds.Contains(x.id)).Include(x=>x.CheckoutFines);
IQueryable<Workshop> workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id));
IQueryable<long> workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId);
IQueryable<Employer> employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id));
IQueryable<PersonnelCodeDomain> personnelCodesQuery = _companyContext.PersonnelCodeSet
.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId));
//IQueryable<LeftWork> leftWorksQuery = _companyContext.LeftWorkList
// .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) &&
// x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd);
//IQueryable<Employee> employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id));
var loans = _companyContext.Loans.AsSplitQuery().Where(x => x.WorkshopId == workshopId).ToList();
List<CustomizeCheckoutViewModel> customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel
{
Id = x.id,
WorkshopId = x.WorkshopId,
ContractId = x.ContractId == null ? 0 : x.ContractId.Value,
EmployeeId = x.EmployeeId,
Month = x.Month,
Year = x.Year,
ContractNo = x.ContractNo,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MarriedAllowance = x.MarriedAllowance.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
CreationDate = x.CreationDate,
SumOfWorkingDays = x.SumOfWorkingDays,
WorkshopName = x.WorkshopFullName,
DateOfBirth = x.DateOfBirth.ToFarsi(),
NationalCode = x.NationalCode,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FineViewModelList = x.CheckoutFines.Select(y=> new FineViewModel()
{
Amount = y.Amount,
FineDate = y.FineDateFa,
Title = y.Title
}).ToList(),
InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.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(),
RewardViewModels = x.CustomizeCheckoutRewards.Select(r=>new RewardViewModel()
{
IsActive = r.IsActive,
Title = r.Title,
Amount = r.Amount,
AmountDouble =r.Amount.MoneyToDouble(),
Description = r.Description,
GrantDateFa = r.GrantDateFa,
GrantDateGr = r.GrantDate
}).ToList(),
SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s=> new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
LateToWorkValue = x.LateToWorkValue == TimeSpan.Zero ? "-" : $"{(int)x.LateToWorkValue.TotalHours}:{x.LateToWorkValue.Minutes:D2}"
}).ToList();
List<WorkshopViewModel> workshopsList = workshopsQuery.Select(x => new WorkshopViewModel
{
WorkshopFullName = x.WorkshopFullName,
Id = x.id
}).ToList();
List<EmployerViewModel> workshopEmployersList = employersQuery.Select(x => new EmployerViewModel
{
Id = x.id,
FullName = x.FullName
}).ToList();
//List<LeftWorkViewModel> leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel
//{
// startSearchDate = queryStartDate;
// endSearchDate = queryEndDate;
//}
//query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate);
query = query.Where(x => x.ContractEnd.Date >= queryStartDate && x.ContractStart.Date <= queryEndDate);
// EmployeeId = x.EmployeeId,
// WorkshopId = x.WorkshopId,
// Id = x.id,
// StartWorkDateGr = x.StartWorkDate,
// LeftWorkDateGr = x.LeftWorkDate
//}).ToList();
//List<EmployeeViewModel> employees = employeesQuery.Select(x => new EmployeeViewModel()
//{
// Id = x.id,
// FName = x.FName,
// LName = x.LName,
// FatherName = x.FatherName,
// NationalCode = x.NationalCode,
// DateOfBirth = x.DateOfBirth.ToFarsi()
//}).ToList();
List<PersonnelCodeViewModel> personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel
{
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
PersonnelCode = Convert.ToInt64(x.PersonnelCode)
}).ToList();
var date = customizeCheckoutsList.FirstOrDefault();
if (date == null)
return new();
var startDate = date.ContractStartGr.AddMonthsFa(0, out _).ToGeorgianDateTime().Date;
var endDate = startDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date.AddTicks(-1);
List<PersonnelCheckoutDailyRollCallViewModel> personnelRollCalls = _rollCallRepository
.GetEmployeeRollCallsForMonth(customizeCheckoutsList.Select(x => x.EmployeeId), workshopId, startDate, endDate);
int counter = 1;
foreach (var checkout in customizeCheckoutsList)
{
checkout.PrintCounter = counter++;
//var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId);
//checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr;
//var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId);
checkout.EmployerList = workshopEmployersList;
checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-";
checkout.MonthlyRollCall = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId);
checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0;
}
return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList();
}
if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 12)
public void RemoveEmployeeCustomizeCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth)
{
var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime();
queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate);
queryEndDate = queryEndDate.Date.AddTicks(-1);
if (queryEndDate >= DateTime.Today)
{
queryEndDate = DateTime.Now.AddDays(-1).Date;
}
else if (searchModel.Year == currentYear && searchModel.Month == currentMonth)
{
queryEndDate = DateTime.Now.AddDays(-1).Date;
}
query = query.Where(x => x.ContractEnd <= queryEndDate && x.ContractStart >= queryStartDate);
var checkout = _companyContext.CustomizeCheckouts.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId &&
x.ContractStart.Date <= endOfMonth.Date && x.ContractEnd.Date >= startOfMonth.Date);
if (checkout == null) return;
_companyContext.CustomizeCheckouts.Remove(checkout);
}
////Month Index operations
//startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate);
//startSearchDate.FindFirstDayOfNextMonth(out endSearchDate);
//endSearchDate = endSearchDate.AddDays(-1);
public IEnumerable<CustomizeCheckout> GetRange(long workshopId,List<long> ids)
{
return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId==workshopId && ids.Contains(x.id)).AsEnumerable();
}
#endregion
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
switch (searchModel.OrderBy)
public IEnumerable<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel)
{
case CustomizeCheckoutOrderByEnum.ContractStartDesc:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractStart:
query = query.OrderBy(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractNoDesc:
query = query.OrderByDescending(x => x.ContractNo);
break;
case CustomizeCheckoutOrderByEnum.ContractNo:
query = query.OrderBy(x => x.ContractNo);
break;
default:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
OperationResult op = new();
var query = _companyContext.CustomizeCheckouts.Include(x => x.Employee)
.ThenInclude(x => x.PersonnelCodeList)
.AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId);
#region parameters initialize
////start of search is the first day of the current month by default and end of search is today
//var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date;
//var endSearchDate = DateTime.Today;
var pc = new PersianCalendar();
var currentYear = pc.GetYear(DateTime.Now);
var currentMonth = pc.GetMonth(DateTime.Now);
if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) &&
searchModel.Year == 0 && searchModel.Month == 0)
{
var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date;
var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date;
//if (queryEndDate > queryStartDate && queryEndDate <= DateTime.Today)
//{
// startSearchDate = queryStartDate;
// endSearchDate = queryEndDate;
//}
//query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate);
query = query.Where(x => x.ContractEnd.Date >= queryStartDate && x.ContractStart.Date <= queryEndDate);
}
if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 12)
{
var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime();
queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate);
queryEndDate = queryEndDate.Date.AddTicks(-1);
if (queryEndDate >= DateTime.Today)
{
queryEndDate = DateTime.Now.AddDays(-1).Date;
}
else if (searchModel.Year == currentYear && searchModel.Month == currentMonth)
{
queryEndDate = DateTime.Now.AddDays(-1).Date;
}
query = query.Where(x => x.ContractEnd <= queryEndDate && x.ContractStart >= queryStartDate);
}
////Month Index operations
//startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate);
//startSearchDate.FindFirstDayOfNextMonth(out endSearchDate);
//endSearchDate = endSearchDate.AddDays(-1);
#endregion
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
switch (searchModel.OrderBy)
{
case CustomizeCheckoutOrderByEnum.ContractStartDesc:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractStart:
query = query.OrderBy(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractNoDesc:
query = query.OrderByDescending(x => x.ContractNo);
break;
case CustomizeCheckoutOrderByEnum.ContractNo:
query = query.OrderBy(x => x.ContractNo);
break;
default:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
}
if (searchModel.Year == 0 || searchModel.Month == 0)
query = query.Skip(searchModel.PageIndex).Take(30);
return query.Select(x => new CustomizeCheckoutViewModel()
{
Id = x.id,
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
ContractNo = x.ContractNo,
EmployeeFName = x.Employee.FName,
EmployeeLName = x.Employee.LName,
PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode,
Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(),
Year = pc.GetYear(x.ContractStart).ToString(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
TaxDeducation = x.TaxDeduction.ToMoney(),
TotalPayment =x.TotalPayment.ToMoney(),
TotalPaymentD = x.TotalPayment,
TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
}).ToList();
}
if (searchModel.Year == 0 || searchModel.Month == 0)
query = query.Skip(searchModel.PageIndex).Take(30);
return query.Select(x => new CustomizeCheckoutViewModel()
{
Id = x.id,
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
ContractNo = x.ContractNo,
EmployeeFName = x.Employee.FName,
EmployeeLName = x.Employee.LName,
PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode,
Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(),
Year = pc.GetYear(x.ContractStart).ToString(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
TaxDeducation = x.TaxDeduction.ToMoney(),
TotalPayment = x.TotalPayment.ToMoney(),
TotalPaymentD = x.TotalPayment
}).ToList();
}
}
}

View File

@@ -21,391 +21,400 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace CompanyManagment.EFCore.Repository;
public class CustomizeCheckoutTempRepository : RepositoryBase<long, CustomizeCheckoutTemp>, ICustomizeCheckoutTempRepository
namespace CompanyManagment.EFCore.Repository
{
private readonly IRollCallRepository _rollCallRepository;
private readonly CompanyContext _companyContext;
public CustomizeCheckoutTempRepository(CompanyContext context, IRollCallRepository rollCallRepository) : base(context)
public class CustomizeCheckoutTempRepository : RepositoryBase<long, CustomizeCheckoutTemp>, ICustomizeCheckoutTempRepository
{
_companyContext = context;
_rollCallRepository = rollCallRepository;
}
#region Pooya
public List<CustomizeCheckoutViewModel> GetByWorkshopIdInDates(long workshopId, DateTime startOfMonth, DateTime endOfMonth)
{
return _companyContext.CustomizeCheckoutTemps.Where(x => x.WorkshopId == workshopId && x.ContractEnd.Date >= startOfMonth.Date &&
x.ContractStart.Date <= endOfMonth.Date).Select(x => new CustomizeCheckoutViewModel
private readonly IRollCallRepository _rollCallRepository;
private readonly CompanyContext _companyContext;
public CustomizeCheckoutTempRepository(CompanyContext context, IRollCallRepository rollCallRepository) : base(context)
{
EmployeeId = x.EmployeeId,
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractNo = x.ContractNo,
ContractStartFa = x.ContractStart.ToFarsi(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
}).ToList();
}
#endregion
public IEnumerable<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel)
{
var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee).ThenInclude(x => x.PersonnelCodeList)
.AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId);
#region parameters initialize
//start of search is the first day of the current month by default and end of search is today
var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date;
var endSearchDate = DateTime.Today;
var pc = new PersianCalendar();
var currentYear = pc.GetYear(DateTime.Now);
var currentMonth = pc.GetMonth(DateTime.Now);
if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) &&
searchModel.Year == 0 && searchModel.Month == 0)
{
var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date;
var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date;
if (queryEndDate > queryStartDate)
{
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate);
_companyContext = context;
_rollCallRepository = rollCallRepository;
}
if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 13)
#region Pooya
public List<CustomizeCheckoutViewModel> GetByWorkshopIdInDates(long workshopId, DateTime startOfMonth, DateTime endOfMonth)
{
var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime();
queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate);
queryEndDate = queryEndDate.AddDays(-1);
//if (queryEndDate < DateTime.Today)
//{
// startSearchDate = queryStartDate;
// endSearchDate = queryEndDate;
//}
if (searchModel.Year == currentYear && searchModel.Month == currentMonth)
return _companyContext.CustomizeCheckoutTemps.Where(x => x.WorkshopId == workshopId && x.ContractEnd.Date >= startOfMonth.Date &&
x.ContractStart.Date <= endOfMonth.Date).Select(x => new CustomizeCheckoutViewModel
{
queryEndDate = DateTime.Today.AddDays(-1);
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
else
{
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
query = query.Where(x => x.ContractEnd.Date <= endSearchDate && x.ContractEnd.Date >= startSearchDate);
EmployeeId = x.EmployeeId,
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractNo = x.ContractNo,
ContractStartFa = x.ContractStart.ToFarsi(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
}).ToList();
}
////Month Index operations
//startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate);
//startSearchDate.FindFirstDayOfNextMonth(out endSearchDate);
//endSearchDate = endSearchDate.AddDays(-1);
#endregion
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
switch (searchModel.OrderBy)
public IEnumerable<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel)
{
case CustomizeCheckoutOrderByEnum.ContractStartDesc:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractStart:
query = query.OrderBy(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractNoDesc:
query = query.OrderByDescending(x => x.ContractNo);
break;
case CustomizeCheckoutOrderByEnum.ContractNo:
query = query.OrderBy(x => x.ContractNo);
break;
default:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
}
var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee).ThenInclude(x => x.PersonnelCodeList)
.AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId);
#region parameters initialize
if (searchModel.Month == 0 || searchModel.Year == 0)
query = query.Skip(searchModel.PageIndex).Take(30);
//start of search is the first day of the current month by default and end of search is today
var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date;
var endSearchDate = DateTime.Today;
var pc = new PersianCalendar();
var currentYear = pc.GetYear(DateTime.Now);
var currentMonth = pc.GetMonth(DateTime.Now);
return query.Select(x => new CustomizeCheckoutViewModel()
{
Id = x.id,
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
ContractNo = x.ContractNo,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode,
Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(),
Year = pc.GetYear(x.ContractStart).ToString(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
TaxDeducation = x.TaxDeduction.ToMoney(),
TotalPayment = x.TotalPayment.ToMoney(),
TotalPaymentD = x.TotalPayment
}).ToList();
}
public List<CustomizeCheckoutViewModel> PrintAll(long workshopId, IEnumerable<long> customizeCheckoutIds)
{
//var pc = new PersianCalendar();
//var year = pc.GetYear(monthStart);
//var month = pc.GetMonth(monthStart);
IQueryable<CustomizeCheckoutTemp> customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.Where(x => customizeCheckoutIds.Contains(x.id));
IQueryable<Workshop> workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id));
IQueryable<long> workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId);
IQueryable<Employer> employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id));
IQueryable<PersonnelCodeDomain> personnelCodesQuery = _companyContext.PersonnelCodeSet
.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId));
//IQueryable<LeftWork> leftWorksQuery = _companyContext.LeftWorkList
// .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) &&
// x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd);
//IQueryable<Employee> employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id));
List<CustomizeCheckoutViewModel> customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel
{
Id = x.id,
WorkshopId = x.WorkshopId,
ContractId = x.ContractId == null ? 0 : x.ContractId.Value,
EmployeeId = x.EmployeeId,
Month = x.Month,
Year = x.Year,
ContractNo = x.ContractNo,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MarriedAllowance = x.MarriedAllowance.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
CreationDate = x.CreationDate,
SumOfWorkingDays = x.SumOfWorkingDays,
WorkshopName = x.WorkshopFullName,
DateOfBirth = x.DateOfBirth.ToFarsi(),
NationalCode = x.NationalCode,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel()
if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) &&
searchModel.Year == 0 && searchModel.Month == 0)
{
Amount = y.Amount,
FineDate = y.FineDateFa,
Title = y.Title
}).ToList(),
InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.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(),
RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel()
{
IsActive = r.IsActive,
Title = r.Title,
Amount = r.Amount,
AmountDouble = r.Amount.MoneyToDouble(),
Description = r.Description,
GrantDateFa = r.GrantDateFa,
GrantDateGr = r.GrantDate
}).ToList(),
SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date;
var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date;
}).ToList();
List<WorkshopViewModel> workshopsList = workshopsQuery.Select(x => new WorkshopViewModel
{
WorkshopFullName = x.WorkshopFullName,
Id = x.id
}).ToList();
List<EmployerViewModel> workshopEmployersList = employersQuery.Select(x => new EmployerViewModel
{
Id = x.id,
FullName = x.FullName
}).ToList();
//List<LeftWorkViewModel> leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel
//{
// EmployeeId = x.EmployeeId,
// WorkshopId = x.WorkshopId,
// Id = x.id,
// StartWorkDateGr = x.StartWorkDate,
// LeftWorkDateGr = x.LeftWorkDate
//}).ToList();
//List<EmployeeViewModel> employees = employeesQuery.Select(x => new EmployeeViewModel()
//{
// Id = x.id,
// FName = x.FName,
// LName = x.LName,
// FatherName = x.FatherName,
// NationalCode = x.NationalCode,
// DateOfBirth = x.DateOfBirth.ToFarsi()
//}).ToList();
List<PersonnelCodeViewModel> personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel
{
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
PersonnelCode = Convert.ToInt64(x.PersonnelCode)
}).ToList();
var date = customizeCheckoutsList.FirstOrDefault();
if (date == null)
return new();
var startDate = date.ContractStartGr.Date;
var endDate = date.ContractEndGr.AddDays(1).Date.AddTicks(-1);
List<PersonnelCheckoutDailyRollCallViewModel> personnelRollCalls = _rollCallRepository
.GetEmployeeRollCallsForCustomizeCheckoutTemp(customizeCheckoutsList.Select(x => x.Id).ToList(), workshopId);
int counter = 1;
foreach (var checkout in customizeCheckoutsList)
{
checkout.PrintCounter = counter++;
//var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId);
//checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr;
//var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId);
var rollCalls = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId);
checkout.EmployerList = workshopEmployersList;
checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-";
checkout.MonthlyRollCall = rollCalls;
checkout.MonthlyRollCall.DailyRollCalls = rollCalls.DailyRollCalls.Select(x =>
{
var isInRange = x.DateTimeGr >= checkout.ContractStartGr && x.DateTimeGr <= checkout.ContractEndGr;
return new CheckoutDailyRollCallViewModel()
if (queryEndDate > queryStartDate)
{
StartDate1 = isInRange ? x.StartDate1 : "",
EndDate1 = isInRange ? x.EndDate1 : "",
EndDate2 = isInRange ? x.EndDate2 : "",
StartDate2 = isInRange ? x.StartDate2 : "",
TotalWorkingHours = isInRange ? x.TotalWorkingHours : "",
DayOfWeek = x.DayOfWeek,
RollCallDateFa = x.RollCallDateFa,
DateTimeGr = x.DateTimeGr,
IsSliced = isInRange && x.IsSliced,
LeaveType = x.LeaveType,
IsBirthDay = x.IsBirthDay,
IsAbsent = x.IsAbsent,
IsFriday = x.IsFriday
};
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate);
}
if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 13)
{
var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime();
queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate);
queryEndDate = queryEndDate.AddDays(-1);
//if (queryEndDate < DateTime.Today)
//{
// startSearchDate = queryStartDate;
// endSearchDate = queryEndDate;
//}
if (searchModel.Year == currentYear && searchModel.Month == currentMonth)
{
queryEndDate = DateTime.Today.AddDays(-1);
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
else
{
startSearchDate = queryStartDate;
endSearchDate = queryEndDate;
}
query = query.Where(x => x.ContractEnd.Date <= endSearchDate && x.ContractEnd.Date >= startSearchDate);
}
////Month Index operations
//startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate);
//startSearchDate.FindFirstDayOfNextMonth(out endSearchDate);
//endSearchDate = endSearchDate.AddDays(-1);
#endregion
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
switch (searchModel.OrderBy)
{
case CustomizeCheckoutOrderByEnum.ContractStartDesc:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractStart:
query = query.OrderBy(x => x.ContractStart.Date);
break;
case CustomizeCheckoutOrderByEnum.ContractNoDesc:
query = query.OrderByDescending(x => x.ContractNo);
break;
case CustomizeCheckoutOrderByEnum.ContractNo:
query = query.OrderBy(x => x.ContractNo);
break;
default:
query = query.OrderByDescending(x => x.ContractStart.Date);
break;
}
if (searchModel.Month == 0 || searchModel.Year == 0)
query = query.Skip(searchModel.PageIndex).Take(30);
return query.Select(x => new CustomizeCheckoutViewModel()
{
Id = x.id,
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
ContractNo = x.ContractNo,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode,
Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(),
Year = pc.GetYear(x.ContractStart).ToString(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
MonthlySalary = x.MonthlySalary.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
SumOfWorkingDays = x.SumOfWorkingDays.ToString(),
TaxDeducation = x.TaxDeduction.ToMoney(),
TotalPayment = x.TotalPayment.ToMoney(),
TotalPaymentD = x.TotalPayment,
TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
}).ToList();
checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0;
}
return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList();
public List<CustomizeCheckoutViewModel> PrintAll(long workshopId, IEnumerable<long> customizeCheckoutIds)
{
//var pc = new PersianCalendar();
//var year = pc.GetYear(monthStart);
//var month = pc.GetMonth(monthStart);
IQueryable<CustomizeCheckoutTemp> customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.Where(x => customizeCheckoutIds.Contains(x.id));
IQueryable<Workshop> workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id));
IQueryable<long> workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId);
IQueryable<Employer> employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id));
IQueryable<PersonnelCodeDomain> personnelCodesQuery = _companyContext.PersonnelCodeSet
.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId));
//IQueryable<LeftWork> leftWorksQuery = _companyContext.LeftWorkList
// .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) &&
// x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd);
//IQueryable<Employee> employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id));
List<CustomizeCheckoutViewModel> customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel
{
Id = x.id,
WorkshopId = x.WorkshopId,
ContractId = x.ContractId == null ? 0 : x.ContractId.Value,
EmployeeId = x.EmployeeId,
Month = x.Month,
Year = x.Year,
ContractNo = x.ContractNo,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
OvertimePay = x.OverTimePay.ToMoney(),
NightworkPay = x.NightWorkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeduction.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoney(),
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MarriedAllowance = x.MarriedAllowance.ToMoney(),
ContractEndFa = x.ContractEnd.ToFarsi(),
ContractStartFa = x.ContractStart.ToFarsi(),
CreationDate = x.CreationDate,
SumOfWorkingDays = x.SumOfWorkingDays,
WorkshopName = x.WorkshopFullName,
DateOfBirth = x.DateOfBirth.ToFarsi(),
NationalCode = x.NationalCode,
EmployeeFName = x.EmployeeFName,
EmployeeLName = x.EmployeeLName,
EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(),
LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(),
FineDeduction = x.FineDeduction.ToMoney(),
FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel()
{
Amount = y.Amount,
FineDate = y.FineDateFa,
Title = y.Title
}).ToList(),
InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.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(),
RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel()
{
IsActive = r.IsActive,
Title = r.Title,
Amount = r.Amount,
AmountDouble = r.Amount.MoneyToDouble(),
Description = r.Description,
GrantDateFa = r.GrantDateFa,
GrantDateGr = r.GrantDate
}).ToList(),
SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
LateToWorkValue = x.LateToWorkValue == TimeSpan.Zero ? "-" : $"{(int)x.LateToWorkValue.TotalHours}:{x.LateToWorkValue.Minutes:D2}"
}).ToList();
List<WorkshopViewModel> workshopsList = workshopsQuery.Select(x => new WorkshopViewModel
{
WorkshopFullName = x.WorkshopFullName,
Id = x.id
}).ToList();
List<EmployerViewModel> workshopEmployersList = employersQuery.Select(x => new EmployerViewModel
{
Id = x.id,
FullName = x.FullName
}).ToList();
//List<LeftWorkViewModel> leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel
//{
// EmployeeId = x.EmployeeId,
// WorkshopId = x.WorkshopId,
// Id = x.id,
// StartWorkDateGr = x.StartWorkDate,
// LeftWorkDateGr = x.LeftWorkDate
//}).ToList();
//List<EmployeeViewModel> employees = employeesQuery.Select(x => new EmployeeViewModel()
//{
// Id = x.id,
// FName = x.FName,
// LName = x.LName,
// FatherName = x.FatherName,
// NationalCode = x.NationalCode,
// DateOfBirth = x.DateOfBirth.ToFarsi()
//}).ToList();
List<PersonnelCodeViewModel> personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel
{
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
PersonnelCode = Convert.ToInt64(x.PersonnelCode)
}).ToList();
var date = customizeCheckoutsList.FirstOrDefault();
if (date == null)
return new();
var startDate = date.ContractStartGr.Date;
var endDate = date.ContractEndGr.AddDays(1).Date.AddTicks(-1);
List<PersonnelCheckoutDailyRollCallViewModel> personnelRollCalls = _rollCallRepository
.GetEmployeeRollCallsForCustomizeCheckoutTemp(customizeCheckoutsList.Select(x => x.Id).ToList(), workshopId);
int counter = 1;
foreach (var checkout in customizeCheckoutsList)
{
checkout.PrintCounter = counter++;
//var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId);
//checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr;
//var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId);
var rollCalls = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId);
checkout.EmployerList = workshopEmployersList;
checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-";
checkout.MonthlyRollCall = rollCalls;
checkout.MonthlyRollCall.DailyRollCalls = rollCalls.DailyRollCalls.Select(x =>
{
var isInRange = x.DateTimeGr >= checkout.ContractStartGr && x.DateTimeGr <= checkout.ContractEndGr;
return new CheckoutDailyRollCallViewModel()
{
StartDate1 = isInRange ? x.StartDate1 : "",
EndDate1 = isInRange ? x.EndDate1 : "",
EndDate2 = isInRange ? x.EndDate2 : "",
StartDate2 = isInRange ? x.StartDate2 : "",
TotalWorkingHours = isInRange ? x.TotalWorkingHours : "",
DayOfWeek = x.DayOfWeek,
RollCallDateFa = x.RollCallDateFa,
DateTimeGr = x.DateTimeGr,
IsSliced = isInRange && x.IsSliced,
LeaveType = x.LeaveType,
IsBirthDay = x.IsBirthDay,
IsAbsent = x.IsAbsent,
IsFriday = x.IsFriday,
EnterDifferencesMinutes1 = isInRange ? x.EnterDifferencesMinutes1 : "",
EnterDifferencesMinutes2 = isInRange ? x.EnterDifferencesMinutes2 : "",
ExitDifferencesMinutes1 = isInRange ? x.ExitDifferencesMinutes1 : "",
ExitDifferencesMinutes2 = isInRange ? x.ExitDifferencesMinutes2 : ""
};
}).ToList();
checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0;
}
return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList();
}
public void RemoveEmployeeTemporaryCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth)
{
var checkout = _companyContext.CustomizeCheckoutTemps.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId &&
x.ContractStart.Date <= endOfMonth.Date && x.ContractEnd.Date >= startOfMonth.Date);
if (checkout != null)
_companyContext.CustomizeCheckoutTemps.Remove(checkout);
}
public IEnumerable<CustomizeCheckoutTemp> GetRange(long workshopId, List<long> ids)
{
return _companyContext.CustomizeCheckoutTemps.Where(x => x.WorkshopId == workshopId && ids.Contains(x.id));
}
}
public void RemoveEmployeeTemporaryCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth)
{
var checkout = _companyContext.CustomizeCheckoutTemps.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId &&
x.ContractStart.Date <= endOfMonth.Date && x.ContractEnd.Date >= startOfMonth.Date);
if (checkout != null)
_companyContext.CustomizeCheckoutTemps.Remove(checkout);
}
public IEnumerable<CustomizeCheckoutTemp> GetRange(long workshopId,List<long> ids)
{
return _companyContext.CustomizeCheckoutTemps.Where(x =>x.WorkshopId==workshopId && ids.Contains(x.id));
}
}
}

View File

@@ -103,8 +103,8 @@ public class ReportRepository : IReportRepository
// result.workshopEmployer,
// contractingParties
// }).Where(x=>x.contractingParties.IsBlock == "false" && x.contractingParties.IsActiveString == "true")
// ;
//Console.ForegroundColor = ConsoleColor.Green;
//Console.WriteLine("Active Workshop Join contractingParties : " + leftsActiveContractingParties.Count());
@@ -140,16 +140,24 @@ public class ReportRepository : IReportRepository
//Console.ForegroundColor = ConsoleColor.Green;
//Console.WriteLine("Active Workshop2 : " + workshops.Sum(x=>x.LeftWorks.Count));
var accountLeftWork = _accountContext.AccountLeftWorks
var accountLeftWorks = _accountContext.AccountLeftWorks
.Where(x => x.RoleId == 5)
.Where(x => x.StartWorkGr < currentMonthEnd && x.LeftWorkGr > currentMonthStart)
.Select(x => x.WorkshopId);
.Where(x => x.StartWorkGr < currentMonthEnd && x.LeftWorkGr > currentMonthStart);
var allAccountLeftWorkWorkshopIds = accountLeftWorks.Select(x => x.WorkshopId).ToList();
var e = _context.WorkshopEmployers
.Where(x => allAccountLeftWorkWorkshopIds.Contains(x.WorkshopId))
.Include(x => x.Employer)
.ThenInclude(x => x.ContractingParty)
.Where(c => c.Employer.ContractingParty.IsBlock !="true" && c.Employer.ContractingParty.IsActiveString == "true");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("AccountLeftWork Count : " + accountLeftWork.Count());
Console.WriteLine("AccountLeftWork Count : " + allAccountLeftWorkWorkshopIds.Count());
int i = 1;
foreach (var item in accountLeftWork)
foreach (var item in e)
{
Console.WriteLine(i + " - " + item);
Console.WriteLine(i + " - " + "isActive : " + item.Employer.ContractingParty.IsActiveString + " isBlock : " + item.Employer.ContractingParty.IsBlock + " workshopId : " + item.WorkshopId);
i++;
}
return new();

View File

@@ -2264,80 +2264,82 @@ CreateWorkingHoursTemp command, bool holidayWorking)
#region LateToWork & EarlyExit
var lateToWorkEarlyExit = LateToWorkEarlyExit(groupedRollCall, shiftSettings, leaveList);
foreach (var i in lateToWorkEarlyExit)
{
Console.WriteLine(" start : " + i.StartSpan + " end : " + i.EndSpan + " spaning : " + i.Spanning + " Type : " + i.TypeOfSapn);
}
//var lateToWorkEarlyExit = LateToWorkEarlyExit(groupedRollCall, shiftSettings, leaveList);
//foreach (var i in lateToWorkEarlyExit)
//{
// Console.WriteLine(" start : " + i.StartSpan + " end : " + i.EndSpan + " spaning : " + i.Spanning + " Type : " + i.TypeOfSapn);
//}
var lateToWoks = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "LateToWork");
var earlyExits = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "EarlyExist");
//var lateToWoks = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "LateToWork");
//var earlyExits = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "EarlyExist");
var lateToWork = new TimeSpan(lateToWoks.Sum(x => x.Spanning.Ticks));
var earlyExist = new TimeSpan(earlyExits.Sum(x => x.Spanning.Ticks));
var totalSpaning = new TimeSpan(lateToWorkEarlyExit.Sum(x => x.Spanning.Ticks));
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(" LateToWork H : " + (int)lateToWork.TotalHours + " M : " + (int)(lateToWork.TotalMinutes % 60));
Console.WriteLine(" EarlyExist H : " + (int)earlyExist.TotalHours + " M : " + (int)(earlyExist.TotalMinutes % 60));
Console.WriteLine(" TotalSpaning H : " + (int)totalSpaning.TotalHours + " M : " + (int)(totalSpaning.TotalMinutes % 60));
Console.ResetColor();
//var lateToWork = new TimeSpan(lateToWoks.Sum(x => x.Spanning.Ticks));
//var earlyExist = new TimeSpan(earlyExits.Sum(x => x.Spanning.Ticks));
//var totalSpaning = new TimeSpan(lateToWorkEarlyExit.Sum(x => x.Spanning.Ticks));
//Console.ForegroundColor = ConsoleColor.Yellow;
//Console.WriteLine(" LateToWork H : " + (int)lateToWork.TotalHours + " M : " + (int)(lateToWork.TotalMinutes % 60));
//Console.WriteLine(" EarlyExist H : " + (int)earlyExist.TotalHours + " M : " + (int)(earlyExist.TotalMinutes % 60));
//Console.WriteLine(" TotalSpaning H : " + (int)totalSpaning.TotalHours + " M : " + (int)(totalSpaning.TotalMinutes % 60));
//Console.ResetColor();
//double earlyExitDeduction = 0;
//double lateToWorkDeduction = 0;
//////محاسبه مزد روزانه به ازای هر دقیقه
////double dailyWagePerMinute =
//// (customizeWorkshopEmployeeSettings.Salary / monthDays) / sumOfEmployeeShiftSpan.TotalMinutes;
//if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType != EarlyExitType.None && earlyExist > new TimeSpan())
//{
// earlyExitDeduction = customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType switch
// {
// EarlyExitType.Default => earlyExist.TotalMinutes * minuteWage,
// EarlyExitType.MoneyPerMinute => earlyExist.TotalMinutes * customizeWorkshopEmployeeSettings.EarlyExit.Value,
// _ => 0
// };
//}
//if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType != LateToWorkType.None && lateToWork > new TimeSpan())
//{
// lateToWorkDeduction = customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType switch
// {
// LateToWorkType.Default => lateToWork.TotalMinutes * minuteWage,
// LateToWorkType.MoneyPerMinute => lateToWork.TotalMinutes * customizeWorkshopEmployeeSettings.LateToWork.Value,
// _ => 0
// };
//}
//if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines.Any())
//{
// lateToWorkDeduction +=
// (from lateToWorkTimeFine in customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines
// let stepFine = lateToWoks.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(lateToWorkTimeFine.Minute))
// select stepFine * lateToWorkTimeFine.FineMoney).Sum();
//}
//if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines.Any())
//{
// earlyExitDeduction +=
// (from earlyExitFine in customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines
// let stepFine = earlyExits.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(earlyExitFine.Minute))
// select stepFine * earlyExitFine.FineMoney).Sum();
//}
double earlyExitDeduction = 0;
double lateToWorkDeduction = 0;
////محاسبه مزد روزانه به ازای هر دقیقه
//double dailyWagePerMinute =
// (customizeWorkshopEmployeeSettings.Salary / monthDays) / sumOfEmployeeShiftSpan.TotalMinutes;
if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType != EarlyExitType.None && earlyExist > new TimeSpan())
{
earlyExitDeduction = customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType switch
{
EarlyExitType.Default => earlyExist.TotalMinutes * minuteWage,
EarlyExitType.MoneyPerMinute => earlyExist.TotalMinutes * customizeWorkshopEmployeeSettings.EarlyExit.Value,
_ => 0
};
}
if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType != LateToWorkType.None && lateToWork > new TimeSpan())
{
lateToWorkDeduction = customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType switch
{
LateToWorkType.Default => lateToWork.TotalMinutes * minuteWage,
LateToWorkType.MoneyPerMinute => lateToWork.TotalMinutes * customizeWorkshopEmployeeSettings.LateToWork.Value,
_ => 0
};
}
if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines.Any())
{
lateToWorkDeduction +=
(from lateToWorkTimeFine in customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines
let stepFine = lateToWoks.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(lateToWorkTimeFine.Minute))
select stepFine * lateToWorkTimeFine.FineMoney).Sum();
}
if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines.Any())
{
earlyExitDeduction +=
(from earlyExitFine in customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines
let stepFine = earlyExits.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(earlyExitFine.Minute))
select stepFine * earlyExitFine.FineMoney).Sum();
}
lateToWorkDeduction = 0;
TimeSpan totalLateToWorkSpan = TimeSpan.Zero;
foreach (var rollCall in groupedRollCall)
{
var rollCallShift = rollCall.TotalShiftDurationTimeSpan;
var dayMinuteWage = rollCallShift.TotalMinutes == 0 ? 0 : (dailyWage / rollCallShift.TotalMinutes);
lateToWorkDeduction += dayMinuteWage * rollCall.TotalLateEntryDuration.TotalMinutes;
var minutes = rollCall.TotalLateEntryDuration.TotalMinutes;
lateToWorkDeduction += dayMinuteWage * minutes;
totalLateToWorkSpan = totalLateToWorkSpan.Add(rollCall.TotalLateEntryDuration);
}
@@ -2346,38 +2348,40 @@ CreateWorkingHoursTemp command, bool holidayWorking)
return new CustomizeCheckoutMandatoryViewModel
{
InsuranceDeduction = insuranceDeductionAmount,
FridayPay = fridayPayAmount,
OverTimePay = overtimePayAmount,
BaseYearsPay = baseYearsPayAmount,
NightWorkPay = nightworkPayAmount,
MarriedAllowance = maritalAllowancePay,
FamilyAllowance = familyAllowancePay,
LeavePay = leavePayAmount,
FineAbsenceDeduction = absentsDeductionAmount,
BonusesPay = bonusesPayAmount,
InsuranceDeduction = Math.Truncate(insuranceDeductionAmount),
FridayPay = Math.Truncate(fridayPayAmount),
OverTimePay = Math.Truncate(overtimePayAmount),
BaseYearsPay = Math.Truncate(baseYearsPayAmount),
NightWorkPay = Math.Truncate(nightworkPayAmount),
MarriedAllowance = Math.Truncate(maritalAllowancePay),
FamilyAllowance = Math.Truncate(familyAllowancePay),
LeavePay = Math.Truncate(leavePayAmount),
FineAbsenceDeduction = Math.Truncate(absentsDeductionAmount),
BonusesPay = Math.Truncate(bonusesPayAmount),
ContractEndFa = contractEnd.ToFarsi(),
ContractStartFa = contractStart.ToFarsi(),
EmployeeName = employee.FullName,
InstallmentDeduction = loanDeduction,
SalaryAidDeduction = salaryAidDeduction,
FineDeduction = fineDeduction,
RewardPay = rewardPay,
InstallmentDeduction = Math.Truncate(loanDeduction),
SalaryAidDeduction = Math.Truncate(salaryAidDeduction),
FineDeduction = Math.Truncate(fineDeduction),
RewardPay = Math.Truncate(rewardPay),
Month = monthOfCheckout,
Year = yearOfCheckout,
LateToWorkDeduction = lateToWorkDeduction,
EarlyExitDeduction = earlyExitDeduction,
LateToWorkDeduction = Math.Truncate(lateToWorkDeduction),
EarlyExitDeduction = 0,
ShiftPay = 0,
TaxDeduction = 0,
EmployeeId = employeeId,
SumOfWorkingDays = totalDays.ToString(),
ContractNo = contract?.ContractNo ?? "-",
MonthlySalary = dailyWage * mandatoryDays,
MonthlySalary = Math.Truncate(dailyWage * mandatoryDays),
PersonnelCode = personnelCode,
FineViewModels = fineViewModels,
InstallmentViewModels = loanInstallments,
SalaryAidViewModels = salaryAidViewModel,
RewardViewModels = rewardViewModels
RewardViewModels = rewardViewModels,
LateToWorkValue = totalLateToWorkSpan
};
}

View File

@@ -362,13 +362,16 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
var presentDays = rollCalls.Where(x => x.EmployeeId == employeeId).GroupBy(x => x.ShiftDate.Date).Select(x =>
{
var orderedRollcalls = x.OrderBy(y => y.StartDate!.Value).ToList();
var firstRollCall = orderedRollcalls.FirstOrDefault();
var secondRollCall = orderedRollcalls.Skip(1).FirstOrDefault();
return new CheckoutDailyRollCallViewModel()
{
StartDate1 = orderedRollcalls.FirstOrDefault()?.StartDate?.ToString("HH:mm"),
EndDate1 = orderedRollcalls.FirstOrDefault()?.EndDate?.ToString("HH:mm"),
StartDate1 = firstRollCall?.StartDate?.ToString("HH:mm"),
EndDate1 = firstRollCall?.EndDate?.ToString("HH:mm"),
StartDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.StartDate?.ToString("HH:mm") ?? "",
EndDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.EndDate?.ToString("HH:mm") ?? "",
StartDate2 = secondRollCall?.StartDate?.ToString("HH:mm") ?? "",
EndDate2 = secondRollCall?.EndDate?.ToString("HH:mm") ?? "",
TotalhourseSpan =
new TimeSpan(x.Where(y => y.EndDate != null).Sum(y => (y.EndDate - y.StartDate)!.Value.Ticks)),
@@ -376,7 +379,18 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
RollCallDateFa = x.Key.Date.ToFarsi(),
DateTimeGr = x.Key.Date,
IsSliced = x.Count() > 2,
IsAbsent = false
IsAbsent = false,
EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170
? CalculateEntryMinuteDifference(firstRollCall.EarlyEntryDuration,
firstRollCall.LateEntryDuration)
: "",
ExitDifferencesMinutes1 = "",
EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170
? CalculateEntryMinuteDifference(secondRollCall.EarlyEntryDuration,
secondRollCall.LateEntryDuration)
: "",
ExitDifferencesMinutes2 = ""
};
});
presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel
@@ -390,7 +404,11 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
RollCallDateFa = x.RollCallDateFa,
DateTimeGr = x.DateTimeGr,
IsSliced = x.IsSliced,
IsAbsent = false
IsAbsent = false,
EnterDifferencesMinutes1 = x.EnterDifferencesMinutes1,
ExitDifferencesMinutes1 = x.ExitDifferencesMinutes1,
EnterDifferencesMinutes2 = x.EnterDifferencesMinutes2,
ExitDifferencesMinutes2 = x.ExitDifferencesMinutes2
});
@@ -416,7 +434,49 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
}
private string CalculateExitMinuteDifference(TimeSpan early, TimeSpan late)
{
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
{
return "-";
}
else if (late != TimeSpan.Zero)
{
var minutes = late.TotalMinutes > 99 ? "99" : late.TotalMinutes.ToString();
return $"{minutes}+";
}
else if (early != TimeSpan.Zero)
{
var minutes = early.TotalMinutes > 99 ? "99" : early.TotalMinutes.ToString();
return $"{minutes}-";
}
else
{
return $"";
}
}
private string CalculateEntryMinuteDifference(TimeSpan early, TimeSpan late)
{
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
{
return "-";
}
else if (late != TimeSpan.Zero)
{
var minutes = late.TotalMinutes > 99 ? "99" : late.TotalMinutes.ToString();
return $"{minutes}-";
}
else if (early != TimeSpan.Zero)
{
var minutes = early.TotalMinutes > 99 ? "99" : early.TotalMinutes.ToString();
return $"{minutes}+";
}
else
{
return $"";
}
}
//خواسته کارفرما: هنگام جستجوی کارمند حضور غیاب های فرد در قالب های یک ماهه ظاهر شوند
//این قالب ها متناسب با جستجوی کاربر، یا حضور غیاب های موجود، ممکن است بازه ای کمتر از یک ماه را شامل باشد
@@ -610,6 +670,48 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
};
}
private string CalculateExitTimeDifferences(TimeSpan early, TimeSpan late)
{
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
{
return "-";
}
else if (late != TimeSpan.Zero)
{
return $"{late.Hours}:{late.Minutes:00}+";
}
else if (early != TimeSpan.Zero)
{
return $"{early.Hours}:{early.Minutes:00}-";
}
else
{
return $"";
}
}
private string CalculateEntryTimeDifferences(TimeSpan early, TimeSpan late)
{
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
{
return "-";
}
else if (late != TimeSpan.Zero)
{
return $"{late.Hours}:{late.Minutes:00}-";
}
else if (early != TimeSpan.Zero)
{
return $"{early.Hours}:{early.Minutes:00}+";
}
else
{
return $"";
}
}
//Without Paginate, With EndDate==null, without undefined, Ordered Descending By StartDate
public List<RollCallViewModel> GetEmployeeRollCallsHistoryAllInDates(long workshopId, long employeeId, DateTime start, DateTime end)
{
@@ -1522,7 +1624,9 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
IsAbsent = leave == null && isInContractRange && (isNormalWorkingDay ||
(worksInFriday && x.Date.DayOfWeek ==
DayOfWeek.Friday) ||
(worksInHolidays && isHoliday))
(worksInHolidays && isHoliday)),
};
});
@@ -1530,13 +1634,16 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
x =>
{
var orderedRollcalls = x.OrderBy(y => y.ShiftDate).ToList();
var firstRollCall = orderedRollcalls.FirstOrDefault();
var secondRollCall = orderedRollcalls.Skip(1).FirstOrDefault();
return new CheckoutDailyRollCallViewModel()
{
StartDate1 = orderedRollcalls.FirstOrDefault()?.StartDate?.ToString("HH:mm"),
EndDate1 = orderedRollcalls.FirstOrDefault()?.EndDate?.ToString("HH:mm"),
StartDate1 = firstRollCall?.StartDate?.ToString("HH:mm"),
EndDate1 = firstRollCall?.EndDate?.ToString("HH:mm"),
StartDate2 = secondRollCall?.StartDate?.ToString("HH:mm") ?? "",
EndDate2 = secondRollCall?.EndDate?.ToString("HH:mm") ?? "",
StartDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.StartDate?.ToString("HH:mm") ?? "",
EndDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.EndDate?.ToString("HH:mm") ?? "",
TotalhourseSpan =
new TimeSpan(x.Where(y => y.EndDate != null)
@@ -1545,7 +1652,19 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
RollCallDateFa = x.Key.Date.ToFarsi(),
DateTimeGr = x.Key.Date,
IsSliced = x.Count() > 2,
IsAbsent = false
IsAbsent = false,
EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170
? CalculateEntryMinuteDifference(firstRollCall.EarlyEntryDuration,
firstRollCall.LateEntryDuration)
: "",
ExitDifferencesMinutes1 = "",
EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170
? CalculateEntryMinuteDifference(secondRollCall.EarlyEntryDuration,
secondRollCall.LateEntryDuration)
: "",
ExitDifferencesMinutes2 = ""
};
});
presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel
@@ -1559,7 +1678,11 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
RollCallDateFa = x.RollCallDateFa,
DateTimeGr = x.DateTimeGr,
IsSliced = x.IsSliced,
IsAbsent = false
IsAbsent = false,
EnterDifferencesMinutes1 = x.EnterDifferencesMinutes1,
EnterDifferencesMinutes2 = x.EnterDifferencesMinutes2,
ExitDifferencesMinutes1 = x.ExitDifferencesMinutes1,
ExitDifferencesMinutes2 = x.ExitDifferencesMinutes2
});

View File

@@ -43,13 +43,13 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
public IActionResult OnPostShiftDate()
{
//var startRollCall = new DateTime(2025, 2, 19);
//var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall);
var startRollCall = new DateTime(2025, 2, 19);
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall);
//var endedRollCalls = rollCalls.Where(x => x.EndDate != null).ToList();
var endedRollCalls = rollCalls.Where(x => x.EndDate != null).ToList();
//var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList();
//RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls);
var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList();
RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls);
ViewData["message"] = "تومام Refactor";
return Page();
@@ -57,30 +57,30 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
public IActionResult OnPostShiftDateNew()
{
//var startRollCall = new DateTime(2025, 2, 19);
//var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall).ToList();
//var r1 = rollCalls.Take(3000).ToList();
//Console.ForegroundColor = ConsoleColor.DarkRed;
//Console.WriteLine("endStep 1 ============");
//SetRollCall(r1);
var startRollCall = new DateTime(2025, 2, 19);
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall).ToList();
var r1 = rollCalls.Take(3000).ToList();
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine("endStep 1 ============");
SetRollCall(r1);
ViewData["message"] = "تومام یک";
return Page();
}
public IActionResult OnPostShiftDateNew2()
{
//var startRollCall = new DateTime(2025, 2, 19);
//var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall).ToList();
var startRollCall = new DateTime(2025, 2, 19);
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall).ToList();
//var r2 = rollCalls.Skip(3000).ToList();
var r2 = rollCalls.Skip(3000).ToList();
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("endStep 2 ============");
SetRollCall2(r2);
//Console.ForegroundColor = ConsoleColor.Yellow;
//Console.WriteLine("endStep 2 ============");
//SetRollCall2(r2);
ViewData["message"] = "تومام دو";
return Page();
}

View File

@@ -248,7 +248,7 @@
</svg>
<span>پرینت گروهی</span>
</button>
<button onclick="showExcelAllModal()" class="btn-excel text-nowrap" type="button" Permission="@SubAccountPermissionHelper.ExcelCustomizeCheckoutTempPermissionCode">
<button onclick="downloadExcelAll()" class="btn-excel text-nowrap" type="button" Permission="@SubAccountPermissionHelper.ExcelCustomizeCheckoutTempPermissionCode">
<svg width="20" height="20" viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg" fill="#000000">
<g id="SVGRepo_bgCarrier" stroke-width="1"></g>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>

View File

@@ -246,7 +246,7 @@
<span>پرینت گروهی</span>
</button>
<button onclick="showExcelAllModal()" class="btn-excel text-nowrap me-1" type="button" Permission="@SubAccountPermissionHelper.ExcelCustomizeCheckoutPermissionCode">
<button onclick="excelDownloadAll()" class="btn-excel text-nowrap me-1" type="button" Permission="@SubAccountPermissionHelper.ExcelCustomizeCheckoutPermissionCode">
<svg width="20" height="20" viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg" fill="#000000">
<g id="SVGRepo_bgCarrier" stroke-width="1"></g>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>

View File

@@ -291,7 +291,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout
return File(excelBytes,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
$"گزارش تجمیعی فیش حقوقی غیر رسمی موقت.xlsx");
$"گزارش تجمیعی فیش حقوقی غیر رسمی نهایی.xlsx");
}

View File

@@ -130,7 +130,7 @@
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.RewardPay == "0" ? "-" : Model.RewardPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> تاخیر در ورود </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.LateToWorkValue </td>
<td style="text-align: center;"> @(Model.LateToWorkDeduction == "0" ? "-" : Model.LateToWorkDeduction) </td>
</tr>
@@ -244,69 +244,109 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@(Model.MonthlyRollCall.DailyRollCalls[i].IsHoliday || Model.MonthlyRollCall.DailyRollCalls[i].IsFriday ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsiWithoutYear() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall.DailyRollCalls[i].IsAbsent)
{
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(Model.MonthlyRollCall.DailyRollCalls[i].LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes2</td>
}
else
{
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@Model.MonthlyRollCall.DailyRollCalls[i].LeaveType
</span>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@Model.MonthlyRollCall.DailyRollCalls[i].LeaveType
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}
@@ -334,14 +374,25 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -351,55 +402,81 @@
@foreach (var day in Model.MonthlyRollCall.DailyRollCalls)
{
<tr style="@((day.IsFriday || day.IsHoliday) ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsiWithoutYear() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (day.IsAbsent)
{
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (day.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (day.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(day.LeaveType))
{
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes2</td>
}
else
{
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@day.LeaveType
</span>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (day.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@day.LeaveType
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (day.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}

View File

@@ -132,7 +132,7 @@
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.RewardPay == "0" ? "-" : Model.RewardPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> تاخیر در ورود </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.LateToWorkValue </td>
<td style="text-align: center;"> @(Model.LateToWorkDeduction == "0" ? "-" : Model.LateToWorkDeduction) </td>
</tr>
@@ -246,69 +246,109 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@(Model.MonthlyRollCall.DailyRollCalls[i].IsHoliday || Model.MonthlyRollCall.DailyRollCalls[i].IsFriday ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") max-height:16px; font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<tr style="@(Model.MonthlyRollCall.DailyRollCalls[i].IsHoliday || Model.MonthlyRollCall.DailyRollCalls[i].IsFriday ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsiWithoutYear() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall.DailyRollCalls[i].IsAbsent)
{
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px;max-height:16px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px;display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">
غیبت
</span>
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(Model.MonthlyRollCall.DailyRollCalls[i].LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@Model.MonthlyRollCall.DailyRollCalls[i].LeaveType
</span>
@Model.MonthlyRollCall.DailyRollCalls[i].LeaveType
</span>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px;max-height:16px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}
@@ -336,14 +376,25 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -352,10 +403,12 @@
}
@foreach (var day in Model.MonthlyRollCall.DailyRollCalls)
{
<tr style="@((day.IsFriday || day.IsHoliday) ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") max-height:16px; font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<tr style="@((day.IsFriday || day.IsHoliday) ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsiWithoutYear() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (day.IsAbsent)
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
@@ -365,43 +418,67 @@
</div>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC;max-height:16px; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (day.IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(day.LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px;; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@day.LeaveType
</span>
</div>
</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC;max-height:16px; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex; justify-content: center;">
@if (day.IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}

View File

@@ -105,7 +105,7 @@
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.RewardPay == "0" ? "-" : Model.RewardPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> تاخیر در ورود </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.LateToWorkValue </td>
<td style="text-align: center;"> @(Model.LateToWorkDeduction == "0" ? "-" : Model.LateToWorkDeduction) </td>
</tr>
@@ -219,23 +219,36 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@(Model.MonthlyRollCall.DailyRollCalls[i].IsHoliday || Model.MonthlyRollCall.DailyRollCalls[i].IsFriday ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsiWithoutYear() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall.DailyRollCalls[i].IsAbsent)
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
@@ -245,28 +258,47 @@
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0">
<div class="col-7 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(Model.MonthlyRollCall.DailyRollCalls[i].LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@@ -274,14 +306,22 @@
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}
@@ -309,14 +349,25 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -326,9 +377,11 @@
@foreach (var day in Model.MonthlyRollCall.DailyRollCalls)
{
<tr style="@((day.IsFriday || day.IsHoliday) ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsiWithoutYear() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (day.IsAbsent)
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
@@ -338,43 +391,67 @@
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (day.IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(day.LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@day.LeaveType
@day.LeaveType
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<div style="display: flex; justify-content: center;">
@if (day.IsBirthDay)
{
<span style="width: 38px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}

View File

@@ -2,25 +2,25 @@
@model CompanyManagment.App.Contracts.CustomizeCheckout.CustomizeCheckoutViewModel
@{
<style>
.trTable:nth-child(even) {
background-color: #f1f1f1 !important;
}
.trTable:nth-child(even) {
background-color: #f1f1f1 !important;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}
.table-container table {
flex: 1; /*Ensures equal width */
}
.table-container table {
flex: 1; /*Ensures equal width */
}
table {
width: 100%;
max-width: 100%;
table-layout: auto;
}
table {
width: 100%;
max-width: 100%;
table-layout: auto;
}
</style>
}
@@ -104,7 +104,7 @@
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.RewardPay == "0" ? "-" : Model.RewardPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> تاخیر در ورود </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.LateToWorkValue </td>
<td style="text-align: center;"> @(Model.LateToWorkDeduction == "0" ? "-" : Model.LateToWorkDeduction) </td>
</tr>
@@ -218,23 +218,36 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@(Model.MonthlyRollCall.DailyRollCalls[i].IsHoliday || Model.MonthlyRollCall.DailyRollCalls[i].IsFriday ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.ToFarsiWithoutYear() - @Model.MonthlyRollCall.DailyRollCalls[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall.DailyRollCalls[i].IsAbsent)
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
@@ -242,31 +255,49 @@
غیبت
</span>
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 40px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
<div class="col-7 px-0">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(Model.MonthlyRollCall.DailyRollCalls[i].LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EnterDifferencesMinutes2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].StartDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@Model.MonthlyRollCall.DailyRollCalls[i].ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@@ -274,14 +305,22 @@
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<div style="display: flex; justify-content: center;">
@if (Model.MonthlyRollCall.DailyRollCalls[i].IsBirthDay)
{
<span style="width: 40px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}
@@ -309,14 +348,25 @@
<table style="width: 100%">
<thead style="background-color: #AFAFAF;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<tr style="font-size: 8px;border-collapse: separate;background-color: #AFAFAF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<th style="font-size: 8px !important;width: 28%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 14%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 16%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px !important;width: 20%;padding: 2px 10px !important;border-left: 0;border-radius: 0 5px 5px 0 !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;">تاریخ @Model.Year</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 7%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 6%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">+ -</th>
<th style="font-size: 8px;text-align: center;width: 10%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">استراحت</th>
<th style="font-size: 8px;text-align: center;width: 8%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">منقطع</th>
<th style="font-size: 8px;text-align: center;width: 10%; border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -326,9 +376,11 @@
@foreach (var day in Model.MonthlyRollCall.DailyRollCalls)
{
<tr style="@((day.IsFriday || day.IsHoliday) ? "background-color: #BBBBBB !important;" : "background-color: #FFFFFF !important;") font-size: 8px;border-collapse: separate;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="font-size: 8px; padding: 1px 3px;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid; border-radius: 0 5px 5px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.DateTimeGr.ToFarsiWithoutYear() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (day.IsAbsent)
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-6 px-0" style="display: flex;align-items: center;justify-content: center;">
@@ -338,28 +390,46 @@
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div class="row" style="display: flex; justify-content: center;">
<div class="col-7 px-0">
@if (day.IsBirthDay)
{
<span style="width: 40px;display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
else
{
@if (string.IsNullOrWhiteSpace(day.LeaveType))
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate1</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes1</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EnterDifferencesMinutes2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 0;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.StartDate2</td>
<td style="font-size: 8px !important; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.EndDate2</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">@day.ExitDifferencesMinutes2</td>
}
else
{
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;font-size: 7.5px;font-weight: 500;">
@@ -367,14 +437,20 @@
</span>
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
<td colspan="2" style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="display: flex;justify-content: center;">
@if (day.IsBirthDay)
<div style="display: flex; justify-content: center;">
@if (day.IsBirthDay)
{
<span style="display: block;border-radius: 50px;background-color: #fff;color: #737373;border: 1px solid #737373;">تولد</span>
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</td>
<td style="font-size: 8px; text-align: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">-</td>
}
}

View File

@@ -70,7 +70,7 @@ namespace ServiceHost.Pages
public IActionResult OnGet()
{
// _reportRepository.GetAllActiveWorkshopsNew("1403", "12");
// _reportRepository.GetAllActiveWorkshopsNew("1403", "12");
HasApkToDownload = _androidApkVersionApplication.HasAndroidApkToDownload();

View File

@@ -12,10 +12,10 @@
//"MesbahDb": "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True"
//server
"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
//"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
//local
//"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;"
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;"
},
"GoogleRecaptchaV3": {
"SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH",

View File

@@ -1597,7 +1597,6 @@ function showExcelAllModal() {
window.location.href = showCheckoutExcelModalUrl;
}
function downloadExcelAll() {
var idlist = "";
$('.foo').each(function () {
@@ -1627,6 +1626,35 @@ function downloadExcelAll() {
}
}
//function downloadExcelAll() {
// var idlist = "";
// $('.foo').each(function () {
// if ($(this).is(":checked")) {
// var a = $(this).val();
// var b = a + "+";
// idlist += b;
// }
// });
// var filterArray = [];
// $("input[name='filter[]']:checked").each(function () {
// filterArray.push($(this).val());
// });
// if (idlist !== "") {
// //var url = CheckoutExcelAllUrl + "&idList=" + idlist;
// var url = CheckoutExcelAllUrl + "&idList=" + encodeURIComponent(idlist);
// filterArray.forEach(function (filter) {
// url += "&filter=" + encodeURIComponent(filter);
// });
// window.open(url, "_blank");
// }
//}
function printAllMobile() {
var idlist = "";
var year = $('#Year').val();

View File

@@ -1595,12 +1595,42 @@ function showExcelAllModal() {
}, 3500);
return
}
window.location.href = showCheckoutExcelModalUrl;
downloadExcelAll()
/* window.location.href = showCheckoutExcelModalUrl;*/
}
function downloadExcelAll() {
function excelDownloadAll() {
var idlist = "";
var year = $('#Year').val();
var month = $('#Month').val();
if (year === '0' || month === '0') {
$('#dropdown-year').addClass("errored");
$('#dropdown-month').addClass("errored");
$('.alert-msg').show();
$('.alert-msg p').text('لطفا سال و ماه را انتخاب نموده و جستجو نمایید');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
$('#dropdown-year').removeClass("errored");
$('#dropdown-month').removeClass("errored");
}, 3500);
return
}
if (!($('input:checkbox').is(":checked"))) {
$('.alert-msg').show();
$('.alert-msg p').text('هیچ موردی انتخاب نشده است.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
return
}
$('.foo').each(function () {
if ($(this).is(":checked")) {
@@ -1611,23 +1641,49 @@ function downloadExcelAll() {
}
});
var filterArray = [];
$("input[name='filter[]']:checked").each(function () {
filterArray.push($(this).val());
});
if (idlist !== "") {
//var url = CheckoutExcelAllUrl + "&idList=" + idlist;
var url = CheckoutExcelAllUrl + "&idList=" + encodeURIComponent(idlist);
filterArray.forEach(function (filter) {
url += "&filter=" + encodeURIComponent(filter);
});
var yearFa = '&yearFa=' + year;
var monthFa = '&monthFa=' + month;
var url = CheckoutExcelAllUrl + '&idlist=' + idlist;
//console.log(url + '?checkoutId=' + idlist + yearFa + monthFa);
window.open(url, "_blank");
}
}
//function downloadExcelAll() {
// var idlist = "";
// $('.foo').each(function () {
// if ($(this).is(":checked")) {
// var a = $(this).val();
// var b = a + "+";
// idlist += b;
// }
// });
// var filterArray = [];
// $("input[name='filter[]']:checked").each(function () {
// filterArray.push($(this).val());
// });
// if (idlist !== "") {
// //var url = CheckoutExcelAllUrl + "&idList=" + idlist;
// var url = CheckoutExcelAllUrl + "&idList=" + encodeURIComponent(idlist);
// filterArray.forEach(function (filter) {
// url += "&filter=" + encodeURIComponent(filter);
// });
// window.open(url, "_blank");
// }
//}
function printAllMobile() {
var idlist = "";
var year = $('#Year').val();