|
@@ -768,7 +768,8 @@ namespace OASystem.API.OAMethodLib
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
- List<string> qyWhchatIdList = userIdListView.dept_user.Select(it => it.userid).ToList();
|
|
|
+ List<string> qyWhchatIdList = new List<string>();
|
|
|
+ qyWhchatIdList = userIdListView.dept_user.Select(it => it.userid).ToList();
|
|
|
CheckInDayDataView checkInDayDataView = await _qiYeWeChatApiService.GetCheckInDayDataAsync(qyWhchatIdList, startDt, endDt);
|
|
|
if (checkInDayDataView.errcode != 0)
|
|
|
{
|
|
@@ -837,7 +838,9 @@ namespace OASystem.API.OAMethodLib
|
|
|
#endregion
|
|
|
|
|
|
List<Root> userRoots = workday_userRoots.Where(it => it.base_info.name == itemName).ToList(); //工作日日报 1-固定上下班;
|
|
|
- userRoots = userRoots.Distinct().ToList();
|
|
|
+ //userRoots = userRoots.Distinct().ToList();
|
|
|
+ userRoots = userRoots.OrderBy(it => it.base_info.date).ToList();
|
|
|
+
|
|
|
|
|
|
int dk_work_days = userRoots.Count; //应出勤天数
|
|
|
|
|
@@ -854,6 +857,11 @@ namespace OASystem.API.OAMethodLib
|
|
|
List<Ex_Item> ex_reissuecard_Items = new List<Ex_Item>(); //打卡类型 数据
|
|
|
List<Sp_items> acc_sp_items = new List<Sp_items>(); //审批数据
|
|
|
|
|
|
+ int user_probationary_bk_num = 0;
|
|
|
+
|
|
|
+
|
|
|
+ decimal user_probationary_bk_decimal = pm_wsInfo.Floats; //绩效工资为0 则为试用员工
|
|
|
+
|
|
|
#region 迟到 早退 矿工
|
|
|
|
|
|
int user_cd_zt_num = 0; //早退/迟到 次数 10分钟内 2次以内不记处罚 三次及以上50一次
|
|
@@ -999,7 +1007,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
else if (exception == 3) //缺卡
|
|
|
{
|
|
|
-
|
|
|
if (root.exception_infos.Count == 2)
|
|
|
{
|
|
|
day_deduction = dailyWage;
|
|
@@ -1078,7 +1085,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
#endregion
|
|
|
|
|
|
#region 假勤/补卡次数 审批
|
|
@@ -1201,13 +1207,16 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
if (ex_ItemInfos.Count > 0)
|
|
|
{
|
|
|
- ex_Items_jq.Ex_ItemInfo = ex_ItemInfos.OrderBy(it => it.SubTypeId).ThenBy(it => it.Apply_time_dt).ToList();
|
|
|
+ ex_Items_jq.Ex_ItemInfo = ex_ItemInfos.OrderBy(it => it.StartTimeDt).ThenBy(it => it.Apply_time_dt).ToList();
|
|
|
ex_Items.Add(ex_Items_jq);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//打卡补卡
|
|
|
+ //补卡:员工发现自己漏打卡时,需及时提起补卡申请,并说明情况。
|
|
|
+ //试用期员工每月有 2 次补卡机会,超过 2 次不足 5 次的部分,按 10 元/次处罚,5 次及以上的漏卡,按 50 元/次处罚;
|
|
|
+ //正式员工每月 3 次以内的补卡,按 10 元/次处罚,3 次及以上的漏卡,按 50 元/次处罚。
|
|
|
if (reissuecardNum > 0)
|
|
|
{
|
|
|
List<Sp_Detail> sp_buka_details = new List<Sp_Detail>();
|
|
@@ -1234,16 +1243,23 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
decimal bukaPrice = 0.00M;
|
|
|
- if (bukaNum <= 2)
|
|
|
+
|
|
|
+ if (user_probationary_bk_decimal == 0) //计算试用员工补卡次数
|
|
|
{
|
|
|
- bukaPrice = 10.00M;
|
|
|
- }
|
|
|
- else
|
|
|
+ if (bukaNum <= 2) bukaPrice = 0.00M;
|
|
|
+ else if (bukaNum <= 4 && bukaNum > 2) bukaPrice = 10.00M;
|
|
|
+ else bukaPrice = 50.00M;
|
|
|
+
|
|
|
+ }
|
|
|
+ else //计算正式员工补卡次数
|
|
|
{
|
|
|
- bukaPrice = 50.00M;
|
|
|
+ if (bukaNum <= 2) bukaPrice = 10.00M;
|
|
|
+ else bukaPrice = 50.00M;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
var app_data = item.apply_data;
|
|
|
var punch_correction1 = app_data.contents[0].value.punch_correction; //未打卡时间
|
|
|
var punch_correction2 = app_data.contents[1].value;
|
|
@@ -1274,7 +1290,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1427,8 +1442,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
string am_starttime = "08:59";
|
|
|
string am_endtime = "13:01";
|
|
|
|
|
|
-
|
|
|
-
|
|
|
decimal personalkLeave_dailywage_day = ConvertToDecimal( amountPayable / work_days); //日薪 = 事假日薪 *计算方式:日平均工资 = 当月应发工资 /当月应出勤天数。
|
|
|
|
|
|
//半小时单位
|
|
@@ -1452,17 +1465,22 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
decimal leave_halfHour = Convert.ToDecimal(duration) / Convert.ToDecimal(0.5);
|
|
|
typeDeduction = personalkLeave_dailywage_halfhour * leave_halfHour;
|
|
|
- if (duration >= 3 && duration <= 7.5M) //单天请假三小时 && 请假时间在上午 则没有餐补
|
|
|
+ if (duration >= 3 && duration <= 7.5M) //单天请假三小时
|
|
|
{
|
|
|
+ mealDeduction = 10; //餐补扣款
|
|
|
+
|
|
|
+ #region 上午请假超三小时 扣款
|
|
|
//处理开始时间
|
|
|
- if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- //处理结束时间
|
|
|
- //if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) > 0)
|
|
|
- //{
|
|
|
- mealDeduction = 10; //餐补扣款
|
|
|
- //}
|
|
|
- }
|
|
|
+ //if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
+ //{
|
|
|
+ // //处理结束时间
|
|
|
+ // if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) > 0)
|
|
|
+ // {
|
|
|
+ // mealDeduction = 10; //餐补扣款
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ #endregion
|
|
|
+
|
|
|
}
|
|
|
else if (duration > 7.5M) //多天计算
|
|
|
{
|
|
@@ -1510,15 +1528,20 @@ namespace OASystem.API.OAMethodLib
|
|
|
typeDeduction = sickLeave_dailywage_halfhour_deduction *sickLeave_halfHour ;
|
|
|
if (duration >= 3 && duration <= 7.5M) //单天请假三小时 && 请假时间在上午 则没有餐补
|
|
|
{
|
|
|
- //处理开始时间
|
|
|
- if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- //处理结束时间
|
|
|
- if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- mealDeduction = 10; //餐补扣款
|
|
|
- }
|
|
|
- }
|
|
|
+ mealDeduction = 10; //餐补扣款
|
|
|
+
|
|
|
+ #region 上午请假超三小时扣款
|
|
|
+ ////处理开始时间
|
|
|
+ //if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
+ //{
|
|
|
+ // //处理结束时间
|
|
|
+ // if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) < 0)
|
|
|
+ // {
|
|
|
+ // mealDeduction = 10; //餐补扣款
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ #endregion
|
|
|
+
|
|
|
}
|
|
|
else if (duration > 7.5M) //多天计算
|
|
|
{
|
|
@@ -1584,8 +1607,8 @@ namespace OASystem.API.OAMethodLib
|
|
|
public static void CalculateTypeFeeSub(string date_Range_type, string startTime, string endTime, decimal duration, out decimal mealDeduction)
|
|
|
{
|
|
|
mealDeduction = 0;
|
|
|
- string am_starttime = "08:59";
|
|
|
- string am_endtime = "13:01";
|
|
|
+ string am_starttime = "09:00";
|
|
|
+ string am_endtime = "11:59";
|
|
|
|
|
|
if (date_Range_type == "halfday")
|
|
|
{
|
|
@@ -1595,15 +1618,28 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
if (duration >= 3 && duration < 7) //单天请假三小时 && 请假时间在上午 则没有餐补
|
|
|
{
|
|
|
- //处理开始时间
|
|
|
- if (startTime.CompareTo(am_starttime) > 0 && startTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- //处理结束时间
|
|
|
- if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- mealDeduction = 10; //餐补扣款
|
|
|
- }
|
|
|
- }
|
|
|
+ mealDeduction = 10; //餐补扣款
|
|
|
+
|
|
|
+ #region 上午请假超三小时 扣款
|
|
|
+
|
|
|
+ //TimeSpan start_ts = TimeSpan.Parse(startTime); // 10 PM
|
|
|
+ //TimeSpan end_ts = TimeSpan.Parse(endTime); // 2 AM
|
|
|
+
|
|
|
+ //TimeSpan am_start_ts = TimeSpan.Parse(am_starttime); // 10 PM
|
|
|
+ //TimeSpan am_end_ts = TimeSpan.Parse(am_endtime); // 2 AM
|
|
|
+
|
|
|
+ ////处理开始时间
|
|
|
+ //if (start_ts >= am_start_ts && start_ts <= am_end_ts)
|
|
|
+ //{
|
|
|
+ // //处理结束时间
|
|
|
+ // if (end_ts > am_start_ts && end_ts >= am_end_ts)
|
|
|
+ // {
|
|
|
+ // mealDeduction = 10; //餐补扣款
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
}
|
|
|
else if (duration >= 7 && duration <= 7.50M )
|
|
|
{
|
|
@@ -1625,11 +1661,13 @@ namespace OASystem.API.OAMethodLib
|
|
|
int lastHours = (Convert.ToDateTime(endTime) - Convert.ToDateTime("09:00")).Hours;
|
|
|
if (lastHours >= 3)
|
|
|
{
|
|
|
- //处理结束时间
|
|
|
- if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) < 0)
|
|
|
- {
|
|
|
- mealDeduction += 10; //餐补扣款
|
|
|
- }
|
|
|
+ mealDeduction += 10; //餐补扣款
|
|
|
+
|
|
|
+ ////处理结束时间
|
|
|
+ //if (endTime.CompareTo(am_starttime) > 0 && endTime.CompareTo(am_endtime) < 0)
|
|
|
+ //{
|
|
|
+ // mealDeduction += 10; //餐补扣款
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
}
|