public double Get_Horas_25_x_dia(ro_marcaciones_x_Jornada_Info info) { try { Horas_tmp = 0; horas = 0; minutos = 0; horas = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours); minutos = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Minutes); horas = horas + 8; es_hora = new TimeSpan(horas, minutos, 0); if (((TimeSpan)info.es_Hora_ingreso_jornada1).Hours >= 19)// si ingreso des pues de las siete { es_hora = new TimeSpan(horas, minutos, 0); Horas_tmp = (es_hora - (TimeSpan)info.es_Hora_ingreso_jornada1).TotalHours; } else { Horas_tmp = (es_hora - inicioHora25).TotalHours; } if (Horas_tmp < 0) { Horas_tmp = Horas_tmp * -1; } return(Horas_tmp); } catch (Exception ex) { return(0); } }
public double Get_Horas_50_x_dia(ro_marcaciones_x_Jornada_Info info) { try { Horas_tmp = 0; horas = 0; minutos = 0; if (((TimeSpan)info.es_Hora_ingreso_jornada1).Hours <= 24 && ((TimeSpan)info.es_Hora_salida_jornada1).Hours <= 8) { Horas_tmp = ((TimeSpan)info.es_Hora_salida_jornada1 - inicioHora50).TotalHours; Horas_tmp = Horas_tmp + 1; } else { horas = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours); minutos = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Minutes); horas = horas + 8; if (horas > 24) { horas = horas - 24; } es_hora = new TimeSpan(horas, minutos, 0); Horas_tmp = ((TimeSpan)info.es_Hora_salida_jornada1 - es_hora).TotalHours; } return(Horas_tmp = Horas_tmp - 1); } catch (Exception ex) { return(0); } }
public double Get_Horas_100_x_dia(ro_marcaciones_x_Jornada_Info info) { try { Horas_tmp = 0; horas = 0; minutos = 0; horas = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours); if (horas > 1 && horas < 6) { return(0); } horas = horas + 8; if (horas > 24) { horas = horas - 24; } minutos = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Minutes); es_hora = new TimeSpan(horas, minutos, 0); Horas_tmp = (es_hora - finalHora100).TotalHours; if (((TimeSpan)info.es_Hora_salida_jornada1).TotalHours < finalHora100.TotalHours) { Horas_tmp = horas - ((TimeSpan)info.es_Hora_salida_jornada1).TotalHours; } else { if (((TimeSpan)info.es_Hora_salida_jornada1).TotalHours >= finalHora100.TotalHours) { if (info.es_tot_horasTrabajadas <= 8) { Horas_tmp = 0; } else { Horas_tmp = Horas_tmp + 1; } } else { Horas_tmp = horas - finalHora100.TotalHours; } } if (Horas_tmp < 0) { Horas_tmp = Horas_tmp * -1; } return(Horas_tmp); } catch (Exception ex) { return(0); } }
private double Get_Horas_50_x_dia(ro_marcaciones_x_Jornada_Info info) { try { if (info.pe_cedula == "0803060433") { } Horas_tmp = 0; horas = 0; minutos = 0; horas = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours); if (horas > 1 && horas < 6) { Horas_tmp = info.es_tot_horasTrabajadas - 8; return(Horas_tmp); } if (((TimeSpan)info.es_Hora_ingreso_jornada1).Hours <= 24 && ((TimeSpan)info.es_Hora_salida_jornada1).Hours <= 8) { if (((TimeSpan)info.es_Hora_salida_jornada1).Hours > 0 && ((TimeSpan)info.es_Hora_salida_jornada1).Hours < 6 && ((TimeSpan)info.es_Hora_ingreso_jornada1).Hours >= 15) { Horas_tmp = 0; } else { Horas_tmp = ((TimeSpan)info.es_Hora_salida_jornada1 - inicioHora50).TotalHours; } } else { horas = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours); minutos = Convert.ToInt32(((TimeSpan)(info.es_Hora_ingreso_jornada1)).Minutes); horas = horas + 8; if (horas > 24) { horas = horas - 24; } es_hora = new TimeSpan(horas, minutos, 0); Horas_tmp = ((TimeSpan)info.es_Hora_salida_jornada1 - es_hora).TotalHours; Horas_tmp = Horas_tmp - 1; } return(Horas_tmp); } catch (Exception ex) { return(0); } }
public double Get_Horas_50_x_dia_con_dos_jornadas(ro_marcaciones_x_Jornada_Info info) { try { double Hora_j1 = 0; double Hora_j2 = 0; Horas_tmp = 0; horas = 0; minutos = 0; Hora_j1 = ((TimeSpan)(info.es_Hora_salida_jornada1 - (TimeSpan)info.es_Hora_ingreso_jornada1)).TotalHours; Hora_j2 = ((TimeSpan)(info.es_Hora_salida_jornada2 - (TimeSpan)info.es_Hora_ingreso_jornada2)).TotalHours; Horas_tmp = (Hora_j1 + Hora_j2) - 8; return(Horas_tmp = Horas_tmp - 1); } catch (Exception ex) { return(0); } }
private double Get_Horas_100_x_dia_con_dos_jornadas(ro_marcaciones_x_Jornada_Info info) { try { double totaHoras = 0; if (info.es_tot_horasTrabajadas <= 8) { return(0); } double Hora_j1 = 0; double Hora_j2 = 0; Horas_tmp = 0; double horasI = 0; double horasS = 0; double horas_aux = 0; TimeSpan finalhoras_5 = TimeSpan.FromHours(24); minutos = 0; // primera jornada horasS = ((TimeSpan)(info.es_Hora_salida_jornada1)).Hours; horasI = ((TimeSpan)(info.es_Hora_ingreso_jornada1)).Hours; if (horasI > horasS) { horas_aux = ((TimeSpan)(finalhoras_5 - (TimeSpan)info.es_Hora_ingreso_jornada1)).TotalHours; horas_aux = horas_aux + ((TimeSpan)((TimeSpan)info.es_Hora_salida_jornada1) - TimeSpan.FromDays(0)).TotalHours; Hora_j1 = horas_aux; } else { Hora_j1 = ((TimeSpan)(info.es_Hora_salida_jornada1 - (TimeSpan)info.es_Hora_ingreso_jornada1)).TotalHours; } // segunda jornada horasS = ((TimeSpan)(info.es_Hora_salida_jornada2)).Hours; horasI = ((TimeSpan)(info.es_Hora_ingreso_jornada2)).Hours; if (horasI > horasS) { horas_aux = 0; horas_aux = ((TimeSpan)(finalhoras_5 - (TimeSpan)info.es_Hora_ingreso_jornada2)).TotalHours; horas_aux = horas_aux + ((TimeSpan)((TimeSpan)info.es_Hora_salida_jornada2) - TimeSpan.FromDays(0)).TotalHours; Hora_j2 = horas_aux; } else { Hora_j2 = ((TimeSpan)(info.es_Hora_salida_jornada2 - (TimeSpan)info.es_Hora_ingreso_jornada2)).TotalHours; } totaHoras = Hora_j1 + Hora_j2; if (totaHoras >= 9 && ((TimeSpan)info.es_Hora_salida_jornada2).TotalHours >= inicioHora100.TotalHours && ((TimeSpan)info.es_Hora_ingreso_jornada2).TotalHours >= inicioHora100.TotalHours) { Horas_tmp = ((TimeSpan)info.es_Hora_salida_jornada2).TotalHours; } else { Horas_tmp = (Hora_j1 + Hora_j2) - 8; } return(Horas_tmp); } catch (Exception ex) { return(0); } }
public List <ro_marcaciones_x_Jornada_Info> Get_list_Horas_Extras(List <ro_marcaciones_x_Jornada_Info> lista, double Suel_Actual) { try { info_parametro = bus_parametros_calculo_horas_extras.Get_info(param.IdEmpresa); List <ro_marcaciones_x_Jornada_Info> lista_horas_extras_25_50_100 = new List <ro_marcaciones_x_Jornada_Info>(); // recorro las marcaciones y sumo las horas extras del 25%, 50%, 100% foreach (var item in lista) { Horas_25 = 0; Horas_50 = 0; Horas_100 = 0; horas = 0; minutos = 0; Horas_tmp = 0; es_hora = new TimeSpan(); IdEmpleado = item.IdEmpleado; fecha_pago = Convert.ToDateTime(item.es_fechaRegistro); Nombre = item.pe_NombreCompleto; Cedula = item.pe_cedula; int dia_Semana = (int)Convert.ToDateTime(item.es_fechaRegistro).DayOfWeek; if (((TimeSpan)item.es_Hora_ingreso_jornada2).Hours == 0)// si tiene una sola jornada le resto la hora de almuerzo { if (dia_Semana == 6 || dia_Semana == 0 || item.EsFeriado == "S") { if (item.es_tot_horasTrabajadas >= 1) { if (item.es_tot_horasTrabajadas >= 9) { item.es_tot_horasTrabajadas = item.es_tot_horasTrabajadas - 1; } else { item.es_tot_horasTrabajadas = item.es_tot_horasTrabajadas; } } } else { item.es_tot_horasTrabajadas = item.es_tot_horasTrabajadas - 1; horas = ((TimeSpan)item.es_Hora_ingreso_jornada1).Hours; minutos = ((TimeSpan)item.es_Hora_ingreso_jornada1).Minutes; item.es_Hora_ingreso_jornada1 = new TimeSpan(horas, minutos, 0); } } if (dia_Semana == 6 || dia_Semana == 0 || item.EsFeriado == "S")// sumo las horas trabajadas al 100% correspondiente al sabado y domingo { Horas_100 = item.es_tot_horasTrabajadas; } else { if (item.es_tot_horasTrabajadas >= 0)// si trabajo mas de ocho horas { #region Horas al 100% de 00:00 a 06:00 if (((TimeSpan)item.es_Hora_ingreso_jornada2).Hours == 0)//si trabajo una sola jornada y tiene horas al 100% de 00:00 a 06:00 { if ( (item.es_Hora_ingreso_jornada1 > inicioHora100 && item.es_Hora_ingreso_jornada1 < finalHora100) || (item.es_Hora_salida_jornada1 > inicioHora100 && item.es_Hora_salida_jornada1 < finalHora100) || (item.es_Hora_ingreso_jornada1 > inicioHora100 && item.es_Hora_ingreso_jornada1 > finalHora100 && ((TimeSpan)item.es_Hora_ingreso_jornada1).Hours > 12) ) { if (item.es_tot_horasTrabajadas > 8) { Horas_100 = Get_Horas_100_x_dia(item);// calculo de horas al 100% } } else { } } else//si trabajo dos jornada y tiene horas al 100% de 00:00 a 06:00 { if ( ((TimeSpan)item.es_Hora_salida_jornada2).TotalHours >= inicioHora100.TotalHours && ((TimeSpan)item.es_Hora_ingreso_jornada2).TotalHours >= inicioHora100.TotalHours) { Horas_100 = Get_Horas_100_x_dia_con_dos_jornadas(item);// calculo de horas al 100% } } #endregion #region Horas al 50% de 18:00 a 24:00 if (((TimeSpan)item.es_Hora_ingreso_jornada2).Hours == 0)// tiene horas al 50% de 06:00h a 24:00h en una sola jornada { if ((item.es_Hora_ingreso_jornada1 > inicioHora50 && item.es_Hora_ingreso_jornada1 < finalHora50) || (item.es_Hora_salida_jornada1 > inicioHora50 && item.es_Hora_salida_jornada1 < finalHora50) || (item.es_Hora_ingreso_jornada1 > inicioHora50 && item.es_Hora_ingreso_jornada1 > finalHora50) ) { if (item.es_tot_horasTrabajadas > 8) { Horas_50 = Get_Horas_50_x_dia(item);// calculo de horas al 50% } } } else// si tiene horas al 50% y trabajo dos jornadas { if (((item.es_Hora_ingreso_jornada1 > inicioHora50 && item.es_Hora_ingreso_jornada1 < finalHora50) || (item.es_Hora_salida_jornada1 > inicioHora50 && item.es_Hora_salida_jornada1 < finalHora50) || (item.es_Hora_ingreso_jornada1 > inicioHora50 && item.es_Hora_ingreso_jornada1 > finalHora50)) || ((item.es_Hora_ingreso_jornada2 > inicioHora50 && item.es_Hora_ingreso_jornada2 < finalHora50) || (item.es_Hora_salida_jornada2 > inicioHora50 && item.es_Hora_salida_jornada2 < finalHora50) || (item.es_Hora_ingreso_jornada2 > inicioHora50 && item.es_Hora_ingreso_jornada2 > finalHora50)) ) { if (item.es_tot_horasTrabajadas > 8) { Horas_50 = Get_Horas_50_x_dia_con_dos_jornadas(item);// calculo de horas al 50% con doble jornada } } } #endregion #region Horas al 25% de 19:00 a 06:00 if (((TimeSpan)item.es_Hora_ingreso_jornada2).Hours == 0) // tiene horas al 25% de 19:00h a 06:00h en una sola jornada { // tiene horas al 25% de 19:00h a 06:00h en la jornada 1 if ((item.es_Hora_ingreso_jornada1 >= inicioHora25 && item.es_Hora_ingreso_jornada1 <= finalHora25) || (item.es_Hora_salida_jornada1 >= inicioHora25 && item.es_Hora_salida_jornada1 <= finalHora25) || (item.es_Hora_ingreso_jornada1 >= inicioHora25 && item.es_Hora_ingreso_jornada1 >= finalHora25) || (item.es_Hora_ingreso_jornada1 <= inicioHora25 && item.es_Hora_ingreso_jornada1 >= finalHora25 && ((TimeSpan)item.es_Hora_ingreso_jornada1).Hours > 12) ) { if (((TimeSpan)item.es_Hora_ingreso_jornada1).Hours > 0) { if (item.pe_cedula == "0803134915") { } if (dia_Semana != 6 && dia_Semana != 7) { Horas_25 = Get_Horas_25_x_dia(item); // calculo de horas al 25% } } } } else { if ((item.es_Hora_ingreso_jornada2 >= inicioHora25 && item.es_Hora_ingreso_jornada2 <= finalHora25) || (item.es_Hora_salida_jornada2 >= inicioHora25 && item.es_Hora_salida_jornada2 <= finalHora25) || (item.es_Hora_ingreso_jornada2 >= inicioHora25 && item.es_Hora_ingreso_jornada2 >= finalHora25) || (item.es_Hora_ingreso_jornada2 <= inicioHora25 && item.es_Hora_ingreso_jornada2 >= finalHora25 && ((TimeSpan)item.es_Hora_ingreso_jornada2).Hours > 12) ) { if (((TimeSpan)item.es_Hora_ingreso_jornada2).Hours > 0) { if (dia_Semana != 6 && dia_Semana != 7) { Horas_25 = Get_Horas_25_x_dia(item); // calculo de horas al 25% } } } } #endregion } } if (Horas_50 < 0) { Horas_50 = Horas_50 * -1; } // creo las novedades if (info_parametro.Se_calcula_horas_Extras_al100 == true || info_parametro.Se_calcula_horas_Extras_al50 == true || info_parametro.Se_calcula_horas_Extras_al25 == true) { if (Horas_100 > 0 || Horas_25 > 0 || Horas_50 > 0)// si es que tiene horas al 100% { ro_marcaciones_x_Jornada_Info info_horas_extras = new ro_marcaciones_x_Jornada_Info(); info_horas_extras.IdEmpresa = param.IdEmpresa; info_horas_extras.IdEmpleado = IdEmpleado; info_horas_extras.pe_NombreCompleto = Nombre; info_horas_extras.em_cedula = Cedula; info_horas_extras.secuencia = 1; info_horas_extras.IdRubro = "9"; info_horas_extras.FechaPago = fecha_pago; info_horas_extras.Sueldo_Actual = Suel_Actual; info_horas_extras.Calculo_Horas_extras_Sobre = item.grupo.Calculo_Horas_extras_Sobre; // HORAS SOBRETIEMPO 100 if (Horas_100 > 0) { if (item.grupo.Calculo_Horas_extras_Sobre > 0) { info_horas_extras.Valor_100 = Math.Round(Horas_100 * ((Suel_Actual / item.grupo.Calculo_Horas_extras_Sobre) * 2), 2); } else { info_horas_extras.Valor_100 = Math.Round(Horas_100 * ((Suel_Actual / 160) * 2), 2); } } // HORAS SOBRETIEMPO 50 if (Horas_50 > 0) { if (item.grupo.Calculo_Horas_extras_Sobre > 0) { info_horas_extras.Valor_50 = Math.Round(Horas_50 * ((Suel_Actual / item.grupo.Calculo_Horas_extras_Sobre) * 1.5), 2); } else { info_horas_extras.Valor_50 = Math.Round(Horas_50 * ((Suel_Actual / 160) * 0.5), 2); } } if (Horas_25 > 0) { // HORAS SOBRETIEMPO 25 if (item.grupo.Calculo_Horas_extras_Sobre > 0) { info_horas_extras.Valor_25 = Math.Round(Horas_25 * ((Suel_Actual / item.grupo.Calculo_Horas_extras_Sobre) * 0.25), 2); } else { info_horas_extras.Valor_25 = Math.Round(Horas_25 * ((Suel_Actual / 160) * 0.25), 2); } } if (item.es_tot_horasTrabajadas > 0) { info_horas_extras.Horas_100 = Horas_100; info_horas_extras.Horas_50 = Horas_50; info_horas_extras.Horas_25 = Horas_25; } else { if (dia_Semana == 6 || dia_Semana == 0 || item.EsFeriado == "S") { info_horas_extras.Horas_100 = Horas_100; info_horas_extras.Horas_50 = Horas_50; info_horas_extras.Horas_25 = Horas_25; } else { info_horas_extras.Horas_100 = 0; info_horas_extras.Horas_50 = 0; info_horas_extras.Horas_25 = 0; } } info_horas_extras.Observacion = "Horas extras correspondiente al " + fecha_pago.Month.ToString().PadLeft(2, '0') + "/" + fecha_pago.Year; info_horas_extras.es_Hora_ingreso_jornada1 = item.es_Hora_ingreso_jornada1; info_horas_extras.es_Hora_ingreso_jornada2 = item.es_Hora_ingreso_jornada2; info_horas_extras.es_Hora_salida_jornada1 = item.es_Hora_salida_jornada1; info_horas_extras.es_Hora_salida_jornada2 = item.es_Hora_salida_jornada2; if (item.es_Fech_remplazo != null) { info_horas_extras.es_Fech_remplazo = Convert.ToDateTime(item.es_Fech_remplazo); } info_horas_extras.es_tot_horasTrabajadas = item.es_tot_horasTrabajadas; info_horas_extras.cargo = item.cargo; info_horas_extras.departamento = item.departamento; lista_horas_extras_25_50_100.Add(info_horas_extras); } } } return(lista_horas_extras_25_50_100); } catch (Exception) { return(new List <ro_marcaciones_x_Jornada_Info>()); } }