BaseYears changes - Bonuses changes - RollCall CaseHistory buges fixed
This commit is contained in:
@@ -10,8 +10,9 @@ namespace Company.Domain.ContractAgg;
|
||||
public interface IContractRepository : IRepository<long, Contract>
|
||||
{
|
||||
EditContract GetDetails(long id);
|
||||
EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId);
|
||||
|
||||
List<ContractViweModel> Search(ContractSearchModel searchModel);
|
||||
List<ContractViweModel> Search(ContractSearchModel searchModel);
|
||||
List<ContractViweModel> SearchForextension(ContractSearchModel searchModel);
|
||||
List<ContractViweModel> SearchForCheckout(ContractSearchModel searchModel);
|
||||
|
||||
|
||||
@@ -32,13 +32,13 @@ public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
|
||||
double MarriedAllowance(DateTime endDateW, long employeeId);
|
||||
|
||||
|
||||
#region newComputeOptions
|
||||
#region newComputeOptions
|
||||
|
||||
double Years(DateTime separationStartDate,DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,bool hasleft,DateTime startWorkDate,DateTime contractStart, DateTime contractEnd, long workshopId,long employeeId, bool isOldContract);
|
||||
BunosesAndYearsPayStatus Years(DateTime separationStartDate,DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,bool hasleft,DateTime startWorkDate,DateTime contractStart, DateTime contractEnd, long workshopId,long employeeId, bool isOldContract);
|
||||
LeaveAndAbsenceViewModel LeavePay(string startDateFa,DateTime leftWorkDate,DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string computeOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId,
|
||||
int fridayStartToEnd,int officialHoliday, string totalHoursH, string totalHorsM, double consumableItem,
|
||||
double housingAllowance, double familyAllowance,double marriedAllowance, bool isOldContract);
|
||||
double Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract);
|
||||
BunosesAndYearsPayStatus Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract);
|
||||
|
||||
List<ContractsCanToLeave> LeftWorkCantoleaveList(DateTime startDate, DateTime endDate,long workshopId, long employeeId, bool hasleft,DateTime leftWorkDate, int fridayStartToEnd, int officialHoliday, string totalHoursH, string totalHorsM, DateTime separationStartDate);
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.YearlySalary;
|
||||
|
||||
public class BunosesAndYearsPayStatus
|
||||
{
|
||||
public double Bunoses { get; set; }
|
||||
public double YearsPay { get; set; }
|
||||
public bool NotCompleted { get; set; }
|
||||
public DateTime ContractStart { get; set; }
|
||||
public DateTime ContractEnd { get; set; }
|
||||
public List<BunosesAndYearsPayStatus> BunosesStatusList { get; set; }
|
||||
}
|
||||
@@ -4,21 +4,20 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.YearlySalary
|
||||
namespace CompanyManagment.App.Contracts.YearlySalary;
|
||||
|
||||
public class ContractsCanToLeave
|
||||
{
|
||||
public class ContractsCanToLeave
|
||||
{
|
||||
public double WorkingPerDayHourses { get; set; }
|
||||
public DateTime ContractStart { get; set; }
|
||||
public DateTime ContractEnd { get; set; }
|
||||
public double CanToLeave { get; set; }
|
||||
public double PeriodOfAbsence { get; set; }
|
||||
public double AbsenceDeduction { get; set; }
|
||||
public bool LastChekoutOfContract { get; set; }
|
||||
public bool Left { get; set; }
|
||||
public bool EndOfYear { get; set; }
|
||||
public int ContractCounter { get; set; }
|
||||
public int CountChekoutDays { get; set; }
|
||||
public bool Is365 { get; set; }
|
||||
}
|
||||
}
|
||||
public double WorkingPerDayHourses { get; set; }
|
||||
public DateTime ContractStart { get; set; }
|
||||
public DateTime ContractEnd { get; set; }
|
||||
public double CanToLeave { get; set; }
|
||||
public double PeriodOfAbsence { get; set; }
|
||||
public double AbsenceDeduction { get; set; }
|
||||
public bool LastChekoutOfContract { get; set; }
|
||||
public bool Left { get; set; }
|
||||
public bool EndOfYear { get; set; }
|
||||
public int ContractCounter { get; set; }
|
||||
public int CountChekoutDays { get; set; }
|
||||
public bool Is365 { get; set; }
|
||||
}
|
||||
@@ -73,7 +73,7 @@ namespace CompanyManagment.Application
|
||||
|
||||
return _employeeRollCallStatusRepository.Exists(x => x.RollCallEmployeeId == rollCallEmployee.Id &&
|
||||
x.StartDate.Date <= contractStart.Date &&
|
||||
x.EndDate.Date > contractEnd.Date);
|
||||
x.EndDate.Date >= contractEnd.Date);
|
||||
}
|
||||
public OperationResult Deactivate(long id)
|
||||
{
|
||||
|
||||
@@ -81,6 +81,18 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
||||
.FirstOrDefault(x => x.Id == id);
|
||||
}
|
||||
|
||||
public EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId)
|
||||
{
|
||||
var res = _context.Contracts.FirstOrDefault(x =>
|
||||
x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.ContarctStart <= start && x.ContractEnd >= end);
|
||||
if (res == null)
|
||||
return new EditContract();
|
||||
return new EditContract()
|
||||
{
|
||||
Id = res.id,
|
||||
GetWorkDate = res.GetWorkDate.ToFarsi(),
|
||||
};
|
||||
}
|
||||
public List<ContractViweModel> Search(ContractSearchModel searchModel)
|
||||
{
|
||||
var AcountID = _authHelper.CurrentAccountId();
|
||||
|
||||
@@ -276,8 +276,8 @@ public class RollCallEmployeeRepository : RepositoryBase<long, RollCallEmployee>
|
||||
|
||||
public List<RollCallEmployeeViewModel> GetEmployeeRollCalls(long workshopId)
|
||||
{
|
||||
var dateNow = DateTime.Now;
|
||||
var f = _context.RollCallEmployees.Where(x => x.WorkshopId == workshopId);
|
||||
var f = _context.RollCallEmployees.Include(x=>x.EmployeesStatus)
|
||||
.Where(x => x.WorkshopId == workshopId && x.EmployeesStatus.Any());
|
||||
|
||||
var res = f.Select(x => new RollCallEmployeeViewModel
|
||||
{
|
||||
|
||||
@@ -122,8 +122,8 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
|
||||
.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId);
|
||||
|
||||
//if none was found return empty
|
||||
if (employeeRollCallStatuses == null)
|
||||
return new();
|
||||
if (employeeRollCallStatuses == null || employeeRollCallStatuses.EmployeesStatus == null || !employeeRollCallStatuses.EmployeesStatus.Any())
|
||||
return null;
|
||||
|
||||
//this list will have all the months which employee was active in
|
||||
var activeMonths = new List<PersianDateTime>();
|
||||
|
||||
@@ -1097,10 +1097,11 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
//سنوات
|
||||
#region yeaers
|
||||
|
||||
public double Years(DateTime separationStartDate, DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,
|
||||
public BunosesAndYearsPayStatus Years(DateTime separationStartDate, DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,
|
||||
bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract)
|
||||
{
|
||||
var startDateFa = separationEndDate.ToFarsi();
|
||||
BunosesAndYearsPayStatus finalResult = new BunosesAndYearsPayStatus();
|
||||
var startDateFa = separationEndDate.ToFarsi();
|
||||
var checkoutMonth = startDateFa.Substring(5, 2);
|
||||
double result = 0;
|
||||
var start1403 = new DateTime(2024, 3, 20);
|
||||
@@ -1108,7 +1109,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
{
|
||||
case "OnCheckoutOfMonth":
|
||||
var totalCheckoutDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalCheckoutDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalCheckoutDays;
|
||||
break;
|
||||
//محاسبه در پایان سال به شرطی که قرارداد منتهی به پایان سال باشد
|
||||
case "OnEndOfYear"://درپایان سال
|
||||
@@ -1116,7 +1117,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
if (isOldContract && contractEnd < start1403)
|
||||
{
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
@@ -1129,10 +1130,69 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
|
||||
// اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region NewCompute
|
||||
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldYearsPay = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundYearsPay = ((foundDayliWage * 30) / 365) * foundTotaldays;
|
||||
sumOfOldYearsPay += foundYearsPay;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthYearsPay = ((daylyWage * 30) / 365) * totalDays;
|
||||
|
||||
finalResult.YearsPay = lastMonthYearsPay + sumOfOldYearsPay;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
else if (!isOldContract)
|
||||
|
||||
{
|
||||
@@ -1142,20 +1202,77 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
#region NewCompute
|
||||
|
||||
|
||||
break;
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldYearsPay = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundYearsPay = ((foundDayliWage * 30) / 365) * foundTotaldays;
|
||||
sumOfOldYearsPay += foundYearsPay;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthYearsPay = ((daylyWage * 30) / 365) * totalDays;
|
||||
|
||||
finalResult.YearsPay = lastMonthYearsPay + sumOfOldYearsPay;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
//var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
//result = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
//از شروع بکار تا ترک کار
|
||||
case "OnLeftWork"://درپایان همکاری
|
||||
|
||||
if (isOldContract && contractEnd < start1403)
|
||||
{
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
@@ -1169,7 +1286,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
// اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
else if (!isOldContract)
|
||||
@@ -1178,7 +1295,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
{
|
||||
|
||||
var totalDays = (separationEndDate - startWorkDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1189,14 +1306,14 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
if (isOldContract && contractEnd < start1403EndOfContract)
|
||||
{
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd)
|
||||
{
|
||||
var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
|
||||
}else if (!isOldContract)
|
||||
@@ -1204,7 +1321,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd)
|
||||
{
|
||||
var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1218,13 +1335,13 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
//اگر شروع بکار بعد از 1403 بود تاریخ شرو بکار را در نظر میگیرد در غیر اینصورت اولین روز 1403 را در نظر میگیرد
|
||||
var startComputeDay = startWorkDate >= start1403 ? startWorkDate : start1403;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
else if (contractStart < start1403 && contractEnd < start1403)// قبل از 1403
|
||||
{
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 30) / 365 * totalDays;
|
||||
finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays;
|
||||
//if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd)// اگر ترک کار کرده بود یا فیش آخر قراداد بود
|
||||
//{
|
||||
// var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
@@ -1233,11 +1350,11 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
}
|
||||
break;
|
||||
default:
|
||||
result = 0;
|
||||
finalResult.YearsPay = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
return finalResult;
|
||||
}
|
||||
|
||||
|
||||
@@ -2868,11 +2985,11 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
//عیدی
|
||||
#region Bunoses
|
||||
|
||||
public double Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions,
|
||||
public BunosesAndYearsPayStatus Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions,
|
||||
bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId,
|
||||
long employeeId, bool isOldContract)
|
||||
{
|
||||
|
||||
BunosesAndYearsPayStatus finalResult = new BunosesAndYearsPayStatus();
|
||||
double result = 0;
|
||||
// ماه فیش آخر
|
||||
var checkoutMonth = startDateFa.Substring(5, 2);
|
||||
@@ -2882,29 +2999,91 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
case "OnCheckoutOfMonth":
|
||||
|
||||
var totalCheckoutDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = ((daylyWage * 60) / 365) * totalCheckoutDays;
|
||||
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totalCheckoutDays;
|
||||
|
||||
break;
|
||||
case "OnEndOfYear"://درپایان سال
|
||||
|
||||
|
||||
if (isOldContract && contractEnd < start1403)
|
||||
{
|
||||
var totaltDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = ((daylyWage * 60) / 365) * totaltDays;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totaltDays;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || checkoutMonth == "12")
|
||||
{
|
||||
//بدست آوردن اولین روز سال
|
||||
var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
|
||||
|
||||
// اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || checkoutMonth == "12")
|
||||
{
|
||||
|
||||
//بدست آوردن اولین روز سال
|
||||
string startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
DateTime startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
|
||||
// اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
DateTime startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
|
||||
|
||||
#region NewCompute
|
||||
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldBonuses = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundYearsPay = ((foundDayliWage * 60) / 365) * foundTotaldays;
|
||||
sumOfOldBonuses += foundYearsPay;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays;
|
||||
|
||||
finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
else if(!isOldContract)
|
||||
{
|
||||
@@ -2914,10 +3093,65 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
}
|
||||
#region NewCompute
|
||||
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldBonuses = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundYearsPay = ((foundDayliWage * 60) / 365) * foundTotaldays;
|
||||
sumOfOldBonuses += foundYearsPay;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays;
|
||||
|
||||
finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
@@ -2926,7 +3160,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
if (isOldContract && contractEnd < start1403)
|
||||
{
|
||||
var totaltDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = ((daylyWage * 60) / 365) * totaltDays;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totaltDays;
|
||||
}
|
||||
else if (isOldContract && contractEnd > start1403)
|
||||
{
|
||||
@@ -2937,60 +3171,177 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
//var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
//var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
|
||||
//var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
result = (daylyWage * 60) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
else if(isOldContract)
|
||||
var startComputeDay = contractStart;
|
||||
//var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
//result = (daylyWage * 60) / 365 * totalDays;
|
||||
|
||||
#region NewCompute
|
||||
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldBonuses = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays;
|
||||
sumOfOldBonuses += foundBonuses;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays;
|
||||
|
||||
finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
else if(!isOldContract)
|
||||
{
|
||||
if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd)
|
||||
{
|
||||
var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
result = (daylyWage * 60) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
var startComputeDay = contractStart;
|
||||
//var totalDays = (separationEndDate - contractStart).TotalDays + 1;
|
||||
// finalResult.Bunoses = (daylyWage * 60) / 365 * totalDays;
|
||||
|
||||
#region NewCompute
|
||||
|
||||
//شروع دوره
|
||||
string st = startComputeDay.ToFarsi();
|
||||
int syear = Convert.ToInt32(st.Substring(0, 4));
|
||||
int smonth = Convert.ToInt32(st.Substring(5, 2));
|
||||
PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1);
|
||||
PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1);
|
||||
//پایان فیش حقوقی آخر
|
||||
PersianDateTime endCheckout = separationEndDate.ToPersianDateTime();
|
||||
if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month)
|
||||
{
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays;
|
||||
}
|
||||
else
|
||||
{
|
||||
var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
|
||||
x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable();
|
||||
//پایان دوره
|
||||
PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime();
|
||||
List<BunosesAndYearsPayStatus> nullDateList = new List<BunosesAndYearsPayStatus>();
|
||||
double sumOfOldBonuses = 0;
|
||||
for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1))
|
||||
{
|
||||
var searchStart = ($"{startDate}").ToGeorgianDateTime();
|
||||
var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime();
|
||||
var foundCheckout = checkoutList.FirstOrDefault(x =>
|
||||
x.ContractStart >= searchStart && x.ContractEnd <= searchEnd);
|
||||
if (foundCheckout == null)
|
||||
{
|
||||
nullDateList.Add(new BunosesAndYearsPayStatus()
|
||||
{
|
||||
ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart,
|
||||
ContractEnd = searchEnd
|
||||
});
|
||||
finalResult.NotCompleted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
double foundMonthlySalary = foundCheckout.MonthlySalary;
|
||||
int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays);
|
||||
double foundDayliWage = foundMonthlySalary / foundTotaldays;
|
||||
double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays;
|
||||
sumOfOldBonuses += foundBonuses;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays;
|
||||
|
||||
finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses;
|
||||
finalResult.BunosesStatusList = nullDateList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case "EndOfContract1402LeftWork1403": //پایان قرارداد قبل 403 پایان همکاری بعد 403
|
||||
//case "EndOfContract1402LeftWork1403": //پایان قرارداد قبل 403 پایان همکاری بعد 403
|
||||
|
||||
if (contractStart >= start1403 && contractEnd > start1403)// بعد از 1403
|
||||
{
|
||||
if (hasleft && leftWorkDate <= separationEndDate)
|
||||
{
|
||||
//بدست آوردن اولین روز سال
|
||||
var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
// if (contractStart >= start1403 && contractEnd > start1403)// بعد از 1403
|
||||
// {
|
||||
// if (hasleft && leftWorkDate <= separationEndDate)
|
||||
// {
|
||||
// //بدست آوردن اولین روز سال
|
||||
// var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
// var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
|
||||
// اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
result = (daylyWage * 60) / 365 * totalDays;
|
||||
}
|
||||
}
|
||||
else if (contractStart < start1403)// قبل از 1403
|
||||
{
|
||||
var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
result = (daylyWage * 60) / 365 * totalDays;
|
||||
// // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود
|
||||
// var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr;
|
||||
// var totalDays = (separationEndDate - startComputeDay).TotalDays + 1;
|
||||
// result = (daylyWage * 60) / 365 * totalDays;
|
||||
// }
|
||||
// }
|
||||
// else if (contractStart < start1403)// قبل از 1403
|
||||
// {
|
||||
// var totalDays = (separationEndDate - separationStartDate).TotalDays + 1;
|
||||
// finalResult.Bunoses = (daylyWage * 60) / 365 * totalDays;
|
||||
|
||||
//if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd || checkoutMonth == "12")
|
||||
//{
|
||||
// //بدست آوردن اولین روز سال
|
||||
// var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
// var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
// //if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd || checkoutMonth == "12")
|
||||
// //{
|
||||
// // //بدست آوردن اولین روز سال
|
||||
// // var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01";
|
||||
// // var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime();
|
||||
|
||||
// var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr;
|
||||
// // var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr;
|
||||
|
||||
//}
|
||||
}
|
||||
break;
|
||||
// //}
|
||||
// }
|
||||
// break;
|
||||
|
||||
default:
|
||||
result = 0;
|
||||
finalResult.Bunoses = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
return finalResult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -498,29 +498,88 @@ public class IndexModel : PageModel
|
||||
var computeOption = getComputeOption == null
|
||||
? workshop.ComputeOptions
|
||||
: getComputeOption.ComputeOptions;
|
||||
|
||||
//سنوات
|
||||
//var leftNull = "1500/01/01";
|
||||
//var leftNullGr = leftNull.ToGeorgianDateTime();
|
||||
//var leftWorkDateGr = new DateTime(2121,3,21);
|
||||
//if (separation.LeftWorkDate < leftNullGr)
|
||||
//{
|
||||
// leftWorkDateGr = separation.LeftWorkDate.AddDays(-1);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// leftWorkDateGr = separation.LeftWorkDate;
|
||||
//}
|
||||
|
||||
var yearsPay = _yearlySalaryRepository.Years(separation.ContractStartGr, separation.LeftWorkDate,
|
||||
separation.ContractEndGr,
|
||||
dayliWage, yearsOption, separation.HasLeft, separation.StartWorkDate, contract.ContractStartGr,
|
||||
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract);
|
||||
//عیدی
|
||||
#region BonusesPay
|
||||
var bunosesPay = _yearlySalaryRepository.Bunoses(separation.ContarctStart, separation.LeftWorkDate,
|
||||
separation.ContractStartGr, separation.ContractEndGr,
|
||||
dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate,
|
||||
contract.ContractStartGr,
|
||||
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract);
|
||||
separation.ContractStartGr, separation.ContractEndGr,
|
||||
dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate,
|
||||
contract.ContractStartGr,
|
||||
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract);
|
||||
if (bunosesPay.NotCompleted || yearsPay.NotCompleted)
|
||||
{
|
||||
List<BunosesAndYearsPayStatus> lostCheckoutsDates = new List<BunosesAndYearsPayStatus>();
|
||||
if ((bunosesPay.NotCompleted && yearsPay.NotCompleted) || (bunosesPay.NotCompleted && !yearsPay.NotCompleted))
|
||||
lostCheckoutsDates = bunosesPay.BunosesStatusList;
|
||||
if(!bunosesPay.NotCompleted && yearsPay.NotCompleted)
|
||||
lostCheckoutsDates = yearsPay.BunosesStatusList;
|
||||
|
||||
foreach (var found in lostCheckoutsDates)
|
||||
{
|
||||
ComputingViewModel foundMandatoryCompute = new ComputingViewModel();
|
||||
var foundContract = _contractRepository.GetContractByStartEnd(found.ContractStart,
|
||||
found.ContractEnd, contract.WorkshopIds, contract.EmployeeId);
|
||||
|
||||
if (foundContract.Id > 0)
|
||||
{
|
||||
var foundWorkingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(foundContract.Id);
|
||||
foundWorkingHours.ContractStartGr = found.ContractStart;
|
||||
foundWorkingHours.ContractEndGr = found.ContractEnd;
|
||||
foundWorkingHours.ContarctStart = found.ContractStart.ToFarsi();
|
||||
foundWorkingHours.ContractEnd = found.ContractEnd.ToFarsi();
|
||||
foundWorkingHours.GetWorkDate = foundContract.GetWorkDate;
|
||||
foundWorkingHours.GetWorkDateHide = foundContract.GetWorkDate;
|
||||
foundWorkingHours.WorkshopId = contract.WorkshopIds;
|
||||
foundWorkingHours.EmployeeId = contract.EmployeeId;
|
||||
|
||||
bool foundHasRollCall = _rollCallEmployeeStatusApp.HasRollCallRecord(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
found.ContractStart, found.ContractEnd);
|
||||
|
||||
if (foundHasRollCall)
|
||||
{
|
||||
foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
found.ContractStart, found.ContractEnd, foundWorkingHours, 0);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
foundMandatoryCompute = MandatoryHours(foundWorkingHours, workshop.WorkshopHolidayWorking, 0);
|
||||
|
||||
}
|
||||
|
||||
var MontlyYearsBunos =
|
||||
_yearlySalaryRepository.GetMontlyBunosYears(foundMandatoryCompute.weeklyTime, found.ContractStart, found.ContractEnd,
|
||||
foundMandatoryCompute.SalaryCompute.MoneyToDouble(), foundMandatoryCompute.SumTime44, foundMandatoryCompute.OfficialHoliday,
|
||||
int.Parse(foundMandatoryCompute.NumberOfFriday), foundMandatoryCompute.TotalHolidayAndNotH, foundMandatoryCompute.TotalHolidayAndNotM,
|
||||
foundMandatoryCompute.Basic, foundMandatoryCompute.FridayStartToEnd, foundMandatoryCompute.DayliFeeComplete);
|
||||
double foundMontlySalary = MontlyYearsBunos.MontlyWage;
|
||||
int foundTotaldays = Convert.ToInt32(MontlyYearsBunos.SumOfWorkingDay);
|
||||
double foundDayliWage = foundMontlySalary / foundTotaldays;
|
||||
if (bunosesPay.NotCompleted)
|
||||
{
|
||||
double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays;
|
||||
bunosesPay.Bunoses += foundBonuses;
|
||||
}
|
||||
|
||||
if (yearsPay.NotCompleted)
|
||||
{
|
||||
double foundBonuses = ((foundDayliWage * 30) / 365) * foundTotaldays;
|
||||
yearsPay.YearsPay += foundBonuses;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//مزد مرخصی جدید
|
||||
var leavePayNew = _yearlySalaryRepository.LeavePay(separation.ContarctStart,
|
||||
separation.LeftWorkDate, separation.ContractStartGr, separation.ContractEndGr,
|
||||
@@ -571,9 +630,9 @@ public class IndexModel : PageModel
|
||||
//حق تاهل
|
||||
MarriedAllowance = mandatoryCompute.MarriedAllowance,
|
||||
//سنوات
|
||||
YearsPay = yearsPay,
|
||||
YearsPay = yearsPay.YearsPay,
|
||||
//عیدی و پادادش
|
||||
BonusesPay = bunosesPay,
|
||||
BonusesPay = bunosesPay.Bunoses,
|
||||
//مدت غیبت
|
||||
AbsencePeriod = leavePayNew.AbsencePeriod,
|
||||
//کسری غیبت
|
||||
|
||||
@@ -389,5 +389,5 @@
|
||||
|
||||
var deleteRollCallData = `@Url.Page("./CaseHistory", "RemoveEmployeeRollCallsInDate")`;
|
||||
</script>
|
||||
<script src="~/assetsclient/pages/rollcall/js/casehistory.js?ver=13515"></script>
|
||||
<script src="~/assetsclient/pages/rollcall/js/casehistory.js?ver=@clientVersion"></script>
|
||||
}
|
||||
@@ -46,7 +46,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
||||
}
|
||||
|
||||
|
||||
public IActionResult OnGet()
|
||||
public IActionResult OnGet()
|
||||
{
|
||||
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
||||
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
||||
@@ -66,7 +66,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
||||
YearlyList = _yearlySalaryApplication.GetYears();
|
||||
|
||||
return Page();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return Redirect("/Client/Company/RollCall");
|
||||
@@ -87,6 +87,12 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
||||
if (employeeId > 0)
|
||||
{
|
||||
RollCallEmployeeViewModels = _rollCallApplication.GetEmployeeRollCallsHistory(employeeId, workshopId, startDate, endDate, exactDateFa, dateEmployeeIndex);
|
||||
if (RollCallEmployeeViewModels == null)
|
||||
return new JsonResult(new
|
||||
{
|
||||
IsSuccedded = false,
|
||||
message = "داده ای یافت نشد!",
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -294,6 +294,8 @@ function caseHistoryLoadAjax() {
|
||||
var caseHistoryData = response.data;
|
||||
var caseHistoryEmployeeData = response.dataEmployee;
|
||||
|
||||
console.log(response);
|
||||
|
||||
if (response.isSuccedded) {
|
||||
if (caseHistoryData == null) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user