Exferia/Exferia_KairosPro/Exferia_KairosPRO/General/Verificacion_Pausas.cs

906 lines
66 KiB
C#

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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_JornadasPausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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<INTERNO_VerificacionPausas_KRSS_Pausas_Modelo> 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;
}
}
}