906 lines
66 KiB
C#
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;
|
|
|
|
}
|
|
|
|
}
|
|
}
|