merged loan and SalaryAid to OfficialCheckout

This commit is contained in:
SamSys
2025-05-12 21:26:07 +03:30
77 changed files with 61239 additions and 1638 deletions

View File

@@ -906,30 +906,39 @@ public static class Tools
string result = "";
switch (value)
{
case "1":
case "01":
result = "فروردین";
break;
case "2":
case "02":
result = "اردیبهشت";
break;
case "3":
case "03":
result = "خرداد";
break;
case "4":
case "04":
result = "تیر";
break;
case "5":
case "05":
result = "مرداد";
break;
case "6":
case "06":
result = "شهریور";
break;
case "7":
case "07":
result = "مهر";
break;
case "8":
case "08":
result = "آبان";
break;
case "9":
case "09":
result = "آذر";
break;

View File

@@ -1,6 +1,10 @@
using System;
using System.Collections;
using System.Collections.Generic;
using _0_Framework.Application;
using _0_Framework.Domain;
using Company.Domain.CheckoutAgg.ValueObjects;
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
using Company.Domain.WorkshopAgg;
namespace Company.Domain.CheckoutAgg;
@@ -21,7 +25,11 @@ public class Checkout : EntityBase
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
, string archiveCode, string personnelCode,
string totalClaims, string totalDeductions, double totalPayment, string signature, double marriedAllowance, bool leaveCheckout,
double creditLeaves, double absencePeriod, double averageHoursPerDay, bool hasRollCall, string overTimeWorkvalue, string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue, string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute)
double creditLeaves, double absencePeriod, double averageHoursPerDay, bool hasRollCall, string overTimeWorkvalue,
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
ICollection<CheckoutLoanInstallment> loanInstallments,
ICollection<CheckoutSalaryAid> salaryAids)
{
EmployeeFullName = employeeFullName;
FathersName = fathersName;
@@ -78,6 +86,8 @@ public class Checkout : EntityBase
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
TotalDayOfYearsCompute = totalDayOfYearsCompute;
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
LoanInstallments = loanInstallments;
SalaryAids = salaryAids;
}
public string EmployeeFullName { get; private set; }
@@ -181,7 +191,15 @@ public class Checkout : EntityBase
/// </summary>
public string TotalDayOfBunosesCompute { get; private set; }
public Workshop Workshop { get; set; }
#region valueObjects
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
#endregion
public Workshop Workshop { get; set; }
//public WorkingHours WorkingHours { get; set; }
public void Edit(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
@@ -278,4 +296,16 @@ public class Checkout : EntityBase
this.TotalDeductions = totalDeductions;
this.TotalPayment = totalPayment;
}
public void SetSalaryAid(ICollection<CheckoutSalaryAid> salaryAids,double salaryAidAmount)
{
SalaryAids = salaryAids;
SalaryAidDeduction = salaryAidAmount;
}
public void SetLoanInstallment(ICollection<CheckoutLoanInstallment> lonaInstallments, double installmentsAmount)
{
LoanInstallments = lonaInstallments;
InstallmentDeduction = installmentsAmount;
}
}

View File

@@ -10,9 +10,19 @@ namespace Company.Domain.CheckoutAgg;
public interface ICheckoutRepository : IRepository<long, Checkout>
{
/// <summary>
/// چک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeId"></param>
/// <param name="سال به صورت رشته عددی"></param>
/// <param name="ماه بصورت رشته عددی"></param>
/// <returns></returns>
(bool hasChekout, double FamilyAlloance, double OverTimePay) HasCheckout(long workshopId, long employeId,
string year, string month);
EditCheckout GetDetails(long id);
void CreateCkeckout(Checkout command);
Task CreateCkeckout(Checkout command);
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);

View File

@@ -0,0 +1,25 @@
using _0_Framework.Application;
namespace Company.Domain.CheckoutAgg.ValueObjects;
public class CheckoutLoanInstallment
{
public CheckoutLoanInstallment(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount, long entityId)
{
AmountForMonth = amountForMonth;
Month = month;
Year = year;
IsActive = isActive;
LoanRemaining = loanRemaining;
LoanAmount = loanAmount;
EntityId = entityId;
}
public string AmountForMonth { get; private set; }
public string Month { get; private set; }
public string Year { get; private set; }
public string LoanRemaining { get; set; }
public IsActive IsActive { get; private set; }
public string LoanAmount { get; set; }
public long EntityId { get; set; }
}

View File

@@ -0,0 +1,24 @@
using System;
using AccountManagement.Domain.AccountAgg;
namespace Company.Domain.CheckoutAgg.ValueObjects;
public class CheckoutSalaryAid
{
public CheckoutSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa, DateTime calculationDateTime, string calculationDateTimeFa, long entityId)
{
Amount = amount;
SalaryAidDateTime = salaryAidDateTime;
SalaryAidDateTimeFa = salaryAidDateTimeFa;
CalculationDateTime = calculationDateTime;
CalculationDateTimeFa = calculationDateTimeFa;
EntityId = entityId;
}
public string Amount { get; private set; }
public DateTime SalaryAidDateTime { get; private set; }
public string SalaryAidDateTimeFa { get; private set; }
public DateTime CalculationDateTime { get; private set; }
public string CalculationDateTimeFa { get; private set; }
public long EntityId { get; set; }
}

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
@@ -14,4 +14,8 @@
<ProjectReference Include="..\CompanyManagment.App.Contracts\CompanyManagment.App.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="CheckoutAgg\ValueObjects\" />
</ItemGroup>
</Project>

View File

@@ -12,7 +12,7 @@ public class EmployeeInsurancListData : EntityBase
{
public EmployeeInsurancListData(long insuranceListId, long employeeId, int workingDays, double dailyWage, double monthlySalary,
double monthlyBenefits, double monthlyBenefitsIncluded, double benefitsIncludedContinuous, double benefitsIncludedNonContinuous,
double insuranceShare, DateTime startWorkDate, DateTime? leftWorkDate, long jobId,bool includeStatus, double baseYears, double marriedAllowance)
double insuranceShare, DateTime startWorkDate, DateTime? leftWorkDate, long jobId,bool includeStatus, double baseYears, double marriedAllowance, double overTimePay, double familyAllowance)
{
InsuranceListId = insuranceListId;
EmployeeId = employeeId;
@@ -30,6 +30,8 @@ public class EmployeeInsurancListData : EntityBase
IncludeStatus = includeStatus;
BaseYears = baseYears;
MarriedAllowance = marriedAllowance;
OverTimePay = overTimePay;
FamilyAllowance = familyAllowance;
DailyWagePlusBaseYears = dailyWage + baseYears;
}
@@ -110,10 +112,20 @@ public class EmployeeInsurancListData : EntityBase
/// </summary>
public double MarriedAllowance { get; private set; }
/// <summary>
/// اضافه کار فیش حقوقی
/// </summary>
public double OverTimePay { get; private set; }
/// <summary>
/// حق اولاد فیش حقوقی
/// </summary>
public double FamilyAllowance { get; private set; }
public void Edit(int workingDays, double dailyWage, double monthlySalary, double monthlyBenefits, double monthlyBenefitsIncluded,
double benefitsIncludedContinuous, double benefitsIncludedNonContinuous, double insuranceShare, DateTime startWorkDate,
DateTime? leftWorkDate, long jobId, bool includeStatus, double baseYears, double marriedAllowance)
DateTime? leftWorkDate, long jobId, bool includeStatus, double baseYears, double marriedAllowance, double overTimePay, double familyAllowance)
{
WorkingDays = workingDays;
@@ -130,6 +142,8 @@ public class EmployeeInsurancListData : EntityBase
IncludeStatus= includeStatus;
BaseYears = baseYears;
MarriedAllowance = marriedAllowance;
OverTimePay = overTimePay;
FamilyAllowance = familyAllowance;
DailyWagePlusBaseYears = dailyWage + baseYears;
}

View File

@@ -15,6 +15,7 @@ using System.Threading.Tasks;
using _0_Framework.Application;
using OfficeOpenXml;
using OfficeOpenXml.Drawing.Chart;
using System.Collections;
namespace Company.Domain.RollCallAgg.DomainService;
@@ -25,11 +26,12 @@ public interface IRollCallDomainService
long workshopId);
TimeOnly GetEmployeeOffSetForRegularSettings(long employeeId, long workshopId);
DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId, DateTime rollCallStartDate,DateTime rollCallEndDate);
DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId, DateTime rollCallStartDate, DateTime rollCallEndDate);
void CalculateTimeDifferences(RollCall rollCall);
(DateTime start, DateTime end) FindRotatingShift(DateTime startRollCall, DateTime endRollCall, ICollection<CustomizeRotatingShift> rotatingShifts);
(DateTime start, DateTime end) FindRotatingShift(List<(DateTime StartDate, DateTime EndDate)> rollcalls, ICollection<CustomizeRotatingShift> rotatingShifts);
}
public class RollCallDomainService : IRollCallDomainService
@@ -173,16 +175,16 @@ public class RollCallDomainService : IRollCallDomainService
}
public DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId,
DateTime rollCallStartDate,DateTime rollCallEndDate)
DateTime rollCallStartDate, DateTime rollCallEndDate)
{
var shiftDetails = GetEmployeeShiftDetails(employeeId, workshopId);
var offset = GetEmployeeOffSetForRegularSettings(employeeId, workshopId);
return shiftDetails.shiftType switch
{
WorkshopShiftStatus.Regular => CalculateRegularShiftDate(rollCallStartDate, offset),
WorkshopShiftStatus.Rotating => FindRotatingShift(rollCallStartDate,rollCallEndDate,shiftDetails.rotatingShifts).start.Date,
WorkshopShiftStatus.Rotating => FindRotatingShift(rollCallStartDate, rollCallEndDate, shiftDetails.rotatingShifts).start.Date,
WorkshopShiftStatus.Irregular => rollCallStartDate.Date,
_ => throw new ArgumentOutOfRangeException()
};
@@ -216,6 +218,7 @@ public class RollCallDomainService : IRollCallDomainService
rollCalls.Remove(deletedRollCall);
rollCalls.Add(rollCall);
rollCall.ClearTimeDiff();
switch (shiftDetails.shiftType)
{
case WorkshopShiftStatus.Regular:
@@ -256,7 +259,8 @@ public class RollCallDomainService : IRollCallDomainService
var lateEntryRollCall = rollCallsInShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > employeeShift.start);
var previousShift = employeeShifts.OrderByDescending(x => x.start)
.FirstOrDefault(x => x.end < employeeShift.start);
@@ -299,8 +303,6 @@ public class RollCallDomainService : IRollCallDomainService
var lateExitRollCall = rollCallsInShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > employeeShift.end);
// تعجیل در خروج - زود رفتن
var nextShift = employeeShifts.OrderBy(x => x.start)
.FirstOrDefault(x => x.start > employeeShift.end);
@@ -353,7 +355,9 @@ public class RollCallDomainService : IRollCallDomainService
var rotatingShifts = shiftDetails.rotatingShifts;
var shift = FindRotatingShift(starDateTime, endDateTime, rotatingShifts);
var rollCallStartEnds = rollCalls.Select(x => (x.StartDate.Value, x.EndDate.Value)).ToList();
var shift = FindRotatingShift(rollCallStartEnds, rotatingShifts);
var rotatingShiftStart = shift.start;
var rotatingShiftEnd = shift.end;
@@ -373,8 +377,8 @@ public class RollCallDomainService : IRollCallDomainService
var earlyEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate < shift.start);
var lateEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > shift.start);
//برای خالی کردن اولیه حضور غیاب انتخاب شده
earlyEntryRollCallRotating?.SetEarlyEnter(TimeSpan.Zero);
if (earlyEntryRollCallRotating != null)
{
@@ -403,9 +407,10 @@ public class RollCallDomainService : IRollCallDomainService
var earlyExitRollCallRotating = rollCallsInRotatingShift.OrderByDescending(x => x.EndDate).FirstOrDefault(x => x.EndDate < shift.end);
var lateExitRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > shift.end);
//برای خالی کردن اولیه حضور غیاب انتخاب شده
earlyExitRollCallRotating?.SetEarlyExit(TimeSpan.Zero);
if (earlyExitRollCallRotating != null && (rollCallsInRotatingShift.Any(x =>
x.StartDate < rotatingShiftEnd && x.StartDate > earlyExitRollCallRotating.EndDate) == false))
@@ -448,17 +453,6 @@ public class RollCallDomainService : IRollCallDomainService
DateTime startDate = startRollCall.Date;
DateTime endDate = endRollCall.Date;
DateTime startEntryWithDate = startDate.Add(startRollCall.TimeOfDay);
DateTime endEntryWithDate = endDate.Add(endRollCall.TimeOfDay);
DateTime oneHourBeforeStart = startEntryWithDate.AddHours(-1);
DateTime oneHourAfterStart = startEntryWithDate.AddHours(1);
DateTime oneHourBeforeEnd = endEntryWithDate.AddHours(-1);
DateTime oneHourAfterEnd = endEntryWithDate.AddHours(1);
var shiftDateTimes = rotatingShifts.SelectMany(shift =>
{
var shifts = new List<(DateTime Start, DateTime End)>();
@@ -477,56 +471,69 @@ public class RollCallDomainService : IRollCallDomainService
#region مقایسه شروع حضور غیاب با شیفت
var startFilteredTimes = shiftDateTimes.Where(shift =>
(oneHourBeforeStart <= shift.Start && oneHourAfterStart >= shift.Start) ||
(oneHourBeforeStart <= shift.End && oneHourAfterStart >= shift.End)).ToList();
//var startFilteredTimes = shiftDateTimes.Where(shift =>
// (twoHourBeforeStart <= shift.Start && twoHourAfterStart >= shift.Start) ||
// (twoHourBeforeStart <= shift.End && twoHourAfterStart >= shift.End)).ToList();
if (startFilteredTimes.Count == 0)
{
startFilteredTimes = shiftDateTimes;
}
else if (startFilteredTimes.Count == 1)
{
var startChosenShift = startFilteredTimes.First();
//if (startFilteredTimes.Count == 0)
//{
// startFilteredTimes = shiftDateTimes;
//}
//else if (startFilteredTimes.Count == 1)
//{
// var startChosenShift = startFilteredTimes.First();
if (startChosenShift.End < startChosenShift.Start)
startChosenShift.End = startChosenShift.End.AddDays(1);
// if (startChosenShift.End < startChosenShift.Start)
// startChosenShift.End = startChosenShift.End.AddDays(1);
return startChosenShift;
}
// return startChosenShift;
//}
#endregion
//#endregion
#region مقایسه پایان حضورغیاب با شیفت
var endFilteredTimes = shiftDateTimes.Where(shift =>
(oneHourBeforeEnd <= shift.Start && oneHourAfterEnd >= shift.Start) ||
(oneHourBeforeEnd <= shift.End && oneHourAfterEnd >= shift.End)).ToList();
if (endFilteredTimes.Count == 0)
{
endFilteredTimes = startFilteredTimes;
}
else if (endFilteredTimes.Count == 1)
{
var endChosenShift = endFilteredTimes.First();
return endChosenShift;
}
//#region مقایسه پایان حضورغیاب با شیفت
//var endFilteredTimes = shiftDateTimes.Where(shift =>
// (twoHourBeforeEnd <= shift.Start && twoHourAfterEnd >= shift.Start) ||
// (twoHourBeforeEnd <= shift.End && twoHourAfterEnd >= shift.End)).ToList();
//if (endFilteredTimes.Count == 0)
//{
// endFilteredTimes = startFilteredTimes;
//}
//else if (endFilteredTimes.Count == 1)
//{
// var endChosenShift = endFilteredTimes.First();
// return endChosenShift;
//}
#endregion
#region اشتراک حضور غیاب و شیفت
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, oneHourBeforeStart.Ticks)))
});
var overlapShifts = shiftDateTimes
.Select(shift => new
{
Shift = shift,
Overlap = new TimeSpan(Math.Max(0,
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
// زمان حضور فرد در شیفت (مجموع Overlap با شیفت)
TotalTimeInShift = new TimeSpan(Math.Max(0,
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
StartDistance = Math.Abs((shift.Start - startRollCall).Ticks),
EndDistance = Math.Abs((shift.End - endRollCall).Ticks),
TotalDistance = Math.Abs((shift.Start - startRollCall).Ticks) + Math.Abs((shift.End - endRollCall).Ticks)
})
.OrderByDescending(s => s.TotalTimeInShift) // 1. بیشترین زمان حضور فرد
.ThenByDescending(s => s.Overlap) // 2. بیشترین Overlap
.ThenBy(s => s.TotalDistance)
.ThenBy(s => s.StartDistance)
.ThenBy(x => x.EndDistance); // 3. اگر برابر بود،
var overlapChosenShift = overlapShifts.MaxBy(s => s.Overlap);
var overlapChosenShift = overlapShifts.First();
var end = overlapChosenShift.Shift.End;
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
end = overlapChosenShift.Shift.End.AddDays(1);
@@ -537,6 +544,134 @@ public class RollCallDomainService : IRollCallDomainService
#endregion
}
public (DateTime start, DateTime end) FindRotatingShift(List<(DateTime StartDate, DateTime EndDate)> rollCalls, ICollection<CustomizeRotatingShift> rotatingShifts)
{
DateTime startDate = rollCalls.MinBy(x => x.StartDate).StartDate.Date;
DateTime endDate = rollCalls.MaxBy(x => x.EndDate).EndDate.Date;
var shiftDateTimes = rotatingShifts.SelectMany(shift =>
{
var shifts = new List<(DateTime Start, DateTime End)>();
for (int i = -1; i <= 1; i++)
{
var shiftStart = startDate.AddDays(i).Date;
shiftStart = shiftStart.Add(shift.StartTime.ToTimeSpan());
var shiftEnd = shift.StartTime < shift.EndTime
? startDate.AddDays(i).Date.Add(shift.EndTime.ToTimeSpan())
: startDate.AddDays(i + 1).Date.Add(shift.EndTime.ToTimeSpan());
shifts.Add((shiftStart, shiftEnd));
}
return shifts;
}).ToList();
//var shiftScores = shiftDateTimes
// .Select(shift =>
// {
// var totalOverlap = TimeSpan.Zero;
// var firstRollCall = rollCalls.MinBy(x => x.StartDate);
// var lastRollCall = rollCalls.MaxBy(x => x.EndDate);
// long totalStartDistance = Math.Abs((shift.Start - firstRollCall.StartDate).Ticks);
// long totalEndDistance = Math.Abs((shift.End - lastRollCall.EndDate).Ticks);
// foreach (var rollCall in rollCalls)
// {
// var start = rollCall.StartDate;
// var end = rollCall.EndDate;
// var overlapTicks = Math.Max(0,
// Math.Min(shift.End.Ticks, end.Ticks) -
// Math.Max(shift.Start.Ticks, start.Ticks));
// totalOverlap += new TimeSpan(overlapTicks);
// //totalStartDistance += Math.Abs((shift.Start - start).Ticks);
// //totalEndDistance += Math.Abs((shift.End - end).Ticks);
// }
// return new
// {
// Shift = shift,
// TotalOverlap = totalOverlap,
// TotalDistance = totalStartDistance + totalEndDistance,
// StartDistance = totalStartDistance,
// EndDistance = totalEndDistance
// };
// })
// .OrderBy(s => s.StartDistance)
// .ThenBy(s => s.TotalDistance)
// .ThenByDescending(s => s.TotalOverlap)
// .ThenBy(s => s.EndDistance);
// مرحله 1: گروه‌بندی بر اساس نزدیکی زمان شروع به اولین حضور و غیاب
var groupedByStart = shiftDateTimes
.GroupBy(shift =>
{
var firstRollCallStart = rollCalls.Min(x => x.StartDate);
var ticksDiff = Math.Abs((shift.Start - firstRollCallStart).Ticks);
return Math.Round(TimeSpan.FromTicks(ticksDiff).TotalMinutes / 30); // گروه‌بندی هر 30 دقیقه
})
.OrderBy(g => g.Key)
.First(); // نزدیک‌ترین گروه به شروع
// مرحله 2 (جایگزین مرحله ۴): گروه‌بندی بر اساس نزدیکی پایان شیفت به آخرین حضور و غیاب
var filteredByEnd = groupedByStart
.Select(shift =>
{
var lastRollCallEnd = rollCalls.Max(x => x.EndDate);
var endDistance = Math.Abs((shift.End - lastRollCallEnd).Ticks);
return new { Shift = shift, EndDistance = endDistance };
})
.GroupBy(x => x.EndDistance / TimeSpan.FromMinutes(30).Ticks) // گروه‌بندی هر 30 دقیقه
.OrderBy(g => g.Key)
.First() // نزدیک‌ترین پایان
.ToList();
// مرحله 3: فیلتر بر اساس بیشترین همپوشانی با حضور و غیاب‌ها
var filteredByOverlap = filteredByEnd
.Select(shift =>
{
var totalOverlap = TimeSpan.Zero;
foreach (var rollCall in rollCalls)
{
var overlapTicks = Math.Max(0,
Math.Min(shift.Shift.End.Ticks, rollCall.EndDate.Ticks) -
Math.Max(shift.Shift.Start.Ticks, rollCall.StartDate.Ticks));
totalOverlap += new TimeSpan(overlapTicks);
}
return new { Shift = shift.Shift, TotalOverlap = totalOverlap };
})
.GroupBy(x => Math.Round(x.TotalOverlap.TotalMinutes /5)) // گروه‌بندی همپوشانی
.OrderByDescending(g => g.Key) // بیشترین همپوشانی اول
.First()
.ToList();
// مرحله 4 (جایگزین مرحله ۲): فیلتر نهایی بر اساس کمترین مجموع فاصله (TotalDistance)
var bestShift = filteredByOverlap
.Select(shift =>
{
var firstRollCall = rollCalls.MinBy(x => x.StartDate);
var lastRollCall = rollCalls.MaxBy(x => x.EndDate);
var totalDistance =
Math.Abs((shift.Shift.Start - firstRollCall.StartDate).Ticks) +
Math.Abs((shift.Shift.End - lastRollCall.EndDate).Ticks);
return new { Shift = shift.Shift, TotalDistance = totalDistance };
})
.OrderBy(x => x.TotalDistance) // کمترین فاصله کلی
.First(); // بهترین شیفت نهایی
var overlapChosenShift = bestShift;
var end = overlapChosenShift.Shift.End;
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
end = overlapChosenShift.Shift.End.AddDays(1);
return (overlapChosenShift.Shift.Start, end);
}
private DateTime CalculateRegularShiftDate(DateTime startDate, TimeOnly offset)
{
DateTime nextOffSetDateTime;

View File

@@ -6,7 +6,9 @@ using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.CustomizeCheckout;
using CompanyManagment.App.Contracts.Leave;
using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.RollCall;
using CompanyManagment.App.Contracts.SalaryAid;
using CompanyManagment.App.Contracts.WorkingHoursTemp;
namespace Company.Domain.RollCallAgg;
@@ -24,6 +26,12 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
List<LateToWorkEarlyExistSpannig> LateToWorkEarlyExit(List<GroupedRollCalls> groupedRollCall,
ICollection<CustomizeWorkshopEmployeeSettingsShift> shiftSettings, List<LeaveViewModel> leavList);
List<LoanInstallmentViewModel> LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart,
DateTime contractEnd);
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
DateTime checkoutEnd);
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
DateTime contractEnd, string shiftwork);
}

View File

@@ -90,7 +90,9 @@ public class Workshop : EntityBase
//}
public Workshop(string workshopName,string workshopSureName, string insuranceCode, string typeOfOwnership, string archiveCode, string agentName, string agentPhone,
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
string agreementNumber, bool fixedSalary, string population,long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay, bool totalPaymentHide, bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking)
string agreementNumber, bool fixedSalary, string population,long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay, bool totalPaymentHide,
bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance)
{
WorkshopName = workshopName;
WorkshopSureName = workshopSureName;
@@ -132,6 +134,8 @@ public class Workshop : EntityBase
YearsOptions = yearsOptions;
HasRollCallFreeVip = hasRollCallFreeVip;
WorkshopHolidayWorking = workshopHolidayWorking;
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
}
@@ -198,6 +202,14 @@ public class Workshop : EntityBase
//کارگاه هایی که در تعطیلات رسمی باز هستند
public bool WorkshopHolidayWorking { get; private set; }
/// <summary>
/// محاسبه اضافه کار فیش حقوقی در لیست بیمه
/// </summary>
public bool InsuranceCheckoutOvertime { get; private set; }
/// <summary>
/// محاسبه حق اولاد در لیست بیمه
/// </summary>
public bool InsuranceCheckoutFamilyAllowance { get; private set; }
//public Employer Employer { get; private set; }
public Workshop()
@@ -229,7 +241,9 @@ public class Workshop : EntityBase
public void Edit(string workshopName, string workshopSureName, string insuranceCode,string typeOfOwnership, string archiveCode, string agentName, string agentPhone,
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
string agreementNumber, bool fixedSalary, string population, long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay,bool totalPaymentHide, bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking)
string agreementNumber, bool fixedSalary, string population, long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay,
bool totalPaymentHide, bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance)
{
WorkshopName = workshopName;
WorkshopSureName = workshopSureName;
@@ -268,7 +282,9 @@ public class Workshop : EntityBase
YearsOptions = yearsOptions;
HasRollCallFreeVip = hasRollCallFreeVip;
WorkshopHolidayWorking = workshopHolidayWorking;
}
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
}
public void Active(string archiveCode)

View File

@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using CompanyManagment.App.Contracts.Employer;
using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.RollCall;
using CompanyManagment.App.Contracts.SalaryAid;
using CompanyManagment.App.Contracts.WorkingHoursTemp;
namespace CompanyManagment.App.Contracts.Checkout;
@@ -121,4 +123,6 @@ public class CheckoutViewModel
/// </summary>
public string TotalDayOfBunosesCompute { get; set; }
public List<CheckoutDailyRollCallViewModel> MonthlyRollCall { get; set; }
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
}

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.SalaryAid;
using CompanyManagment.App.Contracts.WorkingHoursTemp;
namespace CompanyManagment.App.Contracts.Contract;

View File

@@ -90,4 +90,14 @@ public class CreateEmployeeInsurancListData
/// DSW_SPOUSE
/// </summary>
public double MarriedAllowance { get; set; }
/// <summary>
/// اضافه کار فیش حقوقی
/// </summary>
public double OverTimePay { get; set; }
/// <summary>
/// حق اولاد فیش حقوقی
/// </summary>
public double FamilyAllowance { get; set; }
}

View File

@@ -50,7 +50,7 @@ public class EmployeeInsurancListDataViewModel
/// </summary>
public double BenefitsIncludedNonContinuous { get; set; }
/// <summary>
/// جمع کل دستمزد و مزایای ماهانه
/// جمع کل دستمزد و مزایای ماهانه مشمول و غیر مشمول
/// DSW_TOTL
/// </summary>
public double IncludedAndNotIncluded { get; set; }
@@ -119,5 +119,15 @@ public class EmployeeInsurancListDataViewModel
/// </summary>
public double MarriedAllowance { get; set; }
/// <summary>
/// اضافه کار فیش حقوقی
/// </summary>
public double OverTimePay { get; set; }
/// <summary>
/// حق اولاد فیش حقوقی
/// </summary>
public double FamilyAllowance { get; set; }
}

View File

@@ -253,21 +253,49 @@ public class EmployeeDetailsForInsuranceListViewModel
/// DSW_SPOUSE
/// </summary>
public double MarriedAllowance { get; set; }
///// <summary>
///// مجموع پایه سنواتی کارکنان
///// DSK_INC
///// </summary>
//public double SumOfBaseYears { get; set; }
///// <summary>
///// جمع پایه سنوات و دستمزد روزانه کارکنان
///// DSW_INC
///// </summary>
//public double SumOfDailyWagePlusBaseYears { get; set; }
/// <summary>
/// آیا پرسنل دارای فیش حقوقی برای این ماه است
/// -
/// جهت محاسبه اضافه کار و حق اولاد
/// </summary>
public bool EmployeeHasCheckout { get; set; }
///// <summary>
///// مجموع حق تاهل کارکنان
///// DSK_SPOUSE
///// </summary>
//public double SumOfMarriedAllowance { get; set; }
/// <summary>
/// اضافه کار فیش حقوقی
/// </summary>
public double OverTimePay { get; set; }
/// <summary>
/// حق اولاد فیش حقوقی
/// </summary>
public double FamilyAllowance { get; set; }
/// <summary>
/// محاسبه اضافه کار
/// </summary>
public bool OverTimeIsSet { get; set; }
/// <summary>
///محاسبه حق اولاد
/// </summary>
public bool FamilyAllowanceIsSet { get; set; }
///// <summary>
///// مجموع پایه سنواتی کارکنان
///// DSK_INC
///// </summary>
//public double SumOfBaseYears { get; set; }
///// <summary>
///// جمع پایه سنوات و دستمزد روزانه کارکنان
///// DSW_INC
///// </summary>
//public double SumOfDailyWagePlusBaseYears { get; set; }
///// <summary>
///// مجموع حق تاهل کارکنان
///// DSK_SPOUSE
///// </summary>
//public double SumOfMarriedAllowance { get; set; }
}

View File

@@ -28,4 +28,13 @@ public class CreateInsuranceWorkshopInfo
public long? InsuranceJobId { get; set; }
//public bool ConfirmSentlist { get; set; }
/// <summary>
/// محاسبه اضافه کار فیش حقوقی در لیست بیمه
/// </summary>
public bool InsuranceCheckoutOvertime { get; set; }
/// <summary>
/// محاسبه حق اولاد در لیست بیمه
/// </summary>
public bool InsuranceCheckoutFamilyAllowance { get; set; }
}

View File

@@ -9,6 +9,16 @@ public interface IRollCallMandatoryApplication
{
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart);
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking);
/// <summary>
/// گزارش نوبت کاری حضور غیاب
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="contractStart"></param>
/// <param name="contractEnd"></param>
/// <param name="shiftwork"></param>
/// <returns></returns>
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
DateTime contractEnd, string shiftwork);
}

View File

@@ -4,11 +4,11 @@ namespace CompanyManagment.App.Contracts.SalaryAid;
public class CreateSalaryAidViewModel
{
public List<long> EmployeeIds { get; set; }
public long WorkshopId { get; set; }
public string Amount { get; set; }
public string SalaryDateTime { get; set; }
public string CalculationDateTime { get; set; }
public List<long> EmployeeIds { get; set; }
public long WorkshopId { get; set; }
public string Amount { get; set; }
public string SalaryDateTime { get; set; }
public string CalculationDateTime { get; set; }
public string NationalCode { get; set; }
public int CalculationMonth { get; set; }
public int CalculationYear { get; set; }

View File

@@ -107,4 +107,13 @@ public class CreateWorkshop
public string HasCustomizeCheckoutService { get; set; }
/// <summary>
/// محاسبه اضافه کار فیش حقوقی در لیست بیمه
/// </summary>
public bool InsuranceCheckoutOvertime { get; set; }
/// <summary>
/// محاسبه حق اولاد در لیست بیمه
/// </summary>
public bool InsuranceCheckoutFamilyAllowance { get; set; }
}

View File

@@ -22,6 +22,7 @@ public class PrintListWorkshop
public string TypeOfOwnership { get; set; }
public string ArchiveCode { get; set; }
public int ArchiveCodeInt { get; set; }
public string AgentName { get; set; }

View File

@@ -5,9 +5,11 @@ using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.CheckoutAgg;
using Company.Domain.CheckoutAgg.ValueObjects;
using Company.Domain.LeftWorkAgg;
using Company.Domain.YearlySalaryAgg;
using Company.Domain.empolyerAgg;
using Company.Domain.RollCallAgg;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using CompanyManagment.App.Contracts.Leave;
@@ -24,11 +26,12 @@ public class CheckoutApplication : ICheckoutApplication
private readonly IPersonalContractingPartyApp _contractingPartyApp;
private readonly ILeaveApplication _leaveApplication;
private readonly IMandatoryHoursApplication _mandatoryHoursApplication;
private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository;
public CheckoutApplication(ICheckoutRepository checkoutRepository, IYearlySalaryRepository yearlySalaryRepository,
ILeftWorkRepository leftWorkRepository,
IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication)
IEmployerRepository employerRepository, IPersonalContractingPartyApp contractingPartyApp, ILeaveApplication leaveApplication, IMandatoryHoursApplication mandatoryHoursApplication, IRollCallMandatoryRepository rollCallMandatoryRepository)
{
_checkoutRepository = checkoutRepository;
_yearlySalaryRepository = yearlySalaryRepository;
@@ -37,6 +40,7 @@ public class CheckoutApplication : ICheckoutApplication
_contractingPartyApp = contractingPartyApp;
_leaveApplication = leaveApplication;
_mandatoryHoursApplication = mandatoryHoursApplication;
_rollCallMandatoryRepository = rollCallMandatoryRepository;
}
[SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records", MessageId = "count: 241")]
@@ -157,12 +161,26 @@ public class CheckoutApplication : ICheckoutApplication
}
}
var checkoutStart = $"{command.Year}/{command.Month}/01";
var checkoutEnd = checkoutStart.FindeEndOfMonth();
var salaryAids =
_rollCallMandatoryRepository.SalaryAidsForCheckout(command.EmployeeId, command.WorkshopId, checkoutStart.ToGeorgianDateTime(), checkoutEnd.ToGeorgianDateTime())
.Select(x => new CheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa,x.Id)).ToList();
command.SalaryAidDeduction = salaryAids.Sum(x => x.Amount.MoneyToDouble());
var loanInstallments = _rollCallMandatoryRepository.LoanInstallmentForCheckout(command.EmployeeId,
command.WorkshopId, command.ContractStartGr, command.ContractEndGr)
.Select(x => new CheckoutLoanInstallment(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount,x.Id)).ToList();
command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());
var totalClaimsDouble = monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + command.OvertimePay +
command.NightworkPay + familyAllowance + bunos + years + command.LeavePay + command.FridayPay + command.ShiftPay;
var totalClaims = totalClaimsDouble.ToMoney();
var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction;
var totalDeductionDouble = insuranceDeduction + command.AbsenceDeduction + command.InstallmentDeduction + command.SalaryAidDeduction;
var totalDeductions = totalDeductionDouble.ToMoney();
var totalPayment = totalClaimsDouble - totalDeductionDouble;
@@ -177,14 +195,16 @@ public class CheckoutApplication : ICheckoutApplication
{
command.Signature = "0";
}
var checkout = new Checkout(command.EmployeeFullName, command.FathersName ,command.NationalCode
, command.DateOfBirth, command.EmployeeId, command.WorkshopName, command.WorkshopId, command.ContractNo, command.ContractStartGr, command.ContractEndGr, month, year,
command.ContractId, command.WorkingHoursId, monthlyWage, bacicYears, consumableItem, housingAllowance
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, 0, 0, command.AbsenceDeduction, sumOfWorkingDays,
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature,marriedAllowance,command.LeaveCheckout,command.CreditLeaves,command.AbsencePeriod,command.AverageHoursPerDay,command.HasRollCall,command.OverTimeWorkValue,command.OverNightWorkValue
,command.FridayWorkValue, command.RotatingShiftValue,command.AbsenceValue,command.TotalDayOfLeaveCompute,command.TotalDayOfYearsCompute,command.TotalDayOfBunosesCompute);
_checkoutRepository.CreateCkeckout(checkout);
,command.FridayWorkValue, command.RotatingShiftValue,command.AbsenceValue,command.TotalDayOfLeaveCompute,command.TotalDayOfYearsCompute,command.TotalDayOfBunosesCompute,loanInstallments, salaryAids);
_checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
//_checkoutRepository.SaveChanges();
//var employeeFullName = new SqlParameter("@EmployeeFullName", SqlDbType.NVarChar, 50);

View File

@@ -352,6 +352,15 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
return op.Failed("گروه انتخاب شده نا معتبر است");
}
if (_customizeWorkshopEmployeeSettingsRepository
.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId)))
{
foreach (var employeeId in command.EmployeeIds)
{
_customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(command.WorkshopId, employeeId);
}
}
if (customizeWorkshopGroupSettings.MainGroup)
{
var createDefaultEmployee = CreateEmployeeSettings(command);

View File

@@ -28,7 +28,7 @@ public class EmployeeInsurancListDataApplication : IEmployeeInsurancListDataAppl
var employeeInsurancListData = new EmployeeInsurancListData(command.InsuranceListId, command.EmployeeId, command.WorkingDays, command.DailyWage, command.MonthlySalary, command.MonthlyBenefits,
command.MonthlyBenefitsIncluded, command.BenefitsIncludedContinuous, command.BenefitsIncludedNonContinuous, command.InsuranceShare,
command.StartWorkDate,command.LeftWorkDate,command.JobId,command.IncludeStatus, command.BaseYears,command.MarriedAllowance);
command.StartWorkDate,command.LeftWorkDate,command.JobId,command.IncludeStatus, command.BaseYears,command.MarriedAllowance,command.OverTimePay,command.FamilyAllowance);
_employeeInsurancListDataRepository.Create(employeeInsurancListData);
_employeeInsurancListDataRepository.SaveChanges();
return operation.Succcedded();

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Runtime.InteropServices;
using _0_Framework.Application;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
using Company.Domain.CheckoutAgg;
using Company.Domain.DateSalaryAgg;
using Company.Domain.DateSalaryItemAgg;
using Company.Domain.EmployeeAgg;
@@ -55,8 +56,9 @@ public class InsuranceListApplication: IInsuranceListApplication
private readonly IPersonalContractingPartyApp _contractingPartyApp;
private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository;
private readonly IInsuranceYearlySalaryApplication _insuranceYearlySalaryApplication;
private readonly ICheckoutRepository _checkoutRepository;
public InsuranceListApplication( IInsuranceListRepository insuranceListRepositpry, IEmployeeInsurancListDataRepository employeeInsurancListDataRepository, IInsuranceEmployeeInfoRepository insuranceEmployeeInfoRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workShopRepository, ILeftWorkInsuranceApplication leftWorkInsuranceApplication, IInsuranceEmployeeInfoApplication insuranceEmployeeInfoApplication, IEmployeeInsurancListDataApplication employeeInsurancListDataApplication, IYearlySalaryApplication yearlySalaryApplication,IYearlySalaryItemApplication yearlySalaryItemApplication ,IInsuranceWorkshopInfoRepository insuranceWorkshopInfoRepository,IInsuranceJobItemRepositpry insuranceJobItemRepository, IDateSalaryRepository dateSalaryRepository, IDateSalaryItemRepository dateSalaryItemRepository, IPersonalContractingPartyApp contractingPartyApp, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IInsuranceYearlySalaryApplication insuranceYearlySalaryApplication)
public InsuranceListApplication( IInsuranceListRepository insuranceListRepositpry, IEmployeeInsurancListDataRepository employeeInsurancListDataRepository, IInsuranceEmployeeInfoRepository insuranceEmployeeInfoRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workShopRepository, ILeftWorkInsuranceApplication leftWorkInsuranceApplication, IInsuranceEmployeeInfoApplication insuranceEmployeeInfoApplication, IEmployeeInsurancListDataApplication employeeInsurancListDataApplication, IYearlySalaryApplication yearlySalaryApplication,IYearlySalaryItemApplication yearlySalaryItemApplication ,IInsuranceWorkshopInfoRepository insuranceWorkshopInfoRepository,IInsuranceJobItemRepositpry insuranceJobItemRepository, IDateSalaryRepository dateSalaryRepository, IDateSalaryItemRepository dateSalaryItemRepository, IPersonalContractingPartyApp contractingPartyApp, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IInsuranceYearlySalaryApplication insuranceYearlySalaryApplication, ICheckoutRepository checkoutRepository)
{
// _transactionManager = transactionManager;
@@ -77,6 +79,7 @@ public class InsuranceListApplication: IInsuranceListApplication
_contractingPartyApp = contractingPartyApp;
_leftWorkInsuranceRepository = leftWorkInsuranceRepository;
_insuranceYearlySalaryApplication = insuranceYearlySalaryApplication;
_checkoutRepository = checkoutRepository;
}
public OperationResult Create(CreateInsuranceList command)
@@ -379,7 +382,7 @@ public class InsuranceListApplication: IInsuranceListApplication
var result = new MainEmployeeDetailsViewModel();
var workshopId = searchModel.WorkshopIds.FirstOrDefault();
//var employerId = _workShopRepository.GetDetails(workshopId).EmployerIdList.FirstOrDefault();
var workshop = _workShopRepository.GetDetails(workshopId);
//var isBolock = _contractingPartyApp.IsBlockByEmployerId(employerId);
var isBolock = _contractingPartyApp.IsBlockCheckByWorkshopId(workshopId);
double monthlybaseYear = 0;
@@ -388,6 +391,7 @@ public class InsuranceListApplication: IInsuranceListApplication
x.Year == searchModel.Year && x.Month == searchModel.Month &&
searchModel.WorkshopIds.Contains(x.WorkshopId)))
{
var startMonthFa = $"{searchModel.Year}/{searchModel.Month.PadLeft(2, '0')}/01";
DateTime startDateGr = startMonthFa.ToGeorgianDateTime();
DateTime endDateGr = startMonthFa.FindeEndOfMonth()
@@ -408,10 +412,41 @@ public class InsuranceListApplication: IInsuranceListApplication
_insuranceListRepositpry.GetEmployeeInsuranceDataAmonthAgo(startDateGr, workshopId);
watch.Start();
var computeResult = employeesInfoAndLeftWorks.Select(employee =>
{
var dateOfBirth = employee.DateOfBirthGr.ToFarsi();
var dateOfIssue = employee.DateOfIssueGr.ToFarsi();
var leftDate = employee.LeftWorkDateGr != null ? employee.LeftWorkDateGr.Value.AddDays(-1) : new DateTime();
{
var dateOfBirth = employee.DateOfBirthGr.ToFarsi();
var dateOfIssue = employee.DateOfIssueGr.ToFarsi();
var leftDate = employee.LeftWorkDateGr != null ? employee.LeftWorkDateGr.Value.AddDays(-1) : new DateTime();
bool isManager = employee.JobId is 10 or 16 or 17 or 18 or 3498;
//آیا در کارگاه تیک محاسبه اضافه کار یا حق اولاد زده شده است؟
bool hasWorkshopOverTimeOrFamilyAllowance =
workshop.InsuranceCheckoutFamilyAllowance || workshop.InsuranceCheckoutOvertime;
//آیا پرسنل فیش حقوق دارد
//این مورد زمانی چک می شود که تیک محاسبه در کارگاه زده شده باشد
// در غیر اینصورت بصورت پیشفرض دارای فیش حقوق در نظر گرفته می شود
bool employeeHasCheckout = true;
double familyAllowance = 0;
double overTimePay = 0;
if (hasWorkshopOverTimeOrFamilyAllowance && (leftDate >= startDateGr || employee.LeftWorkDateGr == null))
{
var checkout = _checkoutRepository.HasCheckout(workshopId, employee.EmployeeId,
searchModel.Year, searchModel.Month);
if (checkout.hasChekout)
{
familyAllowance = checkout.FamilyAlloance;
overTimePay = checkout.OverTimePay;
}
else
{
employeeHasCheckout = isManager == false ? false : true;
}
}
var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employee.StartWorkDateGr, leftDate, startDateGr,endDateGr, employee.EmployeeId);
var leftWorkFa = workingDays.hasLeftWorkInMonth ? employee.LeftWorkDateGr.ToFarsi(): "";
@@ -424,7 +459,7 @@ public class InsuranceListApplication: IInsuranceListApplication
var baseYears = _insuranceListRepositpry.GetEmployeeInsuranceBaseYear(employee.EmployeeId, workshopId,
workingDays.countWorkingDays, startDateGr, endDateGr,workingDays.startWork, workingDays.endWork, workingDays.hasLeftWorkInMonth);
//آیا کارفرما یا مدیر عامل است؟
bool isManager = employee.JobId is 10 or 16 or 17 or 18 or 3498;
baseYears.baseYear = isManager ? 0 : baseYears.baseYear;
Console.WriteLine(employee.JobId + " - "+ baseYears.baseYear);
//جمع مزد روزانه و پایه سنوات
@@ -439,12 +474,16 @@ public class InsuranceListApplication: IInsuranceListApplication
//محاسبه مزایای ماهانه
var monthlyBenefits = GetMonthlyBenefits(endOfMonth, yearlysaleries.ConsumableItems, yearlysaleries.HousingAllowance, marriedAllowance, workingDays.countWorkingDays, searchModel.TypeOfInsuranceSendWorkshop, employee.JobId, employee.EmployeeId,employee.IncludeStatus);
//if (employee.EmployeeId is 7999)// سید عباس خوشکلام سلیمان
// monthlyBenefits = 80869389;
//if (employee.EmployeeId is 43787)// شهرام براهیمی سیقلان
// monthlyBenefits = 54748472;
if (workshop.InsuranceCheckoutOvertime && employeeHasCheckout && !isManager)
{
monthlyBenefits = GetRoundValue(monthlyBenefits += overTimePay);
}
var marriedAllowanceCompute = MarriedAllowance(employee.MaritalStatus, employee.JobId, employee.IncludeStatus,
workingDays.countWorkingDays, yearlysaleries.MarriedAllowance, endOfMonth);
@@ -467,13 +506,22 @@ public class InsuranceListApplication: IInsuranceListApplication
//مزیای عیر مشمول لیست قبل
var benefitsIncludedNonContinuous =
employeeListData != null ? employeeListData.BenefitsIncludedNonContinuous : 0;
if (workshop.InsuranceCheckoutFamilyAllowance && employeeHasCheckout && !isManager)
{
benefitsIncludedNonContinuous = GetRoundValue(benefitsIncludedNonContinuous + familyAllowance);
}
var includedAndNotIncluded = benefitsIncludedContinuous + benefitsIncludedNonContinuous;
return new EmployeeDetailsForInsuranceListViewModel
{
#region EmployeeInfo
InsuranceEmployeeInformationId = employee.InsuranceEmployeeInformationId,
EmployeeHasCheckout = employeeHasCheckout,
InsuranceEmployeeInformationId = employee.InsuranceEmployeeInformationId,
EmployeeId = employee.EmployeeId,
FName = employee.FName,
LName = employee.LName,
@@ -535,10 +583,10 @@ public class InsuranceListApplication: IInsuranceListApplication
//جمع مزایای مشمول و دستمزد ماهانه
BenefitsIncludedContinuous = benefitsIncludedContinuous,
//مزایای غیر مشمول
//مزایای غیر مشمول *
BenefitsIncludedNonContinuous = benefitsIncludedNonContinuous,
// جمع کل دستمزد و مزایای ماهانه مشمول و غیر مشمول
// جمع کل دستمزد و مزایای ماهانه مشمول و غیر مشمول *
IncludedAndNotIncluded = includedAndNotIncluded,
//حق بیمه سهم بیمه شده
@@ -559,6 +607,8 @@ public class InsuranceListApplication: IInsuranceListApplication
YearlySalaryItem = yearlysaleries.DayliWage,
MonthlyBaseYearsStr = "0",
MonthlyBaseYears = 0,
OverTimePay = overTimePay,
FamilyAllowance = familyAllowance
#endregion
@@ -1423,6 +1473,7 @@ public class InsuranceListApplication: IInsuranceListApplication
var workingDays = Tools.GetEmployeeInsuranceWorkingDays(employeeData.StartWorkDateGr, leftDate, startDateGr, endDateGr, employeeData.EmployeeId);
var leftWorkFa = workingDays.hasLeftWorkInMonth ? employeeData.LeftWorkDateGr.ToFarsi() : "";
var startWorkFa = employeeData.StartWorkDateGr.ToFarsi();
var workshop = _workShopRepository.GetDetails(workshopId);
//آیا کارفرما است
bool isManager = employeeData.JobId is 10 or 16 or 17 or 18 or 3498;
@@ -1432,9 +1483,53 @@ public class InsuranceListApplication: IInsuranceListApplication
// محاسبه بیمه بیکاری
var unEmploymentInsurance = (employeeData.BenefitsIncludedContinuous * 3) / 100;
//آیا در کارگاه تیک محاسبه اضافه کار یا حق اولاد زده شده است؟
//این مورد زمانی چک می شود که تیک محاسبه در کارگاه زده شده باشد
// در غیر اینصورت بصورت پیشفرض دارای فیش حقوق در نظر گرفته می شود
bool hasWorkshopOverTimeOrFamilyAllowance =
workshop.InsuranceCheckoutFamilyAllowance || workshop.InsuranceCheckoutOvertime;
bool employeeHasCheckout = true;
bool hasOverTimePay = false;
bool hasFamilyAllowance = false;
if (hasWorkshopOverTimeOrFamilyAllowance && (leftDate >= startDateGr || employeeData.LeftWorkDateGr == null))
{
var checkout = _checkoutRepository.HasCheckout(workshopId, employeeData.EmployeeId,
searchModel.Year, searchModel.Month);
if (checkout.hasChekout)
{
if (checkout.OverTimePay > 0)
hasOverTimePay = true;
if (checkout.FamilyAlloance > 0)
hasFamilyAllowance = true;
}
else
{
employeeHasCheckout = isManager == false ? false : true;
}
}
bool familyAllowanceIsSet = true;
bool overTimePayIsSet = true;
if (workshop.InsuranceCheckoutFamilyAllowance && employeeHasCheckout && employeeData.FamilyAllowance == 0 && hasFamilyAllowance && !isManager)
{
familyAllowanceIsSet = false;
}
if (workshop.InsuranceCheckoutOvertime && employeeHasCheckout && employeeData.OverTimePay == 0 && hasOverTimePay && !isManager)
{
overTimePayIsSet = false;
}
return new EmployeeDetailsForInsuranceListViewModel
{
#region EmployeeInfo
#region EmployeeInfo
EmployeeHasCheckout = employeeHasCheckout,
EmployeeInsurancListDataId = employeeData.EmployeeInsurancListDataId,
InsuranceEmployeeInformationId = employeeData.InsuranceEmployeeInformationId,
@@ -1523,6 +1618,9 @@ public class InsuranceListApplication: IInsuranceListApplication
YearlySalaryItem = yearlysaleries.DayliWage,
MonthlyBaseYearsStr = "0",
MonthlyBaseYears = 0,
OverTimeIsSet = overTimePayIsSet,
FamilyAllowanceIsSet = familyAllowanceIsSet
#endregion

View File

@@ -44,6 +44,8 @@ public class InsuranceWorkshopInfoApplication: IInsuranceWorkshopInfoApplication
workshop.InsuranceJobId = workshopObj.InsuranceJobId;
workshop.InsuranceCode = workshopObj.InsuranceCode;
workshop.AgreementNumber = workshopObj.AgreementNumber;
workshop.InsuranceCheckoutOvertime = workshopObj.InsuranceCheckoutOvertime;
workshop.InsuranceCheckoutFamilyAllowance = workshopObj.InsuranceCheckoutFamilyAllowance;
return workshop;
}
else
@@ -60,6 +62,8 @@ public class InsuranceWorkshopInfoApplication: IInsuranceWorkshopInfoApplication
workshop.FixedSalary = workshopObj.FixedSalary;
workshop.Population = workshopObj.Population;
workshop.InsuranceJobId = workshopObj.InsuranceJobId;
workshop.InsuranceCheckoutOvertime = workshopObj.InsuranceCheckoutOvertime;
workshop.InsuranceCheckoutFamilyAllowance = workshopObj.InsuranceCheckoutFamilyAllowance;
return workshop;
}
}

View File

@@ -1,21 +1,15 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection.Metadata.Ecma335;
using System.Threading.Tasks;
using System.Transactions;
using _0_Framework.Application;
using Company.Domain.CheckoutAgg;
using Company.Domain.CustomizeCheckoutAgg;
using Company.Domain.CustomizeCheckoutTempAgg;
using Company.Domain.LoanAgg;
using Company.Domain.LoanAgg.Entities;
using CompanyManagment.App.Contracts.CustomizeCheckout;
using CompanyManagment.App.Contracts.Loan;
using Hangfire.States;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.Extensions.Configuration.UserSecrets;
namespace CompanyManagment.Application;
@@ -27,14 +21,16 @@ public class LoanApplication : ILoanApplication
private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository;
private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication;
private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication;
private readonly ICustomizeCheckoutRepository _checkoutRepository;
public LoanApplication(ILoanRepository loanRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication)
public LoanApplication(ILoanRepository loanRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, ICustomizeCheckoutRepository checkoutRepository)
{
_loanRepository = loanRepository;
_customizeCheckoutRepository = customizeCheckoutRepository;
_authHelper = authHelper;
_customizeCheckoutApplication = customizeCheckoutApplication;
_customizeCheckoutTempApplication = customizeCheckoutTempApplication;
_checkoutRepository = checkoutRepository;
_customizeCheckoutTempRepository = customizeCheckoutTempRepository;
}
@@ -90,7 +86,7 @@ public class LoanApplication : ILoanApplication
}
#endregion
var (userId, userType,_) = _authHelper.GetUserTypeWithId();
var (userId, userType, _) = _authHelper.GetUserTypeWithId();
using var transaction = new TransactionScope();
foreach (var employeeId in command.EmployeeIds)
{
@@ -165,6 +161,7 @@ public class LoanApplication : ILoanApplication
}
_loanRepository.SaveChanges();
transaction.Complete();
return op.Succcedded();
}
@@ -306,6 +303,14 @@ public class LoanApplication : ILoanApplication
return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی است");
}
if (_checkoutRepository.Exists(x =>
entity.EmployeeId == x.EmployeeId && x.WorkshopId == entity.WorkshopId &&
(x.ContractStart >= entity.StartInstallmentPayment && x.ContractStart <= lastInstallment)))
{
return op.Failed("پرسنل در بازه اقساط خود دارای فیش رسمی است");
}
if (_customizeCheckoutTempRepository.Exists(x =>
entity.EmployeeId == x.EmployeeId && x.WorkshopId == entity.WorkshopId &&
(x.ContractStart >= entity.StartInstallmentPayment && x.ContractStart <= lastInstallment)))
@@ -324,6 +329,33 @@ public class LoanApplication : ILoanApplication
{
OperationResult op = new OperationResult();
var loans = _loanRepository.GetBy(ids);
foreach (var entity in loans)
{
var lastInstallment = entity.LoanInstallments.MaxBy(x => x.InstallmentDate).InstallmentDate;
if (_customizeCheckoutRepository.Exists(x =>
entity.EmployeeId == x.EmployeeId && x.WorkshopId == entity.WorkshopId &&
(x.ContractStart >= entity.StartInstallmentPayment && x.ContractStart <= lastInstallment)))
{
return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی است");
}
if (_checkoutRepository.Exists(x =>
entity.EmployeeId == x.EmployeeId && x.WorkshopId == entity.WorkshopId &&
(x.ContractStart >= entity.StartInstallmentPayment && x.ContractStart <= lastInstallment)))
{
return op.Failed("پرسنل در بازه اقساط خود دارای فیش رسمی است");
}
if (_customizeCheckoutTempRepository.Exists(x =>
entity.EmployeeId == x.EmployeeId && x.WorkshopId == entity.WorkshopId &&
(x.ContractStart >= entity.StartInstallmentPayment && x.ContractStart <= lastInstallment)))
{
return op.Failed("پرسنل در بازه اقساط خود دارای فیش غیررسمی است");
}
}
_loanRepository.RemoveRange(loans);
_loanRepository.SaveChanges();

View File

@@ -470,7 +470,7 @@ public class RollCallApplication : IRollCallApplication
if (newRollCallDates.Any(x => employeeRollCalls.Any(y =>
y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date &&
y.ShiftDate.Date != command.DateFa.ToGeorgianDateTime().Date &&
x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value)))
return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد");
@@ -504,6 +504,12 @@ public class RollCallApplication : IRollCallApplication
_rollCallRepository.AddRange(rollCallsAsEntityModels);
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{
rollCallsAsEntityModel.ClearTimeDiff();
rollCallsAsEntityModel.SetShiftDate(_rollCallDomainService);
}
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{
rollCallsAsEntityModel.Edit(rollCallsAsEntityModel.StartDate.Value, rollCallsAsEntityModel.EndDate.Value, _rollCallDomainService);
}
@@ -644,7 +650,7 @@ public class RollCallApplication : IRollCallApplication
}
if (newRollCallDates.Any(x => employeeRollCalls.Any(y =>
y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date &&
y.ShiftDate.Date != command.DateFa.ToGeorgianDateTime().Date &&
x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value)))
return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد");
@@ -673,6 +679,12 @@ public class RollCallApplication : IRollCallApplication
_rollCallRepository.AddRange(rollCallsAsEntityModels);
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{
rollCallsAsEntityModel.ClearTimeDiff();
rollCallsAsEntityModel.SetShiftDate(_rollCallDomainService);
}
_rollCallRepository.SaveChanges();
foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels)
{

View File

@@ -27,16 +27,18 @@ public class SalaryAidApplication : ISalaryAidApplication
private readonly IAuthHelper _authHelper;
private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication;
private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication;
private readonly ICheckoutRepository _checkoutRepository;
public SalaryAidApplication(ISalaryAidRepository salaryAidRepository, ICustomizeCheckoutRepository customizeCheckoutRepository,
IEmployeeRepository employeeRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication)
IEmployeeRepository employeeRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, ICheckoutRepository checkoutRepository)
{
_salaryAidRepository = salaryAidRepository;
_customizeCheckoutRepository = customizeCheckoutRepository;
_authHelper = authHelper;
_customizeCheckoutApplication = customizeCheckoutApplication;
_customizeCheckoutTempApplication = customizeCheckoutTempApplication;
_checkoutRepository = checkoutRepository;
_employeeRepository = employeeRepository;
_customizeCheckoutTempRepository = customizeCheckoutTempRepository;
}
@@ -95,18 +97,18 @@ public class SalaryAidApplication : ISalaryAidApplication
}
var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
calculationDateGr, command.WorkshopId, command.EmployeeIds);
calculationDateGr, command.WorkshopId, command.EmployeeIds);
//if (existsCheckouts.Checkout)
// return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
var (userId, userType,_) = _authHelper.GetUserTypeWithId();
var (userId, userType, _) = _authHelper.GetUserTypeWithId();
using var transaction = new TransactionScope();
foreach (var employeeId in command.EmployeeIds)
{
var entity = new SalaryAid(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), startDate,userId,userType,command.CalculationMonth,command.CalculationYear);
var entity = new SalaryAid(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), startDate, userId, userType, command.CalculationMonth, command.CalculationYear);
_salaryAidRepository.Create(entity);
_salaryAidRepository.SaveChanges();
if (existsCheckouts.CustomizeCheckout)
@@ -186,7 +188,7 @@ public class SalaryAidApplication : ISalaryAidApplication
var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
oneMonthAgoGr, entity.WorkshopId, [entity.EmployeeId]);
if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp)
if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp)
{
return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده ای دهید");
}
@@ -194,16 +196,16 @@ public class SalaryAidApplication : ISalaryAidApplication
var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
calculationDateGr, entity.WorkshopId, [entity.EmployeeId]);
calculationDateGr, entity.WorkshopId, [entity.EmployeeId]);
//if (existsCheckouts.Checkout)
// return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
using var transaction = new TransactionScope();
var (userId, userType,_) = _authHelper.GetUserTypeWithId();
var (userId, userType, _) = _authHelper.GetUserTypeWithId();
entity.Edit(Tools.MoneyToDouble(command.Amount),startDate,userId,userType,command.CalculationMonth,command.CalculationYear);
entity.Edit(Tools.MoneyToDouble(command.Amount), startDate, userId, userType, command.CalculationMonth, command.CalculationYear);
_salaryAidRepository.SaveChanges();
if (existsCheckouts.CustomizeCheckout)
@@ -270,6 +272,12 @@ public class SalaryAidApplication : ISalaryAidApplication
return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی موقت است");
}
if (_checkoutRepository.Exists(x => x.WorkshopId == entity.WorkshopId && entity.EmployeeId == x.EmployeeId &&
x.ContractStart <= entity.CalculationDate && x.ContractEnd >= entity.CalculationDate))
{
return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی رسمی است");
}
_salaryAidRepository.Remove(entity);
_salaryAidRepository.SaveChanges();
return op.Succcedded();
@@ -325,14 +333,18 @@ public class SalaryAidApplication : ISalaryAidApplication
}
var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr,
calculationDateGr, command.WorkshopId, command.EmployeeIds);
calculationDateGr, command.WorkshopId, command.EmployeeIds);
if (existsCheckouts.Checkout)
return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید");
var month = Convert.ToInt32(command.CalculationMonth);
var year = Convert.ToInt32(command.CalculationYear);
var (userId, userType,_) = _authHelper.GetUserTypeWithId();
var (userId, userType, _) = _authHelper.GetUserTypeWithId();
foreach (var employeeId in command.EmployeeIds)
{
@@ -343,8 +355,8 @@ public class SalaryAidApplication : ISalaryAidApplication
id = employee.id;
}
var entity = new SalaryAid(id, command.WorkshopId, command.Amount.MoneyToDouble(), startDate, userId, userType, command.CalculationMonth, command.CalculationYear);
_salaryAidRepository.Create(entity);
var entity = new SalaryAid(id, command.WorkshopId, command.Amount.MoneyToDouble(), startDate, userId, userType, command.CalculationMonth, command.CalculationYear);
_salaryAidRepository.Create(entity);
_salaryAidRepository.SaveChanges();
if (existsCheckouts.CustomizeCheckout)

View File

@@ -145,7 +145,7 @@ public class WorkshopAppliction : IWorkshopApplication
command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City,
command.Address,
command.TypeOfInsuranceSend, command.TypeOfContract,command.ContractTerm,command.AgreementNumber
,command.FixedSalary, command.Population,command.InsuranceJobId,command.ZoneName,command.AddBonusesPay,command.AddYearsPay,command.AddLeavePay,command.TotalPaymentHide,command.IsClassified,command.ComputeOptions,command.BonusesOptions,command.YearsOptions,command.HasRollCallFreeVip,command.WorkshopHolidayWorking);
,command.FixedSalary, command.Population,command.InsuranceJobId,command.ZoneName,command.AddBonusesPay,command.AddYearsPay,command.AddLeavePay,command.TotalPaymentHide,command.IsClassified,command.ComputeOptions,command.BonusesOptions,command.YearsOptions,command.HasRollCallFreeVip,command.WorkshopHolidayWorking, command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance);
_workshopRepository.Create(workshop);
_workshopRepository.SaveChanges();
@@ -315,7 +315,7 @@ public class WorkshopAppliction : IWorkshopApplication
command.Address,
command.TypeOfInsuranceSend, command.TypeOfContract,command.ContractTerm, command.AgreementNumber
, command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName,
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide,command.IsClassified, command.ComputeOptions,command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking);
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide,command.IsClassified, command.ComputeOptions,command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking, command.InsuranceCheckoutOvertime,command.InsuranceCheckoutFamilyAllowance);
_workshopRepository.SaveChanges();
_workshopRepository.RemoveOldRelation(command.Id);
@@ -583,12 +583,13 @@ public class WorkshopAppliction : IWorkshopApplication
//if (string.IsNullOrWhiteSpace(command.TypeOfInsuranceSend))
// return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید");
var workshop = new Workshop(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode,
command.TypeOfOwnership,
command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City,
command.Address,
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
, command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName, command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide, command.IsClassified, command.ComputeOptions, command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking);
var workshop = new Workshop(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode,command.TypeOfOwnership,
command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City, command.Address,
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber, command.FixedSalary,
command.Population, command.InsuranceJobId, command.ZoneName, command.AddBonusesPay,
command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide, command.IsClassified, command.ComputeOptions,
command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking,
command.InsuranceCheckoutOvertime,command.InsuranceCheckoutFamilyAllowance);
_workshopRepository.Create(workshop);
_workshopRepository.SaveChanges();
@@ -665,7 +666,9 @@ public class WorkshopAppliction : IWorkshopApplication
command.Address,
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
, command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName,
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide,command.IsClassified, command.ComputeOptions, command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking);
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide,command.IsClassified,
command.ComputeOptions, command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking,
command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance);
_workshopRepository.SaveChanges();
//_workshopRepository.RemoveOldRelation(command.Id);

View File

@@ -1,4 +1,6 @@
using Company.Domain.CheckoutAgg;
using System;
using _0_Framework.Application;
using Company.Domain.CheckoutAgg;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
@@ -52,5 +54,24 @@ class CheckoutMapping : IEntityTypeConfiguration<Checkout>
.WithMany(x => x.Checkouts)
.HasForeignKey(x => x.WorkshopId);
builder.OwnsMany(x => x.LoanInstallments, installments =>
{
installments.Property(x => x.AmountForMonth).HasMaxLength(25);
installments.Property(x => x.IsActive).HasConversion(
v => v.ToString(),
v => (IsActive)Enum.Parse(typeof(IsActive), v)).HasMaxLength(5);
installments.Property(x => x.Year).HasMaxLength(4);
installments.Property(x => x.Month).HasMaxLength(2);
installments.Property(x => x.LoanRemaining).HasMaxLength(25);
installments.Property(x => x.LoanAmount).HasMaxLength(30);
});
builder.OwnsMany(x => x.SalaryAids, salaryAid =>
{
salaryAid.Property(x => x.SalaryAidDateTimeFa).HasMaxLength(15);
salaryAid.Property(x => x.Amount).HasMaxLength(25);
salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15);
});
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addcalculationDatetosalaryAid : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

View File

@@ -0,0 +1,23 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addcalculationDatetocustomizecheckoutsalaryAid : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,74 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addsalaryAidandloantocheckout : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "CheckoutLoanInstallment",
columns: table => new
{
Checkoutid = table.Column<long>(type: "bigint", nullable: false),
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AmountForMonth = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
Month = table.Column<string>(type: "nvarchar(2)", maxLength: 2, nullable: true),
Year = table.Column<string>(type: "nvarchar(4)", maxLength: 4, nullable: true),
LoanRemaining = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
IsActive = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: false),
LoanAmount = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_CheckoutLoanInstallment", x => new { x.Checkoutid, x.Id });
table.ForeignKey(
name: "FK_CheckoutLoanInstallment_Checkouts_Checkoutid",
column: x => x.Checkoutid,
principalTable: "Checkouts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "CheckoutSalaryAid",
columns: table => new
{
Checkoutid = table.Column<long>(type: "bigint", nullable: false),
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Amount = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
SalaryAidDateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
SalaryAidDateTimeFa = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
CalculationDateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CalculationDateTimeFa = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_CheckoutSalaryAid", x => new { x.Checkoutid, x.Id });
table.ForeignKey(
name: "FK_CheckoutSalaryAid_Checkouts_Checkoutid",
column: x => x.Checkoutid,
principalTable: "Checkouts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "CheckoutLoanInstallment");
migrationBuilder.DropTable(
name: "CheckoutSalaryAid");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addNewPropToWorkshop : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "InsuranceCheckoutFamilyAllowance",
table: "Workshops",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "InsuranceCheckoutOvertime",
table: "Workshops",
type: "bit",
nullable: false,
defaultValue: false);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "InsuranceCheckoutFamilyAllowance",
table: "Workshops");
migrationBuilder.DropColumn(
name: "InsuranceCheckoutOvertime",
table: "Workshops");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class NewPropToEmployeeInsuranceListData : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<double>(
name: "FamilyAllowance",
table: "EmployeeInsurancListData",
type: "float",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "OverTimePay",
table: "EmployeeInsurancListData",
type: "float",
nullable: false,
defaultValue: 0.0);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "FamilyAllowance",
table: "EmployeeInsurancListData");
migrationBuilder.DropColumn(
name: "OverTimePay",
table: "EmployeeInsurancListData");
}
}
}

View File

@@ -0,0 +1,40 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addentityIdtoCheckoutValueObjects : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<long>(
name: "EntityId",
table: "CheckoutSalaryAid",
type: "bigint",
nullable: false,
defaultValue: 0L);
migrationBuilder.AddColumn<long>(
name: "EntityId",
table: "CheckoutLoanInstallment",
type: "bigint",
nullable: false,
defaultValue: 0L);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "EntityId",
table: "CheckoutSalaryAid");
migrationBuilder.DropColumn(
name: "EntityId",
table: "CheckoutLoanInstallment");
}
}
}

View File

@@ -2001,6 +2001,9 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<long>("EmployeeId")
.HasColumnType("bigint");
b.Property<double>("FamilyAllowance")
.HasColumnType("float");
b.Property<bool>("IncludeStatus")
.HasColumnType("bit");
@@ -2028,6 +2031,9 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<double>("MonthlySalary")
.HasColumnType("float");
b.Property<double>("OverTimePay")
.HasColumnType("float");
b.Property<DateTime>("StartWorkDate")
.HasColumnType("datetime2");
@@ -5599,6 +5605,12 @@ namespace CompanyManagment.EFCore.Migrations
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<bool>("InsuranceCheckoutFamilyAllowance")
.HasColumnType("bit");
b.Property<bool>("InsuranceCheckoutOvertime")
.HasColumnType("bit");
b.Property<string>("InsuranceCode")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
@@ -6105,6 +6117,97 @@ namespace CompanyManagment.EFCore.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutLoanInstallment", "LoanInstallments", b1 =>
{
b1.Property<long>("Checkoutid")
.HasColumnType("bigint");
b1.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<int>("Id"));
b1.Property<string>("AmountForMonth")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b1.Property<long>("EntityId")
.HasColumnType("bigint");
b1.Property<string>("IsActive")
.IsRequired()
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b1.Property<string>("LoanAmount")
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b1.Property<string>("LoanRemaining")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b1.Property<string>("Month")
.HasMaxLength(2)
.HasColumnType("nvarchar(2)");
b1.Property<string>("Year")
.HasMaxLength(4)
.HasColumnType("nvarchar(4)");
b1.HasKey("Checkoutid", "Id");
b1.ToTable("CheckoutLoanInstallment");
b1.WithOwner()
.HasForeignKey("Checkoutid");
});
b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 =>
{
b1.Property<long>("Checkoutid")
.HasColumnType("bigint");
b1.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<int>("Id"));
b1.Property<string>("Amount")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b1.Property<DateTime>("CalculationDateTime")
.HasColumnType("datetime2");
b1.Property<string>("CalculationDateTimeFa")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)");
b1.Property<long>("EntityId")
.HasColumnType("bigint");
b1.Property<DateTime>("SalaryAidDateTime")
.HasColumnType("datetime2");
b1.Property<string>("SalaryAidDateTimeFa")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)");
b1.HasKey("Checkoutid", "Id");
b1.ToTable("CheckoutSalaryAid");
b1.WithOwner()
.HasForeignKey("Checkoutid");
});
b.Navigation("LoanInstallments");
b.Navigation("SalaryAids");
b.Navigation("Workshop");
});

View File

@@ -13,6 +13,8 @@ using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Employee;
using CompanyManagment.App.Contracts.Leave;
using CompanyManagment.App.Contracts.LeftWork;
using CompanyManagment.App.Contracts.Loan;
using CompanyManagment.App.Contracts.SalaryAid;
using CompanyManagment.App.Contracts.WorkingHours;
using CompanyManagment.App.Contracts.WorkingHoursTemp;
using CompanyManagment.App.Contracts.Workshop;
@@ -47,6 +49,27 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
_rollCallRepository = rollCallRepository;
}
/// <summary>
/// چیک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeId"></param>
/// <param name="سال به صورت رشته عددی"></param>
/// <param name="ماه بصورت رشته عددی"></param>
/// <returns></returns>
public (bool hasChekout, double FamilyAlloance, double OverTimePay) HasCheckout(long workshopId, long employeId, string year, string month)
{
var farisMonthName = Tools.ToFarsiMonthByNumber(month);
var res = _context.CheckoutSet.FirstOrDefault(x =>
x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName &&
x.IsActiveString == "true");
if (res == null)
return (false, 0, 0);
return (true, res.FamilyAllowance, res.OvertimePay);
}
public EditCheckout GetDetails(long id)
{
return _context.CheckoutSet.Select(x => new EditCheckout()
@@ -95,14 +118,24 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
.FirstOrDefault(x => x.Id == id);
}
public void CreateCkeckout(Checkout command)
public async Task CreateCkeckout(Checkout command)
{
var creationDates = DateTime.Now;
//var result = await _context.Database.ExecuteSqlInterpolatedAsync($"EXEC InsertQuery_Checkout {id},{employeeFullName},{isActiveString},{signature},{fathersName},{nationalCode},{dateOfBirth},{employeeId},{workshopName},{workshopId},{contractNo},{contractStart},{contractEnd},{month},{year},{contractId},{workingHoursId},{monthlySalary},{baseYearsPay},{consumableItems},{housingAllowance},{overtimePay},{nightworkPay},{fridayPay},{missionPay},{shiftPay},{familyAllowance},{bonusesPay},{yearsPay},{leavePay},{insuranceDeduction},{taxDeducation},{installmentDeduction},{salaryAidDeduction},{absenceDeduction},{creationDate},{archiveCode},{personnelCode},{sumOfWorkingDays},{totalClaims},{taxDeducation},{totalPayment}");
var result = _context.Database.ExecuteSqlInterpolated(
$"EXEC InsertQuery_CreateChekoute {command.EmployeeFullName},{"true"},{command.Signature},{command.FathersName},{command.NationalCode},{command.DateOfBirth},{command.EmployeeId},{command.WorkshopName},{command.WorkshopId},{command.ContractNo},{command.ContractStart},{command.ContractEnd},{command.Month},{command.Year},{command.ContractId},{command.WorkingHoursId},{command.MonthlySalary},{command.BaseYearsPay},{command.ConsumableItems},{command.HousingAllowance},{command.OvertimePay},{command.NightworkPay},{command.FridayPay},{command.MissionPay},{command.ShiftPay},{command.FamilyAllowance},{command.BonusesPay},{command.YearsPay},{command.LeavePay},{command.InsuranceDeduction},{command.TaxDeducation},{command.InstallmentDeduction},{command.SalaryAidDeduction},{command.AbsenceDeduction},{creationDates},{command.ArchiveCode},{command.PersonnelCode},{command.SumOfWorkingDays},{command.TotalClaims},{command.TotalDeductions},{command.TotalPayment},{0},{command.MarriedAllowance},{command.AbsencePeriod},{command.AverageHoursPerDay},{command.CreditLeaves},{command.LeaveCheckout},{command.HasRollCall},{command.OverTimeWorkValue},{command.OverNightWorkValue},{command.FridayWorkValue},{command.RotatingShiftValue},{command.AbsenceValue}, {command.TotalDayOfLeaveCompute},{command.TotalDayOfYearsCompute},{command.TotalDayOfBunosesCompute}");
var result = ( _context.Database
.SqlQuery<long>(
$"EXEC InsertQuery_CreateChekoute {command.EmployeeFullName},{"true"},{command.Signature},{command.FathersName},{command.NationalCode},{command.DateOfBirth},{command.EmployeeId},{command.WorkshopName},{command.WorkshopId},{command.ContractNo},{command.ContractStart},{command.ContractEnd},{command.Month},{command.Year},{command.ContractId},{command.WorkingHoursId},{command.MonthlySalary},{command.BaseYearsPay},{command.ConsumableItems},{command.HousingAllowance},{command.OvertimePay},{command.NightworkPay},{command.FridayPay},{command.MissionPay},{command.ShiftPay},{command.FamilyAllowance},{command.BonusesPay},{command.YearsPay},{command.LeavePay},{command.InsuranceDeduction},{command.TaxDeducation},{command.InstallmentDeduction},{command.SalaryAidDeduction},{command.AbsenceDeduction},{creationDates},{command.ArchiveCode},{command.PersonnelCode},{command.SumOfWorkingDays},{command.TotalClaims},{command.TotalDeductions},{command.TotalPayment},{0},{command.MarriedAllowance},{command.AbsencePeriod},{command.AverageHoursPerDay},{command.CreditLeaves},{command.LeaveCheckout},{command.HasRollCall},{command.OverTimeWorkValue},{command.OverNightWorkValue},{command.FridayWorkValue},{command.RotatingShiftValue},{command.AbsenceValue}, {command.TotalDayOfLeaveCompute},{command.TotalDayOfYearsCompute},{command.TotalDayOfBunosesCompute}")
.AsEnumerable())// این قسمت مهمه!
.FirstOrDefault();
var entity = await _context.CheckoutSet.FirstOrDefaultAsync(x => x.id == result);
entity.SetSalaryAid(command.SalaryAids,command.SalaryAidDeduction);
entity.SetLoanInstallment(command.LoanInstallments,command.InstallmentDeduction);
await _context.SaveChangesAsync();
}
@@ -462,7 +495,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
var query = new List<CheckoutViewModel>();
foreach (var item in id)
{
var ch = _context.CheckoutSet.Select(x => new CheckoutViewModel()
var ch = _context.CheckoutSet
.AsSplitQuery().Select(x => new CheckoutViewModel()
{
Id = x.id,
WorkshopId = x.WorkshopId,
@@ -516,9 +550,26 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
MaritalStatus = "",
TotalDayOfLeaveCompute = x.TotalDayOfLeaveCompute,
TotalDayOfYearsCompute = x.TotalDayOfYearsCompute,
TotalDayOfBunosesCompute = x.TotalDayOfBunosesCompute
TotalDayOfBunosesCompute = x.TotalDayOfBunosesCompute,
InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel()
{
Amount = i.AmountForMonth,
AmountDouble = i.AmountForMonth.MoneyToDouble(),
Year = i.Year,
Month = i.Month,
IsActive = i.IsActive,
RemainingAmount = i.LoanRemaining,
LoanAmount = i.LoanAmount
}).ToList(),
SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
}).SingleOrDefault(x => x.Id == item);
}).SingleOrDefault(x => x.Id == item);
var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId);
ch.WorkshopName = workshopName.WorkshopName;
ch.TotalPaymentHide = workshopName.TotalPaymentHide;
@@ -731,7 +782,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
public CheckoutViewModel PrintOne(long id)
{
var ch = _context.CheckoutSet.Select(x => new CheckoutViewModel()
var ch = _context.CheckoutSet
.AsSplitQuery().Select(x => new CheckoutViewModel()
{
Id = x.id,
WorkshopId = x.WorkshopId,
@@ -783,10 +835,26 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
MaritalStatus = "",
TotalDayOfLeaveCompute = x.TotalDayOfLeaveCompute,
TotalDayOfYearsCompute = x.TotalDayOfYearsCompute,
TotalDayOfBunosesCompute = x.TotalDayOfBunosesCompute
TotalDayOfBunosesCompute = x.TotalDayOfBunosesCompute,
InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel()
{
Amount = i.AmountForMonth,
AmountDouble = i.AmountForMonth.MoneyToDouble(),
Year = i.Year,
Month = i.Month,
IsActive = i.IsActive,
RemainingAmount = i.LoanRemaining,
LoanAmount = i.LoanAmount
}).ToList(),
SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
}).SingleOrDefault(x => x.Id == id);
}).SingleOrDefault(x => x.Id == id);
var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId);
ch.WorkshopName = workshopName.WorkshopName;
@@ -923,7 +991,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
return new List<CheckoutViewModel>();
}
#endregion
var query = _context.CheckoutSet.Select(x => new CheckoutViewModel()
var query = _context.CheckoutSet
.AsSplitQuery().Select(x => new CheckoutViewModel()
{
Id = x.id,
EmployeeId = x.EmployeeId,
@@ -940,8 +1009,25 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
EmployeeFullName = x.EmployeeFullName,
PersonnelCode = x.PersonnelCode,
PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode),
InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel()
{
Amount = i.AmountForMonth,
AmountDouble = i.AmountForMonth.MoneyToDouble(),
Year = i.Year,
Month = i.Month,
IsActive = i.IsActive,
RemainingAmount = i.LoanRemaining,
LoanAmount = i.LoanAmount
}).ToList(),
SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel()
{
Amount = s.Amount,
AmountDouble = s.Amount.MoneyToDouble(),
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
SalaryAidDateTimeGe = s.SalaryAidDateTime
}).ToList(),
}).Where(x => x.WorkshopId == searchModel.WorkshopId);
}).Where(x => x.WorkshopId == searchModel.WorkshopId);
if (searchModel.EmployeeId > 0)
{
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.DateSalaryAgg;
using Company.Domain.DateSalaryItemAgg;
@@ -54,8 +55,8 @@ public class DateSalaryRepository : RepositoryBase<long, DateSalary>, IDateSalar
}
public DateSalaryViewModel GetDateSalaryViewModel(DateSalarySearchModel searchModel)
{
var query = _context.DateSalaries.Where(x =>x.StartDateGr >= searchModel.StartDateGr && searchModel.StartDateGr<x.EndDateGr &&
x.StartDateGr > searchModel.EndDateGr && searchModel.EndDateGr <= x.EndDateGr).FirstOrDefault();
var query = _context.DateSalaries.FirstOrDefault(x => x.StartDateGr < searchModel.EndDateGr && x.EndDateGr > searchModel.StartDateGr);
var dateSalary = new DateSalaryViewModel();
if (query != null)
{

View File

@@ -1035,28 +1035,10 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
{
var now = DateTime.Now;
// آماده‌سازی activeEmployees یک‌بار با EF و انتقال به حافظه
var activeEmployees = _companyContext.LeftWorkList
.Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= now)
.Select(x => new { x.WorkshopId, x.EmployeeId });
var clientTemp = _companyContext.EmployeeClientTemps
.Where(x => workshops.Contains(x.WorkshopId))
.Select(x => new { x.WorkshopId, x.EmployeeId });
var leftWorkTemp = _companyContext.LeftWorkTemps
.Where(x => workshops.Contains(x.WorkshopId))
.Select(x => new { x.WorkshopId, x.EmployeeId });
// ترکیب کل لیست‌ها در حافظه
var allActiveEmployees = activeEmployees
.Concat(clientTemp)
.Concat(leftWorkTemp);
// دریافت فقط اطلاعات مورد نیاز
var employeeDocumentsQuery = _companyContext.EmployeeDocuments
.Where(x => workshops.Contains(x.WorkshopId)
&& allActiveEmployees.Any(a=>a.WorkshopId == x.WorkshopId && a.EmployeeId == x.EmployeeId)
&& x.IsSentToChecker == false
&& x.HasRejectedItems)
.Where(x => x.EmployeeDocumentItemCollection
@@ -1104,29 +1086,10 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
public async Task<List<EmployeeDocumentsViewModel>> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId, long roleId)
{
var employeeIdsInWorkshop = await _companyContext.LeftWorkList
.Where(x => x.WorkshopId == workshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today)
.Select(x => new { x.EmployeeId, FullName = x.Employee.FName + " " + x.Employee.LName })
.Union(
_companyContext.EmployeeClientTemps
.Where(x => x.WorkshopId == workshopId)
.Select(x => new { x.EmployeeId, FullName = x.EmployeeFullName })
)
.Union(
_companyContext.LeftWorkTemps
.Where(x => x.WorkshopId == workshopId)
.Join(_companyContext.Employees, x => x.EmployeeId, e => e.id,
(x, e) => new { x.EmployeeId, FullName = e.FName + " " + e.LName })
)
.Distinct()
.ToListAsync();
var employeeIdList = employeeIdsInWorkshop.Select(x => x.EmployeeId).ToList();
var edItemsQuery = _companyContext.EmployeeDocumentItems
.Where(x => x.WorkshopId == workshopId &&
x.DocumentStatus == DocumentStatus.Rejected &&
employeeIdList.Contains(x.EmployeeId) &&
x.EmployeeDocuments.IsSentToChecker == false &&
x.EmployeeDocuments.HasRejectedItems)
.Include(x => x.EmployeeDocuments).AsSplitQuery();
@@ -1165,6 +1128,9 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
.Select(x => new MediaViewModel { Id = x.id, Path = x.Path })
.ToListAsync();
var employeeIds = edItemsGrouped.Select(x => x.EmployeeId).ToList();
var employees = _companyContext.Employees.Where(x => employeeIds.Contains(x.id)).ToList();
var result = edItemsGrouped.GroupBy(x => x.EmployeeId)
@@ -1184,7 +1150,7 @@ public class EmployeeDocumentsRepository : RepositoryBase<long, EmployeeDocument
StatusString = y.DocumentStatus.ToString()
}).ToList();
var employeeInfo = employeeIdsInWorkshop.First(e => e.EmployeeId == x.Key);
var employeeInfo = employees.First(e => e.id == x.Key);
//var requiredItemsUploaded = employeeLatestConfirmedDocuments
// .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel)

View File

@@ -121,14 +121,14 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
item.BenefitsIncludedContinuous,
item.BenefitsIncludedNonContinuous,
item.InsuranceShare, item.StartWorkDate,
item.LeftWorkDate, item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance);
item.LeftWorkDate, item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance,item.OverTimePay,item.FamilyAllowance);
_employeeInsurancListDataRepository.Create(employeeInsurancListData);
}
else
{
var employeeInsurancListDataObj = _employeeInsurancListDataRepository.Get(item.EmployeeInsurancListDataId);
employeeInsurancListDataObj.Edit(item.WorkingDays,item.DailyWage,item.MonthlySalary,item.MonthlyBenefits,item .MonthlyBenefitsIncluded,item.BenefitsIncludedContinuous,
item.BenefitsIncludedNonContinuous,item.InsuranceShare,item.StartWorkDate,item.LeftWorkDate,item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance);
item.BenefitsIncludedNonContinuous,item.InsuranceShare,item.StartWorkDate,item.LeftWorkDate,item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance,item.OverTimePay,item.FamilyAllowance);
}
}
_employeeInsurancListDataRepository.SaveChanges();
@@ -641,7 +641,7 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
item.BenefitsIncludedContinuous,
item.BenefitsIncludedNonContinuous,
item.InsuranceShare, item.StartWorkDate,
item.LeftWorkDate, item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance);
item.LeftWorkDate, item.JobId,item.IncludeStatus,item.BaseYears,item.MarriedAllowance,item.OverTimePay,item.FamilyAllowance);
_employeeInsurancListDataRepository.Create(employeeInsurancListData);
}_employeeInsurancListDataRepository.SaveChanges();
@@ -1374,6 +1374,12 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
//حق بیمه سهم بیمه شده
InsuranceShare = result.x.result.employeeData.InsuranceShare,
//اضافه کار فیش حقوقی
OverTimePay = result.x.result.employeeData.OverTimePay,
//حق اولا فیش حقوقی
FamilyAllowance = result.x.result.employeeData.FamilyAllowance,
});

View File

@@ -609,6 +609,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
#endregion
#region Result
var res = new ComputingViewModel()
@@ -639,7 +640,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
TotalHolidayAndNotM = totalHolidaysAndNotM.ToString(),
DayliFeeComplete = dayliFeeComplete,
MarriedAllowance = MarriedAllowanceStr,
RotatingShiftValue = shiftPayValue
RotatingShiftValue = shiftPayValue,
};
#endregion
@@ -2735,6 +2736,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
};
}
private CustomizeCheckoutMandatoryViewModel CheckoutWithoutCalculationForKebabMahdi(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd)
{
var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime();
@@ -2836,7 +2838,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
}).ToList();
}
private List<LoanInstallmentViewModel> LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
public List<LoanInstallmentViewModel> LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
{
return _context.Loans
.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId)
@@ -2856,7 +2858,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
}).ToList();
}
private List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart, DateTime checkoutEnd)
public List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart, DateTime checkoutEnd)
{
return _context.SalaryAids
.Where(x => x.CalculationDate >= checkoutStart && x.CalculationDate <= checkoutEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel()
@@ -3755,7 +3757,7 @@ CreateWorkingHoursTemp command, bool holidayWorking)
public static (DateTime start, DateTime end) FindRotatingShift(DateTime startRollCall, DateTime endRollCall,
ICollection<CustomizeRotatingShift> rotatingShifts)
ICollection<CustomizeRotatingShift> rotatingShifts)
{
DateTime startDate = startRollCall.Date;
DateTime endDate = endRollCall.Date;
@@ -3765,10 +3767,10 @@ CreateWorkingHoursTemp command, bool holidayWorking)
DateTime startEntryWithDate = startDate.Add(startRollCall.TimeOfDay);
DateTime endEntryWithDate = endDate.Add(endRollCall.TimeOfDay);
DateTime oneHourBeforeStart = startEntryWithDate.AddHours(-1);
DateTime oneHourAfterStart = startEntryWithDate.AddHours(1);
DateTime oneHourBeforeEnd = endEntryWithDate.AddHours(-1);
DateTime oneHourAfterEnd = endEntryWithDate.AddHours(1);
DateTime twoHourBeforeStart = startEntryWithDate.AddHours(-2);
DateTime twoHourAfterStart = startEntryWithDate.AddHours(2);
DateTime twoHourBeforeEnd = endEntryWithDate.AddHours(-2);
DateTime twoHourAfterEnd = endEntryWithDate.AddHours(2);
var shiftDateTimes = rotatingShifts.SelectMany(shift =>
@@ -3789,56 +3791,68 @@ CreateWorkingHoursTemp command, bool holidayWorking)
#region مقایسه شروع حضور غیاب با شیفت
var startFilteredTimes = shiftDateTimes.Where(shift =>
(oneHourBeforeStart <= shift.Start && oneHourAfterStart >= shift.Start) ||
(oneHourBeforeStart <= shift.End && oneHourAfterStart >= shift.End)).ToList();
//var startFilteredTimes = shiftDateTimes.Where(shift =>
// (twoHourBeforeStart <= shift.Start && twoHourAfterStart >= shift.Start) ||
// (twoHourBeforeStart <= shift.End && twoHourAfterStart >= shift.End)).ToList();
if (startFilteredTimes.Count == 0)
{
startFilteredTimes = shiftDateTimes;
}
else if (startFilteredTimes.Count == 1)
{
var startChosenShift = startFilteredTimes.First();
//if (startFilteredTimes.Count == 0)
//{
// startFilteredTimes = shiftDateTimes;
//}
//else if (startFilteredTimes.Count == 1)
//{
// var startChosenShift = startFilteredTimes.First();
if (startChosenShift.End < startChosenShift.Start)
startChosenShift.End = startChosenShift.End.AddDays(1);
// if (startChosenShift.End < startChosenShift.Start)
// startChosenShift.End = startChosenShift.End.AddDays(1);
return startChosenShift;
}
// return startChosenShift;
//}
#endregion
//#endregion
#region مقایسه پایان حضورغیاب با شیفت
var endFilteredTimes = shiftDateTimes.Where(shift =>
(oneHourBeforeEnd <= shift.Start && oneHourAfterEnd >= shift.Start) ||
(oneHourBeforeEnd <= shift.End && oneHourAfterEnd >= shift.End)).ToList();
if (endFilteredTimes.Count == 0)
{
endFilteredTimes = startFilteredTimes;
}
else if (endFilteredTimes.Count == 1)
{
var endChosenShift = endFilteredTimes.First();
return endChosenShift;
}
//#region مقایسه پایان حضورغیاب با شیفت
//var endFilteredTimes = shiftDateTimes.Where(shift =>
// (twoHourBeforeEnd <= shift.Start && twoHourAfterEnd >= shift.Start) ||
// (twoHourBeforeEnd <= shift.End && twoHourAfterEnd >= shift.End)).ToList();
//if (endFilteredTimes.Count == 0)
//{
// endFilteredTimes = startFilteredTimes;
//}
//else if (endFilteredTimes.Count == 1)
//{
// var endChosenShift = endFilteredTimes.First();
// return endChosenShift;
//}
#endregion
#region اشتراک حضور غیاب و شیفت
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, oneHourBeforeStart.Ticks)))
});
var overlapShifts = shiftDateTimes
.Select(shift => new
{
Shift = shift,
Overlap = new TimeSpan(Math.Max(0,
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
// زمان حضور فرد در شیفت (مجموع Overlap با شیفت)
TotalTimeInShift = new TimeSpan(Math.Max(0,
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
StartDistance = Math.Abs((shift.Start - startRollCall).Ticks),
EndDistance = Math.Abs((shift.End - endRollCall).Ticks),
TotalDistance = Math.Abs((shift.Start - startRollCall).Ticks) + Math.Abs((shift.End - endRollCall).Ticks)
})
.OrderByDescending(s => s.TotalTimeInShift) // 1. بیشترین زمان حضور فرد
.ThenByDescending(s => s.Overlap) // 2. بیشترین Overlap
.ThenBy(s => s.TotalDistance)
.ThenBy(s => s.StartDistance)
.ThenBy(x => x.EndDistance); // 3. اگر برابر بود، Start نزدیک‌تر
var overlapChosenShift = overlapShifts.MaxBy(s => s.Overlap);
var overlapChosenShift = overlapShifts.First();
var end = overlapChosenShift.Shift.End;
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
end = overlapChosenShift.Shift.End.AddDays(1);

View File

@@ -469,12 +469,12 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
}
else if (late != TimeSpan.Zero)
{
var minutes = late.TotalMinutes > 99 ? "99" : late.TotalMinutes.ToString();
var minutes = late.TotalMinutes > 999 ? "999" : late.TotalMinutes.ToString();
return $"{minutes}+";
}
else if (early != TimeSpan.Zero)
{
var minutes = early.TotalMinutes > 99 ? "99" : early.TotalMinutes.ToString();
var minutes = early.TotalMinutes > 999 ? "999" : early.TotalMinutes.ToString();
return $"{minutes}-";
}
else
@@ -491,12 +491,12 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
}
else if (late != TimeSpan.Zero)
{
var minutes = late.TotalMinutes > 99 ? "99" : late.TotalMinutes.ToString();
var minutes = late.TotalMinutes > 999 ? "999" : late.TotalMinutes.ToString();
return $"{minutes}-";
}
else if (early != TimeSpan.Zero)
{
var minutes = early.TotalMinutes > 99 ? "99" : early.TotalMinutes.ToString();
var minutes = early.TotalMinutes > 999 ? "999" : early.TotalMinutes.ToString();
return $"{minutes}+";
}
else
@@ -756,7 +756,8 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
WorkshopId = workshopId,
StartDate = x.StartDate,
EndDate = x.EndDate,
DateGr = x.ShiftDate
DateGr = x.ShiftDate,
ShiftDate = x.ShiftDate
}).ToList();
}

View File

@@ -195,7 +195,9 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
IsOldContract = x.IsOldContract,
EmployerIdList = emp,
HasRollCallFreeVip = x.HasRollCallFreeVip,
WorkshopHolidayWorking = x.WorkshopHolidayWorking
WorkshopHolidayWorking = x.WorkshopHolidayWorking,
InsuranceCheckoutOvertime = x.InsuranceCheckoutOvertime,
InsuranceCheckoutFamilyAllowance = x.InsuranceCheckoutFamilyAllowance
}).FirstOrDefault(x => x.Id == id);
}
@@ -1553,6 +1555,7 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
WorkshopFullName = x.WorkshopFullName,
TypeOfOwnership = x.TypeOfOwnership,
ArchiveCode = x.ArchiveCode,
ArchiveCodeInt = Convert.ToInt32(x.ArchiveCode),
AgentName = x.AgentName,
AgentPhone = x.AgentPhone,
State = x.State,
@@ -1591,7 +1594,7 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
item.HasBlockContractingParty = blockContractingPartyIds.Intersect(empContractingPartyIds).Any();
}
return list;
return list.OrderBy(x=>x.ArchiveCodeInt).ToList();
}
#endregion

View File

@@ -23,6 +23,10 @@
.container2:last-of-type {
height: 280mm;
}
body * {
line-height: 1.42857143 !important;
}
.modal-dialog {
max-width: 100%;
@@ -59,9 +63,16 @@
height: 100%;
margin: 0 !important;
padding: 0 !important;
overflow: hidden;
overflow: hidden;
line-height: 1.42857143 !important;
}
#printThis {
position: relative;
margin: 0 auto;
width: 21cm;
}
#printSection, #printSection * {
visibility: visible;
page-break-after: auto;
@@ -78,7 +89,7 @@
#printSection {
position: absolute;
left: 0;
right: 0;
page-break-after: auto;
top: 0;
}
@@ -282,6 +293,27 @@
-webkit-print-color-adjust: exact;
}
.headerInfo {
border-radius: 6px;
border: 1px solid #000000 !important;
}
.cusSpanTitle {
border-radius: 4px;
font-weight: bold;
background-color: #ebe6e6 !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
padding: 0 3px;
margin: auto 4px;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}
</style>
var btnActive = "btn-active";

View File

@@ -1,10 +1,10 @@
@using _0_Framework.Application
@model CompanyManagment.App.Contracts.Checkout.CheckoutViewModel
@{
string adminVersion = _0_Framework.Application.Version.AdminVersion;
}
<link href="~/assetsadmin/page/checkouts/css/printdetailsrollcall.css" rel="stylesheet" />
<link href="~/assetsadmin/page/checkouts/css/printdetailsrollcall.css?ver=@adminVersion" rel="stylesheet" />
<div class="modal-header" style="border-bottom: unset">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
@@ -19,294 +19,371 @@
<div class="modal-body print" id="printThis">
<div class="row">
<div class="col-md-12">
<fieldset style="border: 1px solid black;
<fieldset style="border: 1px solid black;
padding: revert;
border-radius: 10px;
height: 28cm;
margin: 3mm 5mm 0 5mm; ">
<div class="row" dir="rtl">
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-xs-6 d-inline-block text-center"><p style="margin-top:10px !important;font-size: 18px; font-family: 'IranNastaliq' !important; ">بسمه تعالی</p> <p style="font-size: 15px; font-weight: bold">فیش حقوقی و رسید پرداخت حقوق</p> </div>
<div class="col-xs-3 d-inline-block"></div>
</div>
<div class="row" style="padding: 0px 12px;font-size: 14px; margin-bottom: 10px; ">
<div class="row">
<span style="width: 280px;padding: 0px 10px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">"1111111111"</span>
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.FathersName</span>
}
</span>
<span style="padding: 0px !important; float: left">
<span>به کد ملی:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden">222333111</span>
}
else
{
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.NationalCode</span>
}
<span>متولد:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
}
else
{
<span style="margin-left: 10px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.DateOfBirth</span>
}
</span>
</div>
<div class="row">
<div class="col-xs-12" style="font-size: 14px; text-align: justify">
<div class="row" dir="rtl">
<div class="col-xs-3 d-inline-block"></div>
<div class="col-xs-6 d-inline-block text-center">
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin-top:0 !important;">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold; margin: 2px;">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 70%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
</div>
<div class="headerInfo">
<div class="row" style="font-size: 12px; margin-bottom: 3px;">
<div class="col-xs-12" style="padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px;">
<div style="width: 34%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">اینجانب</span>
<span>@Model.EmployeeFullName</span>
</div>
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام پدر<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span>@Model.FathersName</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">به کد ملی<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span>
@Model.NationalCode
</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">متولد<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="visibility: hidden">1401/01/01</span>
}
else
{
<span>@Model.DateOfBirth</span>
}
</div>
</div>
</div>
<div class="col-xs-12" style="font-size: 12px; text-align: justify; padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px; padding: 0;">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span> <span>&nbsp;</span>
<div style="width: 50%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">نام کارگاه<span>:</span> </span>
<span>@Model.WorkshopName</span>
</div>
</div>
<span>&nbsp;</span>
if (@Model.EmployerList.Count > 1)
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span> <br />
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
<br />
}
<div style="width: 50%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام کارفرما<span>:</span> </span>
@if (Model.EmployerList.Count > 1)
{
<span>
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
}
else
{
<span>
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
}
</div>
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<span> پـرسنل شرکت/موسسه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<br />
<div style="width: 100%; padding: 3px 0 !important;">
<span class="cusSpanTitle">پـرسنل شرکت/موسسه<span>:</span> </span>
<span>
@Model.WorkshopName
</span>
</div>
}
}
</div>
<div style="text-align: justify; padding: 0 6px;">
@{
var items = new List<string>();
if (Model.MonthlySalary != "0") items.Add("حقوق و مزد");
if (Model.ConsumableItems != "0") items.Add("کمک هزینه اقلام مصرفی خانوار");
if (Model.HousingAllowance != "0") items.Add("کمک هزینه مسکن");
if (!string.IsNullOrWhiteSpace(Model.OvertimePay) && Model.OvertimePay != "0") items.Add("فوق العاده اضافه کاری");
if (!string.IsNullOrWhiteSpace(Model.NightworkPay) && Model.NightworkPay != "0") items.Add("فوق العاده شب کاری");
if (!string.IsNullOrWhiteSpace(Model.FridayPay) && Model.FridayPay != "0") items.Add("فوق العاده جمعه کاری");
if (Model.MissionPay != "0") items.Add("فوق العاده ماموریت");
if (Model.ShiftPay != "0") items.Add("فوق العاده نوبت کاری");
if (Model.FamilyAllowance != "0") items.Add("کمک هزینه عائله مندی");
if (Model.MarriedAllowance != "0") items.Add("حق تاهل");
if (Model.RewardPay != "0") items.Add("پاداش");
if (Model.BonusesPay != "0") items.Add("عیدی و پاداش");
if (Model.YearsPay != "0") items.Add("سنوات");
if (Model.LeavePay != "0") items.Add("مزد مرخصی");
string finalText = "";
if (items.Count == 1)
{
finalText = items[0];
}
else if (items.Count > 1)
{
finalText = string.Join("<span>،</span> ", items.Take(items.Count - 1)) + " و " + items.Last();
}
}
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@Model.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@Model.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
<span>
کلیه حق السعی خود اعم از @Html.Raw(finalText) @Model.Month ماه سال @Model.Year برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام.
</span>
</div>
</div>
</div>
</div>
</div>
<div class="row m-t-20">
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 10px;overflow:hidden">
<table style="/* table-layout: fixed; */ width: 100%">
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@* <th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th> *@
<th colspan="4" style="text-align: center; position: relative ; font-size: 13px;padding-top:4px;border-left: 2px solid #000;"> مطالبات </th>
@* <th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th> *@
<th colspan="3" style="text-align: center; font-size: 13px; position: relative; padding-top: 4px;"> کسورات </th>
@* <th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th> *@
</tr>
</div>
<div class="row m-t-20">
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 10px;overflow:hidden">
<table style="/* table-layout: fixed; */ width: 100%">
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; border-left: 2px solid #000; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 28%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; font-size: 12px"> مبلغ(ریال) </th>
</tr>
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th>
<th style="text-align: center; position: absolute ; right: 55mm; font-size: 13px;padding-top:4px"> مطالبات </th>
<th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th>
<th style="text-align: center; font-size: 13px; position: absolute; left: 50mm; padding-top: 4px;"> کسورات </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th>
</tr>
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حقوق و مزد </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.SumOfWorkingDays </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </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;"> @(Model.InsuranceDeduction == "0" ? "-" : Model.InsuranceDeduction) </td>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; border-left: 2px solid #000; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 28%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; font-size: 12px"> مبلغ(ریال) </th>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> پایه سنوات </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </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;"> @(Model.TaxDeducation == "0" ? "-" : Model.TaxDeducation) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</td>
<td style="padding-right: 8px; border-left: 1px solid #000; white-space: nowrap;"> کمک هزینه اقلام مصرفی خانوار </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </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;"> @(Model.InstallmentDeduction == "0" ? "-" : Model.InstallmentDeduction) </td>
</tr>
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</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: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </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;"> @(Model.InsuranceDeduction == "0" ? "-" : Model.InsuranceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> کمک هزینه مسکن </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </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;"> @(Model.SalaryAidDeduction == "0" ? "-" : Model.SalaryAidDeduction) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده اضافه کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverTimeWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverTimeWorkValue)) ? "-" : Model.OverTimeWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.OvertimePay == "0" || string.IsNullOrWhiteSpace(Model.OvertimePay)) ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده شب کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverNightWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverNightWorkValue)) ? "-" : Model.OverNightWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.NightworkPay == "0" || string.IsNullOrWhiteSpace(Model.NightworkPay)) ? "-" : Model.NightworkPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده جمعه کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.FridayWorkValue == "0" || string.IsNullOrWhiteSpace(Model.FridayWorkValue)) ? "-" : Model.FridayWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.FridayPay == "0" || string.IsNullOrWhiteSpace(Model.FridayPay)) ? "-" : Model.FridayPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">8</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: 2px solid #000;"> @(Model.MissionPay == "0" ? "-" : Model.MissionPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده نوبت کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.RotatingShiftValue == "0" || string.IsNullOrWhiteSpace(Model.RotatingShiftValue)) ? "-" : "%" + Model.RotatingShiftValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">10</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: 2px solid #000;"> @(Model.FamilyAllowance == "0" ? "-" : Model.FamilyAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حق تاهل </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.MaritalStatus </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">12</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: 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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> عیدی و پاداش </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </td>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</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: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </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;"> @(Model.TaxDeducation == "0" ? "-" : Model.TaxDeducation) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</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: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </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;"> @(Model.InstallmentDeduction == "0" ? "-" : Model.InstallmentDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</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: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </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;"> @(Model.SalaryAidDeduction == "0" ? "-" : Model.SalaryAidDeduction) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</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: 2px solid #000;"> @(Model.OvertimePay == "0" ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</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: 2px solid #000;"> @(Model.NightworkPay == "0" ? "-" : Model.NightworkPay) </td>
@{
if (Model.IsLeft)
{
<td style="text-align: center; background-color: #ffffff !important;" colspan="3" rowspan="3">
<div style="border-top: 1px solid #000;border-top-left-radius: 15px;border-top-right-radius: 15px; height: 65px;">
<div style="padding: 0 6px; text-align: start;display: block;align-items: center;height: 64px;margin: 6px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span>
<span>@Model.LastDayOfWork</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span>
<span>@Model.LeftWorkDate</span>
<span>می باشد</span>
</div>
</div>
</td>
}
else
{
<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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</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: 2px solid #000;"> @(Model.FridayPay == "0" ? "-" : Model.FridayPay) </td>
}
}
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> سنوات </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.SumOfWorkingDays)</td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">8</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: 2px solid #000;"> @(Model.MissionPay == "0" ? "-" : Model.MissionPay) </td>
}
}
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مزد مرخصی </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</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: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">10</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: 2px solid #000;"> @(Model.FamilyAllowance == "0" ? "-" : Model.FamilyAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</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: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">12</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: 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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</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: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</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: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</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: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </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;"> </td>
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></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: 2px solid #000;"> @(Model.TotalClaims == "0" ? "-" : Model.TotalClaims) </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;"> @(Model.TotalDeductions == "0" ? "-" : Model.TotalDeductions) </td>
</tr>
<tr style="font-size: 12px; border-radius: 0px 0px 10px 10px !important; height: 20px; background-color: #efefef !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; padding: 2px; border-radius: 0px 0px 10px 0px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000; "> مبلغ قابل پرداخت </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.TotalPayment == "0" ? "-" : Model.TotalPayment) </td>
<td style="padding-right: 8px;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-radius:0px 0px 0px 10px"> </td>
</tr>
</table>
</fieldset>
</div>
}
}
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></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: 2px solid #000;"> @(Model.TotalClaims == "0" ? "-" : Model.TotalClaims) </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;"> @(Model.TotalDeductions == "0" ? "-" : Model.TotalDeductions) </td>
</tr>
<tr style="font-size: 12px; border-radius: 0px 0px 10px 10px !important; height: 20px; background-color: #efefef !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; padding: 2px; border-radius: 0px 0px 10px 0px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000; "> مبلغ قابل پرداخت </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.TotalPayment == "0" ? "-" : Model.TotalPayment) </td>
<td style="padding-right: 8px;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-radius:0px 0px 0px 10px"> </td>
</tr>
</table>
</fieldset>
</div>
<div style="">
<div class="" style="margin-top: 8px;background-color: #F6F6F6 !important;border: 1px solid #000;border-radius: 10px;display: grid;gap: 8px;padding: 8px 0;-webkit-print-color-adjust: exact;print-color-adjust: exact;padding: 6px;grid-template-columns: repeat(2, minmax(0, 1fr));width: 100%;">
@@ -321,14 +398,14 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px;text-align: center;width: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@((@Model.MonthlyRollCall[i].IsHoliday || @Model.MonthlyRollCall[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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap; 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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall[i].IsAbsent)
@@ -405,7 +482,7 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px;text-align: center;width: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -415,7 +492,7 @@
@foreach (var day in Model.MonthlyRollCall)
{
<tr style="@((day.IsHoliday || day.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; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap;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>
@if (day.IsAbsent)
@@ -500,42 +577,96 @@
</div>
</div>
<div class="row" style="padding: 0 12px;">
<table style="width: 100%;margin: 12px 0 0 0;">
<tbody>
<tr>
<td style="width: 60%;">
@{
if (Model.IsLeft)
<div class="" style="margin: 10px 0 0 0;display: flex;gap: 0px;">
<div style="width: 60%;">
<div class="row" style="padding: 0 12px;">
<fieldset style="border: 1px solid black !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 0px; overflow: hidden; padding: 0; display: flex; width: 100%;">
<div class="table-container">
<table style="width: 100%;">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tr style="border-left: 2px solid black; text-align: center; font-size: 9px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center; font-size: 11px;">مساعده</th>
</tr>
<tr style="border-bottom: 1px solid; border-left: 1px solid black; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 3rem; font-size: 11px;">تاریخ</th>
<th style="padding: 1px 4px; text-align: center; border-left: 2px solid black; min-width: 4rem; font-size: 11px;">مبلغ</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<span style="float: right; margin-right: 15px; font-size: 11.2px;height: 36px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
<tr class="trTable" style="text-align: right; font-size: 10px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.SalaryAidDateTimeFa ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;border-left: 2px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.Amount ?? ""
: "")
</td>
</tr>
}
}
</td>
<td style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 88px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 8px 0 0;display: table-caption;padding: 0 4px;white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 88px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 54px 0 0;display: table-caption;padding: 0 4px;">امضاء</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</table>
<table style="width: 100%;">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<tr style="text-align: center; font-size: 11px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center; font-size: 11px;">وام</th>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 4rem; font-size: 11px;">مبلغ کل وام</th>
<th style="padding: 1px 4px; text-align: center; min-width: 4rem; font-size: 11px;">مبلغ باقیمانده وام</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 9px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.LoanAmount ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.RemainingAmount ?? ""
: "")
</td>
</tr>
}
</table>
</div>
</fieldset>
</div>
</div>
<div style="width: 40%; display: flex; justify-content: end;align-items: end;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 8px 0 0; display: table-caption; padding: 0 4px; white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 54px 0 0; display: table-caption; padding: 0 4px;">امضاء</span>
</div>
</div>
</div>
</div>
</fieldset>
</fieldset>
</div>
</div>
</div>
@@ -545,7 +676,7 @@
<input type="hidden" asp-for="Id" value="@Model.Id" />
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">

View File

@@ -1,133 +1,168 @@
@using _0_Framework.Application
@model CompanyManagment.App.Contracts.Checkout.CheckoutViewModel
<div class="container container2" id="printThis">
<div class="row">
<div class="row">
<div class="col-md-12">
<fieldset style="border: 1px solid black;
<div class="row">
<div class="col-md-12">
<fieldset style="border: 1px solid black;
padding: revert;
border-radius: 10px;
height: 28cm;
margin: 3mm 5mm 0 5mm; ">
<div class="row" dir="rtl">
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-xs-6 d-inline-block text-center">
<p style="margin-top:10px !important;font-size: 18px; font-family: 'IranNastaliq' !important; ">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-xs-3 d-inline-block"></div>
</div>
<div class="row" style="padding: 0px 12px;font-size: 14px; margin-bottom: 10px; ">
<div class="row">
<span style="width: 280px;padding: 0px 10px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">"1111111111"</span>
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.FathersName</span>
}
</span>
<span style="padding: 0px !important; float: left">
<span>به کد ملی:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden">222333111</span>
}
else
{
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.NationalCode</span>
}
<span>متولد:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
}
else
{
<span style="margin-left: 10px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.DateOfBirth</span>
}
</span>
</div>
<div class="row">
<div class="col-xs-12" style="font-size: 14px; text-align: justify">
<div class="row" dir="rtl">
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 70%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-xs-6 d-inline-block text-center">
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin-top:0 !important;">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold; margin: 2px;">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-xs-3 d-inline-block"></div>
</div>
<div class="headerInfo">
<div class="row" style="font-size: 12px; margin-bottom: 3px;">
<div class="col-xs-12" style="padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px;">
<div style="width: 34%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">اینجانب</span>
<span>@Model.EmployeeFullName</span>
</div>
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام پدر<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span>@Model.FathersName</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">به کد ملی<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span>
@Model.NationalCode
</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">متولد<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="visibility: hidden">1401/01/01</span>
}
else
{
<span>@Model.DateOfBirth</span>
}
</div>
</div>
</div>
<div class="col-xs-12" style="font-size: 12px; text-align: justify; padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px; padding: 0;">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span>
<span>&nbsp;</span>
<span>&nbsp;</span>
if (@Model.EmployerList.Count > 1)
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
<br />
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
<br />
}
<div style="width: 50%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">نام کارگاه<span>:</span> </span>
<span>@Model.WorkshopName</span>
</div>
</div>
<div style="width: 50%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام کارفرما<span>:</span> </span>
@if (Model.EmployerList.Count > 1)
{
<span>
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
}
else
{
<span>
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
}
</div>
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<span> پـرسنل شرکت/موسسه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<br />
<div style="width: 100%; padding: 3px 0 !important;">
<span class="cusSpanTitle">پـرسنل شرکت/موسسه<span>:</span> </span>
<span>
@Model.WorkshopName
</span>
</div>
}
}
</div>
<div style="text-align: justify; padding: 0 6px;">
@{
var items = new List<string>();
if (Model.MonthlySalary != "0") items.Add("حقوق و مزد");
if (Model.ConsumableItems != "0") items.Add("کمک هزینه اقلام مصرفی خانوار");
if (Model.HousingAllowance != "0") items.Add("کمک هزینه مسکن");
if (!string.IsNullOrWhiteSpace(Model.OvertimePay) && Model.OvertimePay != "0") items.Add("فوق العاده اضافه کاری");
if (!string.IsNullOrWhiteSpace(Model.NightworkPay) && Model.NightworkPay != "0") items.Add("فوق العاده شب کاری");
if (!string.IsNullOrWhiteSpace(Model.FridayPay) && Model.FridayPay != "0") items.Add("فوق العاده جمعه کاری");
if (Model.MissionPay != "0") items.Add("فوق العاده ماموریت");
if (Model.ShiftPay != "0") items.Add("فوق العاده نوبت کاری");
if (Model.FamilyAllowance != "0") items.Add("کمک هزینه عائله مندی");
if (Model.MarriedAllowance != "0") items.Add("حق تاهل");
if (Model.RewardPay != "0") items.Add("پاداش");
if (Model.BonusesPay != "0") items.Add("عیدی و پاداش");
if (Model.YearsPay != "0") items.Add("سنوات");
if (Model.LeavePay != "0") items.Add("مزد مرخصی");
string finalText = "";
if (items.Count == 1)
{
finalText = items[0];
}
else if (items.Count > 1)
{
finalText = string.Join("<span>،</span> ", items.Take(items.Count - 1)) + " و " + items.Last();
}
}
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@Model.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@Model.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
<span>
کلیه حق السعی خود اعم از @Html.Raw(finalText) @Model.Month ماه سال @Model.Year برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام.
</span>
</div>
</div>
</div>
<div class="row m-t-20">
</div>
</div>
</div>
<div class="row m-t-20">
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 10px;overflow:hidden">
<table style="/* table-layout: fixed; */ width: 100%">
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th>
<th style="text-align: center; position: absolute ; right: 55mm; font-size: 13px;padding-top:4px"> مطالبات </th>
<th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th>
<th style="text-align: center; font-size: 13px; position: absolute; left: 50mm; padding-top: 4px;"> کسورات </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th>
</tr>
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@* <th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th> *@
<th colspan="4" style="text-align: center; position: relative ; font-size: 13px;padding-top:4px;border-left: 2px solid #000;"> مطالبات </th>
@* <th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th> *@
<th colspan="3" style="text-align: center; font-size: 13px; position: relative; padding-top: 4px;"> کسورات </th>
@* <th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th> *@
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
@@ -142,7 +177,7 @@
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</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.SumOfWorkingDays </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حق بیمه سهم کارگر </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -152,7 +187,7 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</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.BaseYearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مالیات بر حقوق </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -161,8 +196,8 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</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="padding-right: 8px; border-left: 1px solid #000; white-space: nowrap;"> کمک هزینه اقلام مصرفی خانوار </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> قسط تسهیلات </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -172,7 +207,7 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</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.HousingAllowance == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مساعده </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -181,28 +216,28 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</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: 2px solid #000;"> @(Model.OvertimePay == "0" ? "-" : Model.OvertimePay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> غیبت </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverTimeWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverTimeWorkValue)) ? "-" : Model.OverTimeWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.OvertimePay == "0" || string.IsNullOrWhiteSpace(Model.OvertimePay)) ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</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: 2px solid #000;"> @(Model.NightworkPay == "0" ? "-" : Model.NightworkPay) </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.OverNightWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverNightWorkValue)) ? "-" : Model.OverNightWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.NightworkPay == "0" || string.IsNullOrWhiteSpace(Model.NightworkPay)) ? "-" : Model.NightworkPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</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: 2px solid #000;"> @(Model.FridayPay == "0" ? "-" : Model.FridayPay) </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.FridayWorkValue == "0" || string.IsNullOrWhiteSpace(Model.FridayWorkValue)) ? "-" : Model.FridayWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.FridayPay == "0" || string.IsNullOrWhiteSpace(Model.FridayPay)) ? "-" : Model.FridayPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
@@ -210,17 +245,17 @@
<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: 2px solid #000;"> @(Model.MissionPay == "0" ? "-" : Model.MissionPay) </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="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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</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.RotatingShiftValue == "0" || string.IsNullOrWhiteSpace(Model.RotatingShiftValue)) ? "-" : "%" + Model.RotatingShiftValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </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="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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@@ -235,7 +270,7 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</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.MaritalStatus </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
@@ -250,33 +285,66 @@
<td style="text-align: center; border-left: 1px solid #000;"> </td>
<td style="text-align: center;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</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: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</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: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</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: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> عیدی و پاداش </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </td>
@{
if (Model.IsLeft)
{
<td style="text-align: center; background-color: #ffffff !important;" colspan="3" rowspan="3">
<div style="border-top: 1px solid #000;border-top-left-radius: 15px;border-top-right-radius: 15px; height: 65px;">
<div style="padding: 0 6px; text-align: start;display: block;align-items: center;height: 64px;margin: 6px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span>
<span>@Model.LastDayOfWork</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span>
<span>@Model.LeftWorkDate</span>
<span>می باشد</span>
</div>
</div>
</td>
}
else
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> سنوات </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.SumOfWorkingDays)</td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مزد مرخصی </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> جمع مطالبات </td>
@@ -312,14 +380,14 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px;text-align: center;width: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@((@Model.MonthlyRollCall[i].IsHoliday || @Model.MonthlyRollCall[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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap; 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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall[i].IsAbsent)
@@ -396,7 +464,7 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
<th style="font-size: 8px;text-align: center;width: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -406,7 +474,7 @@
@foreach (var day in Model.MonthlyRollCall)
{
<tr style="@((day.IsHoliday || day.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; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap; 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>
@if (day.IsAbsent)
@@ -490,51 +558,98 @@
</div>
</div>
<div class="row" style="padding: 0 12px;">
<table style="width: 100%;margin: 12px 0 0 0;">
<tbody>
<div class="" style="margin: 10px 0 0 0;display: flex;gap: 0px;">
<div style="width: 60%;">
<div class="row" style="padding: 0 12px;">
<fieldset style="border: 1px solid black !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 0px; overflow: hidden; padding: 0; display: flex; width: 100%;">
<tr>
<td style="width: 60%;">
@{
if (Model.IsLeft)
{
<span style="float: right; margin-right: 15px; font-size: 11.2px;height: 36px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
}
}
</td>
<td style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 8px 0 0;display: table-caption;padding: 0 4px;white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 54px 0 0;display: table-caption;padding: 0 4px;">امضاء</span>
</div>
</div>
</td>
</tr>
<div class="table-container">
<table style="width: 100%;">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tr style="border-left: 2px solid black; text-align: center; font-size: 10px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center; font-size: 11px;">مساعده</th>
</tr>
<tr style="border-bottom: 1px solid; border-left: 1px solid black; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 3rem; font-size: 11px;">تاریخ</th>
<th style="padding: 1px 4px; text-align: center; border-left: 2px solid black; min-width: 4rem; font-size: 11px;">مبلغ</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 10px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.SalaryAidDateTimeFa ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;border-left: 2px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.Amount ?? ""
: "")
</td>
</tr>
}
</table>
<table style="width: 100%;">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<tr style="text-align: center; font-size: 11px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center; font-size: 11px;">وام</th>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 4rem; font-size: 11px;">مبلغ کل وام</th>
<th style="padding: 1px 4px; text-align: center; min-width: 4rem; font-size: 11px;">مبلغ باقیمانده وام</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 9px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.LoanAmount ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.RemainingAmount ?? ""
: "")
</td>
</tr>
}
</table>
</div>
</fieldset>
</div>
</div>
<div style="width: 40%; display: flex; justify-content: end;align-items: end;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 8px 0 0; display: table-caption; padding: 0 4px; white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 54px 0 0; display: table-caption; padding: 0 4px;">امضاء</span>
</div>
</div>
</div>
</div>
</tbody>
</table>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" asp-for="Id" value="@Model.Id" />
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">

View File

@@ -0,0 +1,606 @@
@using _0_Framework.Application
@model CompanyManagment.App.Contracts.Checkout.CheckoutViewModel
<div class="container container2" id="printThis">
<div class="row">
<div class="row">
<div class="col-md-12">
<fieldset style="border: 1px solid black;
padding: revert;
border-radius: 10px;
height: 28cm;
margin: 3mm 5mm 0 5mm; ">
<div class="row" dir="rtl">
<div class="col-xs-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-xs-6 d-inline-block text-center">
<p style="margin-top:10px !important;font-size: 18px; font-family: 'IranNastaliq' !important; ">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-xs-3 d-inline-block"></div>
</div>
<div class="row" style="padding: 0px 12px;font-size: 14px; margin-bottom: 10px; ">
<div class="row">
<span style="width: 280px;padding: 0px 10px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">"1111111111"</span>
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.FathersName</span>
}
</span>
<span style="padding: 0px !important; float: left">
<span>به کد ملی:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden">222333111</span>
}
else
{
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.NationalCode</span>
}
<span>متولد:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
}
else
{
<span style="margin-left: 10px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.DateOfBirth</span>
}
</span>
</div>
<div class="row">
<div class="col-xs-12" style="font-size: 14px; text-align: justify">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span>
<span>&nbsp;</span>
<span>&nbsp;</span>
if (@Model.EmployerList.Count > 1)
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
<br />
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
<br />
}
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<span> پـرسنل شرکت/موسسه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<br />
}
}
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@Model.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@Model.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
</div>
</div>
</div>
<div class="row m-t-20">
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 10px;overflow:hidden">
<table style="/* table-layout: fixed; */ width: 100%">
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th>
<th style="text-align: center; position: absolute ; right: 55mm; font-size: 13px;padding-top:4px"> مطالبات </th>
<th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th>
<th style="text-align: center; font-size: 13px; position: absolute; left: 50mm; padding-top: 4px;"> کسورات </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; border-left: 2px solid #000; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 28%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; font-size: 12px"> مبلغ(ریال) </th>
</tr>
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حقوق و مزد </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.SumOfWorkingDays </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </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;"> @(Model.InsuranceDeduction == "0" ? "-" : Model.InsuranceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> پایه سنوات </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </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;"> @(Model.TaxDeducation == "0" ? "-" : Model.TaxDeducation) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> کمک هزینه اقلام مصرفی خانوار </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </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;"> @(Model.InstallmentDeduction == "0" ? "-" : Model.InstallmentDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> کمک هزینه مسکن </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </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;"> @(Model.SalaryAidDeduction == "0" ? "-" : Model.SalaryAidDeduction) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده اضافه کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverTimeWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverTimeWorkValue)) ? "-" : Model.OverTimeWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.OvertimePay == "0" || string.IsNullOrWhiteSpace(Model.OvertimePay)) ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده شب کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverNightWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverNightWorkValue)) ? "-" : Model.OverNightWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.NightworkPay == "0" || string.IsNullOrWhiteSpace(Model.NightworkPay)) ? "-" : Model.NightworkPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده جمعه کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.FridayWorkValue == "0" || string.IsNullOrWhiteSpace(Model.FridayWorkValue)) ? "-" : Model.FridayWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.FridayPay == "0" || string.IsNullOrWhiteSpace(Model.FridayPay)) ? "-" : Model.FridayPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">8</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: 2px solid #000;"> @(Model.MissionPay == "0" ? "-" : Model.MissionPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> فوق العاده نوبت کاری </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.RotatingShiftValue == "0" || string.IsNullOrWhiteSpace(Model.RotatingShiftValue)) ? "-" : "%" + Model.RotatingShiftValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">10</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: 2px solid #000;"> @(Model.FamilyAllowance == "0" ? "-" : Model.FamilyAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حق تاهل </td>
<td style="text-align: center; border-left: 1px solid #000;"> @Model.MaritalStatus </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">12</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: 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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> عیدی و پاداش </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> سنوات </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مزد مرخصی </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </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;"> </td>
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></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: 2px solid #000;"> @(Model.TotalClaims == "0" ? "-" : Model.TotalClaims) </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;"> @(Model.TotalDeductions == "0" ? "-" : Model.TotalDeductions) </td>
</tr>
<tr style="font-size: 12px; border-radius: 0px 0px 10px 10px !important; height: 20px; background-color: #efefef !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; padding: 2px; border-radius: 0px 0px 10px 0px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000; "> مبلغ قابل پرداخت </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.TotalPayment == "0" ? "-" : Model.TotalPayment) </td>
<td style="padding-right: 8px;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-radius:0px 0px 0px 10px"> </td>
</tr>
</table>
</fieldset>
</div>
<div style="">
<div class="" style="margin-top: 8px;background-color: #F6F6F6 !important;border: 1px solid #000;border-radius: 10px;display: grid;gap: 8px;padding: 8px 0;-webkit-print-color-adjust: exact;print-color-adjust: exact;padding: 6px;grid-template-columns: repeat(2, minmax(0, 1fr));width: 100%;">
<div class="" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC;border-radius: 7px;padding: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<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: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;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[i].IsHoliday || @Model.MonthlyRollCall[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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall[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 style="display: flex;justify-content: center;">
<span style="width: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</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;">
@* <span style="width: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span> *@
</div>
</td>
}
else
{
@if (string.IsNullOrWhiteSpace(Model.MonthlyRollCall[i].LeaveType))
{
<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[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[i].EndDate1</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[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[i].EndDate2</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: 41px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
@Model.MonthlyRollCall[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;">
@* <span style="width: 40px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
@Model.MonthlyRollCall[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; ">@Model.MonthlyRollCall[i].BreakTimeString</td>
<td style="font-size: 8px; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;vertical-align: center;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@if (@Model.MonthlyRollCall[i].IsSliced)
{
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="display: block; margin: auto;">
<circle stroke-width="2" cx="12" cy="12" r="9" stroke="#222222" />
<path stroke-width="2" d="M8 12L11 15L16 9" stroke="#222222" stroke-linecap="round" />
</svg>
}
else
{
<span>-</span>
}
</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;border-radius: 5px 0 0 5px;">@Model.MonthlyRollCall[i].TotalWorkingHours</td>
</tr>
}
</tbody>
</table>
</div>
<div class="" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC;border-radius: 7px;padding: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<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: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">ورود</th>
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 11%;-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: 15%;padding: 0 0 0 0px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">ساعت کارکرد</th>
</tr>
</thead>
<tbody>
@{
Model.MonthlyRollCall = Model.MonthlyRollCall.Skip(15).ToList();
}
@foreach (var day in Model.MonthlyRollCall)
{
<tr style="@((day.IsHoliday || day.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; ">@day.DateTimeGr.ToFarsi() - @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 style="display: flex;justify-content: center;">
<span style="width: 38px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</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;">
@* <span style="width: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span> *@
</div>
</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 !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 !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>
}
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: 41px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
@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;">
@* <span style="width: 80px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
مرخصی @day.LeaveType
</span> *@
</div>
</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.BreakTimeString</td>
<td style="font-size: 8px !important; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;vertical-align: center;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@if (day.IsSliced)
{
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="display: block; margin: auto;">
<circle stroke-width="2" cx="12" cy="12" r="9" stroke="#222222" />
<path stroke-width="2" d="M8 12L11 15L16 9" stroke="#222222" stroke-linecap="round" />
</svg>
}
else
{
<span>-</span>
}
</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;border-radius: 5px 0 0 5px;">@day.TotalWorkingHours</td>
</tr>
}
</tbody>
</table>
</div>
<div style="grid-column: span 2 / span 2;padding: 0;">
<div style="background-color: #FFFFFF !important; border: 1px solid #CCCCCC;border-radius: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<table style="width: 100%;">
<tbody>
<tr style="font-size: 12px; border-collapse: separate; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 6px 6px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">موظفی @Model.Month @Model.Year : @Model.TotalMandatoryTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات حضور : @Model.TotalPresentTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات استراحت : @Model.TotalBreakTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 0px;border-color: #D9D9D9;border-style: solid; border-radius: 6px 0 0 6px; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات کارکرد : @Model.TotalWorkingTimeStr</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="row" style="padding: 0 12px;">
<table style="width: 100%;margin: 12px 0 0 0;">
<tbody>
<tr>
<td style="width: 60%;">
@{
if (Model.IsLeft)
{
<span style="float: right; margin-right: 15px; font-size: 11.2px;height: 36px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
}
}
</td>
<td style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 8px 0 0;display: table-caption;padding: 0 4px;white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 54px 0 0;display: table-caption;padding: 0 4px;">امضاء</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
@* <div class="row">
<fieldset style="border-radius: 10px 10px 10px 10px; margin: 0px 10px;">
<div class="row" style="padding: 10px 0 0px 0;">
@{
if (Model.IsLeft)
{
<span style="float: right; margin-right: 15px; font-size: 11.2px;height: 36px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
}
}
</div> *@
@* <div class="row" style="padding: 0px 14px; font-size: 14px;">
<div class="row"> *@
@*<div class="col-xs-3"><span>اینجانب <span>&nbsp;</span> <span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold">@Model.EmployeeFullName</span> </span></div>
<div class="col-xs-3"><span> نام پدر: <span>&nbsp;</span><span>&nbsp;</span> <span>&nbsp;</span><span style="font-weight: bold">@Model.FathersName</span></span></div>
<div class="col-xs-3"><span>به کد ملی:<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold">@Model.NationalCode</span> </span></div>
<div class="col-xs-3" style="direction: ltr"> متولد: <span>&nbsp;</span><span>&nbsp;</span><span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold">@Model.DateOfBirth</span></div>*@
@* </div>
<div class="row">
<div class="col-xs-12" style="font-size: 14px; text-align: justify"> *@
@*<span> پـرسنل شـرکت<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم/شرکت</span> <span>&nbsp;</span><span>&nbsp;</span>
@{
foreach (var item in @Model.EmployerList)
{
<span style="font-weight: bold">@item.EmployerFullName </span> <span>،</span>
}
}
<span>&nbsp;</span><span>&nbsp;</span>
<span>مبلغ ............. ریال را بصورت نقدی از کارفرما دریافت نمودم. </span>*@
@* </div>
</div>
<div class="row">
<div classs="col-xs-12">
<div style="float: left;display: flex;position: absolute;left: 26px;bottom: 12px;">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 98px; border-radius: 10px;">
<span style="position: absolute; top: -9px; right: 50%; transform: translate(50%, 0px); border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; font-size: 12px;width: 55px;">اثر انگشت</span>
</div>
<div style="margin-left: 15px; position: relative; width: 160px; border: 1px solid #000; height: 98px; border-radius: 10px;">
<span style="position: absolute; top: -9px; right: 50%; transform: translate(50%, 0px); border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; font-size: 12px;">امضاء</span>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div> *@
</fieldset>
</div>
</div>
</div>
</div>
<input type="hidden" asp-for="Id" value="@Model.Id" />
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">

View File

@@ -1248,6 +1248,8 @@
var includeStatus = Number($(this).attr('data-includeStatus')) == 1 ? true : false;
var leftWorkDate = $(this).find('td:eq(1)').attr("data-leftworkdate");
var overTimePay = $(this).find('td:eq(1)').attr("data-OverTimePay");
var familyAllowance = $(this).find('td:eq(1)').attr("data-FamilyAllowance");
var nationality = $(this).attr("data-nationality");
//console.log(leftWorkDate);
var startWorkDate = $(this).find('td:eq(2)').attr("data-startworkdate");
@@ -1343,6 +1345,10 @@
}].MarriedAllowance" id="EmployeeInsurancListDataList_${i}__MarriedAllowance" value="${marriedAllowance}" />`);
$("#divEmployeeInsurancListData").append(`<input type="hidden" name="EmployeeInsurancListDataList[${i
}].BaseYears" id="EmployeeInsurancListDataList_${i}__BaseYears" value="${baseYears}" />`);
$("#divEmployeeInsurancListData").append(`<input type="hidden" name="EmployeeInsurancListDataList[${i
}].OverTimePay" id="EmployeeInsurancListDataList_${i}__OverTimePay" value="${overTimePay}" />`);
$("#divEmployeeInsurancListData").append(`<input type="hidden" name="EmployeeInsurancListDataList[${i
}].FamilyAllowance" id="EmployeeInsurancListDataList_${i}FamilyAllowance" value="${familyAllowance}" />`);
});
$("#form").submit();
} else {

View File

@@ -32,7 +32,7 @@
{
var index = 1;
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet))
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet || !x.EmployeeHasCheckout))
{
<script>
@@ -51,12 +51,12 @@
<th colspan="4">
<p style="color: red">
ابتدا وضعیت تاهل پرسنل در لیست زیر را مشخص نمایید
ابتدا خطاهای پرسنل در لیست زیر را برطرف نمایید
</p>
</th>
</tr>
<tr>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نوع خطا </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> کدملی </th>
<th class="header-styledit-btn sorting_asc_disabled sorting_desc_disabled"> نام خانوادگی </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نام </th>
@@ -69,10 +69,24 @@
<tbody>
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
if (!item.IsMaritalStatusSet)
if (!item.IsMaritalStatusSet || !item.EmployeeHasCheckout)
{
<tr>
<td class="td-ellipsis emptyTR" >
@{
if (!item.IsMaritalStatusSet)
{
<span style="color: #ff00ce"> وضعیت تاهل ندارد </span>
<br />
}
if (!item.EmployeeHasCheckout)
{
<span style="color: red">فیش حقوقی ندارد</span>
}
}
</td>
<td class="td-ellipsis @(item.Nationality == "ایرانی" ? "emptyTR" : "")">@item.NationalCode</td>
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>
@@ -153,6 +167,8 @@
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
<input type="hidden" id="familyAllownce" value="@item.FamilyAllowance" asp-for="@item.FamilyAllowance"/>
<input type="hidden" value="@item.OverTimePay" asp-for="@item.OverTimePay"/>
if (item.LeftWorkDate == item.StartMonthCurrent)
{
<tr data-hasconfilictjobs="@item.HasConfilictJobs" data-nationality="@item.Nationality" data-yearlySalaryItem="@item.YearlySalaryItem" data-IncludeStatus="@Convert.ToInt32(item.IncludeStatus)" class="leftwork" data-employeeId="@item.EmployeeId" data-insuranceEmployeeInformationId="@item.InsuranceEmployeeInformationId" data-DateOfIssue="@item.DateOfIssue">
@@ -162,7 +178,7 @@
<i class="fa faSize fa-sign-out"></i>
</a>*@
</td>
<td data-LeftWorkDate="@item.LeftWorkDateGr" class="small-font td-ellipsis ">@item.LeftWorkDate</td>
<td data-OverTimePay="@item.OverTimePay" data-FamilyAllowance="@item.FamilyAllowance" data-LeftWorkDate="@item.LeftWorkDateGr" class="small-font td-ellipsis ">@item.LeftWorkDate</td>
<td data-StartWorkDate="@item.StartWorkDateGr" class="small-font td-ellipsis emptyTR">@item.StartWorkDate</td>
<td data-Id="@item.JobId" data-jobcode="@item.JobCode" class="@(item.HasConfilictJobs && item.JobId != 10 ? "blink" : "") small-font td-ellipsis emptyTR" id="JobName">@item.JobName</td>
<td data-InsuranceShare="0" data-EmployerShare="0" data-UnemploymentInsurance="0" class="small-font td-ellipsis emptyTR">0</td>
@@ -195,7 +211,7 @@
<i class="fa faSize fa-sign-out"></i>
</a>*@
</td>
<td data-LeftWorkDate="@item.LeftWorkDateGr" class="small-font td-ellipsis ">@item.LeftWorkDate</td>
<td data-OverTimePay="@item.OverTimePay" data-FamilyAllowance="@item.FamilyAllowance" data-LeftWorkDate="@item.LeftWorkDateGr" class="small-font td-ellipsis ">@item.LeftWorkDate</td>
<td data-StartWorkDate="@item.StartWorkDateGr" class="small-font td-ellipsis emptyTR">@item.StartWorkDate</td>
<td data-Id="@item.JobId" data-jobcode="@item.JobCode" class="@(item.HasConfilictJobs && item.JobId != 10 ? "blink" : "") small-font td-ellipsis emptyTR jobName">@item.JobName</td>
<td data-InsuranceShare="@item.InsuranceShare" data-EmployerShare="@item.EmployerShare" data-UnemploymentInsurance="@item.UnEmploymentInsurance" class="small-font td-ellipsis emptyTR">@item.InsuranceShare.ToMoney()</td>
@@ -216,6 +232,7 @@
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>
<td class="td-ellipsis emptyTR">@item.InsuranceCode</td>
<td class="td-ellipsis ">@index</td>
</tr>
}

View File

@@ -31,8 +31,8 @@
@if (Model.EmployeeDetailsForInsuranceList != null)
{
var index = 1;
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet))
if (Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet || !x.EmployeeHasCheckout))
{
<script>
@@ -51,12 +51,12 @@
<th colspan="4">
<p style="color: red">
ابتدا وضعیت تاهل پرسنل در لیست زیر را مشخص نمایید
ابتدا خطاهای پرسنل در لیست زیر را برطرف نمایید
</p>
</th>
</tr>
<tr>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نوع خطا </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> کدملی </th>
<th class="header-styledit-btn sorting_asc_disabled sorting_desc_disabled"> نام خانوادگی </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نام </th>
@@ -69,10 +69,24 @@
<tbody>
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
if (!item.IsMaritalStatusSet)
if (!item.IsMaritalStatusSet || !item.EmployeeHasCheckout)
{
<tr>
<td class="td-ellipsis emptyTR">
@{
if (!item.IsMaritalStatusSet)
{
<span style="color: #ff00ce"> وضعیت تاهل ندارد </span>
<br />
}
if (!item.EmployeeHasCheckout)
{
<span style="color: red">فیش حقوقی ندارد</span>
}
}
</td>
<td class="td-ellipsis @(item.Nationality == "ایرانی" ? "emptyTR" : "")">@item.NationalCode</td>
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>
@@ -85,12 +99,69 @@
</tbody>
</table>
}
else if (Model.EmployeeDetailsForInsuranceList.Any(x=>x.FamilyAllowanceIsSet == false || x.OverTimeIsSet == false))
{
<script>
$('#maritalStatusErr').val(true);
</script>
<table id="DSKWOR" class="table table-bordered table-striped dataTable" style="min-width: 473px;">
<colgroup>
<col class="colgp-4">
<col class="colgp-3">
<col class="colgp-2">
<col class="colgp-1">
</colgroup>
<thead>
<tr>
<th colspan="4">
<p style="color: red">
<span> محاسبات اضافه کار یا حق اولاد پرسنل زیر در لیست بیمه وجود ندارد </span>
<br/>
<span>لطفا لیست بیمه را حذف و مجددا ایجاد نمایید</span>
</p>
</th>
</tr>
<tr>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> کدملی </th>
<th class="header-styledit-btn sorting_asc_disabled sorting_desc_disabled"> نام خانوادگی </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled"> نام </th>
<th class="header-style sorting_asc_disabled sorting_desc_disabled">#</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.EmployeeDetailsForInsuranceList)
{
if (!item.OverTimeIsSet || !item.FamilyAllowanceIsSet)
{
<tr>
<td class="td-ellipsis @(item.Nationality == "ایرانی" ? "emptyTR" : "")">@item.NationalCode</td>
<td class="td-ellipsis emptyTR">@item.LName</td>
<td class="td-ellipsis emptyTR">@item.FName</td>
<td class="td-ellipsis ">@index</td>
</tr>
index++;
}
}
</tbody>
</table>
}
else
{
<script>
<script>
$('#maritalStatusErr').val(false);
</script>
}
<div class="col-md-6 @(Model.EmployeeDetailsForInsuranceList.Any(x => !x.IsMaritalStatusSet) ? "hideDataTable" : "")" style="float: left;">

View File

@@ -719,8 +719,7 @@ public class IndexModel : PageModel
foreach (var item in createInsuranceList.EmployeeInsurancListDataList)
{
var employee = createInsuranceList.EmployeeDetailsForInsuranceList
.Where(p => p.EmployeeId == item.EmployeeId).FirstOrDefault();
var employee = createInsuranceList.EmployeeDetailsForInsuranceList.FirstOrDefault(p => p.EmployeeId == item.EmployeeId);
//var employeeObj = _employeeApplication.GetDetails(item.EmployeeId);
@@ -785,7 +784,7 @@ public class IndexModel : PageModel
dswrec[20] = item.MonthlyBenefits.ToString();
//دستمزد و مزایای ماهانه مشمول
dswrec[21] = item.MonthlyBenefitsIncluded.ToString();
//جمع کل دستمزد و مزایای ماهانه مسمول غیرمشمول
//جمع کل دستمزد و مزایای ماهانه مشمول غیرمشمول
dswrec[22] = item.IncludedAndNotIncluded.ToString();
//حق بیمه سهم بیمه شده
dswrec[23] = item.InsuranceShare.ToString();

View File

@@ -874,6 +874,19 @@
@if (Model.Command.PermissionIds != null && Model.Command.PermissionIds.Contains(10324))
{
<div class="col-md-12 col-xs-12">
<div class="row card m-b-10">
<div class="col-md-6 col-xs-12">
<h4>محاسبه اضافه کار و حق عائله مندی در لیست بیمه کارگاه</h4>
<div>
<label class="input-label"><input type="checkbox" asp-for="Command.InsuranceCheckoutOvertime" class="checkboxes"> <span>اضافه کار فیش حقوقی در لیست بیمه محاسبه گردد</span></label>
</div>
<div>
<label class="input-label"><input type="checkbox" asp-for="Command.InsuranceCheckoutFamilyAllowance" class="checkboxes"><span class="m-r-5">حق عائله مندی فیش حقوقی در لیست بیمه محاسبه گردد </span></label>
</div>
</div>
</div>
<div class="row card">
<div class="col-md-6 col-xs-12">
<h4>ارسال لیست بیمه کارگاه</h4>

View File

@@ -876,6 +876,19 @@
<input type="hidden" id="PermissionInsurance" asp-for="@Model.HasPermissionInsurance" value="@Model.HasPermissionInsurance" />
<div style="@(Model.HasPermissionInsurance ? "" : "display: none;")">
<div class="col-md-12 col-xs-12">
<div class="row card m-b-10">
<div class="col-md-6 col-xs-12">
<h4>محاسبه اضافه کار و حق عائله مندی در لیست بیمه کارگاه</h4>
<div>
<label class="input-label"><input type="checkbox" asp-for="Command.InsuranceCheckoutOvertime" class="checkboxes"> <span>اضافه کار فیش حقوقی در لیست بیمه محاسبه گردد</span></label>
</div>
<div>
<label class="input-label"><input type="checkbox" asp-for="Command.InsuranceCheckoutFamilyAllowance" class="checkboxes"><span class="m-r-5">حق عائله مندی فیش حقوقی در لیست بیمه محاسبه گردد </span></label>
</div>
</div>
</div>
<div class="row card">
<div class="col-md-6 col-xs-12">
<h4>ارسال لیست بیمه کارگاه</h4>
@@ -888,7 +901,7 @@
<div>
<label class="form-control-label"><input type="checkbox" value="Familylist" class="myCheckbox checkboxes sendList"> ارسال لیست بیمه کارگاه خانوادگی</label>
</div>
<input type="hidden" asp-for="Command.TypeOfInsuranceSend" id="asp-hidden" />
<input type="hidden" asp-for="Command.TypeOfInsuranceSend" id="asp-hidden"/>
</div>
<div class="col-md-3 col-xs-12 disabled" id="myDiv4">
<label class="input-label">کد کارگاهی بیمه</label>

View File

@@ -1,4 +1,5 @@
using _0_Framework.Application;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using AccountManagement.Domain.AccountLeftWorkAgg;
using AccountMangement.Infrastructure.EFCore;
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
@@ -63,9 +64,12 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
public IActionResult OnPostShiftDateNew()
{
var startRollCall = new DateTime(2025, 3, 21);
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall && x.EndDate != null).ToList();
var r1 = rollCalls.Take(10000).ToList();
var startRollCall = new DateTime(2025, 4, 21);
var employees = _context.CustomizeWorkshopEmployeeSettings
.Where(x => x.WorkshopShiftStatus == WorkshopShiftStatus.Rotating).Select(x => x.EmployeeId).ToList();
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall && x.EndDate != null &&employees.Contains(x.EmployeeId)).ToList();
var r1 = rollCalls.ToList();
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine("endStep 1 ============");
@@ -220,14 +224,28 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
//Console.WriteLine("endStep 1 ============");
//SetRollCall(r1);
await RefactorEmployeeDocumentItem();
await ChangeIsConfirmed();
await RemoveEmployeeClientTemps();
await SetCalculationDateInSalaryAid();
ViewData["message"] = "تومام دو";
return Page();
}
private async System.Threading.Tasks.Task SetCalculationDateInSalaryAid()
{
var salaryAids = await _context.SalaryAids.ToListAsync();
foreach (var salaryAid in salaryAids)
{
var calculationDate = salaryAid.SalaryAidDateTime;
var calculationMonth = Convert.ToInt32(calculationDate.ToFarsiMonth());
var calculationYear = Convert.ToInt32(calculationDate.ToFarsiYear());
salaryAid.Edit(salaryAid.Amount,salaryAid.SalaryAidDateTime,0,UserType.Anonymous,calculationMonth, calculationYear);
}
await _context.SaveChangesAsync();
}
private async System.Threading.Tasks.Task RemoveEmployeeClientTemps()
{
var employeeDocuments = _context.EmployeeDocuments
@@ -432,9 +450,15 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
var endedRollCalls2 = r1.Where(x => x.EndDate != null).ToList();
var countSetTDRollCall = endedRollCalls2.Count;
var stepSetTDRollCal = 1;
foreach (var rollCall in endedRollCalls2)
{
rollCall.ClearTimeDiff();
}
_context.SaveChanges();
foreach (var endedRollCall in endedRollCalls2)
{
endedRollCall.SetShiftDate(_rollCallDomainService);
endedRollCall.Edit(endedRollCall.StartDate.Value, endedRollCall.EndDate.Value, _rollCallDomainService);
Console.WriteLine($"{stepSetTDRollCal} - {countSetTDRollCall} ended Set Time Differences{endedRollCall.id}");
stepSetTDRollCal += 1;
}

View File

@@ -1,9 +1,11 @@
@page
@model ServiceHost.Areas.Client.Pages.Company.Checkouts.CheckoutPrintAllModel
<link href="~/assetsclient/pages/checkouts/css/printonerollcall.css" rel="stylesheet" />
@{
<link href="~/assetsclient/pages/checkouts/css/checkoutprintall.css" rel="stylesheet" />
string clientVersion = _0_Framework.Application.Version.StyleVersion;
<link href="~/assetsclient/pages/checkouts/css/checkoutprintall.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/assetsclient/pages/checkouts/css/printonerollcall.css?ver=@clientVersion" rel="stylesheet" />
var btnActive = "btn-active";
var btnDeactive = "btn-deactive";

View File

@@ -81,6 +81,12 @@
background-color: #ffffff !important;
-webkit-print-color-adjust: exact;
}
#printThis {
position: relative;
margin: 0 auto;
width: 21cm;
}
.container2 {
height: 100%;
@@ -113,8 +119,8 @@
#printSection {
position: absolute !important;
right: 0 !important;
page-break-after: auto !important;
top: 0 !important;
page-break-after: auto !important;
}
.head {
@@ -411,7 +417,7 @@
<div class="col-12">
<span style="width: 280px;padding: 0px 0px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@items.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
<span> نام پدر<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@items.FathersName))
{
<span style="visibility: hidden">"1111111111"</span>
@@ -424,7 +430,7 @@
</span>
<span style="padding: 0px !important; float: left">
<span>به کد ملی:</span> <span>&nbsp;</span>
<span>به کد ملی<span>:</span></span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@items.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden">222333111</span>
@@ -434,7 +440,7 @@
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@items.NationalCode</span>
}
<span>متولد:</span> <span>&nbsp;</span>
<span>متولد<span>:</span></span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@items.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
@@ -454,7 +460,7 @@
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@items.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span> <span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای<span>/</span>خانم</span> <span>&nbsp;</span>
<span>&nbsp;</span>
if (@items.EmployerList.Count > 1)
@@ -488,10 +494,10 @@
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span>و همچنین عیدی و پاداش، سنوات و<span>...</span></span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@items.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@items.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام<span>:</span></span>
</div>
</div>
@@ -3167,6 +3173,7 @@
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@items.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
<span>.</span>
</span>
}
}
@@ -3223,26 +3230,42 @@
<script src="~/assetsclient/libs/html2pdf/html2pdf.bundle.min.js"></script>
<script>
$(document).ready(function () {
printElement(document.getElementById("printThis"));
});
function printElement(elem) {
var domClone = elem.cloneNode(true);
if (window.matchMedia('(max-width: 767px)').matches) {
var checkoutId = $('#Id').val();
var $printSection = document.getElementById("printSection");
var opt = {
margin: 2,
filename: `checkout_${checkoutId}.pdf`,
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};
html2pdf().set(opt).from(elem).save();
$("#MainModal").modal("hide");
} else {
var domClone = elem.cloneNode(true);
if (!$printSection) {
$printSection = document.createElement("div");
$printSection.id = "printSection";
document.body.appendChild($printSection);
var $printSection = document.getElementById("printSection");
if (!$printSection) {
$printSection = document.createElement("div");
$printSection.id = "printSection";
document.body.appendChild($printSection);
}
$printSection.innerHTML = "";
$printSection.appendChild(domClone);
window.print();
}
$printSection.innerHTML = "";
$printSection.appendChild(domClone);
window.print();
}
</script>

View File

@@ -1,8 +1,11 @@
@using _0_Framework.Application
@using System.Security.Cryptography.X509Certificates
@model CompanyManagment.App.Contracts.Checkout.CheckoutViewModel
<link href="~/assetsclient/pages/checkouts/css/printonerollcall.css" rel="stylesheet" />
@{
string clientVersion = _0_Framework.Application.Version.StyleVersion;
}
<link href="~/assetsclient/pages/checkouts/css/printonerollcall.css?ver=@clientVersion" rel="stylesheet" />
<div class="modal-header" style="border-bottom: unset">
<button type="button" id="closingOnePrint" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close" style="margin-top: 15px;"></button>
@@ -22,160 +25,202 @@
border-radius: 10px;
height: 28cm;
margin: 3mm 5mm 0 5mm; ">
<div class="row" dir="rtl">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center"><p style="margin-top:10px !important;font-size: 18px; font-family: 'IranNastaliq' !important; ">بسمه تعالی</p> <p style="font-size: 15px; font-weight: bold">فیش حقوقی و رسید پرداخت حقوق</p> </div>
<div class="col-3 d-inline-block"></div>
</div>
<div class="row" style="font-size: 14px; margin-bottom: 10px; ">
<div class="col-12">
<span style="width: 280px;padding: 0px 0px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.FathersName</span>
<div class="row" dir="rtl">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; margin-top: 5px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center">
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin: 0;">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold; margin: 0;">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-3 d-inline-block"></div>
</div>
}
</span>
<span style="padding: 0px !important; float: left">
<div class="headerInfo">
<div class="row" style="font-size: 12px; margin-bottom: 3px; ">
<div class="col-12" style="padding: 0 10px;">
<div class="d-flex align-items-center" style="border-bottom: 1px solid #000000 !important;">
<div style="width: 34%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">اینجانب</span>
<span>@Model.EmployeeFullName</span>
</div>
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام پدر<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span>@Model.FathersName</span>
<span>به کد ملی:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.NationalCode</span>
}
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">به کد ملی<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span>
@Model.NationalCode
</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">متولد<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="visibility: hidden">1401/01/01</span>
}
else
{
<span>@Model.DateOfBirth</span>
}
</div>
</div>
</div>
<span>متولد:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
}
else
{
<span style="margin-left: 0px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.DateOfBirth</span>
}
</span>
<div class="col-12" style="font-size: 12px; text-align: justify; padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px; padding: 0;">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<div style="width: 50%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">نام کارگاه<span>:</span> </span>
<span>@Model.WorkshopName</span>
</div>
</div>
<div style="width: 50%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام کارفرما<span>:</span> </span>
@if (Model.EmployerList.Count > 1)
{
<span>
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
}
else
{
<span>
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
}
</div>
</div>
<div class="col-12" style="font-size: 14px; text-align: justify">
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<div style="width: 100%; padding: 3px 0 !important;">
<span class="cusSpanTitle">پـرسنل شرکت/موسسه<span>:</span> </span>
<span>
@Model.WorkshopName
</span>
</div> }
}
</div>
<div style="text-align: justify; padding: 0 6px;">
@{
var items = new List<string>();
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span> <span>&nbsp;</span>
if (Model.MonthlySalary != "0") items.Add("حقوق و مزد");
if (Model.ConsumableItems != "0") items.Add("کمک هزینه اقلام مصرفی خانوار");
if (Model.HousingAllowance != "0") items.Add("کمک هزینه مسکن");
if (!string.IsNullOrWhiteSpace(Model.OvertimePay) && Model.OvertimePay != "0") items.Add("فوق العاده اضافه کاری");
if (!string.IsNullOrWhiteSpace(Model.NightworkPay) && Model.NightworkPay != "0") items.Add("فوق العاده شب کاری");
if (!string.IsNullOrWhiteSpace(Model.FridayPay) && Model.FridayPay != "0") items.Add("فوق العاده جمعه کاری");
if (Model.MissionPay != "0") items.Add("فوق العاده ماموریت");
if (Model.ShiftPay != "0") items.Add("فوق العاده نوبت کاری");
if (Model.FamilyAllowance != "0") items.Add("کمک هزینه عائله مندی");
if (Model.MarriedAllowance != "0") items.Add("حق تاهل");
if (Model.RewardPay != "0") items.Add("پاداش");
if (Model.BonusesPay != "0") items.Add("عیدی و پاداش");
if (Model.YearsPay != "0") items.Add("سنوات");
if (Model.LeavePay != "0") items.Add("مزد مرخصی");
<span>&nbsp;</span>
if (@Model.EmployerList.Count > 1)
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span> <br />
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
string finalText = "";
if (items.Count == 1)
{
finalText = items[0];
}
else if (items.Count > 1)
{
finalText = string.Join("<span>،</span> ", items.Take(items.Count - 1)) + " و " + items.Last();
}
}
<br />
}
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<span> پـرسنل شرکت/موسسه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<br />
}
}
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@Model.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@Model.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
</div>
</div>
<span>
کلیه حق السعی خود اعم از @Html.Raw(finalText) @Model.Month ماه سال @Model.Year برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام.
</span>
</div>
</div>
</div>
</div>
<div class="row" style="margin-top: 10px;padding: 0 12px;">
<fieldset style="border: 1px solid black !important;-webkit-print-color-adjust: exact;print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 0px; overflow: hidden;padding: 0;">
<table style="/* table-layout: fixed; */ width: 100%">
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th>
<th style="text-align: center; position: absolute ; right: 55mm; font-size: 13px;padding-top:4px"> مطالبات </th>
<th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th>
<th style="text-align: center; font-size: 13px; position: absolute; left: 50mm; padding-top: 4px;"> کسورات </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th>
</tr>
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@* <th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th> *@
<th colspan="4" style="text-align: center; position: relative ; font-size: 13px;padding-top:4px;border-left: 2px solid #000;"> مطالبات </th>
@* <th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th> *@
<th colspan="3" style="text-align: center; font-size: 13px; position: relative; padding-top: 4px;"> کسورات </th>
@* <th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th> *@
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; border-left: 2px solid #000; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 28%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 5%; text-align: center; border-left: 1px solid #000; font-size: 12px;padding: 2px"> ردیف </th>
<th style="width: 23%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; border-left: 2px solid #000; font-size: 12px"> مبلغ(ریال) </th>
<th style="width: 28%; text-align: center; border-left: 1px solid #000; font-size: 12px"> شرح </th>
<th style="width: 10%; text-align: center; border-left: 1px solid #000; font-size: 9px"> ساعت/روز/تعداد </th>
<th style="width: 12%; text-align: center; font-size: 12px"> مبلغ(ریال) </th>
</tr>
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</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.SumOfWorkingDays </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </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;"> @(Model.InsuranceDeduction == "0" ? "-" : Model.InsuranceDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</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.BaseYearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </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;"> @(Model.TaxDeducation == "0" ? "-" : Model.TaxDeducation) </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</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="padding-right: 8px; border-left: 1px solid #000; white-space: nowrap;"> کمک هزینه اقلام مصرفی خانوار </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </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;"> @(Model.InstallmentDeduction == "0" ? "-" : Model.InstallmentDeduction) </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</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.HousingAllowance == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مساعده </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -184,8 +229,8 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</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: 2px solid #000;"> @(Model.OvertimePay == "0" ? "-" : Model.OvertimePay) </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverTimeWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverTimeWorkValue)) ? "-" : Model.OverTimeWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.OvertimePay == "0" || string.IsNullOrWhiteSpace(Model.OvertimePay)) ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
@@ -193,19 +238,19 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</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: 2px solid #000;"> @(Model.NightworkPay == "0" ? "-" : Model.NightworkPay) </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.OverNightWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverNightWorkValue)) ? "-" : Model.OverNightWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.NightworkPay == "0" || string.IsNullOrWhiteSpace(Model.NightworkPay)) ? "-" : Model.NightworkPay) </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;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</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: 2px solid #000;"> @(Model.FridayPay == "0" ? "-" : Model.FridayPay) </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.FridayWorkValue == "0" || string.IsNullOrWhiteSpace(Model.FridayWorkValue)) ? "-" : Model.FridayWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.FridayPay == "0" || string.IsNullOrWhiteSpace(Model.FridayPay)) ? "-" : Model.FridayPay) </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;"> </td>
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
@@ -220,7 +265,7 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</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.RotatingShiftValue == "0" || string.IsNullOrWhiteSpace(Model.RotatingShiftValue)) ? "-" : "%" + Model.RotatingShiftValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
@@ -238,7 +283,7 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</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.MaritalStatus </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
@@ -256,30 +301,64 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</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.BonusesPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </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;"> </td>
@{
if (Model.IsLeft)
{
<td style="text-align: center; background-color: #ffffff !important;" colspan="3" rowspan="3">
<div style="border-top: 1px solid #000;border-top-left-radius: 15px;border-top-right-radius: 15px; height: 65px;">
<div style="padding: 0 6px; text-align: start;display: block;align-items: center;height: 64px;margin: 6px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span>
<span>@Model.LastDayOfWork</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span>
<span>@Model.LeftWorkDate</span>
<span>می باشد</span>
</div>
</div>
</td>
}
else
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</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.YearsPay == "0" ? "-" : Model.SumOfWorkingDays)</td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </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;"> </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</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: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </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;"> </td>
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مزد مرخصی </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> جمع مطالبات </td>
@@ -304,7 +383,175 @@
<div style="padding: 0 12px;">
<div class="row" style="margin-top: 8px;background-color: #F6F6F6 !important;border: 1px solid #000;border-radius: 10px;display: grid;gap: 8px;padding: 8px 0;-webkit-print-color-adjust: exact;print-color-adjust: exact;padding: 6px;grid-template-columns: repeat(2, minmax(0, 1fr));">
<div class="col-6 w-100" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC;border-radius: 7px;padding: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<div class="col-6 w-100" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC; border-radius: 7px; padding: 7px; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="background-color: #AFAFAF; -webkit-print-color-adjust: exact; print-color-adjust: exact; display: flex; flex-wrap: wrap; font-size: 8px;align-items: center;border-radius: 5px">
<div style="width: 30%; padding: 2px 10px; border-left: 0; border-radius: 0 5px 5px 0;">تاریخ</div>
<div style="width: 10%; text-align: center;">ورود</div>
<div style="width: 10%; text-align: center;">خروج</div>
<div style="width: 10%; text-align: center;">ورود</div>
<div style="width: 10%; text-align: center;">خروج</div>
<div style="width: 10%; text-align: center;">استراحت</div>
<div style="width: 10%; text-align: center;">منقطع</div>
<div style="width: 10%; text-align: center; border-radius: 5px 0 0 5px;">کارکرد</div>
</div>
@for (int i = 0; i < 15; i++)
{
var dailyRollCall = Model.MonthlyRollCall[i];
<div style="display: flex; flex-wrap: wrap; white-space: nowrap; font-size: 8px; border-collapse: separate; background-color: @(dailyRollCall.IsHoliday || dailyRollCall.IsFriday ? "#BBBBBB" : "#FFFFFF") !important;border-radius: 7px;">
<div style="width: 30%; padding: 1px 3px; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; border-radius: 0 5px 5px 0;">
@dailyRollCall.DateTimeGr.ToFarsi() - @dailyRollCall.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()
</div>
@if (dailyRollCall.IsAbsent)
{
<div style="width: 20%; text-align: center; display: flex; justify-content: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">غیبت</span>
</div>
<div style="width: 20%; text-align: center; display: flex; justify-content: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;">
@if (dailyRollCall.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
}
else
{
@if (string.IsNullOrWhiteSpace(dailyRollCall.LeaveType))
{
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 0; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.StartDate1</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate1</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate2</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate2</div>
}
else
{
<div style="width: 20%;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;align-items: center;display: flex;">
<div style="display: flex; justify-content: center;align-items: center;width: 100%;">
<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;">
@dailyRollCall.LeaveType
</span>
</div>
</div>
<div style="width: 20%;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 (dailyRollCall.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
}
}
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;">@dailyRollCall.BreakTimeString</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
@if (@dailyRollCall.IsSliced)
{
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="display: block; margin: auto;">
<circle stroke-width="2" cx="12" cy="12" r="9" stroke="#222222" />
<path stroke-width="2" d="M8 12L11 15L16 9" stroke="#222222" stroke-linecap="round" />
</svg>
}
else
{
<span>-</span>
}
</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 0; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;border-radius: 5px 0 0 5px;">@dailyRollCall.TotalWorkingHours</div>
</div>
}
</div>
<div class="col-6 w-100" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC; border-radius: 7px; padding: 7px; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<div style="background-color: #AFAFAF; -webkit-print-color-adjust: exact; print-color-adjust: exact; display: flex; flex-wrap: wrap; font-size: 8px;align-items: center;border-radius: 5px">
<div style="width: 30%; padding: 2px 10px; border-left: 0; border-radius: 0 5px 5px 0;">تاریخ</div>
<div style="width: 10%; text-align: center;">ورود</div>
<div style="width: 10%; text-align: center;">خروج</div>
<div style="width: 10%; text-align: center;">ورود</div>
<div style="width: 10%; text-align: center;">خروج</div>
<div style="width: 10%; text-align: center;">استراحت</div>
<div style="width: 10%; text-align: center;">منقطع</div>
<div style="width: 10%; text-align: center; border-radius: 5px 0 0 5px;">کارکرد</div>
</div>
@{
Model.MonthlyRollCall = Model.MonthlyRollCall.Skip(15).ToList();
}
@foreach (var day in Model.MonthlyRollCall)
{
var dailyRollCall = day;
<div style="display: flex; flex-wrap: wrap; white-space: nowrap; font-size: 8px; border-collapse: separate; background-color: @(dailyRollCall.IsHoliday || dailyRollCall.IsFriday ? "#BBBBBB" : "#FFFFFF") !important;border-radius: 7px;">
<div style="width: 30%; padding: 1px 3px; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid; border-radius: 0 5px 5px 0;">
@dailyRollCall.DateTimeGr.ToFarsi() - @dailyRollCall.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()
</div>
@if (dailyRollCall.IsAbsent)
{
<div style="width: 20%; text-align: center; display: flex; justify-content: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;">
<span style="width: 40px; display: block; border-radius: 50px; background-color: #737373; color: #fff;">غیبت</span>
</div>
<div style="width: 20%; text-align: center; display: flex; justify-content: center;border-width: 2px 0 2px 2px;border-color: #DDDCDC;border-style: solid;">
@if (dailyRollCall.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
}
else
{
@if (string.IsNullOrWhiteSpace(dailyRollCall.LeaveType))
{
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 0; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.StartDate1</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate1</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate2</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;">@dailyRollCall.EndDate2</div>
}
else
{
<div style="width: 20%;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;align-items: center;display: flex;">
<div style="display: flex; justify-content: center;align-items: center;width: 100%;">
<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;">
@dailyRollCall.LeaveType
</span>
</div>
</div>
<div style="width: 20%;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 (dailyRollCall.IsBirthDay)
{
<span style="width: 38px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">تولد</span>
}
</div>
</div>
}
}
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;">@dailyRollCall.BreakTimeString</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 2px; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;">
@if (@dailyRollCall.IsSliced)
{
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="display: block; margin: auto;">
<circle stroke-width="2" cx="12" cy="12" r="9" stroke="#222222" />
<path stroke-width="2" d="M8 12L11 15L16 9" stroke="#222222" stroke-linecap="round" />
</svg>
}
else
{
<span>-</span>
}
</div>
<div style="width: 10%; text-align: center; border-width: 2px 0 2px 0; border-color: #DDDCDC; border-style: solid;-webkit-print-color-adjust: exact;print-color-adjust: exact;border-radius: 5px 0 0 5px;">@dailyRollCall.TotalWorkingHours</div>
</div>
}
</div>
@* <div class="col-6 w-100" style="background-color: #DDDCDC !important; border: 1px solid #CCCCCC;border-radius: 7px;padding: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<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;">
@@ -315,7 +562,7 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 12%;-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: 14%;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;text-align: center;width: 14%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">ساعت کارکرد</th>
</tr>
</thead>
<tbody>
@@ -333,7 +580,7 @@
</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: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span> *@
<span style="width: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span>
</div>
</td>
}
@@ -357,9 +604,9 @@
</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: 80px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
<span style="width: 80px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
@Model.MonthlyRollCall[i].LeaveType
</span> *@
</span>
</div>
</td>
}
@@ -396,7 +643,7 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 12%;-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: 14%;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;text-align: center;width: 14%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">ساعت کارکرد</th>
</tr>
</thead>
<tbody>
@@ -417,7 +664,7 @@
</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: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span> *@
<span style="width: 40px;display: block;border-radius: 50px;background-color: #737373;color: #fff;">غیبت</span>
</div>
</td>
}
@@ -440,11 +687,11 @@
</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;">
@* <span style="width: 80px; display: block; border-radius: 50px; background-color: #fff; color: #737373;border: 1px solid #737373;">
@day.LeaveType
</span> *@
</div>
<div style="display: flex; justify-content: center;">
<span style="width: 80px; display: block; border-radius: 50px; background-color: #fff; color: #737373; border: 1px solid #737373;">
@day.LeaveType
</span>
</div>
</td>
}
}
@@ -469,17 +716,17 @@
</tbody>
</table>
</div>
*@
<div style="grid-column: span 2 / span 2;padding: 0;">
<div style="background-color: #FFFFFF !important; border: 1px solid #CCCCCC;border-radius: 7px; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<table style="width: 100%;">
<tbody>
<tr style="font-size: 12px; border-collapse: separate; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 6px 6px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">موظفی @Model.Month @Model.Year : @Model.TotalMandatoryTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات حضور : @Model.TotalPresentTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات استراحت : @Model.TotalBreakTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 0px;border-color: #D9D9D9;border-style: solid; border-radius: 6px 0 0 6px; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات کارکرد : @Model.TotalWorkingTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 6px 6px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">موظفی @Model.Month @Model.Year <span>:</span> @Model.TotalMandatoryTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات حضور <span>:</span> @Model.TotalPresentTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 1px;border-color: #D9D9D9;border-style: solid; border-radius: 0 0px 0px 0; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات استراحت <span>:</span> @Model.TotalBreakTimeStr</td>
<td style="font-size: 8px; padding: 5px 3px;border-width: 0 0 0 0px;border-color: #D9D9D9;border-style: solid; border-radius: 6px 0 0 6px; -webkit-print-color-adjust: exact;print-color-adjust: exact; text-align: center;width: 25%;background: #FFFFFF;">ساعات کارکرد <span>:</span> @Model.TotalWorkingTimeStr</td>
</tr>
</tbody>
@@ -489,45 +736,94 @@
</div>
</div>
<div class="row" style="padding: 0 12px;">
<table style="width: 100%;margin: 12px 0 0 0;">
<tbody>
<div class="row" style="margin-top: 10px;">
<div style="width: 60%;">
<div class="row" style="padding: 0 12px;">
<fieldset style="border: 1px solid black !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 0px; overflow: hidden; padding: 0; display: flex; width: 100%;">
<tr>
<td style="width: 60%;">
@{
if (Model.IsLeft)
{
<span style="float: right; margin-left: 15px; font-size: 11.2px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
}
else
{
<span style="float: right; margin-left: 15px; font-size: 11.2px;visibility:hidden;"></span>
}
}
</td>
<td style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 8px 0 0;display: table-caption;padding: 0 4px;white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 54px 0 0;display: table-caption;padding: 0 4px;">امضاء</span>
</div>
</div>
</td>
</tr>
<div class="table-container">
<table style="width: 100%;">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
</tbody>
</table>
</div>
<tr style="border-left: 2px solid black; text-align: center; font-size: 10px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="font-size: 10px;">مساعده</th>
</tr>
<tr style="border-bottom: 1px solid; border-left: 1px solid black; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 3rem; font-size: 10px;">تاریخ</th>
<th style="padding: 1px 4px; text-align: center; border-left: 2px solid black; min-width: 4rem; font-size: 10px;">مبلغ</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 10px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.SalaryAidDateTimeFa ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;border-left: 2px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.Amount ?? ""
: "")
</td>
</tr>
}
</table>
<table style="width: 100%;">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<tr style="text-align: center; font-size: 10px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center">وام</th>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 4rem;font-size: 10px;">مبلغ کل وام</th>
<th style="padding: 1px 4px; text-align: center; min-width: 4rem;font-size: 10px;">مبلغ باقیمانده وام</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 9px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.LoanAmount ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.RemainingAmount ?? ""
: "")
</td>
</tr>
}
</table>
</div>
</fieldset>
</div>
</div>
<div style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 8px 0 0; display: table-caption; padding: 0 4px; white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 54px 0 0; display: table-caption; padding: 0 4px;">امضاء</span>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
@@ -535,7 +831,6 @@
</div>
<input type="hidden" asp-for="Id" value="@Model.Id" />
@@ -554,5 +849,5 @@
</div>
</form>
<!--<script src="~/AdminTheme/assets/js/workingHoursPrintable.js"></script>-->
<script src="~/assetsclient/pages/checkouts/js/printonerollcall.js"></script>
<script src="~/assetsclient/libs/html2pdf/html2pdf.bundle.min.js"></script>
<script src="~/assetsclient/pages/checkouts/js/printonerollcall.js?ver=@clientVersion"></script>

View File

@@ -11,95 +11,142 @@
margin: 3mm 5mm 0 5mm; position: relative;">
<div class="row" dir="rtl">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black;border-radius: 15px;padding: 1px 15px 1px 15px;margin-top: 5px;width: 70%;font-size: 12px;text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center"><p style="margin-top:10px !important;font-size: 18px; font-family: 'IranNastaliq' !important; ">بسمه تعالی</p> <p style="font-size: 15px; font-weight: bold">فیش حقوقی و رسید پرداخت حقوق</p> </div>
<div class="col-6 d-inline-block text-center">
<p style="font-size: 18px; font-family: 'IranNastaliq' !important; margin: 0;">بسمه تعالی</p>
<p style="font-size: 15px; font-weight: bold; margin: 0;">فیش حقوقی و رسید پرداخت حقوق</p>
</div>
<div class="col-3 d-inline-block"></div>
</div>
<div class="row" style="font-size: 14px; margin-bottom: 10px; ">
<div class="col-12">
<span style="width: 280px;padding: 0px 0px 0px 0px !important; float:right"><span>اینجانب <span>&nbsp;</span> <span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.EmployeeFullName</span> </span></span>
<span style="margin-right: 5px; float:right">
<span> نام پدر: </span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.FathersName</span>
}
</span>
<span style="padding: 0px !important; float: left">
<div class="headerInfo">
<div class="row" style="font-size: 12px; margin-bottom: 3px;">
<div class="col-12" style="padding: 0 10px;">
<div class="d-flex align-items-center" style="border-bottom: 1px solid #000000 !important;">
<div style="width: 34%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">اینجانب</span>
<span>@Model.EmployeeFullName</span>
</div>
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام پدر<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.FathersName))
{
<span style="visibility: hidden">""</span>
}
else
{
<span>@Model.FathersName</span>
<span>به کد ملی:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span style="margin-left: 15px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.NationalCode</span>
}
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">به کد ملی<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.NationalCode))
{
<span style="margin-left: 15px; visibility: hidden"></span>
}
else
{
<span>
@Model.NationalCode
</span>
}
</div>
<div style="width: 22%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">متولد<span>:</span></span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="visibility: hidden">1401/01/01</span>
}
else
{
<span>@Model.DateOfBirth</span>
}
</div>
</div>
</div>
<span>متولد:</span> <span>&nbsp;</span>
@if (string.IsNullOrWhiteSpace(@Model.DateOfBirth))
{
<span style="margin-left: 10px; visibility: hidden">1401/01/01</span>
}
else
{
<span style="margin-left: 0px; font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.DateOfBirth</span>
}
</span>
<div class="col-12" style="font-size: 12px; text-align: justify; padding: 0 10px;">
<div style="display: flex;align-items: center;border-bottom: 1px solid #000000 !important;height: 23px; padding: 0;">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<div style="width: 50%; padding: 3px 0 !important;">
<div>
<span class="cusSpanTitle">نام کارگاه<span>:</span> </span>
<span>@Model.WorkshopName</span>
</div>
</div>
<div style="width: 50%; padding: 3px 0 !important; border-right: 1px solid #000000 !important;">
<span class="cusSpanTitle">نام کارفرما<span>:</span> </span>
@if (Model.EmployerList.Count > 1)
{
<span>
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span>
}
else
{
<span>
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
}
</div>
</div>
<div class="col-12" style="font-size: 14px; text-align: justify">
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span> پـرسنل کارگاه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<span>&nbsp;</span>
<span>به کارفرمایی <span>&nbsp;</span> آقای/خانم</span> <span>&nbsp;</span>
<span>&nbsp;</span>
if (@Model.EmployerList.Count > 1)
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList[0].EmployerFullName <span>،</span>
<span>&nbsp;</span>@Model.EmployerList[1].EmployerFullName
@if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
</span> <br />
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<div style="width: 100%; padding: 3px 0 !important;">
<span class="cusSpanTitle">پـرسنل شرکت/موسسه<span>:</span> </span>
<span>
@Model.WorkshopName
</span>
</div>
}
}
else
{
<span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">
@Model.EmployerList.FirstOrDefault().EmployerFullName
</span>
</div>
<div style="text-align: justify; padding: 0 6px;">
@{
var items = new List<string>();
<br />
if (Model.MonthlySalary != "0") items.Add("حقوق و مزد");
if (Model.ConsumableItems != "0") items.Add("کمک هزینه اقلام مصرفی خانوار");
if (Model.HousingAllowance != "0") items.Add("کمک هزینه مسکن");
if (!string.IsNullOrWhiteSpace(Model.OvertimePay) && Model.OvertimePay != "0") items.Add("فوق العاده اضافه کاری");
if (!string.IsNullOrWhiteSpace(Model.NightworkPay) && Model.NightworkPay != "0") items.Add("فوق العاده شب کاری");
if (!string.IsNullOrWhiteSpace(Model.FridayPay) && Model.FridayPay != "0") items.Add("فوق العاده جمعه کاری");
if (Model.MissionPay != "0") items.Add("فوق العاده ماموریت");
if (Model.ShiftPay != "0") items.Add("فوق العاده نوبت کاری");
if (Model.FamilyAllowance != "0") items.Add("کمک هزینه عائله مندی");
if (Model.MarriedAllowance != "0") items.Add("حق تاهل");
if (Model.RewardPay != "0") items.Add("پاداش");
if (Model.BonusesPay != "0") items.Add("عیدی و پاداش");
if (Model.YearsPay != "0") items.Add("سنوات");
if (Model.LeavePay != "0") items.Add("مزد مرخصی");
string finalText = "";
if (items.Count == 1)
{
finalText = items[0];
}
else if (items.Count > 1)
{
finalText = string.Join("<span>،</span> ", items.Take(items.Count - 1)) + " و " + items.Last();
}
}
}
else if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقوقی")
{
<span> پـرسنل شرکت/موسسه<span>&nbsp;</span><span>&nbsp;</span><span style="font-weight: bold; background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;">@Model.WorkshopName</span> </span>
<br />
}
}
<span>کلیه حق السعی خود اعم از حقوق، کمک هزینه اقلام مصرفی خانوار، کمک هزینه مسکن </span>
<span>و همچنین عیدی و پاداش، سنوات و...</span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> <span style="font-weight: bold">@Model.Month</span> ماه </span>
<span style="background-color: #ebe6e6 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;"> سال <span style="font-weight: bold">@Model.Year</span> </span>
<span> برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام. </span>
<span>
کلیه حق السعی خود اعم از @Html.Raw(finalText) @Model.Month ماه سال @Model.Year برابر با قرارداد به شماره فوق را از کارفرما بصورت وجه نقد و واریز به حساب دریافت نموده ام.
</span>
</div>
</div>
</div>
</div>
@@ -109,13 +156,13 @@
<tr style="border-bottom: 1px solid; height: 25px; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th>
<th style="text-align: center; position: absolute ; right: 55mm; font-size: 13px;padding-top:4px"> مطالبات </th>
<th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th>
<th style="text-align: center; font-size: 13px; position: absolute; left: 50mm; padding-top: 4px;"> کسورات </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th>
@* <th style="text-align: center; width: 8mm; font-size: 12px; padding: 2px; border-collapse: separate; border-radius: 0px 10px 0px 0px;"> </th> *@
<th colspan="4" style="text-align: center; position: relative ; font-size: 13px;padding-top:4px;border-left: 2px solid #000;"> مطالبات </th>
@* <th style="text-align: center;"> </th>
<th style="text-align: center; border-left: 2px solid #000; font-size: 12px"> </th> *@
<th colspan="3" style="text-align: center; font-size: 13px; position: relative; padding-top: 4px;"> کسورات </th>
@* <th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 0px 0px 0px 0px;"> </th>
<th style="text-align: center; font-size: 12px; border-collapse: separate; border-radius: 10px 0px 0px 0px;"> </th> *@
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important ;-webkit-print-color-adjust: exact;print-color-adjust: exact; ">
@@ -132,7 +179,7 @@
<tr style="font-size: 12px; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">1</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.SumOfWorkingDays </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MonthlySalary == "0" ? "-" : Model.MonthlySalary) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> حق بیمه سهم کارگر </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -142,7 +189,7 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">2</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.BaseYearsPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مالیات بر حقوق </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -151,8 +198,8 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">3</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="padding-right: 8px; border-left: 1px solid #000; white-space: nowrap;"> کمک هزینه اقلام مصرفی خانوار </td>
<td style="text-align: center; border-left: 1px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ConsumableItems == "0" ? "-" : Model.ConsumableItems) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> قسط تسهیلات </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -162,7 +209,7 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">4</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.HousingAllowance == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.HousingAllowance == "0" ? "-" : Model.HousingAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> مساعده </td>
<td style="text-align: center; border-left: 1px solid #000;"> - </td>
@@ -171,8 +218,8 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">5</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: 2px solid #000;"> @(Model.OvertimePay == "0" ? "-" : Model.OvertimePay) </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverTimeWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverTimeWorkValue)) ? "-" : Model.OverTimeWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.OvertimePay == "0" || string.IsNullOrWhiteSpace(Model.OvertimePay)) ? "-" : Model.OvertimePay) </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;"> @(Model.AbsenceDeduction == "0" ? "-" : Model.AbsenceDeduction) </td>
@@ -180,8 +227,8 @@
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">6</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: 2px solid #000;"> @(Model.NightworkPay == "0" ? "-" : Model.NightworkPay) </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.OverNightWorkValue == "00:00" || string.IsNullOrWhiteSpace(Model.OverNightWorkValue)) ? "-" : Model.OverNightWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.NightworkPay == "0" || string.IsNullOrWhiteSpace(Model.NightworkPay)) ? "-" : Model.NightworkPay) </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;"> </td>
@@ -189,8 +236,8 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">7</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: 2px solid #000;"> @(Model.FridayPay == "0" ? "-" : Model.FridayPay) </td>
<td style="text-align: center; border-left: 1px solid #000;"> @((Model.FridayWorkValue == "0" || string.IsNullOrWhiteSpace(Model.FridayWorkValue)) ? "-" : Model.FridayWorkValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @((Model.FridayPay == "0" || string.IsNullOrWhiteSpace(Model.FridayPay)) ? "-" : Model.FridayPay) </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;"> </td>
@@ -207,7 +254,7 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">9</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.RotatingShiftValue == "0" || string.IsNullOrWhiteSpace(Model.RotatingShiftValue)) ? "-" : "%" + Model.RotatingShiftValue) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.ShiftPay == "0" ? "-" : Model.ShiftPay) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
@@ -225,7 +272,7 @@
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">11</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.MaritalStatus </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.MarriedAllowance == "0" ? "-" : Model.MarriedAllowance) </td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> </td>
<td style="text-align: center; border-left: 1px solid #000;"> </td>
@@ -240,33 +287,68 @@
<td style="text-align: center; border-left: 1px solid #000;"> </td>
<td style="text-align: center;"> </td>
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">13</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.BonusesPay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) </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;"> </td>
@{
if (Model.IsLeft)
{
<td style="text-align: center; background-color: #ffffff !important;" colspan="3" rowspan="3">
<div style="border-top: 1px solid #000;border-top-left-radius: 15px;border-top-right-radius: 15px; height: 65px;">
<div style="padding: 0 6px; text-align: start;display: block;align-items: center;height: 64px;margin: 6px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span>
<span>@Model.LastDayOfWork</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span>
<span>@Model.LeftWorkDate</span>
<span>می باشد</span>
</div>
</div>
</td>
}
else
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; background-color: #f1f1f1 !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; ">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">14</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.YearsPay == "0" ? "-" : Model.SumOfWorkingDays)</td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.YearsPay == "0" ? "-" : Model.YearsPay) </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;"> </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px;">
<td style="text-align: center; border-left: 1px solid #000; padding: 2px ">15</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.LeavePay == "0" ? "-" : Model.SumOfWorkingDays) </td>
<td style="text-align: center; border-left: 2px solid #000;"> @(Model.LeavePay == "0" ? "-" : Model.LeavePay) </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;"> </td>
@{
if (!Model.IsLeft)
{
<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;"> </td>
}
}
</tr>
<tr style="font-size: 12px; height: 20px; background-color: #dddcdc !important; -webkit-print-color-adjust: exact;print-color-adjust: exact; border-bottom: 1px solid #000; border-top: 1px solid #000; ">
<td style="text-align: center; padding: 2px "></td>
<td style="padding-right: 8px; border-left: 1px solid #000;"> جمع مطالبات </td>
@@ -302,14 +384,14 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 12%;-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: 14%;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;text-align: center;width: 14%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < 15; i++)
{
<tr style="@((Model.MonthlyRollCall[i].IsHoliday || Model.MonthlyRollCall[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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap; 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[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
@if (@Model.MonthlyRollCall[i].IsAbsent)
{
@@ -383,7 +465,7 @@
<th style="font-size: 8px;text-align: center;width: 9%;-webkit-print-color-adjust: exact;print-color-adjust: exact;">خروج</th>
<th style="font-size: 8px;text-align: center;width: 12%;-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: 14%;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;text-align: center;width: 14%;padding: 0 0 0 5px !important;border-radius: 5px 0 0 5px !important; -webkit-print-color-adjust: exact;print-color-adjust: exact;white-space:nowrap">کارکرد</th>
</tr>
</thead>
<tbody>
@@ -393,7 +475,7 @@
@foreach (var day in Model.MonthlyRollCall)
{
<tr style="@((day.IsHoliday || day.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; ">@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()</td>
<td style="white-space: nowrap; 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>
@if (day.IsAbsent)
{
@@ -476,43 +558,92 @@
</div>
</div>
<div class="row" style="padding: 0 12px;">
<table style="width: 100%;margin: 9px 0 0 0;">
<tbody>
<div class="row" style="margin-top: 10px;">
<div style="width: 60%;">
<div class="row" style="padding: 0 12px;">
<fieldset style="border: 1px solid black !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; border-radius: 10px 10px 10px 10px; margin: 0px 0px; overflow: hidden; padding: 0; display: flex; width: 100%;">
<tr>
<td style="width: 60%;">
@{
if (Model.IsLeft)
{
<span style="float: right; margin-left: 15px; font-size: 11.2px;">
<span>طبق تصفیه حساب نهایی تنظیمی فوق، آخرین روز اشتغال بکار اینجانب</span><span>&nbsp;</span>
<span>@Model.LastDayOfWork</span><span>&nbsp;</span>
<span>بوده و قطع همکاری با کارفرما و کارگاه از تاریخ</span><span>&nbsp;</span>
<span>@Model.LeftWorkDate</span><span>&nbsp;</span>
<span>می باشد</span>
</span>
}
else
{
<span style="float: right; margin-left: 15px; font-size: 11.2px;visibility:hidden;"></span>
}
}
</td>
<td style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 8px 0 0;display: table-caption;padding: 0 4px;white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 78px; border-radius: 10px;">
<span style="border-collapse: separate;background-color: #FFFFFF !important;-webkit-print-color-adjust: exact;print-color-adjust: exact;font-size: 12px;margin: -10px 54px 0 0;display: table-caption;padding: 0 4px;">امضاء</span>
</div>
</div>
</td>
</tr>
<div class="table-container">
<table style="width: 100%;">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
</tbody>
</table>
<tr style="border-left: 2px solid black; text-align: center; font-size: 10px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="font-size: 10px;">مساعده</th>
</tr>
<tr style="border-bottom: 1px solid; border-left: 1px solid black; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 3rem; font-size: 10px;">تاریخ</th>
<th style="padding: 1px 4px; text-align: center; border-left: 2px solid black; min-width: 4rem; font-size: 10px;">مبلغ</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 10px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.SalaryAidDateTimeFa ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;border-left: 2px solid black">
@(Model.SalaryAidViewModels != null && i < Model.SalaryAidViewModels.Count
? Model.SalaryAidViewModels[i]?.Amount ?? ""
: "")
</td>
</tr>
}
</table>
<table style="width: 100%;">
<colgroup>
<col style="width: 40%;">
<col style="width: 60%;">
</colgroup>
<tr style="text-align: center; font-size: 10px; padding: 1px 4px; height: 15px; border-bottom: 1px solid; border-collapse: separate; background-color: #cdcdcd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
<th colspan="3" style="text-align: center">وام</th>
</tr>
<tr style="border-bottom: 1px solid; background-color: #e1e1e1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 9px; height: 15px;">
<th style="padding: 1px 4px; text-align: center; border-left: 1px solid black; min-width: 4rem;font-size: 10px;">مبلغ کل وام</th>
<th style="padding: 1px 4px; text-align: center; min-width: 4rem;font-size: 10px;">مبلغ باقیمانده وام</th>
</tr>
@for (int i = 0; i < 5; i++)
{
<tr class="trTable" style="text-align: right; font-size: 9px; height: 15px;">
<td style="font-size: 8px; text-align: center;border-left: 1px solid black">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.LoanAmount ?? ""
: "")
</td>
<td style="font-size: 8px; text-align: center;">
@(Model.InstallmentViewModels != null && i < Model.InstallmentViewModels.Count
? Model.InstallmentViewModels[i]?.RemainingAmount ?? ""
: "")
</td>
</tr>
}
</table>
</div>
</fieldset>
</div>
</div>
<div style="width: 40%;">
<div style="display: flex; justify-content: end;" class="signSection">
<div style="margin-left: 15px; position: relative; width: 80px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 8px 0 0; display: table-caption; padding: 0 4px; white-space: nowrap;">اثر انگشت</span>
</div>
<div style="position: relative; width: 160px; border: 1px solid #000; height: 114px; border-radius: 10px;">
<span style="border-collapse: separate; background-color: #FFFFFF !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 12px; margin: -10px 54px 0 0; display: table-caption; padding: 0 4px;">امضاء</span>
</div>
</div>
</div>
</div>
</fieldset>
@@ -522,5 +653,4 @@
<input type="hidden" asp-for="Id" value="@Model.Id" />
<input type="hidden" id="shiftWorkval" name="shiftWorkval" value="@Model.CreateWorkingHoursTemp.ShiftWork">

View File

@@ -164,8 +164,5 @@
var antiForgeryToken = $('@Html.AntiForgeryToken()').val();
var checkAccountAjax = `@Url.Page("./Index", "CheckAccount")`;
var saveCreateCameraAccountUrl = `@Url.Page("./Index", "CreateCameraAccount")`;
console.log(checkAccountAjax);
console.log(saveCreateCameraAccountUrl);
</script>
<script src="~/assetsclient/pages/rollcall/CameraAccounts/js/modalcameraaccount.js?ver=@clientVersion"></script>

View File

@@ -216,7 +216,7 @@
{
@foreach (var item in Model.WorkshopSettingsDetails.ShiftsList.OrderBy(x => x.Placement))
{
<div class="d-flex flex-grow-1 flex-md-grow-0 gap-3 align-items-center ps-3">
<div class="d-flex flex-grow-1 flex-md-grow-0 gap-3 align-items-center">
<span class="d-none d-md-block" style="font-size: 10px; font-weight: 500; color: #5C5C5C;">
@if (item.Placement == ShiftPlacement.First)
{
@@ -257,7 +257,7 @@
}
else
{
<div class="mostamar-description ps-3 ">
<div class="mostamar-description">
مجموعه بدون وقفه و بصورت مستمر فعال می‌باشد
</div>
}
@@ -265,7 +265,7 @@
else
{
<div class="d-flex flex-grow-1 flex-md-grow-0 gap-3 align-items-center ps-3">
<div class="d-flex flex-grow-1 flex-md-grow-0 gap-3 align-items-center">
<span class="d-none d-md-block" style="font-size: 10px; font-weight: 500; color: #5C5C5C;">
نوبت اول
</span>

View File

@@ -116,10 +116,10 @@
</div>
}
<div Permission="@SubAccountPermissionHelper.AddEmployeePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div Permission="@SubAccountPermissionHelper.AddEmployeePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
@@ -362,26 +362,26 @@
});
});
var hasCompletedDashboardTour = localStorage.getItem('hasCompletedDashboardTour');
if (!hasCompletedDashboardTour) {
introJs().setOptions({
nextLabel: 'بعد',
prevLabel: 'قبل',
doneLabel: 'اتمام',
showBullets: false,
steps: [
{
title: 'خوش آمدید به سامانه گزارشگیر 👋',
intro: 'برای آموزش این صفحه با ما همراه باشید.'
},
{
title: 'عملیات مربوط به مرخصی',
element: document.querySelector('#btnCardLeaveIntro'),
intro: 'برای عملیات دسترسی سریع دکمه‌های مربوط به مرخصی مانند ثبت مرخصی و لیست مرخصی میتوانید از این روش استفاده نمایید.'
}
]
}).start();
localStorage.setItem('hasCompletedDashboardTour', true);
}
// var hasCompletedDashboardTour = localStorage.getItem('hasCompletedDashboardTour');
// if (!hasCompletedDashboardTour) {
// introJs().setOptions({
// nextLabel: 'بعد',
// prevLabel: 'قبل',
// doneLabel: 'اتمام',
// showBullets: false,
// steps: [
// {
// title: 'خوش آمدید به سامانه گزارشگیر 👋',
// intro: 'برای آموزش این صفحه با ما همراه باشید.'
// },
// {
// title: 'عملیات مربوط به مرخصی',
// element: document.querySelector('#btnCardLeaveIntro'),
// intro: 'برای عملیات دسترسی سریع دکمه‌های مربوط به مرخصی مانند ثبت مرخصی و لیست مرخصی میتوانید از این روش استفاده نمایید.'
// }
// ]
// }).start();
// localStorage.setItem('hasCompletedDashboardTour', true);
// }
</script>
}

View File

@@ -8,44 +8,44 @@
@{
string clientVersion = _0_Framework.Application.Version.StyleVersion;
var currentAccount = AuthHelper.CurrentAccountInfo();
int countWorkFlow = 0;/* await WorkFlowApplication.GetCountAllWorkFlows(workshopId); */
var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { { "countWorkFlow", countWorkFlow } };
string clientVersion = _0_Framework.Application.Version.StyleVersion;
var currentAccount = AuthHelper.CurrentAccountInfo();
int countWorkFlow = 0;/* await WorkFlowApplication.GetCountAllWorkFlows(workshopId); */
var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { { "countWorkFlow", countWorkFlow } };
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Coderthemes">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Coderthemes">
<title> گزارشگیر @ViewData["Title"]</title>
<title> گزارشگیر @ViewData["Title"]</title>
<link rel="icon" type="image/x-icon" href="~/AssetsClient/images/favicon.ico">
<!-- Base Css Files -->
@* <link href="~/clienttheme/css/bootstrap.rtl.min.css" rel="stylesheet" />
<link rel="icon" type="image/x-icon" href="~/AssetsClient/images/favicon.ico">
<!-- Base Css Files -->
@* <link href="~/clienttheme/css/bootstrap.rtl.min.css" rel="stylesheet" />
<link href="~/clienttheme/css/style.css" rel="stylesheet" />
<link href="~/New/css/responsive.css" rel="stylesheet" /> *@
<link href="~/AssetsClient/css/bootstrap.rtl.min.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/intro.js/introjs-rtl.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/intro.js/introjs.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/introjs-custom.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/sidebar-menu.css?ver=شسشس" rel="stylesheet" />
<link href="~/AssetsClient/css/responsive.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/responsive-modal.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/validation-style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/font-awesome/css/font-awesome.min.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/material-design-iconic-font.min.css?ver=@clientVersion" rel="stylesheet" />
<script src="~/AssetsAdminNew/libs/wavesurfer/wavesurfer.min.js"></script>
<link href="~/AdminTheme/assets/sweet-alert/sweet-alert.min.css" rel="stylesheet">
<link href="~/AssetsClient/css/bootstrap.rtl.min.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/intro.js/introjs-rtl.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/intro.js/introjs.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/introjs-custom.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/sidebar-menu.css?ver=شسشس" rel="stylesheet" />
<link href="~/AssetsClient/css/responsive.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/responsive-modal.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/validation-style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/libs/font-awesome/css/font-awesome.min.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/material-design-iconic-font.min.css?ver=@clientVersion" rel="stylesheet" />
<script src="~/AssetsAdminNew/libs/wavesurfer/wavesurfer.min.js"></script>
<link href="~/AdminTheme/assets/sweet-alert/sweet-alert.min.css" rel="stylesheet">
<link href="~/AssetsClient/libs/select2/css/select2.min.css" rel="stylesheet" />
@RenderSection("Styles", false)
<link href="~/AssetsClient/libs/select2/css/select2.min.css" rel="stylesheet" />
@RenderSection("Styles", false)
</head>
@@ -53,161 +53,185 @@
<!-- Dark Overlay -->
<div id="overlay" class="d-lg-none"></div>
<!-- End Dark Overlay -->
<!-- ========== Right Sidebar Start ========== -->
<partial name="_Menu" view-data="viewData" />
<partial name="_headerAndFooter" view-data="viewData" />
<!-- Dark Overlay -->
<div id="overlay" class="d-lg-none"></div>
<!-- End Dark Overlay -->
<!-- ========== Right Sidebar Start ========== -->
<partial name="_Menu" view-data="viewData" />
<partial name="_headerAndFooter" view-data="viewData" />
<!-- ============================================================== -->
<!-- Start right Content here -->
<!-- ============================================================== -->
@RenderBody()
<!-- ============================================================== -->
<!-- Start right Content here -->
<!-- ============================================================== -->
@RenderBody()
<!-- ============================================================== -->
<!-- End Right content here -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- End Right content here -->
<!-- ============================================================== -->
<partial name="_BtnCreateTicket" />
<partial name="_BtnCreateTicket" />
<partial name="_validationAlert" />
<partial name="_validationAlert" />
<!-- jQuery -->
<!-- jQuery -->
<script src="~/AssetsClient/js/jquery-3.7.1.min.js"></script>
<script src="~/AssetsClient/js/bootstrap.bundle.min.js"></script>
<script src="~/assetsclient/js/services/ajax-service.js?ver=@clientVersion"></script>
<script src="~/AssetsClient/libs/intro.js/intro.js"></script>
<script src="~/AssetsClient/libs/select2/js/select2.js"></script>
<script src="~/AssetsClient/libs/select2/js/i18n/fa.js"></script>
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
<script src="~/assetsclient/js/datevalidation.js"></script>
<script src="~/assetsclient/js/html2canvas.min.js"></script>
<script src="~/AdminTheme/assets/sweet-alert/sweet-alert.min.js"></script>
<script src="~/AssetsClient/js/jquery-3.7.1.min.js"></script>
<script src="~/AssetsClient/js/bootstrap.bundle.min.js"></script>
<script src="~/assetsclient/js/services/ajax-service.js?ver=@clientVersion"></script>
<script src="~/AssetsClient/libs/intro.js/intro.js"></script>
<script src="~/AssetsClient/libs/select2/js/select2.js"></script>
<script src="~/AssetsClient/libs/select2/js/i18n/fa.js"></script>
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
<script src="~/assetsclient/js/datevalidation.js"></script>
<script src="~/assetsclient/js/html2canvas.min.js"></script>
<script src="~/AdminTheme/assets/sweet-alert/sweet-alert.min.js"></script>
<script src="~/assetsclient/js/smooth-scrollbar.js"></script>
<script>
var MainMenuScrollbar = window.Scrollbar;
MainMenuScrollbar.init(document.querySelector('.menuContainer'), {
alwaysShowTracks: true
var MainMenuScrollbar = window.Scrollbar;
MainMenuScrollbar.init(document.querySelector('.menuContainer'), {
alwaysShowTracks: true
});
var antiForgeryTokenLayout = $('@Html.AntiForgeryToken()').val();
var createTicketSaveAjaxLayout = '@Url.Page("/Company/Ticket/Index", "SaveTicket")';
var uploadFileTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "UploadFile")';
var deleteFileTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "DeleteFile")';
var deleteAllFilesTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "RemoveAllTempFiles")';
// check and show modal Camera Account And Workshop Setting
var statusCameraAccountAndWorkshopSettingUrl = `@Url.Page("/Index", "StatusCameraAccountAndWorkshopSetting")`;
var linkCameraAccountAndWorkshopSettingUrl = `#showmodal=@Url.Page("/Company/RollCall/Index", "SaveCameraAccountAndWorkshopSetting")`;
var ajaxServiceLayout = new AjaxService(antiForgeryTokenLayout);
$(document).ready(function () {
statusCameraAccountAndWorkshopSetting();
});
function statusCameraAccountAndWorkshopSetting()
{
ajaxServiceLayout.get(statusCameraAccountAndWorkshopSettingUrl)
.then(response => {
const disableIds = [
'#UploadEmployeePicturePageUrl',
'#ListCurrentDayRollCallsPageUrl',
'#ListRollCallHistoryPageUrl',
'#GroupingOperationsPageUrl'
];
if (response.hasRollCallService) {
$('#RollCallSubMenu').removeClass('disable');
const shouldDisable = !response.hasCameraAccount || !response.hasRollCallWorkshopSetting;
disableIds.forEach(id => {
$(id).toggleClass('disable', shouldDisable);
});
// if (shouldDisable) {
// $('#SetWorkshopWorkingHoursPageUrl a').attr('href', linkCameraAccountAndWorkshopSettingUrl);
// } else {
// $('#SetWorkshopWorkingHoursPageUrl').removeClass('disable');
// }
} else {
$('#RollCallSubMenu').addClass('disable');
}
});
}
$('#MainModal').on('hidden.bs.modal', function () {
$("#ModalContent").html("");
$("#printSection").html("");
});
var antiForgeryTokenLayout = $('@Html.AntiForgeryToken()').val();
var createTicketSaveAjaxLayout = '@Url.Page("/Company/Ticket/Index", "SaveTicket")';
var uploadFileTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "UploadFile")';
var deleteFileTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "DeleteFile")';
var deleteAllFilesTicketAjaxLayout = '@Url.Page("/Company/Ticket/Index", "RemoveAllTempFiles")';
var url = window.location.href.split('?')[0];
var url2 = window.location.href.split('#')[0];
$('.sidebar-menu li').removeClass('active');
// check and show modal Camera Account And Workshop Setting
var statusCameraAccountAndWorkshopSettingUrl = `@Url.Page("/Index", "StatusCameraAccountAndWorkshopSetting")`;
var linkCameraAccountAndWorkshopSettingUrl = `#showmodal=@Url.Page("/Company/RollCall/Index", "SaveCameraAccountAndWorkshopSetting")`;
// $('.selectLi').filter(function () {
// if (this.href == url || this.href == url2) {
// $(this).parent().addClass('active');
// };
// });
var ajaxServiceLayout = new AjaxService(antiForgeryTokenLayout);
$('.selectLi').filter(function () {
let href = this.href.split('?')[0].split('#')[0];
return href === url || href === url2;
}).each(function () {
$(this).parent().addClass('active');
const $submenu = $(this).closest('.submenu');
if ($submenu.length) {
$submenu.addClass('open').show();
$submenu.closest('.has-submenu').addClass('active');
$submenu.closest('.has-submenu').find('.toggle-submenu').addClass('open');
}
});
$('.toggle-submenu').on('click', function (e) {
e.preventDefault();
const $this = $(this);
const $submenu = $this.closest('.has-submenu').find('.submenu');
$('.submenu').not($submenu).slideUp().removeClass('open');
$('.toggle-submenu').not($this).removeClass('open');
$submenu.slideToggle().toggleClass('open');
$this.toggleClass('open');
});
$('.selectLi').on('click', function () {
$('.sidebar-menu li').removeClass('active');
const $clickedLi = $(this).closest('li');
$clickedLi.addClass('active');
if ($clickedLi.closest('.submenu').length) {
$clickedLi.closest('.has-submenu').addClass('active');
}
});
// function tutorialIntro() {
// localStorage.removeItem("hasCompletedDashboardTour");
// localStorage.removeItem("hasCompletedWorkShopTour");
// localStorage.removeItem("cardContractIntro");
// localStorage.removeItem("hasCompletedEmployeesTour");
// localStorage.removeItem("hasCompletedEmployeesLeaveTour");
// localStorage.removeItem("hasCompletedEmployeesLeaveListTour");
// }
$(document).ready(function () {
ajaxServiceLayout.get(statusCameraAccountAndWorkshopSettingUrl)
.then(response => {
const disableIds = [
'#UploadEmployeePicturePageUrl',
'#ListCurrentDayRollCallsPageUrl',
'#ListRollCallHistoryPageUrl',
'#GroupingOperationsPageUrl'
];
if ($(window).width() < 992) {
$(".sidebar-navigation").toggleClass("small");
// $(".main-wrapper").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
if (response.hasRollCallService) {
$('#RollCallSubMenu').removeClass('disable');
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
const shouldDisable = !response.hasCameraAccount || !response.hasRollCallWorkshopSetting;
disableIds.forEach(id => {
$(id).toggleClass('disable', shouldDisable);
});
$(".content-container").toggleClass("small");
// $(".content-container").toggleClass("");
// if (shouldDisable) {
// $('#SetWorkshopWorkingHoursPageUrl a').attr('href', linkCameraAccountAndWorkshopSettingUrl);
// } else {
// $('#SetWorkshopWorkingHoursPageUrl').removeClass('disable');
// }
} else {
$('#RollCallSubMenu').addClass('disable');
}
});
}
if ($(window).width() > 992) {
$('#overlay').toggleClass("overlay");
}
});
$('#MainModal').on('hidden.bs.modal', function () {
$("#ModalContent").html("");
$("#printSection").html("");
});
var url = window.location.href.split('?')[0];
var url2 = window.location.href.split('#')[0];
$('.sidebar-menu li').removeClass('active');
// $('.selectLi').filter(function () {
// if (this.href == url || this.href == url2) {
// $(this).parent().addClass('active');
// };
// });
$('.selectLi').filter(function () {
let href = this.href.split('?')[0].split('#')[0];
return href === url || href === url2;
}).each(function () {
$(this).parent().addClass('active');
const $submenu = $(this).closest('.submenu');
if ($submenu.length) {
$submenu.addClass('open').show();
$submenu.closest('.has-submenu').addClass('active');
$submenu.closest('.has-submenu').find('.toggle-submenu').addClass('open');
}
});
$('.toggle-submenu').on('click', function (e) {
e.preventDefault();
const $this = $(this);
const $submenu = $this.closest('.has-submenu').find('.submenu');
$('.submenu').not($submenu).slideUp().removeClass('open');
$('.toggle-submenu').not($this).removeClass('open');
$submenu.slideToggle().toggleClass('open');
$this.toggleClass('open');
});
$('.selectLi').on('click', function () {
$('.sidebar-menu li').removeClass('active');
const $clickedLi = $(this).closest('li');
$clickedLi.addClass('active');
if ($clickedLi.closest('.submenu').length) {
$clickedLi.closest('.has-submenu').addClass('active');
}
});
function tutorialIntro() {
localStorage.removeItem("hasCompletedDashboardTour");
localStorage.removeItem("hasCompletedWorkShopTour");
localStorage.removeItem("cardContractIntro");
localStorage.removeItem("hasCompletedEmployeesTour");
localStorage.removeItem("hasCompletedEmployeesLeaveTour");
localStorage.removeItem("hasCompletedEmployeesLeaveListTour");
}
$(document).ready(function () {
if ($(window).width() < 992) {
$(".toggle").click(function () {
$(".sidebar-navigation").toggleClass("small");
// $(".main-wrapper").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
@@ -219,282 +243,263 @@
$(".content-container").toggleClass("small");
// $(".content-container").toggleClass("");
}
if ($(window).width() > 992) {
$('#overlay').toggleClass("overlay");
}
});
$(".toggle").click(function () {
$(".sidebar-navigation").toggleClass("small");
// $(".main-wrapper").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
$(".content-container").toggleClass("small");
// $(".content-container").toggleClass("");
$('#overlay').toggleClass("overlay");
});
$("#close-sidemenu-mobile").click(function () {
$(".sidebar-navigation").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
$(".content-container").toggleClass("small");
$('#overlay').toggleClass("overlay");
});
$("#overlay").click(function () {
$(".sidebar-navigation").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
$(".content-container").toggleClass("small");
$('#overlay').toggleClass("overlay");
});
//******************** بستن مودال خطا ********************
$(document).on('click', '#closeAlert', function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
clearTimeout();
});
//******************** بستن مودال خطا ********************
$(document).on("click", function (event) {
var target = $(event.target);
if (!target.closest(".dropdown-menu").length
&& !target.is(".dropdown-menu")
&& !target.is(".user-details .user-info .title")
) {
$(".dropdown").removeClass("open");
}
});
function openSideBar() {
var screenWidth = $(window).width();
var navActive = $('.navigation-right').hasClass('active');
var myWrapperEnlarged = $('#myWrapper').hasClass('enlarged');
if (screenWidth < 600) {
$(".navigation-right").removeClass('active');
$("#myWrapper").removeClass('enlarged');
} else if (navActive && myWrapperEnlarged) {
$(".navigation-right").removeClass('active');
$("#myWrapper").removeClass('enlarged');
} else {
$(".navigation-right").addClass('active');
$("#myWrapper").addClass('enlarged');
}
}
function openSettings() {
let dropdown = $(".user-details .user-info .dropdown");
dropdown.toggleClass("open");
}
function checkUrl() {
var url = window.location.href.split('?')[0];
$('.aMenu').filter(function () {
var id = $(this).attr("id");
if (this.href == url || (id == "regiteremployer" && url.indexOf("/Employers/") > -1)) {
$(".activeTab").removeClass('activeTab');
$(this).parent("li").addClass('activeTab');
};
});
}
// $(document).ready(function () {
// var Scrollbar1 = window.Scrollbar;
// Scrollbar1.init(document.querySelector('#ModelDivScrollbar'), {
// alwaysShowTracks: true,
// });
// });
$("#close-sidemenu-mobile").click(function () {
$(".sidebar-navigation").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
function SelectWorkshop(slug) {
$.ajax({
async: false,
dataType: 'json',
url: '@Url.Page("/Index", "SelectWorkshop")',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'POST',
data: { slug: slug },
success: function (response) {
if (response.isSuccedded) {
$('.alert-success-msg').show();
$('.alert-success-msg p').text(response.message);
setTimeout(function () {
$('.alert-success-msg').hide();
$('.alert-success-msg p').text('');
window.location.reload();
}, 500);
} else {
$('.alert-msg').show();
$('.alert-msg p').text(response.message);
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
$(".content-container").toggleClass("small");
$('#overlay').toggleClass("overlay");
});
$("#overlay").click(function () {
$(".sidebar-navigation").toggleClass("small");
$(".sidebar").toggleClass("active-sidebar-navigation");
$(".header-container").toggleClass("main-wrapper ");
$(".header-container").toggleClass("small");
$(".content-container").toggleClass("small");
$('#overlay').toggleClass("overlay");
});
//******************** بستن مودال خطا ********************
$(document).on('click', '#closeAlert', function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
clearTimeout();
});
//******************** بستن مودال خطا ********************
$(document).on("click", function (event) {
var target = $(event.target);
if (!target.closest(".dropdown-menu").length
&& !target.is(".dropdown-menu")
&& !target.is(".user-details .user-info .title")
) {
$(".dropdown").removeClass("open");
}
});
}
$(document).ready(function () {
_RefreshCountMenu();
_RefreshCountRollCallMenu();
_RefreshCountEmployeeDocumentsMenu();
$('input[type="text"], input[type="number"], textarea').each(function () {
$(this).on('input', function () {
var enteredValue = $(this).val();
var englishNumbers = convertPersianNumbersToEnglish(enteredValue);
$(this).val(englishNumbers);
function openSideBar() {
var screenWidth = $(window).width();
var navActive = $('.navigation-right').hasClass('active');
var myWrapperEnlarged = $('#myWrapper').hasClass('enlarged');
if (screenWidth < 600) {
$(".navigation-right").removeClass('active');
$("#myWrapper").removeClass('enlarged');
} else if (navActive && myWrapperEnlarged) {
$(".navigation-right").removeClass('active');
$("#myWrapper").removeClass('enlarged');
} else {
$(".navigation-right").addClass('active');
$("#myWrapper").addClass('enlarged');
}
}
function openSettings() {
let dropdown = $(".user-details .user-info .dropdown");
dropdown.toggleClass("open");
}
function checkUrl() {
var url = window.location.href.split('?')[0];
$('.aMenu').filter(function () {
var id = $(this).attr("id");
if (this.href == url || (id == "regiteremployer" && url.indexOf("/Employers/") > -1)) {
$(".activeTab").removeClass('activeTab');
$(this).parent("li").addClass('activeTab');
};
});
}
// $(document).ready(function () {
// var Scrollbar1 = window.Scrollbar;
// Scrollbar1.init(document.querySelector('#ModelDivScrollbar'), {
// alwaysShowTracks: true,
// });
// });
function SelectWorkshop(slug) {
$.ajax({
async: false,
dataType: 'json',
url: '@Url.Page("/Index", "SelectWorkshop")',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'POST',
data: { slug: slug },
success: function (response) {
if (response.isSuccedded) {
$('.alert-success-msg').show();
$('.alert-success-msg p').text(response.message);
setTimeout(function () {
$('.alert-success-msg').hide();
$('.alert-success-msg p').text('');
window.location.reload();
}, 500);
} else {
$('.alert-msg').show();
$('.alert-msg p').text(response.message);
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
$(document).ready(function () {
_RefreshCountMenu();
_RefreshCountRollCallMenu();
_RefreshCountEmployeeDocumentsMenu();
$('input[type="text"], input[type="number"], textarea').each(function () {
$(this).on('input', function () {
var enteredValue = $(this).val();
var englishNumbers = convertPersianNumbersToEnglish(enteredValue);
$(this).val(englishNumbers);
});
});
});
});
function convertPersianNumbersToEnglish(input) {
var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
var arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
function convertPersianNumbersToEnglish(input) {
var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
var arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
var str = input;
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
var str = input;
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
return str;
}
return str;
}
function _RefreshCountMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountWorkFlowLayout',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
if (response.success) {
if (response.countWorkFlow === 0) {
$('#_countWorkFlowMenu').hide();
$('#spinnerWorkFlow').hide();
$('#_countWorkFlowMenuMobile').hide();
$('#spinnerWorkFlowMobile').hide();
} else {
$('#_countWorkFlowMenu').css('display', 'flex');
$('#spinnerWorkFlow').hide();
$('#_countWorkFlowMenuMobile').show();
// $('#spinnerWorkFlowMobile').hide();
$('#_countWorkFlowMenu').text(response.countWorkFlow);
$('#_countWorkFlowMenuMobile').text(response.countWorkFlow);
function _RefreshCountMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountWorkFlowLayout',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
if (response.success) {
if (response.countWorkFlow === 0) {
$('#_countWorkFlowMenu').hide();
$('#spinnerWorkFlow').hide();
$('#_countWorkFlowMenuMobile').hide();
$('#spinnerWorkFlowMobile').hide();
} else {
$('#_countWorkFlowMenu').css('display', 'flex');
$('#spinnerWorkFlow').hide();
$('#_countWorkFlowMenuMobile').show();
// $('#spinnerWorkFlowMobile').hide();
$('#_countWorkFlowMenu').text(response.countWorkFlow);
$('#_countWorkFlowMenuMobile').text(response.countWorkFlow);
}
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
function _RefreshCountRollCallMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountRollCall',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
console.log(response);
if (response.success) {
$('#spinnerRollCall').hide();
if (response.countWorkFlow === 0) {
$('#_countRollCallMenuSubmenu').hide();
} else {
$('#_countRollCallMenuSubmenu').css('display', 'flex').text(response.countWorkFlow);
}
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
function _RefreshCountEmployeeDocumentsMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountEmployeeDocuments',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
console.log(response);
if (response.success) {
$('#spinnerEmployeeDocuments').hide();
if (response.countWorkFlow === 0) {
$('#_countEmployeeDocumentsMenuSubmenu').hide();
} else {
$('#_countEmployeeDocumentsMenuSubmenu').css('display', 'flex').text(response.countWorkFlow);
}
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
// Override the global fetch function to handle errors
// const originalErrorHandler = $.ajaxSetup().error;
$.ajaxSetup({
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status === 500) {
try {
const errorData = jqXHR.responseJSON;
$('.alert-msg').show();
$('.alert-msg p').text(errorData.message || "خطای سمت سرور");
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
} catch (e) {
$('.alert-msg').show();
$('.alert-msg p').text("خطای سمت سرور");
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
console.error("Error parsing response:", e);
}
}
});
}
});
</script>
function _RefreshCountRollCallMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountRollCall',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
console.log(response);
if (response.success) {
$('#spinnerRollCall').hide();
if (response.countWorkFlow === 0) {
$('#_countRollCallMenuSubmenu').hide();
} else {
$('#_countRollCallMenuSubmenu').css('display', 'flex').text(response.countWorkFlow);
}
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
<script src="~/assetsclient/js/tickets_action.js?ver=@clientVersion"></script>
@RenderSection("Script", false)
function _RefreshCountEmployeeDocumentsMenu() {
$.ajax({
async: true,
dataType: 'json',
url: '/Client/Company/WorkFlow?handler=CountEmployeeDocuments',
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
type: 'GET',
success: function (response) {
console.log(response);
if (response.success) {
$('#spinnerEmployeeDocuments').hide();
if (response.countWorkFlow === 0) {
$('#_countEmployeeDocumentsMenuSubmenu').hide();
} else {
$('#_countEmployeeDocumentsMenuSubmenu').css('display', 'flex').text(response.countWorkFlow);
}
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
<script>
// window.addEventListener('load', function () {
// console.clear();
// console.log('%c سامانه هوشمند گزارشگیر ©', 'font-family: \'IRANYekanX\', serif; color: #00ff00; font-size: 10px; font-weight: bold;');
// });
</script>
// Override the global fetch function to handle errors
// const originalErrorHandler = $.ajaxSetup().error;
$.ajaxSetup({
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status === 500) {
try {
const errorData = jqXHR.responseJSON;
$('.alert-msg').show();
$('.alert-msg p').text(errorData.message || "خطای سمت سرور");
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
} catch (e) {
$('.alert-msg').show();
$('.alert-msg p').text("خطای سمت سرور");
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
console.error("Error parsing response:", e);
}
}
}
});
</script>
<script src="~/assetsclient/js/tickets_action.js?ver=@clientVersion"></script>
@RenderSection("Script", false)
<script>
// window.addEventListener('load', function () {
// console.clear();
// console.log('%c سامانه هوشمند گزارشگیر ©', 'font-family: \'IRANYekanX\', serif; color: #00ff00; font-size: 10px; font-weight: bold;');
// });
</script>
</body>
</html>

View File

@@ -189,14 +189,14 @@
<span>تنظیمات حساب کاربری</span>
</a>
</li>
<li>
@* <li>
<a class="dropdown-item w-100" asp-page="/Index" onclick="tutorialIntro()">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="color: #2FC1C1">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672ZM12 2.25V4.5m5.834.166-1.591 1.591M20.25 10.5H18M7.757 14.743l-1.59 1.59M6 10.5H3.75m4.007-4.243-1.59-1.59" />
</svg>
<span>راهنما</span>
</a>
</li>
</li> *@
<li>
<a class="dropdown-item w-100" asp-area="" asp-page="/Index" asp-page-handler="Logout">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" viewBox="0 0 22 20" fill="none">

View File

@@ -44,6 +44,12 @@
-webkit-print-color-adjust: exact;print-color-adjust: exact;
}
#printThis {
position: relative;
margin: 0 auto;
width: 21cm;
}
#printSection, #printSection * {
visibility: visible;
page-break-after: auto;
@@ -271,3 +277,27 @@ div span.week {
print-color-adjust: exact;
}
.trTable:nth-child(even) {
background-color: #f1f1f1 !important;
}
.headerInfo {
border-radius: 6px;
border: 1px solid #000000 !important;
}
.cusSpanTitle {
border-radius: 4px;
font-weight: bold;
background-color: #ebe6e6 !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
padding: 0 3px;
margin: auto 4px;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}

View File

@@ -16,12 +16,11 @@
.container2 {
height: 297mm;
padding-top: 15px;
}
.container2:last-of-type {
height: 280mm;
}
.container2:last-of-type {
height: 289mm !important;
}
.modal-dialog {
max-width: 100%;
@@ -362,3 +361,25 @@ div span.week {
z-index: 20;
}
}
.headerInfo {
border-radius: 6px;
border: 1px solid #000000 !important;
}
.cusSpanTitle {
border-radius: 4px;
font-weight: bold;
background-color: #ebe6e6 !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
padding: 0 3px;
margin: auto 4px;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}

View File

@@ -12,6 +12,10 @@
margin: 27mm 16mm 27mm 16mm;
}*/
.trTable:nth-child(even) {
background-color: #f1f1f1 !important;
}
@page {
size: A4;
margin: 0mm;
@@ -44,6 +48,13 @@
margin: 0 !important;
padding: 0 !important;
overflow: hidden;
line-height: 1.42857143;
}
#printThis {
position: relative;
margin: 0 auto;
width: 21cm;
}
#printSection, #printSection * {
@@ -62,9 +73,9 @@
#printSection {
position: absolute;
left: 0;
page-break-after: auto;
right: 0;
top: 0;
page-break-after: auto;
}
.head {
@@ -116,6 +127,7 @@ h5, h6 {
body .modal {
font-size: 11px;
line-height: 1.42857143;
}
label .modal {
@@ -311,3 +323,25 @@ div span.week {
background-color: #dbd8d8 !important;
-webkit-print-color-adjust: exact !important;
}
.headerInfo {
border-radius: 6px;
border: 1px solid #000000 !important;
}
.cusSpanTitle {
border-radius: 4px;
font-weight: bold;
background-color: #ebe6e6 !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
padding: 0 3px;
margin: auto 4px;
}
.table-container {
display: flex;
width: 100%;
justify-content: space-between;
}

View File

@@ -1,4 +1,4 @@
let currentUrlGroup = window.location.href;
var currentUrlGroup = window.location.href;
$(document).ready(function () {
$(document).on("click", ".btn-cancel2", function () {

View File

@@ -46,65 +46,65 @@ $(document).ready(function () {
blocks: [4, 2, 2],
numericOnly: true
});
// new Cleave(this, {
// date: true,
// delimiter: '/',
// datePattern: ['Y', 'm', 'd']
// });
});
// new Cleave(this, {
// date: true,
// delimiter: '/',
// datePattern: ['Y', 'm', 'd']
// });
});
//******************** انتخاب همه ی چک باکس ها ********************
$(".checkAll").change(function () {
//let dataValYear = $('#year').val();
//let dataValMonth = $('#month').val();
//let dataValPersonel = Number($('#employeeId').val());
//******************** انتخاب همه ی چک باکس ها ********************
$(".checkAll").change(function () {
//let dataValYear = $('#year').val();
//let dataValMonth = $('#month').val();
//let dataValPersonel = Number($('#employeeId').val());
//if ((dataValYear == '' || dataValMonth == '') && dataValPersonel == 0) {
//$('#dropdown-year').addClass("errored");
//$('#dropdown-month').addClass("errored");
//if ((dataValYear == '' || dataValMonth == '') && dataValPersonel == 0) {
//$('#dropdown-year').addClass("errored");
//$('#dropdown-month').addClass("errored");
//$(this).prop('checked', false);
//$('.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);
//} else {
//loadAllToPrint();
$('input:checkbox').not(this).not("#group, #list").prop('checked', this.checked);
//$(this).prop('checked', false);
//$('.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);
//} else {
//loadAllToPrint();
$('input:checkbox').not(this).not("#group, #list").prop('checked', this.checked);
//}
});
//}
});
$("input:checkbox").not("#group,#list,.checkAll").change(function () {
if ($("input:checkbox").not("#group,#list,.checkAll").filter(":not(:checked)").length) {
$(".checkAll").prop("checked", false);
} else {
$(".checkAll").prop("checked", true);
}
});
//******************** انتخاب همه ی چک باکس ها ********************
$("input:checkbox").not("#group,#list,.checkAll").change(function () {
if ($("input:checkbox").not("#group,#list,.checkAll").filter(":not(:checked)").length) {
$(".checkAll").prop("checked", false);
} else {
$(".checkAll").prop("checked", true);
}
});
//******************** انتخاب همه ی چک باکس ها ********************
//*********************ستون نام پرسنل در حالتی که فقط اسم پرسنل هست باید هاید بشه************************
$("#searchJustName").hide();
//*********************ستون نام پرسنل در حالتی که فقط اسم پرسنل هست باید هاید بشه************************
$("#searchJustName").hide();
//************تنظیم چک باکس تایپ لیست*******************
$('#group, #groupMobile').change(function () {
if ($(this).is(':checked')) {
$('#list , #listMobile').prop('checked', false);
}
});
//************تنظیم چک باکس تایپ لیست*******************
$('#group, #groupMobile').change(function () {
if ($(this).is(':checked')) {
$('#list , #listMobile').prop('checked', false);
}
});
$('#list, #listMobile').change(function () {
if ($(this).is(':checked')) {
$('#group , #groupMobile').prop('checked', false);
}
});
$('#list, #listMobile').change(function () {
if ($(this).is(':checked')) {
$('#group , #groupMobile').prop('checked', false);
}
});
//************تنظیم چک باکس تایپ لیست*******************
});

View File

@@ -0,0 +1,187 @@
$(document).ready(function () {
});
var eyeShow = $('.eyeShow');
var eyeClose = $('.eyeClose');
var reEyeShow = $('.reEyeShow');
var reEyeClose = $('.reEyeClose');
eyeShow.show();
eyeClose.hide();
reEyeShow.show();
reEyeClose.hide();
$("#username").on("input", function () {
var currentValue = $(this).val();
$(this).val(currentValue.replace(/[^a-zA-Z0-9_\-\$\#\@\!\^\&\%\*]/g, ''));
});
$('#username, #signupInputPassword, #repeat_password').on('keyup', function () {
if ($('#username').val() && $('#signupInputPassword').val() && $('#repeat_password').val() && $('#signupInputPassword').val() === $('#repeat_password').val()) {
$('.btn-register').removeClass('disable');
} else {
$('.btn-register').addClass('disable');
}
});
$('#repeat_password, #signupInputPassword').on('keyup', function() {
if ($('#signupInputPassword').val() !== $('#repeat_password').val()) {
$('#passwordErrorMessage').text('گذرواژه یکسان نیست');
} else {
$('#passwordErrorMessage').text('');
}
});
$(document).on('click','#accountModalModal button', function() {
// alert($(this));
// $(this).find('input').type ? 'text' : 'password';
// document.getElementById('hybrid').type = 'password';
$("#accountModalModal button").find('input').attr("type", "text");
// var input=document.getElementById(some-id);
// var input2= input.cloneNode(false);
// input2.type='password';
// input.parentNode.replaceChild(input2,input);
});
function passFunction() {
var x = document.getElementById("signupInputPassword");
if (x.type === "password") {
x.type = "text";
eyeShow.hide();
eyeClose.show();
} else {
x.type = "password";
eyeShow.show();
eyeClose.hide();
}
}
function rePassFunction() {
var x = document.getElementById("repeat_password");
if (x.type === "password") {
x.type = "text";
reEyeShow.hide();
reEyeClose.show();
} else {
x.type = "password";
reEyeShow.show();
reEyeClose.hide();
}
}
function passwordCheck(password) {
if (password.length >= 8)
strength += 1;
if (password.match(/(?=.*[0-9])/))
strength += 1;
if (password.match(/(?=.*[!,%,&,@,#,$,^,*,?,_,~,<,>,])/))
strength += 1;
if (password.match(/(?=.*[A-Z])/))
strength += 1;
displayBar(strength);
}
function displayBar(strength) {
$(".password-strength-group").attr('data-strength', strength);
}
$("#signupInputPassword").keyup(function () {
strength = 0;
var password = $(this).val();
passwordCheck(password);
});
//$(document).ready(function () {
//var typingTimer;
//var typingInterval = 1500;
//$("#username").on('keyup', function () {
// // removed
//});
//});
function checkAccountExist() {
var username = $('#username').val();
$('#successSvg').addClass("d-none");
$('#errorSvg').addClass("d-none");
$('#loadingSpinner').removeClass("d-none");
$('.btn-register').addClass('disable');
try {
const response = $.ajax({
async: false,
type: 'GET',
dataType: 'json',
url: checkAccountAjax,
data: { username: username },
headers: { "RequestVerificationToken": antiForgeryToken }
});
var res = response.responseJSON;
if (res.success) {
registerAccount();
} else {
$('#successSvg').addClass("d-none");
$('#errorSvg').removeClass("d-none");
$('.alert-msg').show();
$('.alert-msg p').text(res.message);
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 2000);
$('.btn-register').removeClass('disable');
$('#loadingSpinner').addClass("d-none");
}
} catch (e) {
$('#successSvg').addClass("d-none");
$('#errorSvg').removeClass("d-none");
$('.btn-register').removeClass('disable');
$('#loadingSpinner').addClass("d-none");
}
}
function registerAccount() {
$.ajax({
async: false,
dataType: 'json',
type: 'POST',
url: saveCreateCameraAccountUrl,
headers: { "RequestVerificationToken": antiForgeryToken },
data: $('#create-form').serialize(),
success: function (response) {
if (response.success) {
$('.alert-success-msg').show();
$('.alert-success-msg p').text(response.message);
setTimeout(function () {
$('.alert-success-msg').hide();
$('.alert-success-msg p').text('');
}, 2500);
$('#ajaxCameraAccountDataLoad').html('');
loadDataCameraAccountAjax();
$('#MainModal').modal('hide');
statusCameraAccountAndWorkshopSetting();
} else {
$('.alert-msg').show();
$('.alert-msg p').text(response.message);
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
},
error: function (err) {
console.error("AJAX Error:", err);
console.log("Full Response:", xhr);
}
});
}

View File

@@ -282,7 +282,8 @@ function changePasswordSubAccount() {
$('.alert-success-msg p').text('');
}, 3500);
loadDataEmployeeSubAccountAjax(0);
//loadDataEmployeeSubAccountAjax(0);
LoadRolesAndAccountsList();
$('#MainModal').modal('hide');
//window.location.reload();
} else {