Upgraded daillyWage Completed
This commit is contained in:
@@ -30,7 +30,17 @@ public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
|
||||
double GetLeavePay(DateTime contractStart, DateTime contractEnd, double daylyWage, double consumableItem, double housingAllowance, double familyAllowance , string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM);
|
||||
double GetOverTimeWorking(double dayliWage, string overTimeWorkH, string overTimeWorkM);
|
||||
double GetOverNightWorking(double dayliWage, string overNightWorkH, string overNightWorkM, string weeklyWorkingTime, int officialholiday, int friday, DateTime contractStart, DateTime contractEnd, string totalHoursH, string totalHorsM);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// متد ارتقاء مزد دلخواه
|
||||
/// </summary>
|
||||
/// <param name="newContractStart"></param>
|
||||
/// <param name="lastContractStart"></param>
|
||||
/// <param name="lastContractManualDailyWage"></param>
|
||||
/// <returns></returns>
|
||||
Task<double> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
|
||||
double lastContractManualDailyWage);
|
||||
|
||||
/// <summary>
|
||||
/// متد محاسبه پایه سنوات و لیست پایه سنوات های پرسنل
|
||||
/// </summary>
|
||||
|
||||
@@ -64,16 +64,17 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
||||
//اگر دستمزد آخرین قراداد و قرداد جدید از یک مقادیر سالانه بودن بدون ارتقاء دستمزد دلخواه آخرین قرداد ارسال میشه
|
||||
if (lastContractYearlySalary.id == yearlySalaryId)
|
||||
return lastContract.DailySalaryUnAffected;
|
||||
|
||||
|
||||
|
||||
|
||||
double dailyWage = _yearlySalaryRepository.UpgradeManualDailyWage(contractStart,
|
||||
lastContractYearlySalary.StartDate, lastContract.DailySalaryUnAffected).GetAwaiter().GetResult();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
return dailyWage;
|
||||
}
|
||||
|
||||
public EditContract GetDetails(long id)
|
||||
|
||||
@@ -122,6 +122,7 @@ public class LeftWorkRepository : RepositoryBase<long, LeftWork>, ILeftWorkRepos
|
||||
AddYearsPay = x.AddYearsPay,
|
||||
AddLeavePay = x.AddLeavePay,
|
||||
JobId = x.JobId,
|
||||
HasLeft = x.HasLeft,
|
||||
JobName = _context.Jobs.FirstOrDefault(j => j.id == x.JobId).JobName
|
||||
|
||||
|
||||
|
||||
@@ -816,7 +816,82 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
}
|
||||
//محاسبه حقوق روزانه
|
||||
#region DayliSalary
|
||||
|
||||
|
||||
public async Task<double> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart, double lastContractManualDailyWage)
|
||||
{
|
||||
//تمام مقادیر سالانه بعد از مزد دلخواه آخرین قراداد
|
||||
var salaries = await _context.YearlySalaries
|
||||
.Where(x=> x. StartDate > lastContractStart && x.StartDate <= newContractStart && x.EndDate >= lastContractStart)
|
||||
.Include(x => x.YearlySalaryItemsList).ToListAsync();
|
||||
//مقادیر سالانه آخرین قرارداد
|
||||
var lastContractSalary = await _context.YearlySalaries.FirstOrDefaultAsync(x =>
|
||||
x.StartDate <= lastContractStart && x.EndDate >= lastContractStart);
|
||||
var res = MonthByMonthList(lastContractStart, newContractStart);
|
||||
|
||||
var dailyWageList = new List<(double dailyWage, DateTime start, DateTime end, string year)>();
|
||||
|
||||
var first = (lastContractManualDailyWage, lastContractSalary.StartDate, lastContractSalary.EndDate, lastContractSalary.Year);
|
||||
dailyWageList.Add(first);
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine($"{lastContractSalary.StartDate.ToFarsi()} -> firstDailyWage : {lastContractStart}");
|
||||
|
||||
foreach (var item in res)
|
||||
{
|
||||
var lastReecord = dailyWageList.Last();
|
||||
var year = Convert.ToInt32(item.start.ToFarsi().Substring(0, 4));
|
||||
if (item.start > lastReecord.end && lastReecord.year != $"{year}")
|
||||
{
|
||||
|
||||
|
||||
var selectedSalary = salaries.Where(x => x.Year == $"{year}").OrderBy(x => x.StartDate).ToList();
|
||||
var currentSalary = selectedSalary.First();
|
||||
if (selectedSalary.Count > 1)
|
||||
{
|
||||
currentSalary = selectedSalary.Last();
|
||||
var firstSalery = selectedSalary.First();
|
||||
if (newContractStart < currentSalary.StartDate)
|
||||
{
|
||||
currentSalary = firstSalery;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
var fixFeePercentage = currentSalary
|
||||
.YearlySalaryItemsList.Where(x => x.ItemName == "درصد مزد ثابت").Select(x => x.ItemValue).FirstOrDefault();
|
||||
// مبلغ مزد ثابت سال جاری
|
||||
var fixFeePrice = currentSalary
|
||||
.YearlySalaryItemsList.Where(x => x.ItemName == "مبلغ مزد ثابت").Select(x => x.ItemValue).FirstOrDefault();
|
||||
|
||||
// مزد روزانه سال قبل ضربدر درصد مزد ثابت تقسیم بر صد
|
||||
var percntSumDaylifee = (lastReecord.dailyWage * fixFeePercentage) / 100;
|
||||
// نتیجه عملیات بالا بعلاوه مزد سال قبل
|
||||
var Sum = lastReecord.dailyWage + percntSumDaylifee;
|
||||
|
||||
//مزد پایه
|
||||
var dailyWage = Sum + fixFeePrice;
|
||||
|
||||
|
||||
|
||||
|
||||
// var round = GetCurrectFirstDailyFee(currentBase, $"{year}");
|
||||
var record = (dailyWage, currentSalary.StartDate, currentSalary.EndDate, currentSalary.Year);
|
||||
dailyWageList.Add(record);
|
||||
|
||||
Console.WriteLine($"{record.StartDate.ToFarsi()} -> upgradedDailyWage : {record.dailyWage}");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Console.WriteLine($"{newContractStart.ToFarsi()} -> upgradedDailyWage : {dailyWageList.Last().dailyWage}");
|
||||
return dailyWageList.Last().dailyWage;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// متد محاسبه پایه سنوات
|
||||
/// </summary>
|
||||
@@ -879,9 +954,13 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
|
||||
|
||||
var a = current.AddDays(1);
|
||||
checkKabiseh = true;
|
||||
baseYearDateList.Add(a);
|
||||
Console.WriteLine($" End : {a.ToFarsi()}");
|
||||
if (a <= endComputeDate)
|
||||
{
|
||||
checkKabiseh = true;
|
||||
baseYearDateList.Add(a);
|
||||
Console.WriteLine($" End : {a.ToFarsi()}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -892,6 +971,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
{
|
||||
int max365 = 0;
|
||||
int dayCounter = 0;
|
||||
bool hasCute = false;
|
||||
foreach (var leftWork in leftWorkList)
|
||||
{
|
||||
//اگر ترک کار کرده بود پایان چرخه تاریخ آخرین روز کاری اوست
|
||||
@@ -916,18 +996,44 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
|
||||
dayCounter += 1;
|
||||
checkKabiseh = false;
|
||||
|
||||
if (dayCounter == max365)
|
||||
{
|
||||
|
||||
var a = !hasCute ? current.AddDays(1) : current;
|
||||
if (a <= endComputeDate)
|
||||
{
|
||||
checkKabiseh = true;
|
||||
baseYearDateList.Add(a);
|
||||
Console.WriteLine($" End : {a.ToFarsi()}");
|
||||
Console.WriteLine(dayCounter);
|
||||
if (hasCute)
|
||||
{
|
||||
dayCounter = 1;
|
||||
isKabiseh = ($"{current.ToFarsi()}").YearTotalDays() == 367 ? true : false;
|
||||
max365 = isKabiseh ? 366 : 365;
|
||||
|
||||
|
||||
|
||||
checkKabiseh = true;
|
||||
var a = current.AddDays(1);
|
||||
baseYearDateList.Add(a);
|
||||
Console.WriteLine($" End : {a.ToFarsi()}");
|
||||
Console.WriteLine(dayCounter);
|
||||
dayCounter = 0;
|
||||
string kabise = "";
|
||||
if (isKabiseh)
|
||||
kabise = "kabise";
|
||||
Console.WriteLine($" start : {current.ToFarsi()} {kabise}");
|
||||
}
|
||||
else
|
||||
{
|
||||
dayCounter = 0;
|
||||
}
|
||||
hasCute = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
hasCute = true;
|
||||
max365 += 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1007,7 +1113,7 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
|
||||
|
||||
baseYear = currentBase;
|
||||
|
||||
|
||||
|
||||
// var round = GetCurrectFirstDailyFee(currentBase, $"{year}");
|
||||
var record = (baseYear, currentSalary.StartDate, currentSalary.EndDate, currentSalary.Year);
|
||||
baseList.Add(record);
|
||||
|
||||
@@ -5502,12 +5502,13 @@ public class AutoExtensionModel : PageModel
|
||||
|
||||
//var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStartDate,
|
||||
// contractStartDate, command.EmployeeId, command.WorkshopId, leftworkList);
|
||||
|
||||
|
||||
|
||||
var baseYear = _yearlySalaryRepository.BaseYearCompute(contractStartDate, endDate, command.EmployeeId,
|
||||
command.WorkshopId, leftworkList).Result;
|
||||
dayliFee = (command.DailySalaryUnAffected + baseYear.BaseYearResult).ToMoney();
|
||||
//basic = dayliFeeResult.Basic;
|
||||
|
||||
//Console.WriteLine($"oldDaily : {dayliFeeResult.DayliFee} newDaily {dayliFee}");
|
||||
baseYearUnAffected = baseYear.BaseYearResult > 0 ? (baseYear.BaseYearResult.ToMoney()).MoneyToDouble() : 0;
|
||||
baseYearAffected = baseYearUnAffected;
|
||||
dailySalaryAffected = command.DailySalaryUnAffected;
|
||||
|
||||
Reference in New Issue
Block a user