// получаем часы переработок - возвращается 0 - если у человека 0 часов переработок. 1 - если у человека есть ненулевое количество переработок, -1 - нет такого сотрудника public int insertOvertimeHoursToDB(string employee_id, string start_period, string begda, string endda, int count_days, int month, int year, string accountant_id, int period_id) { SQLDB db = new SQLDB(); Date dt = new Date(); int day = 1; EmployeeList emp_list = new EmployeeList(); List<TimekeeperHours> current = emp_list.getEmployeesTimekeeperHours(employee_id, start_period, begda, endda); List<HRHours> hr_current = emp_list.getEmployeesHRHours(employee_id, start_period, begda, endda); List<Schedule> schedule = emp_list.getEmployeesSchedule(employee_id, start_period, begda, endda); List<ScheduleDeflection> dschedule = emp_list.getEmployeesScheduleDeflection(employee_id, start_period, begda, endda); decimal overhours_count = db.getOverhoursSum(employee_id, start_period, begda, endda); bool t13 = false; bool diversity = false; if (overhours_count == 0) { db.insertOverhoursToManagement(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), 0, accountant_id, period_id); return 0; } if (overhours_count <= 8) t13 = true; else diversity = true; // если кол-во переработок больше 8 часов, то используем эти переменные decimal m111 = 0; // тип переработок M111 - сумма первых 2 часов переработок, кроме выходных decimal m122 = 0; // тип переработок M122 - сумма оставшихся часов и переработки в выходные и праздничные дни decimal m210 = 0; // тип переработок M210 - сумма только ночных переработок foreach (Schedule sch in schedule) { // если у нас день не совпадает с днем в графике, заполняю пустым квадратом int d = Convert.ToInt32(sch.DayPeriod); while (d != day) { if (day == count_days) break; day++; } HRHours hrh = hr_current.Find(delegate(HRHours h) { return h.Day == day.ToString(); }); decimal hr_sum = 0; if (hrh != null) hr_sum = hrh.DayOverHours + hrh.NightOverHours; ScheduleDeflection sd = dschedule.Find(delegate(ScheduleDeflection dsch) { return Convert.ToInt32(dsch.DayPeriod) == day; }); if (sd == null) { // если у нас выходной то считаем все переработки за этот день if (((sch.DaySchedule == "FREE") && (Convert.ToInt32(sch.TimeHours) == 0)) || (sch.DayScheduleVar == "F")) { if (hrh != null) { db.insertOverhoursToManagement(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); if (t13) db.insertOverhoursToT13(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); } if ((diversity) && (hrh != null)) m122 += hr_sum; } else // если рабочий день { if (hrh != null) { db.insertOverhoursToManagement(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); if (t13) db.insertOverhoursToT13(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); } if ((diversity) && (hrh != null)) { if (hr_sum <= 2) m111 += hr_sum; else { m111 += 2; m122 += (hr_sum - 2); } if (hrh.NightOverHours != 0) m210 += hrh.NightOverHours; } } } else // !!!!!!!!!!!! Посмотреть внимательно, когда будет действовать блок закачки переработок в SAP !!!!!!!!! { // смотрим отклонение Отзыв из отпуска. Если в этот день есть переработка - пишем ее if (sd.AbsAttType.Equals("2000") || sd.AbsAttType.Equals("2001")) { // если у нас выходной то считаем все переработки за этот день if (((sch.DaySchedule == "FREE") && (Convert.ToInt32(sch.TimeHours) == 0)) || (sch.DayScheduleVar == "F")) { if (hrh != null) { db.insertOverhoursToManagement(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); if (t13) db.insertOverhoursToT13(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); } if ((diversity) && (hrh != null)) m122 += hr_sum; } else // если рабочий день { if (hrh != null) { db.insertOverhoursToManagement(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); if (t13) db.insertOverhoursToT13(employee_id, start_period, begda, endda, dt.getDateToSQL(day, month, year), hr_sum, accountant_id, period_id); } if ((diversity) && (hrh != null)) { if (hr_sum <= 2) m111 += hr_sum; else { m111 += 2; m122 += (hr_sum - 2); } if (hrh.NightOverHours != 0) m210 += hrh.NightOverHours; } } } } day++; } if (m111 > 0) db.insertOverhoursDiversity(employee_id, start_period, begda, endda, dt.getDateFromSAPToSQL(endda), m111, "M111", accountant_id, period_id); if (m122 > 0) db.insertOverhoursDiversity(employee_id, start_period, begda, endda, dt.getDateFromSAPToSQL(endda), m122, "M122", accountant_id, period_id); if (m210 > 0) db.insertOverhoursDiversity(employee_id, start_period, begda, endda, dt.getDateFromSAPToSQL(endda), m210, "M210", accountant_id, period_id); return 1; }