|
@@ -892,13 +892,34 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
decimal cckk = 0.00M;
|
|
|
|
|
|
- int days = (int)(date_Range.new_end_dt - date_Range.new_begin_dt).TotalDays;
|
|
|
+ int days = (int)(Convert.ToDateTime( date_Range.new_end_dt.ToString("yyyy-MM-dd")) -
|
|
|
+ Convert.ToDateTime(date_Range.new_begin_dt.ToString("yyyy-MM-dd"))).TotalDays;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
for (int i = 0; i <= days; i++)
|
|
|
{
|
|
|
DateTime thisDt = date_Range.new_begin_dt.AddDays(i);
|
|
|
- if (thisDt > date_Range.new_end_dt)
|
|
|
+
|
|
|
+
|
|
|
+ if (i == 0)
|
|
|
{
|
|
|
- continue;
|
|
|
+ string ccStartTime = thisDt.ToString("HH:mm:ss");
|
|
|
+ if (!IsWorkTime(ccStartTime))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (i == days - 1)
|
|
|
+ {
|
|
|
+ string ccStartTime = date_Range.new_end_dt.ToString("HH:mm:ss");
|
|
|
+ if (!IsWorkTime(ccStartTime))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Sys_Calendar sys_Calendar = new Sys_Calendar();
|
|
@@ -911,7 +932,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
meal_deduction += cckk;
|
|
|
|
|
|
|
|
@@ -1040,6 +1061,28 @@ namespace OASystem.API.OAMethodLib
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public static bool IsWorkTime(string timeStr)
|
|
|
+ {
|
|
|
+ string thisDayWorkStartTime = "09:00:00";
|
|
|
+ string thisDayWorkEndTime = "18:00:00";
|
|
|
+
|
|
|
+ TimeSpan dspWorkingDayAM = DateTime.Parse(thisDayWorkStartTime).TimeOfDay;
|
|
|
+ TimeSpan dspWorkingDayPM = DateTime.Parse(thisDayWorkEndTime).TimeOfDay;
|
|
|
+
|
|
|
+ DateTime dt = Convert.ToDateTime(timeStr);
|
|
|
+ TimeSpan dspNow = dt.TimeOfDay;
|
|
|
+ if (dspNow >= dspWorkingDayAM && dspNow <= dspWorkingDayPM)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -1120,7 +1163,34 @@ namespace OASystem.API.OAMethodLib
|
|
|
switch (leaveType)
|
|
|
{
|
|
|
case 1:
|
|
|
- CalculateTypeFeeSub(leaveDetails, date_Range_type, startTime, endTime, duration, out mealDeduction);
|
|
|
+
|
|
|
+ if (date_Range_type == "halfday")
|
|
|
+ {
|
|
|
+ if (duration >= 0.5M && duration <= 1M)
|
|
|
+ {
|
|
|
+ var njItem = leaveDetails.Where(it => it.StartDt.ToString("yyyy-MM-dd") == startTime.ToString("yyyy-MM-dd") &&
|
|
|
+ it.EndDt.ToString("yyyy-MM-dd") == endTime.ToString("yyyy-MM-dd")).ToList();
|
|
|
+ if (njItem.Count > 1)
|
|
|
+ {
|
|
|
+ if (njItem[0].StartDt == startTime)
|
|
|
+ {
|
|
|
+ mealDeduction = 10;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mealDeduction = 10;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mealDeduction = 10 * duration;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
case 2:
|
|
|
|