using Exferia_Aplicacion.General; using Exferia_Controles; using Exferia_EntityFramework; using Exferia_KairosPRO._1_Modelos; using Exferia_KairosPRO._2_Datos; using Exferia_KairosPRO_EF; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Exferia_KairosPRO.General { public class Verificacion_Pausas { #region Variables privadas private long g_lng_CodigoCliente = -1; private DateTime g_dtt_Validacion; private KRS_Empleados g_mdl_KRS_Empleados = null; private bool g_bol_Desde_Pantalla = false; private KRS_DiasFestivos_Datos g_obj_KRS_DiasFestivos_Datos = new KRS_DiasFestivos_Datos(); private KRS_JornadasCabecera_Datos g_obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos(); private KRS_AusenciasProgramadas_Datos g_obj_KRS_AusenciasProgramadas_Datos = new KRS_AusenciasProgramadas_Datos(); private KRSS_Pausas_Datos g_obj_KRSS_Pausas_Datos = new KRSS_Pausas_Datos(); private KRS_JornadasPausas_Datos g_obj_KRS_JornadasPausas_Datos = new KRS_JornadasPausas_Datos(); private TMP_Emails_PausasIncidencias_Datos g_obj_TMP_Emails_PausasIncidencias_Datos = new TMP_Emails_PausasIncidencias_Datos(); private KRSS_DispositivosModelo_Datos g_obj_KRSS_DispositivosModelo_Datos = new KRSS_DispositivosModelo_Datos(); #endregion public void Proceso(long _lng_CodigoCliente, DateTime _dtt_Validacion, KRS_Empleados _mdl_KRS_Empleados,bool _bol_Desde_Pantalla,long _lng_idEmpresa) { try { g_lng_CodigoCliente = _lng_CodigoCliente; g_dtt_Validacion = _dtt_Validacion; g_mdl_KRS_Empleados = _mdl_KRS_Empleados; g_bol_Desde_Pantalla = _bol_Desde_Pantalla; DateTime dtt_Fecha_Calculada_Validacion = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(g_dtt_Validacion, g_mdl_KRS_Empleados.usoHorario); //Si la fecha de baja no es nula y es inferior a la fecha a validar no se pone la pausa if (g_mdl_KRS_Empleados.fechaBaja == null || g_mdl_KRS_Empleados.fechaBaja.Value > dtt_Fecha_Calculada_Validacion) { //Presencias Programadas ................................................................................. INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(g_mdl_KRS_Empleados.id, _lng_CodigoCliente, dtt_Fecha_Calculada_Validacion); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS != null) { Validacion_Jornada(g_mdl_KRS_Empleados.id, dtt_Fecha_Calculada_Validacion, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS, _lng_idEmpresa); } //Mirar Ausencias Programadas ................................................................................. else { KRS_AusenciasProgramadas mdl_KRS_AusenciasProgramadas = g_obj_KRS_AusenciasProgramadas_Datos.Obtener_Modelo_Por_EmpleadoClienteFecha_SinHoras(g_mdl_KRS_Empleados.id, _lng_CodigoCliente, dtt_Fecha_Calculada_Validacion,true); if (mdl_KRS_AusenciasProgramadas != null) { Validacion_AusenciasProgramadas(g_mdl_KRS_Empleados.id, dtt_Fecha_Calculada_Validacion, _lng_idEmpresa); } //Mirar Dias Festivos ................................................................................. else { KRS_DiasFestivos mdl_KRS_DiasFestivos = g_obj_KRS_DiasFestivos_Datos.Obtener_Modelo_Por_CodigoClienteFecha(_lng_CodigoCliente, dtt_Fecha_Calculada_Validacion); if (mdl_KRS_DiasFestivos != null) { Validacion_DiasFestivos(g_mdl_KRS_Empleados.id, dtt_Fecha_Calculada_Validacion, _lng_idEmpresa); } //Mirar la Jornada ................................................................................. else { INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(g_mdl_KRS_Empleados.id, _lng_CodigoCliente, dtt_Fecha_Calculada_Validacion); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { Validacion_Jornada(g_mdl_KRS_Empleados.id, dtt_Fecha_Calculada_Validacion, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo, _lng_idEmpresa); } //Si hubieran pausas para este dia, estarian todos incorrectos else { Validacion_Pausas_SinNadaAsignado(g_mdl_KRS_Empleados.id, dtt_Fecha_Calculada_Validacion, _lng_idEmpresa); } } } } } //.......................................................................................................... } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "/" + nameof(Proceso)); } } private void Validacion_Jornada(long _lng_idEmpleado, DateTime _dtt_Actual, INTERNO_Verificacion_JornadasCabecera_Modelo _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo, long _lng_idEmpresa) { try { DateTime dtt_FechaHoraActual = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day,_dtt_Actual.Hour, _dtt_Actual.Minute, 0); //Dia de Pausa DateTime dtt_FechaDesde_BusquedaPausas = Buscar_FechaInicial_BusquedaPausas(_dtt_Actual); DateTime dtt_FechaHasta_BusquedaPausas = Buscar_FechaFinal_BusquedaPausas(_dtt_Actual); //Obtener todas las Pausas del Dia List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo = g_obj_KRSS_Pausas_Datos.Obtener_Listado_ParaVerificacionPausas(g_lng_CodigoCliente, _lng_idEmpleado, dtt_FechaDesde_BusquedaPausas, dtt_FechaHasta_BusquedaPausas, _lng_idEmpresa); if (g_bol_Desde_Pantalla && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo!=null) { lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m=>m.validado!=null).ToList().ForEach(m => m.validado = -1); } //JornadasPausas List lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo = g_obj_KRS_JornadasPausas_Datos.Obtener_JornadasPausas_ParaVerificacionPausas(_mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id,g_lng_CodigoCliente); if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Count>0) { INTERNO_VerificacionPausas_JornadasPausas_Modelo mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo = null; foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m=> m.validado==null || (m.validado!=null && m.validado.Value==-1)).OrderBy(m=>m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //Verificar si hay alguna Salida sin entrada para ese tipo de pausas int int_Validado = 0; INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.fechaHora < mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora).OrderByDescending(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX != null && mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX.entradaSalida==Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_SALIDA_CON_OTRASALIDAABIERTA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); int_Validado = 1; } //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } //Entrada else { //Verificar que existe alguna configuracion ara este tipo de pausa mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo = null; if (lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo != null && lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo.Count > 0) { mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo = lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo.Where(m => m.idPausaTipo.Equals(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo)).FirstOrDefault(); } //CON CONFIGURACION if (mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo != null) { int int_Validado = 0; //1º Debe tener una Salida sin incidencias antes de la entrada sino es un error INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_SALIDA = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.fechaHora < mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora && (m.validado==0 || m.validado == 2)).OrderByDescending(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_SALIDA == null || (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_SALIDA != null && mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_SALIDA.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_ENTRADA)) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_ENTRADA_SIN_SALIDA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.id, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); int_Validado = 1; } //2º No se debe pasar del tiempo estipulado if (int_Validado == 0) { int int_TotalMinutos= (int)mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora.Subtract(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_SALIDA.fechaHora).TotalMinutes; if (int_TotalMinutos > mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.duracionMinutos) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_CONENTRADA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.id, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, int_TotalMinutos, 0); int_Validado = 1; } } //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; //Verificar cuantas Pausas Lleva List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.validado != null && ((m.entradaSalida==Variables_KairosPRO.G_STR_PAUSAS_ENTRADA && m.validado!=-1)||(m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA && (m.validado == 0 || m.validado == 2)))).OrderByDescending(m => m.fechaHora).ToList(); int int_TotalPausas = 0; if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS!=null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.Count>0) { bool bol_Anterior_Salida = false; foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.OrderBy(m=>m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.entradaSalida==Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { bol_Anterior_Salida = true; } //Entrasa else { if (bol_Anterior_Salida) { int_TotalPausas += 1; } bol_Anterior_Salida = false; } } } if (int_TotalPausas> mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.numeroPausas) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_NUMEROPAUSASPORJORNADA_SOBREPASADO, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.id, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, int_TotalPausas); } } //SIN CONFIGURACION else { //ERROR NUMERO DE PAUSAS POR JORNADA int int_Validado = 1; Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_NUMEROPAUSASPORJORNADA_SOBREPASADO, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } } } //Varificar que no se han pasado del tiempo maximo de pausa if (g_bol_Desde_Pantalla==false) { foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado != null && m.validado.Value == 0 && m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA).OrderBy(m => m.fechaHora)) { INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_ENTRADA = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.fechaHora > mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora && m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo).OrderBy(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_ENTRADA == null || mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_ENTRADA.entradaSalida != Variables_KairosPRO.G_STR_PAUSAS_ENTRADA) { //Verificar que existe alguna configuracion ara este tipo de pausa mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo = null; if (lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo != null && lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo.Count > 0) { mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo = lst_INTERNO_VerificacionPausas_JornadasPausas_Modelo.Where(m => m.idPausaTipo.Equals(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo)).FirstOrDefault(); } //CON CONFIGURACION if (mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo != null) { int int_TotalMinutos = (int)dtt_FechaHoraActual.Subtract(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora).TotalMinutes; if (int_TotalMinutos > mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.duracionMinutos) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_SIN_ENTRADA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, _mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.id, mdl_INTERNO_VerificacionPausas_JornadasPausas_Modelo.id, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, 2, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = 2; } } } } } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "" + nameof(Validacion_Jornada)); } } private void Validacion_AusenciasProgramadas(long _lng_idEmpleado, DateTime _dtt_Actual, long _lng_idEmpresa) { try { DateTime dtt_FechaHoraActual = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day, _dtt_Actual.Hour, _dtt_Actual.Minute, 0); //Dia de Pausa DateTime dtt_FechaDesde_BusquedaPausas = Buscar_FechaInicial_BusquedaPausas(_dtt_Actual); DateTime dtt_FechaHasta_BusquedaPausas = Buscar_FechaFinal_BusquedaPausas(_dtt_Actual); //Obtener todas las Pausas del Dia List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo = g_obj_KRSS_Pausas_Datos.Obtener_Listado_ParaVerificacionPausas(g_lng_CodigoCliente, _lng_idEmpleado, dtt_FechaDesde_BusquedaPausas, dtt_FechaHasta_BusquedaPausas, _lng_idEmpresa); if (g_bol_Desde_Pantalla && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null) { lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado != null).ToList().ForEach(m => m.validado = -1); } if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Count > 0) { foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado == null || (m.validado != null && m.validado.Value == -1)).OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //Verificar si hay alguna Salida sin entrada para ese tipo de pausas int int_Validado = 0; INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.fechaHora < mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora).OrderByDescending(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX != null && mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_SALIDA_CON_OTRASALIDAABIERTA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); int_Validado = 1; } //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } else { //ERROR NUMERO DE PAUSAS POR JORNADA int int_Validado = 1; List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.validado != null && ((m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_ENTRADA && m.validado != -1) || (m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA && (m.validado == 0 || m.validado == 2)))).OrderByDescending(m => m.fechaHora).ToList(); int int_TotalPausas = 0; if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.Count > 0) { bool bol_Anterior_Salida = false; foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { bol_Anterior_Salida = true; } //Entrasa else { if (bol_Anterior_Salida) { int_TotalPausas += 1; } bol_Anterior_Salida = false; } } } Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_SIN_ENTRADA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, int_TotalPausas); //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "" + nameof(Validacion_AusenciasProgramadas)); } } private void Validacion_DiasFestivos(long _lng_idEmpleado, DateTime _dtt_Actual, long _lng_idEmpresa) { try { DateTime dtt_FechaHoraActual = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day, _dtt_Actual.Hour, _dtt_Actual.Minute, 0); //Dia de Pausa DateTime dtt_FechaDesde_BusquedaPausas = Buscar_FechaInicial_BusquedaPausas(_dtt_Actual); DateTime dtt_FechaHasta_BusquedaPausas = Buscar_FechaFinal_BusquedaPausas(_dtt_Actual); //Obtener todas las Pausas del Dia List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo = g_obj_KRSS_Pausas_Datos.Obtener_Listado_ParaVerificacionPausas(g_lng_CodigoCliente, _lng_idEmpleado, dtt_FechaDesde_BusquedaPausas, dtt_FechaHasta_BusquedaPausas, _lng_idEmpresa); if (g_bol_Desde_Pantalla && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null) { lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado != null).ToList().ForEach(m => m.validado = -1); } if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Count > 0) { foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado == null || (m.validado != null && m.validado.Value == -1)).OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //Verificar si hay alguna Salida sin entrada para ese tipo de pausas int int_Validado = 0; INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.fechaHora < mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora).OrderByDescending(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX != null && mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_SALIDA_CON_OTRASALIDAABIERTA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); int_Validado = 1; } //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } else { //ERROR NUMERO DE PAUSAS POR JORNADA int int_Validado = 1; List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.validado != null && ((m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_ENTRADA && m.validado != -1) || (m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA && (m.validado == 0 || m.validado == 2)))).OrderByDescending(m => m.fechaHora).ToList(); int int_TotalPausas = 0; if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.Count > 0) { bool bol_Anterior_Salida = false; foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { bol_Anterior_Salida = true; } //Entrasa else { if (bol_Anterior_Salida) { int_TotalPausas += 1; } bol_Anterior_Salida = false; } } } Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_SIN_ENTRADA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, int_TotalPausas); //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "" + nameof(Validacion_DiasFestivos)); } } private void Validacion_Pausas_SinNadaAsignado(long _lng_idEmpleado, DateTime _dtt_Actual, long _lng_idEmpresa) { try { DateTime dtt_FechaHoraActual = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day, _dtt_Actual.Hour, _dtt_Actual.Minute, 0); //Dia de Pausa DateTime dtt_FechaDesde_BusquedaPausas = Buscar_FechaInicial_BusquedaPausas(_dtt_Actual); DateTime dtt_FechaHasta_BusquedaPausas = Buscar_FechaFinal_BusquedaPausas(_dtt_Actual); //Obtener todas las Pausas del Dia List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo = g_obj_KRSS_Pausas_Datos.Obtener_Listado_ParaVerificacionPausas(g_lng_CodigoCliente, _lng_idEmpleado, dtt_FechaDesde_BusquedaPausas, dtt_FechaHasta_BusquedaPausas, _lng_idEmpresa); if (g_bol_Desde_Pantalla && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null) { lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado != null).ToList().ForEach(m => m.validado = -1); } if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Count > 0) { foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.validado == null || (m.validado != null && m.validado.Value == -1)).OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //Verificar si hay alguna Salida sin entrada para ese tipo de pausas int int_Validado = 0; INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.fechaHora < mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.fechaHora).OrderByDescending(m => m.fechaHora).FirstOrDefault(); if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX != null && mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_AUX.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { //ERROR Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_SALIDA_CON_OTRASALIDAABIERTA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, 0); int_Validado = 1; } //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } else { //ERROR NUMERO DE PAUSAS POR JORNADA int int_Validado = 1; List lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS = lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.Where(m => m.idPausaTipo == mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.idPausaTipo && m.validado != null && ((m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_ENTRADA && m.validado != -1) || (m.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA && (m.validado == 0 || m.validado == 2)))).OrderByDescending(m => m.fechaHora).ToList(); int int_TotalPausas = 0; if (lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS != null && lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.Count > 0) { bool bol_Anterior_Salida = false; foreach (INTERNO_VerificacionPausas_KRSS_Pausas_Modelo mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS in lst_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.OrderBy(m => m.fechaHora)) { //Salida if (mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo_TOTALPAUSAS.entradaSalida == Variables_KairosPRO.G_STR_PAUSAS_SALIDA) { bol_Anterior_Salida = true; } //Entrasa else { if (bol_Anterior_Salida) { int_TotalPausas += 1; } bol_Anterior_Salida = false; } } } Grabar_ParaEmail_PausaIncidencia_Jornada(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_SIN_ENTRADA, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.PausaTipo, g_lng_CodigoCliente, _lng_idEmpleado, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, null, null, _dtt_Actual, mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.entradaSalida, 0, int_TotalPausas ); //Marcar como validado g_obj_KRSS_Pausas_Datos.Actualizar_ParaVerificacionPausas(mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.id, int_Validado, g_lng_CodigoCliente); mdl_INTERNO_VerificacionPausas_KRSS_Pausas_Modelo.validado = int_Validado; } } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "" + nameof(Validacion_Pausas_SinNadaAsignado)); } } #region Grabar para Enviar por Email mas tarde private void Grabar_ParaEmail_PausaIncidencia_Jornada( int _int_TipoIncidencia, string _str_PausaTipo, long _lng_CodigoCliente, long _lng_idEmpleado, long? _lng_idPausa, long? _lng_idJornadaCabecera, long? _lng_idJornadaPausa, DateTime _dtt_Fecha, string _str_EntradaSalida, int _int_DuracionPausa, int _int_NumeroPausasRealizadas) { try { if (g_bol_Desde_Pantalla==false) { TMP_Emails_PausasIncidencias mdl_TMP_Emails_PausasIncidencias = new TMP_Emails_PausasIncidencias(); //Descripcion de la Incicendia ........................................................................................................ //SALIDA_CON_OTRASALIDAABIERTA if (_int_TipoIncidencia.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_SALIDA_CON_OTRASALIDAABIERTA)) { mdl_TMP_Emails_PausasIncidencias.incidencia_descripcion = Variables_KairosPRO.G_STR_TIPOINCIDENCIA_PAUSAS_MENSAJE_EMAIL_SALIDA_SIN_ENTRADA(_str_PausaTipo); } //ENTRADA_SIN_SALIDA else if (_int_TipoIncidencia.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_ENTRADA_SIN_SALIDA)) { mdl_TMP_Emails_PausasIncidencias.incidencia_descripcion = Variables_KairosPRO.G_STR_TIPOINCIDENCIA_PAUSAS_MENSAJE_EMAIL_ENTRADA_SIN_SALIDA(_str_PausaTipo); } //DURACION_SOBREPASADA_CONENTRADA else if (_int_TipoIncidencia.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_DURACION_SOBREPASADA_CONENTRADA)) { mdl_TMP_Emails_PausasIncidencias.incidencia_descripcion = Variables_KairosPRO.G_STR_TIPOINCIDENCIA_PAUSAS_MENSAJE_EMAIL_DURACION_SOBREPASADA_CONENTRADA(_str_PausaTipo); } //NUMEROPAUSASPORJORNADA_SOBREPASADO else if (_int_TipoIncidencia.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_PAUSAS_NUMEROPAUSASPORJORNADA_SOBREPASADO)) { mdl_TMP_Emails_PausasIncidencias.incidencia_descripcion = Variables_KairosPRO.G_STR_TIPOINCIDENCIA_PAUSAS_MENSAJE_EMAIL_NUMEROPAUSASPORJORNADA_SOBREPASADO(_str_PausaTipo); } //DURACION_SOBREPASADA_SIN_ENTRADA else { mdl_TMP_Emails_PausasIncidencias.incidencia_descripcion = Variables_KairosPRO.G_STR_TIPOINCIDENCIA_PAUSAS_MENSAJE_EMAIL_DURACION_SOBREPASADA_SIN_ENTRADA(_str_PausaTipo); } //....................................................................................................................................... mdl_TMP_Emails_PausasIncidencias.codigoCliente = _lng_CodigoCliente; mdl_TMP_Emails_PausasIncidencias.idEmpleado = _lng_idEmpleado; mdl_TMP_Emails_PausasIncidencias.idPausa = _lng_idPausa; mdl_TMP_Emails_PausasIncidencias.idJornadaCabecera = _lng_idJornadaCabecera; mdl_TMP_Emails_PausasIncidencias.idJornadaPausa = _lng_idJornadaPausa; mdl_TMP_Emails_PausasIncidencias.incidencia_Tipo = _int_TipoIncidencia; mdl_TMP_Emails_PausasIncidencias.fecha = _dtt_Fecha; mdl_TMP_Emails_PausasIncidencias.entradaSalida = _str_EntradaSalida; mdl_TMP_Emails_PausasIncidencias.duracionPausa = _int_DuracionPausa; mdl_TMP_Emails_PausasIncidencias.numeroPausasRealizadas = _int_NumeroPausasRealizadas; g_obj_TMP_Emails_PausasIncidencias_Datos.Insertar(mdl_TMP_Emails_PausasIncidencias); } } catch (Control_Errores) { } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas) + "/" + nameof(Grabar_ParaEmail_PausaIncidencia_Jornada)); } } #endregion private DateTime Buscar_FechaInicial_BusquedaPausas(DateTime _dtt_Actual) { bool bol_Encontro_Registro = false; TimeSpan tms_HoraCambioDia_Anterior = new TimeSpan(0, 0, 0); DateTime dtt_FechaInicioJornada= _dtt_Actual; //Si tiene JornadaCabecera el dia anterior, coger la hora de cambio de dia, para saber desde cuando hay que buscar los pausas INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, _dtt_Actual); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS != null) { DateTime dtt_ABuscar = _dtt_Actual.Date.AddDays(-1); if (_dtt_Actual.Day > mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Day) { dtt_ABuscar = dtt_ABuscar.AddDays(-1); } //Buscar el dia anterior para saber el cambioHora INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS_AUXILIAR = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, dtt_ABuscar); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS_AUXILIAR != null) { bol_Encontro_Registro = true; tms_HoraCambioDia_Anterior = mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS_AUXILIAR.horaCambioDia; dtt_FechaInicioJornada = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Day, tms_HoraCambioDia_Anterior.Hours, tms_HoraCambioDia_Anterior.Minutes, 0); } else { bol_Encontro_Registro = true; dtt_FechaInicioJornada = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.Dia_Inicial_Jornada.Day, 0, 0, 0); } } //Jornada if (bol_Encontro_Registro == false) { INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, _dtt_Actual); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { DateTime dtt_ABuscar = _dtt_Actual.Date.AddDays(-1); if (_dtt_Actual.Day > mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Day) { dtt_ABuscar = dtt_ABuscar.AddDays(-1); } INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_AUXILIAR = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, dtt_ABuscar); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_AUXILIAR != null) { bol_Encontro_Registro = true; tms_HoraCambioDia_Anterior = mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_AUXILIAR.horaCambioDia; dtt_FechaInicioJornada = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Day, tms_HoraCambioDia_Anterior.Hours, tms_HoraCambioDia_Anterior.Minutes, 0); } else { bol_Encontro_Registro = true; dtt_FechaInicioJornada = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.Dia_Inicial_Jornada.Day, 0, 0, 0); } } } //Fecha Hora Inicial if (bol_Encontro_Registro == false) { dtt_FechaInicioJornada = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day, tms_HoraCambioDia_Anterior.Hours, tms_HoraCambioDia_Anterior.Minutes, 0); } return dtt_FechaInicioJornada; } private DateTime Buscar_FechaFinal_BusquedaPausas(DateTime _dtt_Actual) { bool bol_Encontro_Registro = false; DateTime dtt_FechaFinal_ABuscar= _dtt_Actual; //Si tiene JornadaCabecera , coger la hora de cambio de dia, para saber desde cuando hay que buscar los pausas INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, _dtt_Actual); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS != null) { bol_Encontro_Registro = true; dtt_FechaFinal_ABuscar = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Day, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Hour, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Minute, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo_PRESENCIASPROGRAMADAS.AUX_JornadaDia_Fin.Second); } //Jornada if (bol_Encontro_Registro == false) { INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(g_mdl_KRS_Empleados.id, g_lng_CodigoCliente, _dtt_Actual); if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { bol_Encontro_Registro = true; dtt_FechaFinal_ABuscar = new DateTime(mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Year, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Month, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Day, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Hour, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Minute, mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.AUX_JornadaDia_Fin.Second); } } if (bol_Encontro_Registro == false) { dtt_FechaFinal_ABuscar = new DateTime(_dtt_Actual.Year, _dtt_Actual.Month, _dtt_Actual.Day, 23, 59, 59); } return dtt_FechaFinal_ABuscar; } } }