|
@@ -539,11 +539,11 @@ namespace OASystem.API.OAMethodLib
|
|
Date_range date_Range = attendance.date_range;
|
|
Date_range date_Range = attendance.date_range;
|
|
|
|
|
|
//筛选 不在工作日内的假勤申请
|
|
//筛选 不在工作日内的假勤申请
|
|
- if (startDt >= date_Range.new_begin_dt || 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;
|
|
continue;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
string leave_starttime = date_Range.new_begin_dt.ToString("HH:mm");
|
|
string leave_starttime = date_Range.new_begin_dt.ToString("HH:mm");
|
|
string leave_endtime = date_Range.new_end_dt.ToString("HH:mm");
|
|
string leave_endtime = date_Range.new_end_dt.ToString("HH:mm");
|
|
|
|
|
|
@@ -581,62 +581,96 @@ namespace OASystem.API.OAMethodLib
|
|
{
|
|
{
|
|
if (slice_info != null)
|
|
if (slice_info != null)
|
|
{
|
|
{
|
|
- if (slice_info.day_items.Count > 1)
|
|
|
|
|
|
+ if (slice_info.day_items != null)
|
|
{
|
|
{
|
|
-
|
|
|
|
- date_Range_new_begin_dt = slice_info.day_items[0].daytimeDt;
|
|
|
|
- date_Range_new_end_dt = slice_info.day_items[slice_info.day_items.Count - 1].daytimeDt;
|
|
|
|
-
|
|
|
|
- decimal startTime11 = slice_info.day_items[0].duration;
|
|
|
|
- decimal startTime11_11 = startTime11 / 3600.00M;
|
|
|
|
- decimal endTime11 = slice_info.day_items[slice_info.day_items.Count - 1].duration;
|
|
|
|
- decimal endTime11_11 = endTime11 / 3600.00M;
|
|
|
|
- if (startTime11_11 == 3.00M )
|
|
|
|
- {
|
|
|
|
- startTime1 = "09:00";
|
|
|
|
- }else if (startTime11_11 == 4.50M)
|
|
|
|
|
|
+ if (slice_info.day_items.Count > 1)
|
|
{
|
|
{
|
|
- startTime1 = "12:00";
|
|
|
|
- }
|
|
|
|
- else if (startTime11_11 == 7.50M)
|
|
|
|
- {
|
|
|
|
- startTime1 = "09:00";
|
|
|
|
- }
|
|
|
|
|
|
|
|
- if (endTime11_11 == 3.00M)
|
|
|
|
- {
|
|
|
|
- endTime1 = "12:00";
|
|
|
|
- }
|
|
|
|
- else if (endTime11_11 == 4.50M)
|
|
|
|
- {
|
|
|
|
- endTime1 = "18:00";
|
|
|
|
|
|
+ date_Range_new_begin_dt = slice_info.day_items[0].daytimeDt;
|
|
|
|
+ date_Range_new_end_dt = slice_info.day_items[slice_info.day_items.Count - 1].daytimeDt;
|
|
|
|
+
|
|
|
|
+ decimal startTime11 = slice_info.day_items[0].duration;
|
|
|
|
+ decimal startTime11_11 = startTime11 / 3600.00M;
|
|
|
|
+ decimal endTime11 = slice_info.day_items[slice_info.day_items.Count - 1].duration;
|
|
|
|
+ decimal endTime11_11 = endTime11 / 3600.00M;
|
|
|
|
+ if (startTime11_11 == 3.00M)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ }
|
|
|
|
+ else if (startTime11_11 == 4.50M)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "12:00";
|
|
|
|
+ }
|
|
|
|
+ else if (startTime11_11 == 7.50M)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (endTime11_11 == 3.00M)
|
|
|
|
+ {
|
|
|
|
+ endTime1 = "12:00";
|
|
|
|
+ }
|
|
|
|
+ else if (endTime11_11 == 4.50M)
|
|
|
|
+ {
|
|
|
|
+ endTime1 = "18:00";
|
|
|
|
+ }
|
|
|
|
+ else if (endTime11_11 == 7.50M)
|
|
|
|
+ {
|
|
|
|
+ endTime1 = "18:00";
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
- else if (endTime11_11 == 7.50M)
|
|
|
|
|
|
+ else
|
|
{
|
|
{
|
|
- endTime1 = "18:00";
|
|
|
|
|
|
+ decimal qjLongTime = slice_info.duration / 3600.00M;
|
|
|
|
+ if (qjLongTime == 4.50M)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "12:00";
|
|
|
|
+ endTime1 = "18:00:00";
|
|
|
|
+ }
|
|
|
|
+ else if (qjLongTime == 3.00M)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ endTime1 = "12:00:00";
|
|
|
|
+ }
|
|
|
|
+ else if (qjLongTime % 7.50M == 0)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ endTime1 = "18:00:00";
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- decimal qjLongTime = slice_info.duration / 3600.00M;
|
|
|
|
- if (qjLongTime == 4.50M)
|
|
|
|
- {
|
|
|
|
- startTime1 = "12:00";
|
|
|
|
- endTime1 = "18:00:00";
|
|
|
|
- }
|
|
|
|
- else if (qjLongTime == 3.00M)
|
|
|
|
|
|
+ if (new_duration % 1 == 0)
|
|
{
|
|
{
|
|
startTime1 = "09:00";
|
|
startTime1 = "09:00";
|
|
- endTime1 = "12:00:00";
|
|
|
|
|
|
+ endTime1 = "18:00";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ if (new_duration % 1 == 0)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ endTime1 = "18:00";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- startTime1 = date_Range_new_begin_dt.ToString("HH:mm:ss");
|
|
|
|
- endTime1 = date_Range_new_end_dt.ToString("HH:mm:ss");
|
|
|
|
|
|
+ if (new_duration % 1 == 0)
|
|
|
|
+ {
|
|
|
|
+ startTime1 = "09:00";
|
|
|
|
+ endTime1 = "18:00";
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ startTime1 = date_Range_new_begin_dt.ToString("HH:mm:ss");
|
|
|
|
+ endTime1 = date_Range_new_end_dt.ToString("HH:mm:ss");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (date_Range.type == "hour")
|
|
else if (date_Range.type == "hour")
|
|
@@ -1327,7 +1361,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
if (date_Range_type == "halfday")
|
|
if (date_Range_type == "halfday")
|
|
{
|
|
{
|
|
- mealDeduction = 10.00M * Math.Ceiling(duration); //餐补扣款
|
|
|
|
|
|
+ mealDeduction = 10.00M * Math.Floor(duration); //餐补扣款
|
|
if (duration % 1 == 0) //整天
|
|
if (duration % 1 == 0) //整天
|
|
{
|
|
{
|
|
typeDeduction = ConvertToDecimal(personalkLeave_dailywage_day * duration);
|
|
typeDeduction = ConvertToDecimal(personalkLeave_dailywage_day * duration);
|
|
@@ -1344,13 +1378,22 @@ namespace OASystem.API.OAMethodLib
|
|
if (sjDetails != null)
|
|
if (sjDetails != null)
|
|
{
|
|
{
|
|
Slice_info sj_slice_Info = sjDetails.SliceInfo;
|
|
Slice_info sj_slice_Info = sjDetails.SliceInfo;
|
|
- decimal sjLongTime = (sj_slice_Info.duration / 3600.00M);
|
|
|
|
- typeDeduction = (personalkLeave_dailywage_day / 7.50M) * sjLongTime;
|
|
|
|
|
|
+ if (sj_slice_Info != null)
|
|
|
|
+ {
|
|
|
|
+ decimal sjLongTime = (sj_slice_Info.duration / 3600.00M);
|
|
|
|
+ typeDeduction = (personalkLeave_dailywage_day / 7.50M) * sjLongTime;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LeaveDetails sjDetailsMeal = leaveDetails.Where(it => it.EndDt == startTime ).FirstOrDefault();
|
|
|
|
+ if (sjDetailsMeal == null)
|
|
|
|
+ {
|
|
|
|
+ mealDeduction += 10.00M;
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
-
|
|
|
|
typeDeduction = personalkLeave_dailywage_day* sj_wholeDay;
|
|
typeDeduction = personalkLeave_dailywage_day* sj_wholeDay;
|
|
}
|
|
}
|
|
typeDeduction = ConvertToDecimal(typeDeduction);
|
|
typeDeduction = ConvertToDecimal(typeDeduction);
|
|
@@ -1586,8 +1629,6 @@ namespace OASystem.API.OAMethodLib
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|