|
@@ -116,10 +116,10 @@ namespace OASystem.API.OAMethodLib
|
|
|
pm_wsInfo.TrafficSubsidies + pm_wsInfo.InformationSecurityFee + pm_wsInfo.OperationBonus + pm_wsInfo.SpecialAllowance + pm_wsInfo.OtherSubsidies + pm_wsInfo.GroupCost;
|
|
|
|
|
|
// 日薪 = *计算方式:日平均工资 = 月工资/当月应出勤天数。
|
|
|
- decimal dailyWage = amountPayable / work_days;
|
|
|
+ decimal dailyWage = ConvertToDecimal(amountPayable / work_days);
|
|
|
|
|
|
// 病假日薪 *计算方式:日平均工资 = 成都市最低工资标准的80%/当月应出勤天数。 短期病假=当月15天内
|
|
|
- decimal sickLeave_dailywage = _chengDuMinimumWage / work_days;
|
|
|
+ decimal sickLeave_dailywage = ConvertToDecimal(_chengDuMinimumWage / work_days);
|
|
|
|
|
|
//病假 一天扣款
|
|
|
sickLeave_deduction = dailyWage - sickLeave_dailywage;
|
|
@@ -171,6 +171,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
//continue;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
List<Ex_Items> ex_Items = new List<Ex_Items>();//假勤 And 打卡备注集合
|
|
|
Ex_Items ex_Items_jq = new Ex_Items() { Type = "假勤" }; //假勤
|
|
|
List<Ex_Item> ex_ItemInfos = new List<Ex_Item>();
|
|
@@ -196,6 +197,12 @@ namespace OASystem.API.OAMethodLib
|
|
|
int leaveType = int.Parse(optionsItems[0].key); //key 请假子类型 id
|
|
|
Date_range date_Range = attendance.date_range;
|
|
|
|
|
|
+ //筛选 不在工作日内的假勤申请
|
|
|
+ if (startDt >= date_Range.new_begin_dt && date_Range.new_end_dt <= endDt)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
decimal thisTypeDeduction = 0.00M;//当前类型扣款
|
|
|
string leave_starttime = date_Range.new_begin_dt.ToString("HH:mm");
|
|
|
string leave_endtime = date_Range.new_end_dt.ToString("HH:mm");
|
|
@@ -207,16 +214,18 @@ namespace OASystem.API.OAMethodLib
|
|
|
if (leaveTypeData != null) { typeName = leaveTypeData.name; }
|
|
|
//计算请假类型扣款金额
|
|
|
|
|
|
- int new_duration = 0;
|
|
|
+ decimal new_duration = 0.00M;
|
|
|
if (date_Range.type == "halfday")
|
|
|
{
|
|
|
- new_duration =date_Range.new_duration / 86400;
|
|
|
+ new_duration = Convert.ToDecimal(date_Range.new_duration) / 86400M;
|
|
|
}
|
|
|
else if (date_Range.type == "hour")
|
|
|
{
|
|
|
- new_duration =date_Range.new_duration / 3600;
|
|
|
+ new_duration = Convert.ToDecimal(date_Range.new_duration) / 3600M;
|
|
|
}
|
|
|
decimal leave_meals = 0.00M;
|
|
|
+
|
|
|
+ //计算餐补 假勤类型扣款
|
|
|
CalculateTypeFee(leaveType, date_Range.type, leave_starttime, leave_endtime, amountPayable, work_days, new_duration,
|
|
|
out leave_meals, out thisTypeDeduction);
|
|
|
|
|
@@ -645,6 +654,18 @@ namespace OASystem.API.OAMethodLib
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// decimal 保留两位小数 不四舍五入
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="number"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private static decimal ConvertToDecimal(decimal number)
|
|
|
+ {
|
|
|
+ return Convert.ToDecimal(number.ToString("0.00"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取请假类型
|
|
|
/// </summary>
|
|
@@ -701,15 +722,12 @@ namespace OASystem.API.OAMethodLib
|
|
|
typeDeduction = 0;
|
|
|
mealDeduction = 0;
|
|
|
|
|
|
- //处理时长
|
|
|
- if (duration == 7) duration = 7.50M;
|
|
|
-
|
|
|
string am_starttime = "08:59";
|
|
|
string am_endtime = "13:01";
|
|
|
|
|
|
|
|
|
|
|
|
- decimal personalkLeave_dailywage_day = amountPayable / work_days; //日薪 = 事假日薪 *计算方式:日平均工资 = 当月应发工资 /当月应出勤天数。
|
|
|
+ decimal personalkLeave_dailywage_day = ConvertToDecimal( amountPayable / work_days); //日薪 = 事假日薪 *计算方式:日平均工资 = 当月应发工资 /当月应出勤天数。
|
|
|
|
|
|
//半小时单位
|
|
|
decimal halfHour = Convert.ToDecimal(7.5) / Convert.ToDecimal(0.5);
|
|
@@ -721,7 +739,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
break;
|
|
|
case 2: //2事假
|
|
|
// 事假日薪 *计算方式:日平均工资 = 当月应发工资 /当月应出勤天数。
|
|
|
- decimal personalkLeave_dailywage_halfhour = personalkLeave_dailywage_day / halfHour; //事假单位 0.5小时
|
|
|
+ decimal personalkLeave_dailywage_halfhour = ConvertToDecimal( personalkLeave_dailywage_day / halfHour); //事假单位 0.5小时
|
|
|
|
|
|
if (date_Range_type == "halfday")
|
|
|
{
|
|
@@ -738,10 +756,10 @@ namespace OASystem.API.OAMethodLib
|
|
|
if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
{
|
|
|
//处理结束时间
|
|
|
- if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) > 0)
|
|
|
- {
|
|
|
+ //if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) > 0)
|
|
|
+ //{
|
|
|
mealDeduction = 10; //餐补扣款
|
|
|
- }
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
else if (duration > 7.5M) //多天计算
|
|
@@ -776,7 +794,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
case 3: //3病假
|
|
|
// 病假日薪 *计算方式:日平均工资 = 成都市最低工资标准的80% /当月应出勤天数。 短期病假=当月15天内
|
|
|
|
|
|
- decimal chengDuMinimumWage_halrHour = _chengDuMinimumWage / work_days / halfHour;
|
|
|
+ decimal chengDuMinimumWage_halrHour = ConvertToDecimal( _chengDuMinimumWage / work_days) / halfHour;
|
|
|
decimal sickLeave_dailywage_halfhour_deduction = personalkLeave_dailywage_day - chengDuMinimumWage_halrHour; //病假单位 0.5小时 扣款金额
|
|
|
|
|
|
if (date_Range_type == "halfday")
|