934 lines
75 KiB
C#
934 lines
75 KiB
C#
using Exferia_Aplicacion.General;
|
|
using Exferia_EntityFramework;
|
|
using Exferia_General;
|
|
using Exferia_KairosPRO._1_Modelos;
|
|
using Exferia_KairosPRO_EF;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Exferia_KairosPRO._4_Vistas.Controladoras
|
|
{
|
|
class Class1
|
|
{
|
|
/*public static List<INTERNO_AUX_ConsultaDetalladaJornada_Modelo> CargarDatos_ConsultaDetallada_JornadaEmpleado(DateTime _dtt_Inicio,
|
|
DateTime _dtt_Fin,
|
|
TimeSpan _tms_Inicio,
|
|
TimeSpan _tms_Fin,
|
|
List<long> _lst_idEmpleados,
|
|
long _lng_idEmpresa,
|
|
List<INTERNO_ComboBox_Modelo> _lst_INTERNO_ComboBox_Modelo_PRESENCIASPROGRAMADAS,
|
|
List<INTERNO_ComboBox_Modelo> _lst_INTERNO_ComboBox_Modelo_AUSENCIASPROGRAMADAS,
|
|
bool _bol_DiasFestivos,
|
|
List<INTERNO_ComboBox_Modelo> _lst_INTERNO_ComboBox_Modelo_JORNADA,
|
|
List<INTERNO_ComboBox_Modelo> _lst_INTERNO_ComboBox_Modelo_HORASEXTRAS)
|
|
{
|
|
List<INTERNO_AUX_ConsultaDetalladaJornada_Modelo> g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo = null;
|
|
|
|
try
|
|
{
|
|
//Contadores
|
|
int int_DiasTrabajados = 0;
|
|
int int_HorasTeoricas = 0;
|
|
int int_MinutosTeoricos = 0;
|
|
|
|
int int_HorasReales = 0;
|
|
int int_MinutosReales = 0;
|
|
|
|
int int_HorasContabilizables = 0;
|
|
int int_MinutosContabilizables = 0;
|
|
|
|
int int_DiasFetivos = 0;
|
|
|
|
int int_TotalSegundos_Realizados = 0;
|
|
int int_TotalSegundos_Reales = 0;
|
|
|
|
//Variables
|
|
List<KRS_PresenciasProgramadas> lst_KRS_PresenciasProgramadas = null;
|
|
List<long> g_lst_idPresenciasProgramadas = new List<long>();
|
|
List<KRS_AusenciasProgramadas> lst_KRS_AusenciasProgramadas = null;
|
|
List<INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo> g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo = new List<INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo>();
|
|
List<KRS_PerfilesLinea> lst_KRS_PerfilesLinea = null;
|
|
List<KRSS_Fichajes> lst_KRSS_Fichajes_RangoFechas = null;
|
|
List<KRS_DiasFestivos> lst_KRS_DiasFestivos = null;
|
|
List<INTERNO_KRS_Empleados_Modelo> lst_INTERNO_KRS_Empleados_Modelo = null;
|
|
|
|
KRS_JornadasCabecera mdl_KRS_JornadasCabecera = new KRS_JornadasCabecera();
|
|
KRS_PresenciasProgramadas mdl_KRS_PresenciasProgramadas = new KRS_PresenciasProgramadas();
|
|
KRS_DiasFestivos mdl_KRS_DiasFestivos = new KRS_DiasFestivos();
|
|
List<KRS_AusenciasProgramadas> lst_KRS_AusenciasProgramadas_Busqueda = null;
|
|
GEN_EjerciciosActivos_Empresa mdl_GEN_EjerciciosActivos_Empresa = null;
|
|
KRS_PerfilesCabecera mdl_KRS_PerfilesCabecera = null;
|
|
DateTime dtt_HoraCambioDia = new DateTime(1900, 1, 1, 0, 0, 0);
|
|
|
|
//Fechas
|
|
DateTime dtt_Inicio = _dtt_Inicio;
|
|
DateTime dtt_Fin = _dtt_Fin;
|
|
TimeSpan tms_Inicio = _tms_Inicio;
|
|
TimeSpan tms_Fin = _tms_Fin;
|
|
|
|
//Listado de empleados seleccionados
|
|
List<long> lst_idEmpleados = _lst_idEmpleados;
|
|
|
|
|
|
//Saber el idEjercicio de las fechas
|
|
mdl_GEN_EjerciciosActivos_Empresa = Datos_Generales.GEN_EjerciciosActivos_Empresa_Obtener_Por_FechaEmpresa(dtt_Inicio, _lng_idEmpresa);
|
|
|
|
//Dias Festivos
|
|
lst_KRS_DiasFestivos = g_obj_KRS_DiasFestivos_Datos.Obtener_ModeloListado_Por_Fechas(dtt_Inicio, dtt_Fin);
|
|
|
|
//Obtenemos un listado de todos los empleados con sus relaciones
|
|
lst_INTERNO_KRS_Empleados_Modelo = g_obj_KRS_Empleados_Datos.Obtener_Registros_Para_Listado(mdl_GEN_EjerciciosActivos_Empresa, lst_idEmpleados);
|
|
|
|
//HORAS EXTRAS AUTORIZADAS
|
|
KRS_HorasExtrasCalculadasCabecera_Datos obj_KRS_HorasExtrasCalculadasCabecera_Datos = new KRS_HorasExtrasCalculadasCabecera_Datos();
|
|
List<INTERNO_AUX_HorasExtrasTotales_Modelo> lst_INTERNO_AUX_HorasExtrasTotales_Modelo_AUTORIZADAS_POREMPLEADO = obj_KRS_HorasExtrasCalculadasCabecera_Datos.Obtener_Totales(_lst_idEmpleados, new DateTime(_dtt_Inicio.Year, _dtt_Inicio.Month, _dtt_Inicio.Day, 0, 0, 0), new DateTime(_dtt_Fin.Year, _dtt_Fin.Month, _dtt_Fin.Day, 0, 0, 0));
|
|
|
|
//Fichajes de los empleados
|
|
DateTime dtt_FechaHora_BuscarFichajes_Inicio = new DateTime(dtt_Inicio.Year, dtt_Inicio.Month, dtt_Inicio.Day, tms_Inicio.Hours, tms_Inicio.Minutes, tms_Inicio.Seconds);
|
|
DateTime dtt_FechaHora_BuscarFichajes_Fin = new DateTime(dtt_Fin.Year, dtt_Fin.Month, dtt_Fin.Day, tms_Fin.Hours, tms_Fin.Minutes, tms_Fin.Seconds);
|
|
dtt_FechaHora_BuscarFichajes_Fin = dtt_FechaHora_BuscarFichajes_Fin.AddDays(1);//Se le suma un dia, por si el ultimo dia tiene salto de dia
|
|
lst_KRSS_Fichajes_RangoFechas = g_obj_KRSS_Fichajes_Datos.Obtener_ModeloListado_Por_EmpleadosFechaEmpresa(lst_idEmpleados, dtt_FechaHora_BuscarFichajes_Inicio, dtt_FechaHora_BuscarFichajes_Fin, _lng_idEmpresa);
|
|
|
|
//Rellenar los dias del Listado .............................................................................................
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo = new List<INTERNO_AUX_ConsultaDetalladaJornada_Modelo>();
|
|
|
|
//Recorrer los Empleados
|
|
foreach (INTERNO_KRS_Empleados_Modelo mdl_INTERNO_KRS_Empleados_Modelo in lst_INTERNO_KRS_Empleados_Modelo)
|
|
{
|
|
int_DiasTrabajados = 0;
|
|
int_HorasTeoricas = 0;
|
|
int_MinutosTeoricos = 0;
|
|
|
|
int_HorasReales = 0;
|
|
int_MinutosReales = 0;
|
|
|
|
int_HorasContabilizables = 0;
|
|
int_MinutosContabilizables = 0;
|
|
|
|
int_DiasFetivos = 0;
|
|
g_lst_idPresenciasProgramadas.Clear();
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Clear();
|
|
|
|
//Rellenar las variables de listados .........................................................
|
|
lst_KRS_PresenciasProgramadas = mdl_INTERNO_KRS_Empleados_Modelo.KRS_PresenciasProgramadas != null ? mdl_INTERNO_KRS_Empleados_Modelo.KRS_PresenciasProgramadas.ToList() : new List<KRS_PresenciasProgramadas>();
|
|
lst_KRS_AusenciasProgramadas = mdl_INTERNO_KRS_Empleados_Modelo.KRS_AusenciasProgramadas != null ? mdl_INTERNO_KRS_Empleados_Modelo.KRS_AusenciasProgramadas.ToList() : new List<KRS_AusenciasProgramadas>();
|
|
mdl_KRS_PerfilesCabecera = mdl_INTERNO_KRS_Empleados_Modelo.PerfilesCabecera != null ? mdl_INTERNO_KRS_Empleados_Modelo.PerfilesCabecera : new KRS_PerfilesCabecera();
|
|
if (mdl_KRS_PerfilesCabecera.KRS_PerfilesLinea != null)
|
|
{
|
|
lst_KRS_PerfilesLinea = mdl_KRS_PerfilesCabecera.KRS_PerfilesLinea.ToList();
|
|
}
|
|
if (lst_KRS_DiasFestivos == null)
|
|
{
|
|
lst_KRS_DiasFestivos = new List<KRS_DiasFestivos>();
|
|
}
|
|
if (lst_KRSS_Fichajes_RangoFechas == null)
|
|
{
|
|
lst_KRSS_Fichajes_RangoFechas = new List<KRSS_Fichajes>();
|
|
}
|
|
//...........................................................................................
|
|
|
|
bool bol_Termino = false;
|
|
|
|
//Primero hago las Comprobaciones por si tiene Fecha de Baja ######################################################################
|
|
//Si la fecha de baja no es nula compruebo
|
|
if (mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja != null)
|
|
{
|
|
//Si Tuviera fecha de Baja y fuera inferior a la fecha fin del filtro ponermos la de baja,
|
|
//Sino se deja tal cual
|
|
if (mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja < dtt_Fin)
|
|
{
|
|
dtt_FechaHora_BuscarFichajes_Fin = new DateTime(mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja.Value.Year, mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja.Value.Month, mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja.Value.Day, tms_Fin.Hours, tms_Fin.Minutes, tms_Fin.Seconds);
|
|
}
|
|
else
|
|
{
|
|
dtt_FechaHora_BuscarFichajes_Fin = new DateTime(dtt_Fin.Year, dtt_Fin.Month, dtt_Fin.Day, tms_Fin.Hours, tms_Fin.Minutes, tms_Fin.Seconds);
|
|
}
|
|
|
|
//Si la fecha de baja del empleado fue antes que la del comienzo del ejercicio en el que se encuentra, no muestro nada
|
|
//O si la fecha del filtro es superior a la de baja tampoco muestro nada
|
|
if (mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja < mdl_GEN_EjerciciosActivos_Empresa.temporadaFechaInicio ||
|
|
mdl_INTERNO_KRS_Empleados_Modelo.fechaBaja < dtt_Inicio)
|
|
{
|
|
bol_Termino = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dtt_FechaHora_BuscarFichajes_Fin = new DateTime(dtt_Fin.Year, dtt_Fin.Month, dtt_Fin.Day, tms_Fin.Hours, tms_Fin.Minutes, tms_Fin.Seconds);
|
|
}
|
|
// ############################################################################################################################
|
|
|
|
DateTime dtt_Fecha_Auxiliar = new DateTime(dtt_Inicio.Year, dtt_Inicio.Month, dtt_Inicio.Day);
|
|
List<KRS_JornadasLinea> lst_KRS_JornadasLinea_SaltosEndia = null;
|
|
|
|
decimal dcm_HoraExtrasReales = 0m;
|
|
decimal dcm_HoraExtrasReales_porConvenio = 0m;
|
|
|
|
List<KRS_Empleados_Contratos_CargaDias> lst_KRS_Empleados_Contratos_CargaDias = null;
|
|
KRS_Empleados_Contratos_CargaDias mdl_KRS_Empleados_Contratos_CargaDias = null;
|
|
|
|
while (!bol_Termino)
|
|
{
|
|
//Vaciar Variables
|
|
mdl_KRS_JornadasCabecera = null;
|
|
dtt_HoraCambioDia = new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 23, 59, 59);
|
|
int_TotalSegundos_Reales = 0;
|
|
int_TotalSegundos_Realizados = 0;
|
|
int int_Orden_JornadaLinea = 0;
|
|
lst_KRS_Empleados_Contratos_CargaDias = null;
|
|
mdl_KRS_Empleados_Contratos_CargaDias = null;
|
|
|
|
//Buscar CargaDias
|
|
if (mdl_INTERNO_KRS_Empleados_Modelo.KRS_Empleados_Contratos != null &&
|
|
mdl_INTERNO_KRS_Empleados_Modelo.KRS_Empleados_Contratos.Count > 0)
|
|
{
|
|
//Busco Contrato
|
|
KRS_Empleados_Contratos mdl_KRS_Empleados_Contratos = mdl_INTERNO_KRS_Empleados_Modelo.KRS_Empleados_Contratos.Where(m => m.fechaDesde <= dtt_HoraCambioDia && (m.fechaHasta == null || m.fechaHasta.Value >= dtt_HoraCambioDia)).FirstOrDefault();
|
|
if (mdl_KRS_Empleados_Contratos != null && mdl_KRS_Empleados_Contratos.KRS_Empleados_Contratos_CargaDias != null)
|
|
{
|
|
lst_KRS_Empleados_Contratos_CargaDias = mdl_KRS_Empleados_Contratos.KRS_Empleados_Contratos_CargaDias.ToList();
|
|
}
|
|
}
|
|
|
|
//Tipo de Día
|
|
//Presencia Programada
|
|
if (lst_KRS_PresenciasProgramadas.Exists(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)))
|
|
{
|
|
mdl_KRS_PresenciasProgramadas = lst_KRS_PresenciasProgramadas.Where(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)).FirstOrDefault();
|
|
|
|
|
|
mdl_KRS_JornadasCabecera = mdl_KRS_PresenciasProgramadas.KRS_JornadasCabecera;
|
|
|
|
if (mdl_KRS_PresenciasProgramadas.KRS_PresenciasProgramadasTipos != null)
|
|
{
|
|
if (_lst_INTERNO_ComboBox_Modelo_PRESENCIASPROGRAMADAS.Exists(m => m.Identificador.Equals(mdl_KRS_PresenciasProgramadas.idPresenciaProgramadaTipo.ToString())))
|
|
{
|
|
g_lst_idPresenciasProgramadas.Add(mdl_KRS_PresenciasProgramadas.idPresenciaProgramadaTipo);
|
|
}
|
|
}
|
|
|
|
//Tiempo a realizar
|
|
if (mdl_KRS_JornadasCabecera != null)
|
|
{
|
|
int_HorasTeoricas += mdl_KRS_JornadasCabecera.tiempoTeorico.Hours;
|
|
int_MinutosTeoricos += mdl_KRS_JornadasCabecera.tiempoTeorico.Minutes;
|
|
}
|
|
}
|
|
//Ausencia programada
|
|
else if (lst_KRS_AusenciasProgramadas.Exists(x => x.fechaDesde >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
(
|
|
x.fechaHasta == null
|
|
||
|
|
(
|
|
x.fechaHasta != null &&
|
|
x.fechaHasta.Value <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 23, 59, 59)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
{
|
|
lst_KRS_AusenciasProgramadas_Busqueda = lst_KRS_AusenciasProgramadas.Where(x => x.fechaDesde >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
(
|
|
x.fechaHasta == null
|
|
||
|
|
(
|
|
x.fechaHasta != null &&
|
|
x.fechaHasta.Value <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 23, 59, 59)
|
|
)
|
|
)).ToList();
|
|
|
|
|
|
|
|
|
|
if (lst_KRS_AusenciasProgramadas_Busqueda != null && lst_KRS_AusenciasProgramadas_Busqueda.Count > 0)
|
|
{
|
|
bool bol_HorasTeoricasEntro = false;
|
|
foreach (KRS_AusenciasProgramadas mdl_KRS_AusenciasProgramadas in lst_KRS_AusenciasProgramadas_Busqueda)
|
|
{
|
|
if (mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos != null)
|
|
{
|
|
//Buscar si existe ne le listado de tipos de ausencias la actual
|
|
INTERNO_ComboBox_Modelo mdl_INTERNO_ComboBox_Modelo_Ausencia = _lst_INTERNO_ComboBox_Modelo_AUSENCIASPROGRAMADAS.Where(m => m.Identificador.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo.ToString())).FirstOrDefault();
|
|
if (mdl_INTERNO_ComboBox_Modelo_Ausencia != null)
|
|
{
|
|
//Buscar el Contrato
|
|
if (lst_KRS_Empleados_Contratos_CargaDias != null &&
|
|
lst_KRS_Empleados_Contratos_CargaDias.Count > 0)
|
|
{
|
|
mdl_KRS_Empleados_Contratos_CargaDias = lst_KRS_Empleados_Contratos_CargaDias.Where(m => m.idAusenciaProgramadaTipo == mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo).FirstOrDefault();
|
|
}
|
|
|
|
|
|
//Si tiene un Contrato para ese tipo de Ausencia
|
|
if (mdl_KRS_Empleados_Contratos_CargaDias != null)
|
|
{
|
|
//Tipo horas
|
|
if (mdl_KRS_Empleados_Contratos_CargaDias.horas != null && mdl_KRS_Empleados_Contratos_CargaDias.horas.Value)
|
|
{
|
|
//Si la Ausencia es por horas mirar la jornadaCabera
|
|
if (lst_KRS_PerfilesLinea.Exists(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)))
|
|
{
|
|
mdl_KRS_JornadasCabecera = lst_KRS_PerfilesLinea.Where(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)).FirstOrDefault().KRS_JornadasCabecera;
|
|
|
|
}
|
|
|
|
//Tiempo a realizar
|
|
int int_TotalHoras_ARealizar = 0;
|
|
int int_TotalMinutos_ARealizar = 0;
|
|
if (mdl_KRS_JornadasCabecera != null)
|
|
{
|
|
// Si se pone esto hay que modificar el servicio web
|
|
// int int_TotalHorasAusencia_PorHoras = 0;
|
|
//int int_TotalMinutosAusencia_PorHoras = 0;
|
|
//#region horas y minutos de la Ausencia por horas
|
|
//decimal dcm_TotalHoras_TeoricasASumar = (mdl_KRS_AusenciasProgramadas.totalHoras != null ? mdl_KRS_AusenciasProgramadas.totalHoras.Value : 0m);
|
|
//string[] arr_TotalHoras_TeoricasASumar = dcm_TotalHoras_TeoricasASumar.ToString().Split(',');
|
|
//int_TotalHorasAusencia_PorHoras = int.Parse(arr_TotalHoras_TeoricasASumar[0]);
|
|
//decimal dcm_TotalMinutos_TeoricasASumar = dcm_TotalHoras_TeoricasASumar - int_TotalHorasAusencia_PorHoras;
|
|
//if (dcm_TotalMinutos_TeoricasASumar > 0)
|
|
//{
|
|
// int_TotalMinutosAusencia_PorHoras = int.Parse(Funciones.RedondearDecimal(dcm_TotalMinutos_TeoricasASumar * 60, 0).ToString());
|
|
//}
|
|
//#endregion
|
|
|
|
int_TotalHoras_ARealizar = mdl_KRS_JornadasCabecera.tiempoTeorico.Hours;
|
|
int_TotalMinutos_ARealizar = mdl_KRS_JornadasCabecera.tiempoTeorico.Minutes;
|
|
if (bol_HorasTeoricasEntro == false)
|
|
{
|
|
int_HorasTeoricas += mdl_KRS_JornadasCabecera.tiempoTeorico.Hours;
|
|
int_MinutosTeoricos += mdl_KRS_JornadasCabecera.tiempoTeorico.Minutes;
|
|
|
|
bol_HorasTeoricasEntro = true;
|
|
}
|
|
}
|
|
|
|
decimal dcm_TotalHoras_AUX = (mdl_KRS_AusenciasProgramadas.totalHoras != null ? mdl_KRS_AusenciasProgramadas.totalHoras.Value : 0m);
|
|
//Si la hora desde es 0 y la hasta es 23 se pone en total horas las horas del tiempo teorico
|
|
if ((int_TotalHoras_ARealizar + int_TotalMinutos_ARealizar) > 0 &&
|
|
mdl_KRS_AusenciasProgramadas.fechaDesde.Hour == 0 &&
|
|
mdl_KRS_AusenciasProgramadas.fechaDesde.Minute == 0 &&
|
|
mdl_KRS_AusenciasProgramadas.fechaHasta.Value.Hour == 23 &&
|
|
mdl_KRS_AusenciasProgramadas.fechaHasta.Value.Minute == 59)
|
|
{
|
|
//Buscar el tiempoTeorico para ese dia
|
|
dcm_TotalHoras_AUX = Funciones.RedondearDecimal(decimal.Parse(int_TotalHoras_ARealizar.ToString()), 2) + Funciones.RedondearDecimal(decimal.Parse((int_TotalMinutos_ARealizar > 0 ? (decimal.Parse(int_TotalMinutos_ARealizar.ToString()) / 60m) : 0).ToString()), 2);
|
|
}
|
|
|
|
if (g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Count > 0 &&
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Exists(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo[g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.IndexOf(g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)).FirstOrDefault())].TotalHoras += dcm_TotalHoras_AUX;
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo, mdl_INTERNO_ComboBox_Modelo_Ausencia.Descripcion, 0, dcm_TotalHoras_AUX, mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.contabilizarTiempo));
|
|
}
|
|
|
|
|
|
|
|
}
|
|
//Tipo Dias
|
|
else
|
|
{
|
|
//Dias habiles
|
|
if (mdl_KRS_Empleados_Contratos_CargaDias.tipoDia.Equals(Variables_KairosPRO.G_MDL_TIPODIA_HABIL.Codigo))
|
|
{
|
|
//Obviar Sabados,Domingos y Festivos
|
|
if (lst_KRS_DiasFestivos == null || !lst_KRS_DiasFestivos.Exists(m => m.fechaDesde <= dtt_Fecha_Auxiliar && m.fechaHasta >= dtt_Fecha_Auxiliar))
|
|
{
|
|
if (!dtt_Fecha_Auxiliar.DayOfWeek.Equals(DayOfWeek.Saturday) && !dtt_Fecha_Auxiliar.DayOfWeek.Equals(DayOfWeek.Sunday))
|
|
{
|
|
if (g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Count > 0 &&
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Exists(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo[g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.IndexOf(g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)).FirstOrDefault())].TotalDias += 1;
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo, mdl_INTERNO_ComboBox_Modelo_Ausencia.Descripcion, 1, 0, mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.contabilizarTiempo));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//Dias Laborables
|
|
else if (mdl_KRS_Empleados_Contratos_CargaDias.tipoDia.Equals(Variables_KairosPRO.G_MDL_TIPODIA_LABORABLE.Codigo))
|
|
{
|
|
//Obviar Domingos y Festivos
|
|
if (lst_KRS_DiasFestivos == null || !lst_KRS_DiasFestivos.Exists(m => m.fechaDesde <= dtt_Fecha_Auxiliar && m.fechaHasta >= dtt_Fecha_Auxiliar))
|
|
{
|
|
|
|
if (!dtt_Fecha_Auxiliar.DayOfWeek.Equals(DayOfWeek.Sunday))
|
|
{
|
|
if (g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Count > 0 &&
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Exists(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo[g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.IndexOf(g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)).FirstOrDefault())].TotalDias += 1;
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo, mdl_INTERNO_ComboBox_Modelo_Ausencia.Descripcion, 1, 0, mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.contabilizarTiempo));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//Dias naturales
|
|
else
|
|
{
|
|
if (g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Count > 0 &&
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Exists(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo[g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.IndexOf(g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)).FirstOrDefault())].TotalDias += 1;
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo, mdl_INTERNO_ComboBox_Modelo_Ausencia.Descripcion, 1, 0, mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.contabilizarTiempo));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//Dias naturales
|
|
else
|
|
{
|
|
if (g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Count > 0 &&
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Exists(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo[g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.IndexOf(g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.Equals(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo)).FirstOrDefault())].TotalDias += 1;
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo(mdl_KRS_AusenciasProgramadas.idAusenciaProgramadaTipo, mdl_INTERNO_ComboBox_Modelo_Ausencia.Descripcion, 1, 0, mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.contabilizarTiempo));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
//Dias Festivos
|
|
else if (lst_KRS_DiasFestivos.Exists(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)))
|
|
{
|
|
mdl_KRS_DiasFestivos = lst_KRS_DiasFestivos.Where(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)).FirstOrDefault();
|
|
|
|
int_DiasFetivos += 1;
|
|
}
|
|
//Jornada
|
|
else if (lst_KRS_PerfilesLinea.Exists(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)))
|
|
{
|
|
mdl_KRS_JornadasCabecera = lst_KRS_PerfilesLinea.Where(x => x.fechaDesde <= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0) &&
|
|
x.fechaHasta >= new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0)).FirstOrDefault().KRS_JornadasCabecera;
|
|
|
|
//Tiempo a realizar
|
|
if (mdl_KRS_JornadasCabecera != null)
|
|
{
|
|
int_HorasTeoricas += mdl_KRS_JornadasCabecera.tiempoTeorico.Hours;
|
|
int_MinutosTeoricos += mdl_KRS_JornadasCabecera.tiempoTeorico.Minutes;
|
|
|
|
}
|
|
|
|
}
|
|
//Nada
|
|
else
|
|
{ }
|
|
|
|
//Jornada
|
|
if (mdl_KRS_JornadasCabecera != null)
|
|
{
|
|
//Si la hora de cambio de dia es es mayor que 00:00 se pone ...................
|
|
if (mdl_KRS_JornadasCabecera.horaCambioDia.TotalHours > 0)
|
|
{
|
|
dtt_HoraCambioDia = new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, mdl_KRS_JornadasCabecera.horaCambioDia.Hours, mdl_KRS_JornadasCabecera.horaCambioDia.Minutes, mdl_KRS_JornadasCabecera.horaCambioDia.Seconds);
|
|
}
|
|
|
|
//Ver si tiene JornadaLinea
|
|
if (mdl_KRS_JornadasCabecera.KRS_JornadasLinea != null)
|
|
{
|
|
lst_KRS_JornadasLinea_SaltosEndia = mdl_KRS_JornadasCabecera.KRS_JornadasLinea.Where(m => m.saltaDia != null && m.saltaDia != false).OrderBy(x => x.orden).ToList();
|
|
|
|
if (lst_KRS_JornadasLinea_SaltosEndia != null && lst_KRS_JornadasLinea_SaltosEndia.Count > 0)
|
|
{
|
|
int_Orden_JornadaLinea = lst_KRS_JornadasLinea_SaltosEndia.FirstOrDefault().orden.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Sumar fichajes si los hubiera para ese dia
|
|
DateTime dtt_Fecha_Auxiliar_Fin = new DateTime(dtt_FechaHora_BuscarFichajes_Fin.Year, dtt_FechaHora_BuscarFichajes_Fin.Month, dtt_FechaHora_BuscarFichajes_Fin.Day, tms_Fin.Hours, tms_Fin.Minutes, 0);
|
|
|
|
//Primer salto de día
|
|
DateTime? dtt_SaltoDeDia = null;
|
|
if (lst_KRS_JornadasLinea_SaltosEndia != null && lst_KRS_JornadasLinea_SaltosEndia.Count > 0)
|
|
{
|
|
dtt_SaltoDeDia = new DateTime(dtt_Fecha_Auxiliar.AddDays(+1).Year, dtt_Fecha_Auxiliar.AddDays(+1).Month, dtt_Fecha_Auxiliar.AddDays(+1).Day, lst_KRS_JornadasLinea_SaltosEndia.FirstOrDefault().hora.Hours, lst_KRS_JornadasLinea_SaltosEndia.FirstOrDefault().hora.Minutes, 0);
|
|
dtt_HoraCambioDia = dtt_HoraCambioDia.AddDays(+1);
|
|
|
|
if (dtt_FechaHora_BuscarFichajes_Fin < dtt_SaltoDeDia)
|
|
{
|
|
dtt_Fecha_Auxiliar_Fin = dtt_SaltoDeDia.Value;
|
|
}
|
|
}
|
|
|
|
List<KRSS_Fichajes> lst_KRSS_Fichajes_DelDia = lst_KRSS_Fichajes_RangoFechas.Where(x => ((x.fechaHora >= dtt_Fecha_Auxiliar) &&
|
|
(x.fechaHora <= dtt_Fecha_Auxiliar_Fin)) &&
|
|
(x.anulado == null) &&
|
|
(x.idEmpleado.Equals(mdl_INTERNO_KRS_Empleados_Modelo.id))).ToList();
|
|
|
|
string str_TipoEntradaSalida_QueSeEspera = "E";
|
|
DateTime dtt_FechaHoraEntrada = dtt_Fecha_Auxiliar;
|
|
DateTime dtt_FechaHoraSalida = dtt_Fecha_Auxiliar;
|
|
|
|
//Sumar tiempo efectivo
|
|
List<INTERNO_AUX_TiempoRealizadoEfectivo_Modelo> lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo = null;
|
|
|
|
if (lst_KRSS_Fichajes_DelDia != null && lst_KRSS_Fichajes_DelDia.Count > 0)
|
|
{
|
|
|
|
|
|
int_TotalSegundos_Realizados = 0;
|
|
int_TotalSegundos_Reales = 0;
|
|
lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo = null;
|
|
|
|
//Ver si tiene que contar los minutos, segun el perfil linea si tiene marcado contabilizado para esta hora .........
|
|
if (mdl_KRS_JornadasCabecera != null &&
|
|
mdl_KRS_JornadasCabecera.KRS_JornadasLinea != null &&
|
|
mdl_KRS_JornadasCabecera.KRS_JornadasLinea.Count > 0)
|
|
{
|
|
//Instanciar el Listado
|
|
lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo = new List<INTERNO_AUX_TiempoRealizadoEfectivo_Modelo>();
|
|
|
|
int int_HoraAnterior = -1;
|
|
DateTime dtt_FechaHora_JornadaLinea = DateTime.Now;
|
|
foreach (KRS_JornadasLinea mdl_KRS_JornadasLinea in mdl_KRS_JornadasCabecera.KRS_JornadasLinea)
|
|
{
|
|
dtt_FechaHora_JornadaLinea = new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, mdl_KRS_JornadasLinea.hora.Hours, mdl_KRS_JornadasLinea.hora.Minutes, mdl_KRS_JornadasLinea.hora.Seconds);
|
|
|
|
//Si la Hora anterior es mayor que la hora actual, cambio de dia
|
|
if (int_HoraAnterior > mdl_KRS_JornadasLinea.hora.Hours)
|
|
{
|
|
dtt_FechaHora_JornadaLinea = dtt_FechaHora_JornadaLinea.AddDays(1);
|
|
}
|
|
|
|
int_HoraAnterior = mdl_KRS_JornadasLinea.hora.Hours;
|
|
|
|
//Añadir al Listado
|
|
lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo.Add(new INTERNO_AUX_TiempoRealizadoEfectivo_Modelo(dtt_FechaHora_JornadaLinea, mdl_KRS_JornadasLinea.sumaTiempo));
|
|
}
|
|
}
|
|
//...................................................................................................................
|
|
|
|
//Recorrer los Fichajes del Dia
|
|
foreach (KRSS_Fichajes mdl_KRSS_Fichajes in lst_KRSS_Fichajes_DelDia.OrderBy(m => m.fechaHora))
|
|
{
|
|
if (dtt_HoraCambioDia > mdl_KRSS_Fichajes.fechaHora)
|
|
{
|
|
//Entrada
|
|
if (str_TipoEntradaSalida_QueSeEspera.Equals("E") &&
|
|
mdl_KRSS_Fichajes.entradaSalida.Equals("E"))
|
|
{
|
|
dtt_FechaHoraEntrada = mdl_KRSS_Fichajes.fechaHora;
|
|
|
|
//............................................
|
|
str_TipoEntradaSalida_QueSeEspera = "S";
|
|
}
|
|
//Salida
|
|
else if (str_TipoEntradaSalida_QueSeEspera.Equals("S") &&
|
|
mdl_KRSS_Fichajes.entradaSalida.Equals("S"))
|
|
{
|
|
dtt_FechaHoraSalida = mdl_KRSS_Fichajes.fechaHora;
|
|
|
|
while (dtt_FechaHoraSalida > dtt_FechaHoraEntrada)
|
|
{
|
|
//Contar el tiempo realizado efectivo .........................................
|
|
if (lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo != null)
|
|
{
|
|
for (int int_Contador = 0; int_Contador < lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo.Count; int_Contador++)
|
|
{
|
|
if (lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador].SumaTiempoTeorico)
|
|
{
|
|
//Si estoy en el ultimo no sumo
|
|
if (int_Contador == lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo.Count - 1)
|
|
{
|
|
break;
|
|
}
|
|
else if (dtt_FechaHoraEntrada >= lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador].FechaHora &&
|
|
dtt_FechaHoraEntrada < lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador + 1].FechaHora)
|
|
{
|
|
int_TotalSegundos_Realizados += 60;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//.............................................................................
|
|
|
|
int_TotalSegundos_Reales += 60;
|
|
|
|
dtt_FechaHoraEntrada = dtt_FechaHoraEntrada.AddMinutes(1);
|
|
}
|
|
|
|
//............................................
|
|
str_TipoEntradaSalida_QueSeEspera = "E";
|
|
|
|
//Añado un dia trabajado
|
|
int_DiasTrabajados += 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Si esta esperando salida y no hay ninguna se presupone que se pone la de cambio de dia
|
|
if (str_TipoEntradaSalida_QueSeEspera.Equals("S"))
|
|
{
|
|
dtt_FechaHoraSalida = dtt_HoraCambioDia;
|
|
|
|
while (dtt_FechaHoraSalida > dtt_FechaHoraEntrada)
|
|
{
|
|
//Contar el tiempo realizado efectivo .........................................
|
|
if (lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo != null)
|
|
{
|
|
for (int int_Contador = 0; int_Contador < lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo.Count; int_Contador++)
|
|
{
|
|
if (lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador].SumaTiempoTeorico)
|
|
{
|
|
//Si estoy en el ultimo no sumo
|
|
if (int_Contador == lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo.Count - 1)
|
|
{
|
|
break;
|
|
}
|
|
else if (dtt_FechaHoraEntrada >= lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador].FechaHora &&
|
|
dtt_FechaHoraEntrada < lst_INTERNO_AUX_TiempoRealizadoEfectivo_Modelo[int_Contador + 1].FechaHora)
|
|
{
|
|
int_TotalSegundos_Realizados += 60;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//.............................................................................
|
|
|
|
int_TotalSegundos_Reales += 60;
|
|
|
|
dtt_FechaHoraEntrada = dtt_FechaHoraEntrada.AddMinutes(1);
|
|
}
|
|
|
|
//Añado un dia trabajado
|
|
int_DiasTrabajados += 1;
|
|
}
|
|
}
|
|
|
|
//Tiempo Real ..................................................................................................
|
|
int int_Horas_Real = (int_TotalSegundos_Reales / 3600);
|
|
int int_Minutos_Real = ((int_TotalSegundos_Reales - int_Horas_Real * 3600) / 60);
|
|
|
|
int_HorasReales += int_Horas_Real;
|
|
int_MinutosReales += int_Minutos_Real;
|
|
//...............................................................................................................
|
|
|
|
//Tiempo Realizado Efectivo ..................................................................................................
|
|
int int_Horas_ContabilizablesEfectivas = (int_TotalSegundos_Realizados / 3600);
|
|
int int_Minutos_ContabilizablesEfectivos = ((int_TotalSegundos_Realizados - int_Horas_ContabilizablesEfectivas * 3600) / 60);
|
|
|
|
int_HorasContabilizables += int_Horas_ContabilizablesEfectivas;
|
|
int_MinutosContabilizables += int_Minutos_ContabilizablesEfectivos;
|
|
//...............................................................................................................
|
|
|
|
#region Horas Extras reales
|
|
if (lst_KRSS_Fichajes_DelDia != null && lst_KRSS_Fichajes_DelDia.Count > 0)
|
|
{
|
|
DateTime dtt_FechaSinHoras = new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 0, 0, 0);
|
|
DateTime dtt_Fecha_FinDia = new DateTime(dtt_Fecha_Auxiliar.Year, dtt_Fecha_Auxiliar.Month, dtt_Fecha_Auxiliar.Day, 23, 59, 59);
|
|
|
|
List<KRS_HorasExtrasCalculadasLineas> lst_KRS_KRS_HorasExtrasCalculadasLineas = Funciones_KairosPRO.HorasExtras_CalcularLineas(dtt_FechaSinHoras,
|
|
lst_KRSS_Fichajes_DelDia.Where(m => m.fechaHora >= dtt_FechaSinHoras && m.fechaHora <= dtt_Fecha_FinDia).ToList(),
|
|
lst_KRS_DiasFestivos,
|
|
mdl_INTERNO_KRS_Empleados_Modelo,
|
|
true,
|
|
null,
|
|
(mdl_INTERNO_KRS_Empleados_Modelo.idHoraExtraCabecera != null ? mdl_INTERNO_KRS_Empleados_Modelo.idHoraExtraCabecera.Value : -1),
|
|
0,
|
|
-1,
|
|
""
|
|
);
|
|
|
|
|
|
if (lst_KRS_KRS_HorasExtrasCalculadasLineas != null && lst_KRS_KRS_HorasExtrasCalculadasLineas.Count > 0)
|
|
{
|
|
//horas Reales
|
|
dcm_HoraExtrasReales += lst_KRS_KRS_HorasExtrasCalculadasLineas.Sum(m => m.horasTotalesReales);
|
|
|
|
//horas Reales por convenio
|
|
dcm_HoraExtrasReales_porConvenio += lst_KRS_KRS_HorasExtrasCalculadasLineas.Sum(m => m.horasTotalesCalculadas);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
//Añadir dia
|
|
dtt_Fecha_Auxiliar = dtt_Fecha_Auxiliar.AddDays(1);
|
|
|
|
if (dtt_Fecha_Auxiliar > dtt_Fecha_Auxiliar_Fin)
|
|
{
|
|
bol_Termino = true;
|
|
}
|
|
|
|
}
|
|
|
|
//RESULTADOS ###############################################################################################################
|
|
|
|
#region AusenciasProgramadas
|
|
int int_TotalAuseciasProgramadas_Horas_Contabilizables = 0;
|
|
int int_TotalAuseciasProgramadas_Minutos_Contabilizables = 0;
|
|
int int_TotalAuseciasProgramadas_Horas_NoContabilizables = 0;
|
|
int int_TotalAuseciasProgramadas_Minutos_NoContabilizables = 0;
|
|
foreach (INTERNO_ComboBox_Modelo mdl_INTERNO_ComboBox_Modelo in _lst_INTERNO_ComboBox_Modelo_AUSENCIASPROGRAMADAS)
|
|
{
|
|
INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo = g_lst_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.Where(m => m.IdAusenciaProgramadaTipo.ToString() == mdl_INTERNO_ComboBox_Modelo.Identificador).FirstOrDefault();
|
|
if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo != null)
|
|
{
|
|
|
|
|
|
|
|
|
|
//Si tiene Horas y dias se pone todo como TimeSpan, conviertiendo los dias en horas
|
|
if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalDias > 0 &&
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras > 0)
|
|
{
|
|
string[] arr_HorasMinutosAusenciasProgramadas = mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras.ToString().Split(',');
|
|
int int_HorasAusenciasProgramadas = int.Parse(arr_HorasMinutosAusenciasProgramadas[0]);
|
|
int int_MinutosAusenciasProgramadas = 0;
|
|
decimal dcm_MinutosAusenciasProgramadas = mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras - int_HorasAusenciasProgramadas;
|
|
if (dcm_MinutosAusenciasProgramadas > 0)
|
|
{
|
|
int_MinutosAusenciasProgramadas = int.Parse(Funciones.RedondearDecimal(dcm_MinutosAusenciasProgramadas * 60, 0).ToString());
|
|
}
|
|
|
|
//Sumar los Dias a las horas
|
|
int_HorasAusenciasProgramadas += (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalDias * 24);
|
|
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_AUSENCIASPROGRAMADAS + ": " + mdl_INTERNO_ComboBox_Modelo.Descripcion, string.Format("{0:00}", int_HorasAusenciasProgramadas) + ":" + string.Format("{0:00}", int_MinutosAusenciasProgramadas), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_SOLICITUDESVARIAS.Codigo));
|
|
|
|
if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.ContabilizarTiempo != null &&
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.ContabilizarTiempo.Value)
|
|
{
|
|
int_TotalAuseciasProgramadas_Horas_Contabilizables += int_HorasAusenciasProgramadas;
|
|
int_TotalAuseciasProgramadas_Minutos_Contabilizables += int_MinutosAusenciasProgramadas;
|
|
}
|
|
else
|
|
{
|
|
int_TotalAuseciasProgramadas_Horas_NoContabilizables += int_HorasAusenciasProgramadas;
|
|
int_TotalAuseciasProgramadas_Minutos_NoContabilizables += int_MinutosAusenciasProgramadas;
|
|
}
|
|
|
|
}
|
|
//si solo tiene horas se pone como TimeSpan
|
|
else if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalDias == 0 &&
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras > 0)
|
|
{
|
|
|
|
string[] arr_HorasMinutosAusenciasProgramadas = mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras.ToString().Split(',');
|
|
int int_HorasAusenciasProgramadas = int.Parse(arr_HorasMinutosAusenciasProgramadas[0]);
|
|
int int_MinutosAusenciasProgramadas = 0;
|
|
decimal dcm_MinutosAusenciasProgramadas = mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras - int_HorasAusenciasProgramadas;
|
|
if (dcm_MinutosAusenciasProgramadas > 0)
|
|
{
|
|
int_MinutosAusenciasProgramadas = int.Parse(Funciones.RedondearDecimal(dcm_MinutosAusenciasProgramadas * 60, 0).ToString());
|
|
}
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_AUSENCIASPROGRAMADAS + ": " + mdl_INTERNO_ComboBox_Modelo.Descripcion, string.Format("{0:00}", int_HorasAusenciasProgramadas) + ":" + string.Format("{0:00}", int_MinutosAusenciasProgramadas), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_SOLICITUDESVARIAS.Codigo));
|
|
|
|
if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.ContabilizarTiempo != null &&
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.ContabilizarTiempo.Value)
|
|
{
|
|
int_TotalAuseciasProgramadas_Horas_Contabilizables += int_HorasAusenciasProgramadas;
|
|
int_TotalAuseciasProgramadas_Minutos_Contabilizables += int_MinutosAusenciasProgramadas;
|
|
}
|
|
else
|
|
{
|
|
int_TotalAuseciasProgramadas_Horas_NoContabilizables += int_HorasAusenciasProgramadas;
|
|
int_TotalAuseciasProgramadas_Minutos_NoContabilizables += int_MinutosAusenciasProgramadas;
|
|
}
|
|
|
|
//Restar horas si fueran contabilizables
|
|
//if ()
|
|
//{
|
|
|
|
//}
|
|
}
|
|
//Si solo tiene dias se pone como int
|
|
else if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalDias > 0 &&
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalHoras == 0)
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_AUSENCIASPROGRAMADAS + ": " + mdl_INTERNO_ComboBox_Modelo.Descripcion, mdl_INTERNO_AUX_ConsultaDetalladaJornada_AusenciasProgramadas_Modelo.TotalDias.ToString(), true, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_SOLICITUDESVARIAS.Codigo));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_AUSENCIASPROGRAMADAS + ": " + mdl_INTERNO_ComboBox_Modelo.Descripcion, "0", true, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_SOLICITUDESVARIAS.Codigo));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region PresenciasProgramadas
|
|
int int_Contador_PresenciasProgramadas = 0;
|
|
foreach (INTERNO_ComboBox_Modelo mdl_INTERNO_ComboBox_Modelo in _lst_INTERNO_ComboBox_Modelo_PRESENCIASPROGRAMADAS)
|
|
{
|
|
int_Contador_PresenciasProgramadas = g_lst_idPresenciasProgramadas.Count > 0 ? g_lst_idPresenciasProgramadas.Where(m => m.Equals(Convert.ToUInt32(mdl_INTERNO_ComboBox_Modelo.Identificador))).Count() : 0;
|
|
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_PRESENCIASPROGRAMADAS + ": " + mdl_INTERNO_ComboBox_Modelo.Descripcion, int_Contador_PresenciasProgramadas.ToString(), false, ""));
|
|
}
|
|
#endregion
|
|
|
|
#region DiasFestivos
|
|
if (_bol_DiasFestivos)
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_DIASFESTIVOS, int_DiasFetivos.ToString(), false, ""));
|
|
}
|
|
#endregion
|
|
|
|
#region Dias Trabajados
|
|
if (_lst_INTERNO_ComboBox_Modelo_JORNADA.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_DIASTRABAJADOS.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_DIASTRABAJADOS, int_DiasTrabajados.ToString(), true, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_DIASTRABAJADOS.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Teóricas
|
|
int int_HorasTeoricasCalculadas_deMinutos = int_MinutosTeoricos / 60;//Calculo cuantas horas hay en estos minutos
|
|
int_HorasTeoricas += int_HorasTeoricasCalculadas_deMinutos;//Y se la sumo a las horas calculadas
|
|
|
|
int int_MinutosTeoricosCalculados = int_MinutosTeoricos % 60;//Obtengo los minutos que sobran
|
|
|
|
if (_lst_INTERNO_ComboBox_Modelo_JORNADA.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASTEORICAS.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASTEORICAS, int_HorasTeoricas.ToString() + ":" + string.Format("{0:00}", int_MinutosTeoricosCalculados), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASTEORICAS.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Reales
|
|
int int_HorasRealesCalculadas_deMinutos = int_MinutosReales / 60;//Calculo cuantas horas hay en estos minutos
|
|
int_HorasReales += int_HorasRealesCalculadas_deMinutos;//Y se la sumo a las horas calculadas
|
|
|
|
int int_MinutosRealesCalculados = int_MinutosReales % 60;//Obtengo los minutos que sobran
|
|
|
|
if (_lst_INTERNO_ComboBox_Modelo_JORNADA.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASREALES.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASREALES, int_HorasReales.ToString() + ":" + string.Format("{0:00}", int_MinutosRealesCalculados), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASREALES.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Contabilizables
|
|
int int_MinutosContabilizables_Finales_calculados = (int_MinutosContabilizables + ((int_TotalAuseciasProgramadas_Horas_Contabilizables * 60) + int_TotalAuseciasProgramadas_Minutos_Contabilizables));
|
|
int int_HorasContabilizablesCalculadas_deMinutos = int_MinutosContabilizables_Finales_calculados / 60;//Calculo cuantas horas hay en estos minutos
|
|
int_HorasContabilizables += int_HorasContabilizablesCalculadas_deMinutos;//Y se la sumo a las horas calculadas
|
|
|
|
int int_MinutoscontabilizablesCalculados = int_MinutosContabilizables_Finales_calculados % 60;//Obtengo los minutos que sobran
|
|
|
|
if (_lst_INTERNO_ComboBox_Modelo_JORNADA.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASCONTABILIZABLES.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASCONTABILIZABLES, int_HorasContabilizables.ToString() + ":" + string.Format("{0:00}", int_MinutoscontabilizablesCalculados), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASCONTABILIZABLES.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Saldo
|
|
|
|
int int_Saldo_EnMinutos = (((int_HorasContabilizables * 60) + (int_MinutosContabilizables_Finales_calculados % 60)) - ((int_HorasTeoricas * 60) + (int_MinutosTeoricos % 60)));
|
|
int int_Saldo_Horas_Calculadas = int_Saldo_EnMinutos / 60;
|
|
|
|
int int_Saldo_Minutos_Calculados = int_Saldo_EnMinutos % 60;//Obtengo los minutos que sobran
|
|
|
|
if (_lst_INTERNO_ComboBox_Modelo_JORNADA.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_SALDO.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_SALDO, ((int_Saldo_Minutos_Calculados < 0 && int_Saldo_Horas_Calculadas >= 0) ? "-" : "") + (int_Saldo_Horas_Calculadas).ToString() + ":" + string.Format("{0:00}", (int_Saldo_Minutos_Calculados < 0 ? int_Saldo_Minutos_Calculados * -1 : int_Saldo_Minutos_Calculados)), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_SALDO.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Extras reales
|
|
if (_lst_INTERNO_ComboBox_Modelo_HORASEXTRAS.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_REALES.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_REALES, Funciones_KairosPRO.Convertir_Horas_A_String(dcm_HoraExtrasReales), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASEXTRAS_REALES.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Extras reales por convenio
|
|
if (_lst_INTERNO_ComboBox_Modelo_HORASEXTRAS.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_REALES_CONVENIO.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_REALES_PORCONVENIO, Funciones_KairosPRO.Convertir_Horas_A_String(dcm_HoraExtrasReales_porConvenio), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASEXTRAS_REALES_CONVENIO.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
//HORAS EXTRAS DEL EMPLEADO
|
|
decimal dcm_HorasExtrasReales = 0m;
|
|
decimal dcm_HorasExtrasConvertidas = 0m;
|
|
if (lst_INTERNO_AUX_HorasExtrasTotales_Modelo_AUTORIZADAS_POREMPLEADO != null && lst_INTERNO_AUX_HorasExtrasTotales_Modelo_AUTORIZADAS_POREMPLEADO.Count > 0)
|
|
{
|
|
INTERNO_AUX_HorasExtrasTotales_Modelo mdl_INTERNO_AUX_HorasExtrasTotales_Modelo = lst_INTERNO_AUX_HorasExtrasTotales_Modelo_AUTORIZADAS_POREMPLEADO.Where(m => m.idEmpleado == mdl_INTERNO_KRS_Empleados_Modelo.id).FirstOrDefault();
|
|
if (mdl_INTERNO_AUX_HorasExtrasTotales_Modelo != null)
|
|
{
|
|
dcm_HorasExtrasReales = mdl_INTERNO_AUX_HorasExtrasTotales_Modelo.HorasExtra_Real;
|
|
dcm_HorasExtrasConvertidas = mdl_INTERNO_AUX_HorasExtrasTotales_Modelo.HorasExtra_Convertidas;
|
|
}
|
|
}
|
|
|
|
#region Horas Extras Autorizadas
|
|
string[] arr_Horasreales = dcm_HorasExtrasReales.ToString().Split(',');
|
|
int int_HorasExtras_Real = int.Parse(arr_Horasreales[0]);
|
|
int int_MinutosExtras_Real = 0;
|
|
decimal dcm_HorasExtrasReales_minutos = dcm_HorasExtrasReales - int_HorasExtras_Real;
|
|
if (dcm_HorasExtrasReales_minutos > 0)
|
|
{
|
|
int_MinutosExtras_Real = int.Parse(Funciones.RedondearDecimal(dcm_HorasExtrasReales_minutos * 60, 0).ToString());
|
|
}
|
|
if (_lst_INTERNO_ComboBox_Modelo_HORASEXTRAS.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_AUTORIZADAS.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_AUTORIZADAS, string.Format("{0:00}", int_HorasExtras_Real) + ":" + string.Format("{0:00}", int_MinutosExtras_Real), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASEXTRAS_AUTORIZADAS.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
#region Horas Extras Autorizadas Convenio
|
|
string[] arr_HorasConvertidas = dcm_HorasExtrasConvertidas.ToString().Split(',');
|
|
int int_HorasExtras_Convertidas = int.Parse(arr_HorasConvertidas[0]);
|
|
int int_MinutosExtras_Convertidas = 0;
|
|
decimal dcm_HorasExtrasConvertidas_minutos = dcm_HorasExtrasConvertidas - int_HorasExtras_Convertidas;
|
|
if (dcm_HorasExtrasConvertidas_minutos > 0)
|
|
{
|
|
int_MinutosExtras_Convertidas = int.Parse(Funciones.RedondearDecimal(dcm_HorasExtrasConvertidas_minutos * 60, 0).ToString());
|
|
}
|
|
if (_lst_INTERNO_ComboBox_Modelo_HORASEXTRAS.Exists(m => m.Identificador.Equals(Variables_KairosPRO.G_MDL_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_AUTORIZADAS_CONVENIO.Codigo)))
|
|
{
|
|
g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Add(new INTERNO_AUX_ConsultaDetalladaJornada_Modelo(mdl_INTERNO_KRS_Empleados_Modelo.id, Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_HORASEXTRAS_AUTORIZADAS_CONVENIO, string.Format("{0:00}", int_HorasExtras_Convertidas) + ":" + string.Format("{0:00}", int_MinutosExtras_Convertidas), false, Variables_KairosPRO.G_MDL_CONSULTAEXTERNA_HORASEXTRAS_AUTORIZADAS_CONVENIO.Codigo));
|
|
}
|
|
#endregion
|
|
|
|
//Si existe Horas ExtrasAutorizadas o Horas extras autorizados por convenio, el saldo es 0
|
|
if (dcm_HorasExtrasReales > 0 || dcm_HorasExtrasConvertidas > 0)
|
|
{
|
|
INTERNO_AUX_ConsultaDetalladaJornada_Modelo mdl_INTERNO_AUX_ConsultaDetalladaJornada_Modelo = g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Where(m => m.Descripcion == Variables_KairosPRO.G_STR_CONSULTADETALLADA_PORJORNADAEMPLEADO_SALDO).FirstOrDefault();
|
|
if (mdl_INTERNO_AUX_ConsultaDetalladaJornada_Modelo != null)
|
|
{
|
|
mdl_INTERNO_AUX_ConsultaDetalladaJornada_Modelo.Resultado = "00:00";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
return g_lst_INTERNO_AUX_ConsultaDetalladaJornada_Modelo;
|
|
}*/
|
|
}
|
|
}
|