Checkout NEW Compute DailyWage Completed
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Company.Domain.RollCallAgg;
|
||||
|
||||
public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
||||
{
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute);
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected);
|
||||
|
||||
/// <summary>
|
||||
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب
|
||||
|
||||
@@ -19,6 +19,15 @@ public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
|
||||
List<string> GetYears();
|
||||
List<YearlySalaryViewModel> GetYearlySalary();
|
||||
|
||||
/// <summary>
|
||||
/// دریافت مزد روزانه فیش حقوقی
|
||||
/// </summary>
|
||||
/// <param name="contract"></param>
|
||||
/// <param name="checkoutStart"></param>
|
||||
/// <param name="checkoutEnd"></param>
|
||||
/// <returns></returns>
|
||||
Task<double> GetCheckoutDailyWage(EditContract contract, DateTime checkoutStart, DateTime checkoutEnd);
|
||||
|
||||
/// <summary>
|
||||
/// دریافت مزد روزانه بر اساس تاریخ شروع و پایان
|
||||
/// </summary>
|
||||
|
||||
@@ -160,4 +160,35 @@ public class CreateCheckout
|
||||
public TimeSpan TotalPaidLeave { get; set; }
|
||||
public TimeSpan TotalSickLeave { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
|
||||
/// </summary>
|
||||
public double DailySalaryAffected { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// پایه سنوات بعد از تاثیر ساعت کار
|
||||
/// </summary>
|
||||
public double BaseYearAffected { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دستمزد روزانه قبل از تاثیر ساعت کار
|
||||
/// </summary>
|
||||
public double DailySalaryUnAffected { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// دستمزد روزانه دریافت شده از سمت فرانت
|
||||
/// </summary>
|
||||
public string DailySalaryUnAffectedStr { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// مزد سالانه نرمال دریافت از سمت فرانت
|
||||
/// </summary>
|
||||
public string NormalDailyWage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// پایه سنوات قبل از تاثیر ساعت کار
|
||||
/// </summary>
|
||||
public double BaseYearUnAffected { get; set; }
|
||||
}
|
||||
@@ -8,7 +8,7 @@ namespace CompanyManagment.App.Contracts.RollCall;
|
||||
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, bool isStaticCheckout, bool rotatingShiftCompute);
|
||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected);
|
||||
|
||||
/// <summary>
|
||||
/// گزارش نوبت کاری حضور غیاب
|
||||
|
||||
@@ -152,17 +152,30 @@ public class CheckoutApplication : ICheckoutApplication
|
||||
var housingAllowance = command.HousingAllowance.MoneyToDouble();
|
||||
//حق تاهل
|
||||
var marriedAllowance = command.MarriedAllowance.MoneyToDouble();
|
||||
var MontlyYearsBunos =
|
||||
_yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage, command.WorkingWeeklyTime, command.officialholiday, command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd, command.DailFeeComplete, command.HasRollCall, command.HolidayWorking, command.ShiftWork);
|
||||
//دستمزد ماهانه
|
||||
var monthlyWage = MontlyYearsBunos.MontlyWage;
|
||||
//سنوات
|
||||
var years = command.YearsPay;
|
||||
//var MontlyYearsBunos =
|
||||
//_yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage, command.WorkingWeeklyTime, command.officialholiday, command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd, command.DailFeeComplete, command.HasRollCall, command.HolidayWorking, command.ShiftWork);
|
||||
//دستمزد ماهانه
|
||||
|
||||
#region Salary
|
||||
|
||||
var totalDays = (command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
|
||||
|
||||
var mandatoryDays = totalDays - command.FridayStarttoEnd - command.officialholiday;
|
||||
|
||||
if (!command.HasRollCall && command.ShiftWork != "4")
|
||||
mandatoryDays = totalDays - command.FridayStarttoEnd;
|
||||
var monthlyWage = command.DailySalaryAffected * mandatoryDays;
|
||||
|
||||
//پایه سنوات
|
||||
var bacicYears = command.BaseYearAffected * mandatoryDays;
|
||||
#endregion
|
||||
|
||||
//سنوات
|
||||
var years = command.YearsPay;
|
||||
//عیدی و پاداش
|
||||
var bunos = command.BonusesPay;
|
||||
//پایه سنوات
|
||||
var bacicYears = MontlyYearsBunos.BasicYears;
|
||||
var sumOfWorkingDays = MontlyYearsBunos.SumOfWorkingDay;
|
||||
|
||||
var sumOfWorkingDays = $"{totalDays}";
|
||||
if (command.friday > 0)
|
||||
{
|
||||
var fridayPercent = dayliWage * 40 / 100;
|
||||
|
||||
@@ -21,9 +21,9 @@ public class RollCallMandatoryApplication : IRollCallMandatoryApplication
|
||||
return _rollCallMandatoryRepository.Exists(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date);
|
||||
}
|
||||
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute)
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected)
|
||||
{
|
||||
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute);
|
||||
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute, dailyWageUnAffected);
|
||||
}
|
||||
|
||||
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd,
|
||||
|
||||
@@ -67,7 +67,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
#region OfficialChckout
|
||||
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart,
|
||||
DateTime contractEnd,
|
||||
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute)
|
||||
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,double dailyWageUnAffected)
|
||||
{
|
||||
#region Entities
|
||||
|
||||
@@ -488,20 +488,22 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
if (leftworkList == null)
|
||||
leftworkList = new List<LeftWorkViewModel>();
|
||||
|
||||
var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStart, contractEnd,
|
||||
command.EmployeeId, command.WorkshopId, leftworkList);
|
||||
dayliFee = dayliFeeResult.DayliFee;
|
||||
dayliFeeDouble = dayliFeeResult.DayliFeeDouble;
|
||||
dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble();
|
||||
basic = dayliFeeResult.Basic;
|
||||
//var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStart, contractEnd,
|
||||
// command.EmployeeId, command.WorkshopId, leftworkList);
|
||||
//dayliFee = dayliFeeResult.DayliFee;
|
||||
//dayliFeeDouble = dayliFeeResult.DayliFeeDouble;
|
||||
//dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble();
|
||||
//basic = dayliFeeResult.Basic;
|
||||
|
||||
|
||||
//dayliFee = dailyWageUnAffected;
|
||||
var baseYear = _yearlySalaryRepository.BaseYearCompute(contractStart, contractEnd, command.EmployeeId,
|
||||
command.WorkshopId, leftworkList).Result;
|
||||
dayliFee = (command.DailySalaryUnAffected + baseYear.BaseYearResult).ToMoney();
|
||||
dayliFee = (dailyWageUnAffected + baseYear.BaseYearResult).ToMoney();
|
||||
|
||||
baseYearUnAffected = baseYear.BaseYearResult;
|
||||
baseYearAffected = baseYearUnAffected;
|
||||
dailySalaryAffected = command.DailySalaryUnAffected;
|
||||
dailySalaryAffected = dailyWageUnAffected;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -526,15 +528,15 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
if (!string.IsNullOrWhiteSpace(command.ShiftWork))
|
||||
{
|
||||
var workedHoursePerDay = totalHourses / mandatorDays;
|
||||
var result = (dayliFeeDouble / 7.33) * workedHoursePerDay;
|
||||
//var result = (dayliFeeDouble / 7.33) * workedHoursePerDay;
|
||||
|
||||
|
||||
dayliFee = result.ToMoney();
|
||||
//dayliFee = result.ToMoney();
|
||||
|
||||
|
||||
#region NeWdailyWage
|
||||
|
||||
var da = command.DailySalaryUnAffected / 7.33;
|
||||
var da = dailyWageUnAffected / 7.33;
|
||||
dailySalaryAffected = da > 0 ? ((workedHoursePerDay * da).ToMoney()).MoneyToDouble() : 0;
|
||||
var ba = baseYearUnAffected / 7.33;
|
||||
baseYearAffected = ba > 0 ? ((workedHoursePerDay * ba).ToMoney()).MoneyToDouble() : 0;
|
||||
|
||||
@@ -90,6 +90,33 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
|
||||
#endregion
|
||||
|
||||
public async Task<double> GetCheckoutDailyWage(EditContract contract, DateTime checkoutStart, DateTime checkoutEnd)
|
||||
{
|
||||
var contractEnd = ($"{contract.ContarctStart.FindeEndOfMonth()}").ToGeorgianDateTime();
|
||||
var contractYearlySalary = await
|
||||
_context.YearlySalaries.FirstOrDefaultAsync(x =>
|
||||
x.StartDate <= contract.ContractStartGr && x.EndDate >= contractEnd);
|
||||
var checkoutYearlySalary = await
|
||||
_context.YearlySalaries.Include(x=>x.YearlySalaryItemsList).FirstOrDefaultAsync(x =>
|
||||
x.StartDate <= checkoutStart && x.EndDate >= checkoutEnd);
|
||||
//اگر قرداد و فیش حقوی از یک مقادیر سالانه استفاده کرده اند
|
||||
//مزد روزانه قرارداد رو میگیره
|
||||
if (contractYearlySalary.id == checkoutYearlySalary.id)
|
||||
return contract.DailySalaryUnAffected;
|
||||
|
||||
if (contract.DailyWageType == "NormalDailyWage")
|
||||
{
|
||||
var normalDailyWage = checkoutYearlySalary
|
||||
.YearlySalaryItemsList.Where(x => x.ItemName == "مزد روزانه").Select(x => x.ItemValue).FirstOrDefault();
|
||||
return normalDailyWage;
|
||||
}
|
||||
|
||||
|
||||
var res = UpgradeManualDailyWage(checkoutStart, contract.ContractStartGr, contract.DailySalaryUnAffected)
|
||||
.GetAwaiter().GetResult();
|
||||
return res.DailyWage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت مزد روزانه بر اساس تاریخ شروع و پایان
|
||||
/// </summary>
|
||||
|
||||
@@ -762,6 +762,7 @@ public class IndexModel : PageModel
|
||||
foreach (var item in ContractsId)
|
||||
{
|
||||
var contract = _contractApplication.GetDetails(item);
|
||||
|
||||
//var workingHours = _workingHoursApplication.GetByContractId(contract.Id);
|
||||
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(contract.Id);
|
||||
var separation = _contractApplication.contractSeparation(ConvertYear, ConvertMonth,
|
||||
@@ -780,7 +781,15 @@ public class IndexModel : PageModel
|
||||
//workshopInfo
|
||||
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
|
||||
var mandatoryCompute = new ComputingViewModel();
|
||||
|
||||
|
||||
#region DailyWageCompute
|
||||
|
||||
var dailyWageUnAffected = _yearlySalaryRepository.GetCheckoutDailyWage(contract,
|
||||
separation.ContractStartGr, separation.ContractEndGr).GetAwaiter().GetResult();
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
var hasRollCall = _rollCallEmployeeStatusApp.HasRollCallRecord(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
separation.ContractStartGr, separation.ContractEndGr);
|
||||
@@ -790,13 +799,13 @@ public class IndexModel : PageModel
|
||||
{
|
||||
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute);
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
}
|
||||
else
|
||||
{
|
||||
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute);
|
||||
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
//var hasLeave = _leaveApplication.LeavOnChekout(separation.ContractStartGr,
|
||||
// separation.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
|
||||
//if (hasLeave != null)
|
||||
@@ -904,7 +913,7 @@ public class IndexModel : PageModel
|
||||
{
|
||||
foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
|
||||
contract.WorkshopIds,
|
||||
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute);
|
||||
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, dailyWageUnAffected);
|
||||
|
||||
}
|
||||
else
|
||||
@@ -1044,7 +1053,17 @@ public class IndexModel : PageModel
|
||||
// ساعت موظفی پرسنل برای این ماه
|
||||
EmployeeMandatoryHours = mandatoryCompute.EmployeeMandatoryHours,
|
||||
|
||||
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime
|
||||
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime,
|
||||
|
||||
BaseYearAffected = mandatoryCompute.BaseYearAffected,
|
||||
|
||||
|
||||
|
||||
DailySalaryAffected = mandatoryCompute.DailySalaryAffected,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
_checkoutApplication.Create(command);
|
||||
|
||||
Reference in New Issue
Block a user