public DataTable ReportExtrasHours(DateTime DateStart, DateTime DateEnd, int IdTurn = 0, int IdDepartament = 0, int IdEmployee = 0) { try { DataTable HoursExtras = ReportsDAL.ReportExtras(DateStart, DateEnd, IdTurn, IdDepartament, IdEmployee); TurnBLL TurnBLL = new TurnBLL(); TimeSpan ExtraEntrada; TimeSpan ExtraSalida; TimeSpan RetardoEntrada; TimeSpan SalidaAntes; //return ReportsDAL.ReportExtras(DateStart, DateEnd); HoursExtras.Columns.Add("TiempoExtra", typeof(TimeSpan)); HoursExtras.Columns.Add("Retardos", typeof(TimeSpan)); foreach (DataRow Horas in HoursExtras.Rows) { TimeSpan HoraEntrada = TimeSpan.Parse(Convert.ToDateTime(Horas["ENTRADA"].ToString()).ToString("HH:mm:ss")); TimeSpan HoraSalida = TimeSpan.Parse(Convert.ToDateTime(Horas["SALIDA"].ToString()).ToString("HH:mm:ss")); ExtraEntrada = TimeSpan.Parse("00:00:00"); ExtraSalida = TimeSpan.Parse("00:00:00"); RetardoEntrada = TimeSpan.Parse("00:00:00"); SalidaAntes = TimeSpan.Parse("00:00:00"); if (Horas["TURNO"].ToString() != "HRS EXTRA") { TurnML TurnMLEmployee = TurnBLL.GetTurnForNaMe(Horas["TURNO"].ToString()); TimeSpan HoraInicial = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.StartEntry.ToString()).ToString("HH:mm:ss")); TimeSpan LimiteSalida = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.LimitDeparture.ToString()).ToString("HH:mm:ss")); TimeSpan LimiteEntrada = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.LimitEntry.ToString()).ToString("HH:mm:ss")); TimeSpan Salida = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.Departuretime.ToString()).ToString("HH:mm:ss")); if (HoraEntrada < HoraInicial) { ExtraEntrada = HoraInicial.Subtract(HoraEntrada); } if (HoraSalida > LimiteSalida) { ExtraSalida = HoraSalida.Subtract(LimiteSalida); } //RETARDOS if (HoraEntrada > LimiteEntrada) { RetardoEntrada = HoraEntrada.Subtract(LimiteEntrada); } if (HoraSalida < Salida && HoraSalida > HoraEntrada) { SalidaAntes = Salida.Subtract(HoraSalida); } else { RetardoEntrada = TimeSpan.Parse("00:00:00"); } Horas["TiempoExtra"] = SumToTime(ExtraEntrada, ExtraSalida); Horas["Retardos"] = SumToTime(RetardoEntrada, SalidaAntes); } else { Horas["TiempoExtra"] = HoraSalida.Subtract(HoraEntrada); Horas["Retardos"] = "00:00:00"; } } return(HoursExtras); } catch (Exception ex) { throw new Exception(String.Format("ReportExtrasHours: {0}", ex.Message)); } }
public DataTable ReportHoursJob(DateTime DateStart, DateTime DateEnd, int IdTurn = 0, int IdDepartament = 0, int IdEmployee = 0) { try { DataTable HoursExtras = ReportsDAL.ReportExtras(DateStart, DateEnd, IdTurn, IdDepartament, IdEmployee); TurnBLL TurnBLL = new TurnBLL(); EmployeeBLL EmployeeBLL = new EmployeeBLL(); TimeSpan ExtraEntrada; TimeSpan ExtraSalida; TimeSpan RetardoEntrada; TimeSpan SalidaAntes; TimeSpan HrsJornadas; TimeSpan HrsExtras; TimeSpan TotalHrsDia; String TotalHrs; HoursExtras.Columns.Add("HORASJORNADA", typeof(TimeSpan)); HoursExtras.Columns.Add("HORASEXTRAS", typeof(TimeSpan)); HoursExtras.Columns.Add("TOTAL_HRS", typeof(TimeSpan)); HoursExtras.Columns.Add("SUELDO_TOTAL", typeof(Decimal)); foreach (DataRow Horas in HoursExtras.Rows) { TimeSpan HoraEntrada = TimeSpan.Parse(Convert.ToDateTime(Horas["ENTRADA"].ToString()).ToString("HH:mm:ss")); TimeSpan HoraSalida = TimeSpan.Parse(Convert.ToDateTime(Horas["SALIDA"].ToString()).ToString("HH:mm:ss")); //int IdEmployee = Int32.Parse(Horas["CVE"].ToString()); ExtraEntrada = TimeSpan.Parse("00:00:00"); ExtraSalida = TimeSpan.Parse("00:00:00"); RetardoEntrada = TimeSpan.Parse("00:00:00"); SalidaAntes = TimeSpan.Parse("00:00:00"); //horasxDias = TimeSpan.Parse("00:00:00"); EmployeeML SalaryEmployeeML = EmployeeBLL.GetColumnsEmployee(Int32.Parse(Horas["CVE"].ToString())); Decimal Salario = Decimal.Parse(SalaryEmployeeML.Salary.ToString()); Decimal horasxDias = Decimal.Parse(SalaryEmployeeML.HoursDay.ToString()); if (Horas["TURNO"].ToString() != "HRS EXTRA") { TurnML TurnMLEmployee = TurnBLL.GetTurnForNaMe(Horas["TURNO"].ToString()); TimeSpan HoraInicial = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.StartEntry.ToString()).ToString("HH:mm:ss")); TimeSpan LimiteSalida = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.LimitDeparture.ToString()).ToString("HH:mm:ss")); TimeSpan LimiteEntrada = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.LimitEntry.ToString()).ToString("HH:mm:ss")); TimeSpan Salida = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.Departuretime.ToString()).ToString("HH:mm:ss")); TimeSpan HorasJornada = TimeSpan.Parse(Convert.ToDateTime(TurnMLEmployee.HoursJornada.ToString()).ToString("HH:mm:ss")); //HORAS EXTRAS if (HoraEntrada < HoraInicial) { ExtraEntrada = HoraInicial.Subtract(HoraEntrada); } if (HoraSalida > LimiteSalida) { ExtraSalida = HoraSalida.Subtract(LimiteSalida); } //HORAS JORNADA NORMAL if (HoraEntrada != TimeSpan.Parse("00:00:00") && HoraSalida != TimeSpan.Parse("00:00:00")) { Horas["HORASJORNADA"] = HorasJornada; HrsJornadas = HorasJornada; } else { Horas["HORASJORNADA"] = TimeSpan.Parse("00:00:00"); HrsJornadas = TimeSpan.Parse("00:00:00"); } Horas["HORASEXTRAS"] = SumToTime(ExtraEntrada, ExtraSalida); HrsExtras = SumToTime(ExtraEntrada, ExtraSalida); } else { Horas["HORASJORNADA"] = TimeSpan.Parse("00:00:00"); Horas["HORASEXTRAS"] = HoraSalida.Subtract(HoraEntrada); HrsJornadas = TimeSpan.Parse("00:00:00"); HrsExtras = HoraSalida.Subtract(HoraEntrada);; } Horas["TOTAL_HRS"] = SumToTime(HrsJornadas, HrsExtras); TotalHrsDia = SumToTime(HrsJornadas, HrsExtras); TotalHrs = Convert.ToDecimal(Convert.ToDecimal(TotalHrsDia.Hours) + (Convert.ToDecimal(TotalHrsDia.Minutes))).ToString("#.00"); if (horasxDias > 0) { Horas["SUELDO_TOTAL"] = (Salario / 15 / horasxDias) * Convert.ToDecimal(TotalHrs); } else { Horas["SUELDO_TOTAL"] = 0; } } return(HoursExtras); } catch (Exception ex) { throw new Exception(String.Format("ReportHoursJob: {0}", ex.Message)); } }