leiy пре 1 година
родитељ
комит
2f8cac9b27
1 измењених фајлова са 38 додато и 9 уклоњено
  1. 38 9
      OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

+ 38 - 9
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -121,8 +121,11 @@ namespace OASystem.API.OAMethodLib
 
                     if (item.begtime_dt>= startDt && item.endtime_dt <= endDt)
                     {
-                        TimeSpan ts = item.endtime_dt - item.begtime_dt;
-                        spe_offdays += (ts.Days + 1);
+                        if (item.endtime_dt > startDt)
+                        {
+                            TimeSpan ts = item.endtime_dt - item.begtime_dt;
+                            spe_offdays += (ts.Days + 1);
+                        }
                     }
                 }
             }
@@ -596,7 +599,7 @@ namespace OASystem.API.OAMethodLib
                                         SubTypeId = 4,
                                         SubType = "旷工",
                                         Duration = 0,
-                                        StartTimeDt = Convert.ToDateTime(thisDay),
+                                        StartTimeDt = Convert.ToDateTime(goOutPunchItem.StartDt),
                                         Unit = "分钟",
                                         Reason ="数据来源【外出打卡】"
                                     };
@@ -669,12 +672,12 @@ namespace OASystem.API.OAMethodLib
                                             {
                                                 day_deduction = 0.00M;
                                             }
-                                            beLate_deduction += day_deduction; //迟到扣款 总额
+                                            early_deduction += day_deduction; //迟到扣款 总额
                                         }
                                         else if (timeLong >= 10 && timeLong < 60)
                                         {
                                             day_deduction = 50.00M;
-                                            beLate_deduction += day_deduction; //迟到扣款 总额
+                                            early_deduction += day_deduction; //迟到扣款 总额
                                             beLate_belate_ex.SubTypeId = 1;
                                             beLate_belate_ex.SubType = "早退";
                                         }
@@ -758,9 +761,15 @@ namespace OASystem.API.OAMethodLib
                                         Date_range date_Range = attendance.date_range;
 
                                         //筛选 不在工作日内的假勤申请
-                                        if ( Convert.ToDateTime(date_Range.new_begin_dt) < startDt  || Convert.ToDateTime(date_Range.new_end_dt.ToString("yyyy-MM-dd")) > endDt)
+
+                                        //if (Convert.ToDateTime(date_Range.new_begin_dt) < startDt || Convert.ToDateTime(date_Range.new_end_dt.ToString("yyyy-MM-dd")) > endDt)
+                                        //{
+                                        //    continue;
+                                        //}
+
+                                        if (Convert.ToDateTime(date_Range.new_begin_dt) < startDt || Convert.ToDateTime(date_Range.new_begin_dt) > endDt)
                                         {
-                                            continue;
+                                             continue;
                                         }
 
                                         string leave_starttime = date_Range.new_begin_dt.ToString("HH:mm");
@@ -902,6 +911,8 @@ namespace OASystem.API.OAMethodLib
                                             endTime1 = date_Range_new_end_dt.ToString("HH:mm:ss");
                                         }
 
+
+
                                         LeaveDetails leaveDetails1 = new LeaveDetails()
                                         {
                                             TypeId = leaveType,
@@ -954,6 +965,26 @@ namespace OASystem.API.OAMethodLib
 
                                     int leaveType = leave_item.TypeId;
                                     decimal new_duration = leave_item.New_Duration;
+
+                                    #region 处理跨月天数
+
+                                    if (leave_item.EndDt > endDt)
+                                    {
+                                        DateTime dt1 = Convert.ToDateTime(leave_item.StartDt.ToString("yyyy-MM-dd") + " 12:00");
+                                        DateTime dt2 = Convert.ToDateTime(leave_item.StartDt.ToString("yyyy-MM-dd") + " 09:00");
+                                        TimeSpan ts = Convert.ToDateTime(endDt.ToString("yyyy-MM-dd") + " 18:00") - Convert.ToDateTime(leave_item.StartDt.ToString("yyyy-MM-dd"));
+                                        if (dt2 >= leave_item.StartDt && leave_item.StartDt <= dt1)
+                                        {
+                                            new_duration = ts.Days + 1;
+                                        }
+                                        else
+                                        {
+                                            new_duration = ts.Days + 1.00M + 0.50M;
+                                        }
+                                    }
+
+                                    #endregion
+
                                     //计算餐补 假勤类型扣款
                                     CalculateTypeFee1(leaveDetails,leaveType, leave_item.DtType, leave_item.StartDt, leave_item.EndDt, amountPayable, work_days,
                                         new_duration,out leave_meals, out thisTypeDeduction);
@@ -1639,7 +1670,6 @@ namespace OASystem.API.OAMethodLib
                             if (duration % 1 > 0)
                             {
                                 typeDeduction = (personalkLeave_dailywage_day / 2.00M) * (duration / 0.50M);
-                                
                             }
                             else
                             {
@@ -1832,7 +1862,6 @@ namespace OASystem.API.OAMethodLib
                         }
                     }
                     break;
-
             }
         }