public Boolean GuardarBD(ro_Nomina_X_Horas_Extras_Info info, ref string msg) { try { Boolean valorRetornar = false; //MODIFICA DETALLE if (oData.GetExiste(info, ref mensaje)) { info.UsuarioModifica = param.IdUsuario; info.FechaModifica = param.Fecha_Transac; valorRetornar = oData.ModificarBD(info, ref mensaje); } else {//GRABA DETALLE info.UsuarioIngresa = param.IdUsuario; info.FechaIngresa = param.Fecha_Transac; valorRetornar = oData.GuardarBD(info, ref mensaje); } return(valorRetornar); } catch (Exception ex) { Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message); throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "GuardarBD", ex.Message), ex) { EntityType = typeof(ro_Nomina_X_Horas_Extras_Bus) }; } }
public Boolean GuardarBD(ro_Nomina_X_Horas_Extras_Info info, ref string msg) { try { using (EntitiesRoles db = new EntitiesRoles()) { ro_nomina_x_horas_extras item = new ro_nomina_x_horas_extras(); item.IdEmpresa = info.IdEmpresa; item.IdEmpleado = info.IdEmpleado; item.IdNominaTipo = info.IdNominaTipo; item.IdNominaTipoLiqui = info.IdNominaTipoLiqui; item.IdPeriodo = info.IdPeriodo; item.IdCalendario = info.IdCalendario; item.IdTurno = Convert.ToInt32(info.IdTurno); item.IdHorario = info.IdHorario; item.FechaRegistro = info.FechaRegistro; item.time_entrada1 = info.time_entrada1; item.time_entrada2 = info.time_entrada2; item.time_salida1 = info.time_salida1; item.time_salida2 = info.time_salida2; item.hora_extra25 = info.hora_extra25; item.hora_extra50 = info.hora_extra50; item.hora_extra100 = info.hora_extra100; item.hora_atraso = info.hora_atraso; item.hora_temprano = info.hora_temprano; item.hora_trabajada = info.hora_trabajada; item.FechaIngresa = info.FechaIngresa; item.UsuarioIngresa = info.UsuarioIngresa; item.FechaModifica = info.FechaModifica; item.UsuarioModifica = info.UsuarioModifica; item.es_HorasExtrasAutorizadas = info.es_HorasExtrasAutorizadas; db.ro_nomina_x_horas_extras.Add(item); db.SaveChanges(); } return(true); } catch (Exception ex) { string array = ToString(); tb_sis_Log_Error_Vzen_Data oDataLog = new tb_sis_Log_Error_Vzen_Data(); tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now); oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje); mensaje = ex.InnerException + " " + ex.Message; throw new Exception(ex.InnerException.ToString()); } }
public void set(ro_Nomina_X_Horas_Extras_Info info) { try { cmbnomina.EditValue = info.IdNominaTipo; cmbnominaTipo.EditValue = info.IdNominaTipoLiqui; cmbPeriodos.EditValue = info.IdPeriodo; lista_nomina_he = new BindingList <ro_Nomina_X_Horas_Extras_Info>(bus_nomina_he.Get_Info_Nomina_X_Horas_Extras(param.IdEmpresa, Convert.ToInt32(cmbnomina.EditValue), Convert.ToInt32(cmbnominaTipo.EditValue), Convert.ToInt32(cmbPeriodos.EditValue), ref msg)); gridControl_nominahe.DataSource = lista_nomina_he; } catch (Exception ex) { Log_Error_bus.Log_Error(ex.ToString()); MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public ro_Nomina_X_Horas_Extras_Info Get_Info_Nomina_X_Horas_Extras(int idEmpresa, decimal idEmpleado, int idNominaTipo, int idNominaTipoLiqui, int idPeriodo, ref string msg) { try { ro_Nomina_X_Horas_Extras_Info item = new ro_Nomina_X_Horas_Extras_Info(); using (EntitiesRoles db = new EntitiesRoles()) { var datos = (from a in db.vwRo_Nomina_X_Horas_Extras_Totales where a.IdEmpresa == idEmpresa && a.IdEmpleado == idEmpleado && a.IdNominaTipo == idNominaTipo && a.IdNominaTipoLiqui == idNominaTipoLiqui && a.IdPeriodo == idPeriodo select a); foreach (var info in datos) { item.IdEmpresa = info.IdEmpresa; item.IdEmpleado = info.IdEmpleado; item.IdNominaTipo = info.IdNominaTipo; item.IdNominaTipoLiqui = info.IdNominaTipoLiqui; item.IdPeriodo = info.IdPeriodo; item.hora_extra25 = Convert.ToDouble(info.hora_extra25); item.hora_extra50 = Convert.ToDouble(info.hora_extra50); item.hora_extra100 = Convert.ToDouble(info.hora_extra100); //item.es_HorasExtrasAutorizadas = info.es_HorasExtrasAutorizadas; } } return(item); } catch (Exception ex) { string array = ToString(); tb_sis_Log_Error_Vzen_Data oDataLog = new tb_sis_Log_Error_Vzen_Data(); tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now); oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje); mensaje = ex.InnerException + " " + ex.Message; throw new Exception(ex.InnerException.ToString()); } }
private void ucGe_Menu_event_btnconsultar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { info = (ro_Nomina_X_Horas_Extras_Info)gvw_efectividad.GetFocusedRow(); if (info == null) { MessageBox.Show(param.Get_Mensaje_sys(enum_Mensajes_sys.Seleccione_un_registro), param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } frmRo_Nomina_horas_extras_mant frm = new frmRo_Nomina_horas_extras_mant(); frm.Accion = Cl_Enumeradores.eTipo_action.consultar; frm.MdiParent = this.MdiParent; frm.set(info); frm.Show(); } catch (Exception ex) { Log_Error_bus.Log_Error(ex.ToString()); MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public List <ro_Nomina_X_Horas_Extras_Info> Get_List_Nomina_X_Horas_Extras(int idEmpresa) { try { List <ro_Nomina_X_Horas_Extras_Info> oListado = new List <ro_Nomina_X_Horas_Extras_Info>(); using (EntitiesRoles db = new EntitiesRoles()) { var datos = (from a in db.vwRo_nomina_x_horas_extras where a.IdEmpresa == idEmpresa select a); foreach (var info in datos) { ro_Nomina_X_Horas_Extras_Info item = new ro_Nomina_X_Horas_Extras_Info(); item.IdEmpresa = info.IdEmpresa; item.IdNominaTipo = info.IdNominaTipo; item.IdNominaTipoLiqui = info.IdNominaTipoLiqui; item.IdPeriodo = info.IdPeriodo; item.Periodo = info.Periodo; item.DescripcionProcesoNomina = info.DescripcionProcesoNomina; item.Descripcion = info.Descripcion; oListado.Add(item); } } return(oListado); } catch (Exception ex) { string array = ToString(); tb_sis_Log_Error_Vzen_Data oDataLog = new tb_sis_Log_Error_Vzen_Data(); tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now); oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje); mensaje = ex.InnerException + " " + ex.Message; throw new Exception(ex.InnerException.ToString()); } }
public Boolean GetExiste(ro_Nomina_X_Horas_Extras_Info info, ref string msg) { try { Boolean valorRetornar = false; using (EntitiesRoles db = new EntitiesRoles()) { int cont = (from a in db.ro_nomina_x_horas_extras where a.IdEmpresa == info.IdEmpresa && a.IdEmpleado == info.IdEmpleado && a.IdNominaTipo == info.IdNominaTipo && a.IdNominaTipoLiqui == info.IdNominaTipoLiqui && a.IdPeriodo == info.IdPeriodo && a.IdCalendario == info.IdCalendario && a.IdTurno == info.IdTurno select a).Count(); if (cont > 0) { valorRetornar = true; } else { valorRetornar = false; } } return(valorRetornar); } catch (Exception ex) { string array = ToString(); tb_sis_Log_Error_Vzen_Data oDataLog = new tb_sis_Log_Error_Vzen_Data(); tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now); oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje); mensaje = ex.InnerException + " " + ex.Message; throw new Exception(ex.InnerException.ToString()); } }
private Boolean Agregar_fila_copiada(string data) { try { if (string.IsNullOrWhiteSpace(data)) { return(false); } string[] rowData = data.Split(new char[] { '\r', '\x09' }); decimal IdEmpleado = 0; ro_Nomina_X_Horas_Extras_Info newRow = new ro_Nomina_X_Horas_Extras_Info(); if (rowData.Count() >= 3) //return false; { int hora = 0; int minuto = 0; string es_hora = ""; string cedula = Convert.ToString(rowData[0]); string empleado = Convert.ToString(rowData[1]); DateTime fecha = Convert.ToDateTime(rowData[2]); double horas25 = Convert.ToDouble(rowData[7]); double horas50 = Convert.ToDouble(rowData[8]); double horas100 = Convert.ToDouble(rowData[9]); double TotaHoras = Convert.ToDouble(rowData[10]); es_hora = Convert.ToString(rowData[3]);// primera entrada try { IdEmpleado = lista_empleado.Where(v => v.pe_cedulaRuc == cedula).FirstOrDefault().IdEmpleado; } catch (Exception) { } if (es_hora != "") { if (es_hora.Length > 0) { hora = Convert.ToInt32(es_hora.Substring(0, 2)); minuto = Convert.ToInt32(es_hora.Substring(3, 2)); newRow.time_entrada1 = new TimeSpan(hora, minuto, 0); } } es_hora = Convert.ToString(rowData[4]);// primera salia if (es_hora != "") { if (es_hora.Length > 0) { hora = Convert.ToInt32(es_hora.Substring(0, 2)); minuto = Convert.ToInt32(es_hora.Substring(3, 2)); newRow.time_salida1 = new TimeSpan(hora, minuto, 0); } } es_hora = Convert.ToString(rowData[5]);// segunda entrada if (es_hora != "") { if (es_hora.Length > 0) { hora = Convert.ToInt32(es_hora.Substring(0, 2)); minuto = Convert.ToInt32(es_hora.Substring(3, 2)); newRow.time_entrada2 = new TimeSpan(hora, minuto, 0); } } es_hora = Convert.ToString(rowData[6]);// segunda salida if (es_hora != "") { if (es_hora.Length > 0) { hora = Convert.ToInt32(es_hora.Substring(0, 2)); minuto = Convert.ToInt32(es_hora.Substring(3, 2)); newRow.time_salida2 = new TimeSpan(hora, minuto, 0); } } newRow.CedulaRuc = cedula; newRow.NombreCompleto = empleado; newRow.hora_extra25 = horas25; newRow.hora_extra50 = horas50; newRow.hora_extra100 = horas100; newRow.hora_trabajada = TotaHoras; newRow.FechaRegistro = fecha; newRow.IdEmpleado = IdEmpleado; newRow.IdEmpresa = param.IdEmpresa; newRow.IdTurno = 1; newRow.IdCalendario = Convert.ToInt32(fecha.Year.ToString() + fecha.Month.ToString().PadLeft(2, '0') + fecha.Day.ToString().PadLeft(2, '0')); newRow.FechaIngresa = DateTime.Now.Date; if (lista_nomina_he.Where(v => v.IdEmpleado == newRow.IdEmpleado && v.IdCalendario == newRow.IdCalendario).Count() == 0) { lista_nomina_he.Add(newRow); } gridControl_nominahe.DataSource = lista_nomina_he; } return(true); } catch (Exception ex) { MessageBox.Show(ex.Message, param.Nombre_sistema, MessageBoxButtons.OK, MessageBoxIcon.Error); Log_Error_bus.Log_Error(ex.ToString()); return(false); } }
public List <ro_Nomina_X_Horas_Extras_Info> Get_List_Nomina_X_Horas_Extras(int idEmpresa, int idNominaTipo, int idNominaTipoLiqui, int idPeriodo, ref string msg) { try { List <ro_Nomina_X_Horas_Extras_Info> oListado = new List <ro_Nomina_X_Horas_Extras_Info>(); using (EntitiesRoles db = new EntitiesRoles()) { var datos = (from a in db.vwRo_HorasExtrasXEmpleado where a.IdEmpresa == idEmpresa && a.IdNominaTipo == idNominaTipo && a.IdNominaTipoLiqui == idNominaTipoLiqui && a.IdPeriodo == idPeriodo orderby a.Apellido ascending select a); foreach (var info in datos) { ro_Nomina_X_Horas_Extras_Info item = new ro_Nomina_X_Horas_Extras_Info(); item.IdEmpresa = info.IdEmpresa; item.IdEmpleado = info.IdEmpleado; item.IdNominaTipo = info.IdNominaTipo; item.IdNominaTipoLiqui = info.IdNominaTipoLiqui; item.IdPeriodo = info.IdPeriodo; item.IdCalendario = info.IdCalendario; item.IdTurno = info.IdTurno; item.IdHorario = info.IdHorario; item.FechaRegistro = info.FechaRegistro; item.time_entrada1 = info.time_entrada1; item.time_entrada2 = info.time_entrada2; item.time_salida1 = info.time_salida1; item.time_salida2 = info.time_salida2; item.hora_extra25 = info.hora_extra25; item.hora_extra50 = info.hora_extra50; item.hora_extra100 = info.hora_extra100; item.hora_atraso = info.hora_atraso; item.hora_temprano = info.hora_temprano; item.hora_trabajada = info.hora_trabajada; //VISTA item.NombreCompleto = info.Apellido + " " + info.Nombre; item.CedulaRuc = info.CedulaRuc; item.Cargo = info.cargo; item.Departamento = info.departamento; item.DescripcionHorario = info.DescripcionHorario; item.es_HorasExtrasAutorizadas = info.es_HorasExtrasAutorizadas; // item.DiaSemana = info.FechaRegistro.DayOfWeek.ToString(); var culture = new System.Globalization.CultureInfo("es-ES"); item.DiaSemana = culture.DateTimeFormat.GetDayName(info.FechaRegistro.DayOfWeek); oListado.Add(item); } } return(oListado); } catch (Exception ex) { string array = ToString(); tb_sis_Log_Error_Vzen_Data oDataLog = new tb_sis_Log_Error_Vzen_Data(); tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now); oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje); mensaje = ex.InnerException + " " + ex.Message; throw new Exception(ex.InnerException.ToString()); } }
public Boolean pu_CalcularHorasExtras(int idEmpresa, decimal idEmpleado, int idNominaTipo, int idNominaTipoLiqui, int idPeriodo, DateTime fechaInicial, DateTime fechaFinal, Boolean acreditaRol) { try { //if (idEmpleado == 59) //{ //} //JORNADA NOCTURNA TimeSpan inicioHora25 = TimeSpan.FromHours(19); //19:00 PM TimeSpan finalHora25 = TimeSpan.FromHours(6); //06:00 AM //HORAS EXTRAS 50 TimeSpan inicioHora50 = TimeSpan.FromHours(6); //06:00 AM TimeSpan finalHora50 = TimeSpan.FromHours(24); //24:00 PM //HORAS EXTRAS 100 TimeSpan inicioHora100 = TimeSpan.FromHours(0); //00:00 PM TimeSpan finalHora100 = TimeSpan.FromHours(6); //06:00 AM int contadorIN = 0; int contadorOUT = 0; Boolean banderaHorario = false; List <ro_Nomina_X_Horas_Extras_Info> listado = new List <ro_Nomina_X_Horas_Extras_Info>(); List <ro_marcaciones_x_empleado_Info> oListRo_marcaciones_x_empleado_Info = new List <ro_marcaciones_x_empleado_Info>(); //OBTENER LA PLANIFICACION DE HORARIOS DEL EMPLEADO List <ro_horario_planificacion_Info> oListRo_horario_planificacion_Info = new List <ro_horario_planificacion_Info>(); oListRo_horario_planificacion_Info = oRo_horario_planificacion_Bus.Get_List_horario_planificacion(idEmpresa, idEmpleado, fechaInicial, fechaFinal); //OBTENER LISTADO DE HORARIOS EN GENERAL List <ro_Horario_Info> oListRo_Horario_Info = new List <ro_Horario_Info>(); oListRo_Horario_Info = oRo_Horario_Bus.Get_List_Horario(idEmpresa); //RECORRE LA PLANIFICACION DE HORARIOS DEL EMPLEADO - DIA X DIA foreach (ro_horario_planificacion_Info horarioEmpleado in oListRo_horario_planificacion_Info) { ro_Nomina_X_Horas_Extras_Info info = new ro_Nomina_X_Horas_Extras_Info(); double horaExtra25 = 0; double horaExtra50 = 0; double horaExtra100 = 0; double horaAtraso = 0; double horaTemprano = 0; double horaTrabajada = 0; TimeSpan horaEntrada1 = new TimeSpan(); TimeSpan horaSalida1 = new TimeSpan(); TimeSpan horaEntrada2 = new TimeSpan(); TimeSpan horaSalida2 = new TimeSpan(); TimeSpan unDia = TimeSpan.FromHours(24); //24:00 PM //OBTIENE LOS DATOS DEL HORARIO DEL EMPLEADO ro_Horario_Info horarioActual = oListRo_Horario_Info.Where(v => v.IdHorario == horarioEmpleado.IdHorario).FirstOrDefault(); //COMBINO FECHA + HORA string subcadena = horarioEmpleado.IdCalendario.ToString(); int YYYY = Convert.ToInt32(subcadena.Substring(0, 4)); int mm = Convert.ToInt32(subcadena.Substring(4, 2)); int dd = Convert.ToInt32(subcadena.Substring(6, 2)); DateTime f1 = new DateTime(YYYY, mm, dd); DateTime f2 = new DateTime(YYYY, mm, dd); DateTime fechaMarcacionInicial = new DateTime(YYYY, mm, dd); DateTime fechaMarcacionFinal = new DateTime(YYYY, mm, dd); //AGREGA LOS TIEMPOS f1 = f1.Add((TimeSpan)horarioActual.InicioEntrada); f2 = f2.Add((TimeSpan)horarioActual.FinalSalida); //VERIFICAR HORARIO DEL MISMO DIA VS. HORARIO DEL DIA SIGUIENTE if (horarioActual.HoraIni <= horarioActual.HoraFin) //CORRESPONDE AL MISMO DIA { banderaHorario = false; } else //CORRESPONDE A PARTE DEL MISMO DIA, Y PARTE DEL DIA SIGUIENTE { f2 = f2.AddDays(1); banderaHorario = true; } //AQUI DEBE VERIFICAR SI TIENE VARIOS TURNOS EN EL MISMO DIA - MODALIDAD DE TURNOS DOBLES if (oRo_horario_planificacion_Bus.GetVerificarDobleTurno(horarioEmpleado.IdEmpresa, horarioEmpleado.IdEmpleado, horarioEmpleado.IdCalendario, ref mensaje)) { fechaMarcacionInicial = fechaMarcacionInicial.Add((TimeSpan)horarioActual.InicioEntrada); fechaMarcacionFinal = fechaMarcacionFinal.Add((TimeSpan)horarioActual.InicioEntrada).AddHours(11); } else { fechaMarcacionInicial = fechaMarcacionInicial.Add((TimeSpan)horarioActual.InicioEntrada); fechaMarcacionFinal = fechaMarcacionFinal.Add((TimeSpan)horarioActual.InicioEntrada).AddHours(12); } //OBTENER LAS MARCACIONES DEL EMPLEADO EN LA FECHA CORRESPONDIENTE oListRo_marcaciones_x_empleado_Info = oRo_marcaciones_x_empleado_Bus.Get_List_marcaciones_x_empleado(idEmpresa, idEmpleado, fechaMarcacionInicial, fechaMarcacionFinal); ro_marcaciones_x_empleado_Info info_entrada = new ro_marcaciones_x_empleado_Info(); ro_marcaciones_x_empleado_Info info_salida = new ro_marcaciones_x_empleado_Info(); // si marco mas de una vez try { info_entrada = oListRo_marcaciones_x_empleado_Info.Where(v => v.IdTipoMarcaciones == "IN").FirstOrDefault(); } catch (Exception) { } try { info_salida = oListRo_marcaciones_x_empleado_Info.Where(v => v.IdTipoMarcaciones == "OUT").FirstOrDefault(); } catch (Exception) { } oListRo_marcaciones_x_empleado_Info = new List <ro_marcaciones_x_empleado_Info>(); if (info_entrada != null) { oListRo_marcaciones_x_empleado_Info.Add(info_entrada); } if (info_salida != null) { oListRo_marcaciones_x_empleado_Info.Add(info_salida); } contadorIN = 0; contadorOUT = 0; //RECORRER EL LISTADO DE MARCACIONES OBTENIDO foreach (var item in oListRo_marcaciones_x_empleado_Info) { // cambio por tolerancia de horas y minutos Carlos cedeño // este cambio es exclusivo para edehsa aqui revisar con el sensei como se puede hacer // este cambio es exclusivo para edehsa aqui revisar con el sensei como se puede hacer if (item.IdTipoMarcaciones == "IN") { if (item.es_Hora > horarioActual.InicioEntrada) { item.es_Hora = (TimeSpan)horarioActual.InicioEntrada; } } // horarioActual if (item.IdTipoMarcaciones == "OUT") { if (horarioActual.Tolerancia_Hora != null && horarioActual.Tolerancia_Minuto != null) { int hora = Convert.ToInt32(item.es_Hora.ToString().Substring(0, 2)); int minuto = Convert.ToInt32(item.es_Hora.ToString().Substring(3, 2)); if (minuto < horarioActual.Tolerancia_Minuto) { minuto = 0; } if (minuto < horarioActual.Tolerancia_Hora && minuto > horarioActual.Tolerancia_Minuto) { minuto = 30; } if (minuto > horarioActual.Tolerancia_Hora) { hora = hora + 1; minuto = 0; } item.es_Hora = new TimeSpan(hora, minuto, 0); } } if (item.IdTipoMarcaciones == "IN") { contadorIN++; } else { if (item.IdTipoMarcaciones == "OUT") { contadorOUT++; } } //ENTRADAS if (contadorIN == 1 && contadorOUT == 0) { horaEntrada1 = (TimeSpan)item.es_Hora; horaEntrada2 = (TimeSpan)item.es_Hora; } else { if (contadorIN == 2) { horaEntrada2 = (TimeSpan)item.es_Hora; contadorIN++; } } //SALIDAS if (contadorOUT == 1 && contadorIN <= 2) { horaSalida1 = (TimeSpan)item.es_Hora; horaSalida2 = (TimeSpan)item.es_Hora; } else { if (contadorOUT == 2) { horaSalida2 = (TimeSpan)item.es_Hora; contadorOUT++; } } } //PROCESAR HORAS EXTRAS info.IdEmpresa = idEmpresa; info.IdEmpleado = idEmpleado; info.IdCalendario = horarioEmpleado.IdCalendario; info.IdNominaTipo = idNominaTipo; info.IdNominaTipoLiqui = idNominaTipoLiqui; info.IdPeriodo = idPeriodo; info.IdHorario = horarioActual.IdHorario; ///AQUI REVISAR PARA LOS TURNOS DOBLES info.IdTurno = horarioEmpleado.IdRegistro; info.FechaRegistro = Convert.ToDateTime(f1.ToShortDateString()); info.time_entrada1 = horaEntrada1; info.time_entrada2 = horaEntrada2; info.time_salida1 = horaSalida1; info.time_salida2 = horaSalida2; //CALCULA HORAS DE ATRASO if (horaEntrada1 > (TimeSpan)horarioActual.FinalEntrada) { horaAtraso = (horaEntrada1 - (TimeSpan)horarioActual.HoraIni).TotalHours; //TOTAL DE HORAS DE ATRASO horaSalida2 = horaSalida2.Subtract(horaEntrada1 - (TimeSpan)horarioActual.HoraIni); // AQUI SE RESTA EL ATRASO A LA HORA DE SALIDA } int dia_semana = ((int)f1.DayOfWeek == 0) ? 7 : (int)f1.DayOfWeek; if (dia_semana >= 1 && dia_semana <= 5) //VERIFICA QUE LOS DIAS DE TRABAJO SON DE LUNES A VIERNES { //VERIFICA QUE TURNO TIENE EL EMPLEADO (DIURNO - NOCTURNO) if (banderaHorario == false)//TURNO DIURNO { //CALCULA SALIDAS TEMPRANO if (horaSalida2 < (TimeSpan)horarioActual.HoraFin && horaSalida2 > (TimeSpan)horarioActual.InicioEntrada) { horaTemprano = ((TimeSpan)horarioActual.HoraFin - horaSalida2).TotalHours; } //CALCULA LAS HORAS TRABAJADAS if (horaSalida2 >= horaEntrada1) { if (horaSalida1 > horaEntrada1 && horaSalida1 < horaEntrada2) { horaTrabajada = (horaSalida1 - horaEntrada1).TotalHours + (horaSalida2 - horaEntrada2).TotalHours; } else { horaTrabajada = (horaSalida2 - horaEntrada1).TotalHours; } } else { if (horaSalida1 > horaEntrada1 && horaSalida1 < horaEntrada2) { horaTrabajada = (horaSalida1 - horaEntrada1).TotalHours + (unDia - horaEntrada2).TotalHours + horaSalida2.TotalHours; } else { horaTrabajada = (unDia - horaEntrada1).TotalHours + horaSalida2.TotalHours; } } if (horaTrabajada > 0) { //VERIFICA QUE LA SALIDA CORRESPONDA A HORAS EXTRAS DEL MISMO DIA if (horaSalida2 > (TimeSpan)horarioActual.FinalSalida && horaSalida2 > horaEntrada1) { //VERIFICA SI TIENE HORAS EXTRAS 100 if (horaSalida2 > inicioHora100 && horaSalida2 <= finalHora100) { horaExtra100 = (horaSalida2 - finalHora100).TotalHours; //TOTAL DE HORAS EXTRAS 100 } else { //VERIFICA SI TIENE HORAS EXTRAS 50% if (horaSalida2 > inicioHora50 && horaSalida2 < finalHora50) { horaExtra50 = (horaSalida2 - (TimeSpan)horarioActual.FinalSalida).TotalHours; //TOTAL DE HORAS EXTRAS 50% } } } else { if (horaSalida2 < (TimeSpan)horarioActual.InicioEntrada) { horaExtra50 = (finalHora50 - (TimeSpan)horarioActual.FinalSalida).TotalHours; //TOTAL DE HORAS EXTRAS 50% horaExtra100 = (horaSalida2 - inicioHora100).TotalHours; //TOTAL DE HORAS EXTRAS 100 } } } } else { //***********************************TURNO NOCTURNO***************************************** //CALCULA SALIDAS TEMPRANO if (horaSalida2 < (TimeSpan)horarioActual.HoraFin && (unDia + horaSalida2) > (TimeSpan)horarioActual.InicioEntrada) { horaTemprano = ((TimeSpan)horarioActual.HoraFin - horaSalida2).TotalHours; if (horaEntrada1.TotalHours == 0 && horaEntrada2.TotalHours == 0) { horaTemprano = 0; } } //VERIFICA SI ES JORNADA NOCTURNA if (horaEntrada1 >= inicioHora25 && horaEntrada1 <= (unDia + finalHora25) && banderaHorario) { //horaExtra25 = (horaSalida2 - finalHora25).Hours; //TOTAL DE HORAS DE JORNADA NOCTURNA horaExtra25 = ((unDia + horaSalida2) - horaEntrada1).TotalHours; //TOTAL DE HORAS DE JORNADA NOCTURNA if (horaExtra25 > 8) { horaExtra25 = 8; } } //CALCULO DE HORAS EXTRAS if (horaSalida2 > horaEntrada1 && horaSalida2 < finalHora50) { horaTrabajada = (horaSalida2.TotalHours - horaEntrada1.TotalHours); } else { if (horaSalida2 > inicioHora100) { horaTrabajada = (unDia + horaSalida2).TotalHours - horaEntrada1.TotalHours; if (horaSalida2 > (TimeSpan)horarioActual.HoraFin && horaSalida2 <= finalHora100) { horaExtra100 = (horaSalida2 - (TimeSpan)horarioActual.HoraFin).TotalHours; } else { if (horaSalida2 > (TimeSpan)horarioActual.HoraFin && horaSalida2 > inicioHora50 && horaSalida2 <= finalHora50) { horaExtra100 = (inicioHora50 - (TimeSpan)horarioActual.HoraFin).TotalHours; horaExtra50 = (horaSalida2 - inicioHora50).TotalHours; } } } } } //CIERRE TURNO NOCTURNO } else { if (dia_semana == 6 | dia_semana == 7) //REPRESENTA SABADO Y DOMINGO { if (horaEntrada1 != horaSalida2) { //CALCULO DE HORAS EXTRAS if (dia_semana == 6)//SOLO SABADO { if (horaSalida2 > (TimeSpan)horarioActual.HoraIni && horaSalida2 < finalHora50) { horaExtra100 = (horaSalida2 - (TimeSpan)horarioActual.HoraIni).TotalHours; //CALCULA LA SALIDA TEMPRANA if (horaSalida2.TotalHours < (unDia + (TimeSpan)horarioActual.FinalSalida).TotalHours) { horaTemprano = ((unDia + (TimeSpan)horarioActual.FinalSalida) - horaSalida2).TotalHours; } //CALCULA HORAS TRABAJADAS horaTrabajada = (horaSalida2 - horaEntrada1).TotalHours; } else { if (horaSalida2.Hours > 0) { horaExtra100 = ((unDia + horaSalida2) - (TimeSpan)horarioActual.HoraIni).TotalHours; } Info_dias = List_dias.Where(v => v.Id_dia == 6).FirstOrDefault(); if (Convert.ToInt32(horaExtra100) > Info_dias.sdia_completo_a_partir_de && horaExtra100 <= 8) { horaExtra100 = 8; } //CALCULA LA SALIDA TEMPRANA if (horaSalida2 < (TimeSpan)horarioActual.HoraFin) { horaTemprano = ((TimeSpan)horarioActual.HoraFin - horaSalida2).TotalHours; } //CALCULA HORAS TRABAJADAS horaTrabajada = ((unDia + horaSalida2) - horaEntrada1).TotalHours; } } else { if (dia_semana == 7) //SOLO DOMINGO { if (horaSalida2 > (TimeSpan)horarioActual.HoraIni && horaSalida2 < finalHora50) //SALIDA ANTES DE LAS 24h00 { horaExtra100 = (horaSalida2 - (TimeSpan)horarioActual.HoraIni).TotalHours; Info_dias = List_dias.Where(v => v.Id_dia == 7).FirstOrDefault(); if (Convert.ToInt32(horaExtra100) > Info_dias.sdia_completo_a_partir_de && horaExtra100 <= 8) { horaExtra100 = 8; } //CALCULA LA SALIDA TEMPRANA if (horaSalida2 < (TimeSpan)horarioActual.FinalSalida) { horaTemprano = ((TimeSpan)horarioActual.FinalSalida - (horaSalida2)).TotalHours; } //CALCULA HORAS TRABAJADAS horaTrabajada = (horaSalida2 - horaEntrada1).TotalHours; } else { //SALIDA DESPUES DE LAS 24h00 } } } } } }//CIERRE DIA DE LA SEMANA //VERIFICA SI EL EMPLEADO ESTA AUTORIZADO PARA COBRAR HORAS EXTRAS if (acreditaRol) { info.hora_extra25 = horaExtra25; info.hora_extra50 = horaExtra50; info.hora_extra100 = horaExtra100; } else { info.hora_extra25 = 0; info.hora_extra50 = 0; info.hora_extra100 = 0; } info.hora_atraso = horaAtraso; info.hora_atraso = 0; info.hora_temprano = horaTemprano; info.hora_trabajada = horaTrabajada; GuardarBD(info, ref mensaje); } return(true); } catch (Exception ex) { Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message); throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "pu_CalcularHorasExtras", ex.Message), ex) { EntityType = typeof(ro_Nomina_X_Horas_Extras_Bus) }; } }
public Boolean pu_AgregarNovedadPorEmpleado(int idEmpresa, decimal idEmpleado, int idNominaTipo, int idNominaTipoLiqui, int idPeriodo, DateTime fechaInicial, DateTime fechaFinal, Boolean acreditaRol) { try { string idRubroHoraNocturnaExtra25 = "7"; string idRubroHoraExtra50 = "8"; string idRubroHoraExtra100 = "9"; double valorSueldo = 0; double valorHoraMes = 0; //OBTENER EL VALOR DEL SUELDO valorSueldo = oHistoricoSueldoBus.Get_List_HistoricoSueldo(idEmpresa, idEmpleado).FirstOrDefault().SueldoActual; //OBTENER EL VALOR DE LA HORA DE TRABAJO DIURNO valorHoraMes = Convert.ToDouble(valorSueldo / 240); //CORRESPONDE A UNA JORNADA DE 8 HORAS X 30 DIAS ro_Nomina_X_Horas_Extras_Info info = new ro_Nomina_X_Horas_Extras_Info(); ro_Empleado_Novedad_Det_Info tmp = new ro_Empleado_Novedad_Det_Info(); //OBTIENE LAS HORAS EXTRAS DEL EMPLEADO GENERADAS EN EL PROCESO DE CALCULO info = Get_Info_Nomina_X_Horas_Extras(idEmpresa, idEmpleado, idNominaTipo, idNominaTipoLiqui, idPeriodo, ref mensaje); if (info.hora_extra25 > 0) { ro_Empleado_Novedad_Info oRo_Empleado_Novedad_Cab_Info = new ro_Empleado_Novedad_Info(); ro_Empleado_Novedad_Det_Info oRo_Empleado_Novedad_Det_Info = new ro_Empleado_Novedad_Det_Info(); decimal idNovedad = 0; oRo_Empleado_Novedad_Cab_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Cab_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Cab_Info.IdNomina_Tipo = idNominaTipo; oRo_Empleado_Novedad_Cab_Info.IdNomina_TipoLiqui = idNominaTipoLiqui; oRo_Empleado_Novedad_Cab_Info.Fecha = fechaFinal; oRo_Empleado_Novedad_Cab_Info.TotalValor = info.hora_extra25 * valorHoraMes * 1.25; oRo_Empleado_Novedad_Cab_Info.IdUsuario = param.IdUsuario; oRo_Empleado_Novedad_Cab_Info.Fecha_Transac = param.Fecha_Transac; oRo_Empleado_Novedad_Cab_Info.Estado = "A"; //BORRAR VALORES PREVIOS DE NOVEDADES tmp = oRo_Empleado_Novedad_Det_Bus.Get_Info_Novedad_det(idEmpresa, idEmpleado, idRubroHoraNocturnaExtra25, fechaFinal, ref mensaje); oRo_Empleado_Novedad_Det_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdEmpleado, tmp.IdNovedad, tmp.Secuencia, ref mensaje); //BORRA EL DETALLE oRo_Empleado_Novedad_Cab_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdNovedad, tmp.IdEmpleado, idNominaTipo, idNominaTipoLiqui, ref mensaje); //BORRA LA CABECERA //GUARDA LA CABECERA if (acreditaRol) { if (oRo_Empleado_Novedad_Cab_Bus.GrabarDB(oRo_Empleado_Novedad_Cab_Info, ref idNovedad, ref mensaje)) { oRo_Empleado_Novedad_Det_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Det_Info.IdNovedad = idNovedad; oRo_Empleado_Novedad_Det_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Det_Info.Secuencia = 1; oRo_Empleado_Novedad_Det_Info.IdRubro = idRubroHoraNocturnaExtra25; oRo_Empleado_Novedad_Det_Info.FechaPago = fechaFinal.Date; oRo_Empleado_Novedad_Det_Info.Valor = info.hora_extra25 * valorHoraMes * 1.25; oRo_Empleado_Novedad_Det_Info.EstadoCobro = "PEN"; oRo_Empleado_Novedad_Det_Info.Observacion = "Generado Automáticamente por el Cálculo de Horas Extras"; oRo_Empleado_Novedad_Det_Info.Estado = "A"; oRo_Empleado_Novedad_Det_Info.NumHoras = info.hora_extra25; //GUARDA EL DETALLE oRo_Empleado_Novedad_Det_Bus.GrabarDB(oRo_Empleado_Novedad_Det_Info, ref mensaje); } } } if (info.hora_extra50 > 0) { ro_Empleado_Novedad_Info oRo_Empleado_Novedad_Cab_Info = new ro_Empleado_Novedad_Info(); ro_Empleado_Novedad_Det_Info oRo_Empleado_Novedad_Det_Info = new ro_Empleado_Novedad_Det_Info(); decimal idNovedad = 0; oRo_Empleado_Novedad_Cab_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Cab_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Cab_Info.IdNomina_Tipo = idNominaTipo; oRo_Empleado_Novedad_Cab_Info.IdNomina_TipoLiqui = idNominaTipoLiqui; oRo_Empleado_Novedad_Cab_Info.Fecha = fechaFinal; oRo_Empleado_Novedad_Cab_Info.TotalValor = Math.Round(info.hora_extra50 * valorHoraMes * 1.5, 2); oRo_Empleado_Novedad_Cab_Info.IdUsuario = param.IdUsuario; oRo_Empleado_Novedad_Cab_Info.Fecha_Transac = param.Fecha_Transac; oRo_Empleado_Novedad_Cab_Info.Estado = "A"; //BORRAR VALORES PREVIOS DE NOVEDADES tmp = oRo_Empleado_Novedad_Det_Bus.Get_Info_Novedad_det(idEmpresa, idEmpleado, idRubroHoraExtra50, fechaFinal, ref mensaje); oRo_Empleado_Novedad_Det_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdEmpleado, tmp.IdNovedad, tmp.Secuencia, ref mensaje); oRo_Empleado_Novedad_Cab_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdNovedad, tmp.IdEmpleado, idNominaTipo, idNominaTipoLiqui, ref mensaje); //BORRA LA CABECERA //GUARDA LA CABECERA if (acreditaRol) { if (oRo_Empleado_Novedad_Cab_Bus.GrabarDB(oRo_Empleado_Novedad_Cab_Info, ref idNovedad, ref mensaje)) { oRo_Empleado_Novedad_Det_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Det_Info.IdNovedad = idNovedad; oRo_Empleado_Novedad_Det_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Det_Info.Secuencia = 1; oRo_Empleado_Novedad_Det_Info.IdRubro = idRubroHoraExtra50; oRo_Empleado_Novedad_Det_Info.FechaPago = fechaFinal.Date; oRo_Empleado_Novedad_Det_Info.Valor = Math.Round(info.hora_extra50 * valorHoraMes * 1.5, 2); oRo_Empleado_Novedad_Det_Info.EstadoCobro = "PEN"; oRo_Empleado_Novedad_Det_Info.Observacion = "Generado Automáticamente por el Cálculo de Horas Extras"; oRo_Empleado_Novedad_Det_Info.Estado = "A"; oRo_Empleado_Novedad_Det_Info.NumHoras = info.hora_extra50; //GUARDA EL DETALLE oRo_Empleado_Novedad_Det_Bus.GrabarDB(oRo_Empleado_Novedad_Det_Info, ref mensaje); } } } if (info.hora_extra100 > 0) { ro_Empleado_Novedad_Info oRo_Empleado_Novedad_Cab_Info = new ro_Empleado_Novedad_Info(); ro_Empleado_Novedad_Det_Info oRo_Empleado_Novedad_Det_Info = new ro_Empleado_Novedad_Det_Info(); decimal idNovedad = 0; oRo_Empleado_Novedad_Cab_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Cab_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Cab_Info.IdNomina_Tipo = idNominaTipo; oRo_Empleado_Novedad_Cab_Info.IdNomina_TipoLiqui = idNominaTipoLiqui; oRo_Empleado_Novedad_Cab_Info.Fecha = fechaFinal; oRo_Empleado_Novedad_Cab_Info.TotalValor = info.hora_extra100 * valorHoraMes * 2; oRo_Empleado_Novedad_Cab_Info.IdUsuario = param.IdUsuario; oRo_Empleado_Novedad_Cab_Info.Fecha_Transac = param.Fecha_Transac; oRo_Empleado_Novedad_Cab_Info.Estado = "A"; //BORRAR VALORES PREVIOS DE NOVEDADES tmp = oRo_Empleado_Novedad_Det_Bus.Get_Info_Novedad_det(idEmpresa, idEmpleado, idRubroHoraExtra100, fechaFinal, ref mensaje); oRo_Empleado_Novedad_Det_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdEmpleado, tmp.IdNovedad, tmp.Secuencia, ref mensaje); oRo_Empleado_Novedad_Cab_Bus.EliminarDB(tmp.IdEmpresa, tmp.IdNovedad, tmp.IdEmpleado, idNominaTipo, idNominaTipoLiqui, ref mensaje); //BORRA LA CABECERA //GUARDA LA CABECERA if (acreditaRol) { if (oRo_Empleado_Novedad_Cab_Bus.GrabarDB(oRo_Empleado_Novedad_Cab_Info, ref idNovedad, ref mensaje)) { oRo_Empleado_Novedad_Det_Info.IdEmpresa = info.IdEmpresa; oRo_Empleado_Novedad_Det_Info.IdNovedad = idNovedad; oRo_Empleado_Novedad_Det_Info.IdEmpleado = info.IdEmpleado; oRo_Empleado_Novedad_Det_Info.Secuencia = 1; oRo_Empleado_Novedad_Det_Info.IdRubro = idRubroHoraExtra100; oRo_Empleado_Novedad_Det_Info.FechaPago = fechaFinal.Date; oRo_Empleado_Novedad_Det_Info.Valor = info.hora_extra100 * valorHoraMes * 2; oRo_Empleado_Novedad_Det_Info.EstadoCobro = "PEN"; oRo_Empleado_Novedad_Det_Info.Observacion = "Generado Automáticamente por el Cálculo de Horas Extras"; oRo_Empleado_Novedad_Det_Info.Estado = "A"; oRo_Empleado_Novedad_Det_Info.NumHoras = info.hora_extra100; //GUARDA EL DETALLE oRo_Empleado_Novedad_Det_Bus.GrabarDB(oRo_Empleado_Novedad_Det_Info, ref mensaje); } } } return(true); } catch (Exception ex) { Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message); throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "pu_AgregarNovedadPorEmpleado", ex.Message), ex) { EntityType = typeof(ro_Nomina_X_Horas_Extras_Bus) }; } }