using Exferia_Aplicacion.General;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.CompilerServices;
using Exferia_Formularios;
using Exferia_Controles;
using Exferia_KairosPRO.General;
using Exferia_KairosPRO._4_Vistas.Listados;
using Exferia_KairosPRO._4_Vistas.F3;
using Exferia_KairosPRO._4_Vistas;
using Exferia_EntityFramework;
using Exferia_General;
using Exferia_Aplicacion.Modelos_Listado_Filtros;
using Exferia_KairosPRO._1_Modelos;
using Exferia_KairosPRO_EF;
using Exferia_KairosPRO._2_Datos;

namespace Exferia_KairosPRO
{
    public class Opciones 
    {
        /// <summary>
        /// Evento que se activa cuando se selecciona un registro
        /// </summary>
        /// 
        public event EventHandler<INTERNO_EventArgs_Listado> ABS_Opciones_Evento_RegistroSeleccionado;
        protected void Evento_RegistroSeleccionado(object sender, INTERNO_EventArgs_Listado e)
        {
            INTERNO_EventArgs_Listado obj_Exferia_EventArgs = new INTERNO_EventArgs_Listado(null, null, e.REGISTRO_SELECCIONADO, null,e.Objeto_Auxiliar,e.Listado_INTERNO_Filtro_OpcionPadre_Modelo,e.CamposValores_ParaMantenimiento);
            EventHandler<INTERNO_EventArgs_Listado> obj_EventHandler = ABS_Opciones_Evento_RegistroSeleccionado;
            if (obj_EventHandler != null)
                obj_EventHandler(this, obj_Exferia_EventArgs);
        }

        #region Listado
        private void CARGAR_LISTADO(string _str_Opcion, 
                                                bool _bol_ListadoSeleccionable, 
                                                int _int_AccionesPermitidas, 
                                                P_Base _frm_P_Base_Origen, 
                                                INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo, 
                                                DateTime _dtt_FechaPorDefecto, 
                                                string _str_SeleccionFiltro_NombreCampo, 
                                                string _str_SeleccionFiltro_Valor, 
                                                bool _bol_SeleccionFiltro_SencibleMayusculasMinusculas, 
                                                bool _bol_SeleccionFiltro_PalabraCompleta, 
                                                List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, 
                                                List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo, 
                                                Dictionary<string, object> _dct_ListadoFiltros,
                                                object _obj_Auxiliar,
                                                object _obj_Filtros_Auxiliar,
                                                ABS_Listado _obj_ABS_Listado)
        {
            //Nombre de la DLL Actual
            string str_Nombre_DLL = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

            bool bol_ValidarCampoEstado = true;

            Funciones_Listado obj_Funciones_Listado = new Funciones_Listado();

            //EVENTOS PUBLICOS
            obj_Funciones_Listado.Funciones_Listado_Evento_RegistroSeleccionado += new EventHandler<INTERNO_EventArgs_Listado>(Evento_RegistroSeleccionado);

            //Datos Variables segun Opcion ###########################################################################
            ABS_Listado obj_ABS_Listado_Auxiliar = null;

            //AusenciasProgramadasTipos
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS)) 
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_AusenciasProgramadasTipos();
            }
            //Configuraciones
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_Configuraciones();
            }
            //ConfiguracionesEmails
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONESEMAILS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_ConfiguracionesEmails();
            }
            //DispositivozModelo
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRSS_DispositivosModelo();
            }
            //Emails
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_Emails();
            }
            //Empleado
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_Empleados();
                _int_AccionesPermitidas = 110;//Permisos para que no pueda añadir
            }
            //EventosTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_EventosTipos();
            }
            //HorasExtrasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_HorasExtrasCabecera();
            }
            //JornadasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_JornadasCabecera();
            }
            //PausasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_PausasTipos();
            }
            //PerfilesCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
            {
                if (_frm_P_Base_Origen==null || !_frm_P_Base_Origen.Name.Equals(nameof(P_Empleado_RellenarPerfil_PorEjercicio)))
                {
                    long lng_idEjercicio = -1;
                    if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null || !_lst_INTERNO_Filtro_OpcionPadre_Modelo.Exists(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.idEjercicio))))
                    {
                        //Instanciar la Variable
                        if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null)
                        {
                            _lst_INTERNO_Filtro_OpcionPadre_Modelo = new List<INTERNO_Filtro_OpcionPadre_Modelo>();
                        }

                        _lst_INTERNO_Filtro_OpcionPadre_Modelo.Add(new INTERNO_Filtro_OpcionPadre_Modelo(nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.idEjercicio), _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id));

                        lng_idEjercicio = _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id;
                    }
                    else
                    {
                        lng_idEjercicio = _lst_INTERNO_Filtro_OpcionPadre_Modelo.Where(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.idEjercicio))).FirstOrDefault().VALOR;
                    }

                    //Ejercicio Filtro pantalla.................................................................................................................................
                    //Instanciar la Variable
                    if (_dct_ListadoFiltros == null)
                    {
                        _dct_ListadoFiltros = new Dictionary<string, object>();
                    }

                    //Fìltrar por el Ejercicio Actual
                    INTERNO_Listado_Filtros_Relacionadas_Modelo mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS = new INTERNO_Listado_Filtros_Relacionadas_Modelo();
                    //CAMPO
                    mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.CAMPO = nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.idEjercicio);
                    //VALOR
                    List<long> lst_Valores = new List<long>();
                    lst_Valores.Add(lng_idEjercicio);
                    mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.ID = lst_Valores;

                    if (_dct_ListadoFiltros.Count > 0 && _dct_ListadoFiltros.ContainsKey(nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.Ejercicio)))
                    {
                        _dct_ListadoFiltros[nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.Ejercicio)] = mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS;
                    }
                    else
                    {
                        _dct_ListadoFiltros.Add(nameof(INTERNO_KRS_PerfilesCabecera_Listado_Modelo.Ejercicio), mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS);
                    }
                    //....................................................................................................................................................
                }

                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_PerfilesCabecera(_mdl_INTERNO_ValoresGenerales_Modelo);
            }
            //PresenciasProgramadasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_PresenciasProgramadasTipos();
            }
            //SOLICITUDESAUSENCIASPROGRAMADAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS))
            {
                long lng_idEjercicio = -1;
                if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null || !_lst_INTERNO_Filtro_OpcionPadre_Modelo.Exists(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.idEjercicio))))
                {
                    //Instanciar la Variable
                    if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null)
                    {
                        _lst_INTERNO_Filtro_OpcionPadre_Modelo = new List<INTERNO_Filtro_OpcionPadre_Modelo>();
                    }

                    _lst_INTERNO_Filtro_OpcionPadre_Modelo.Add(new INTERNO_Filtro_OpcionPadre_Modelo(nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.idEjercicio), _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id));

                    lng_idEjercicio = _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id;
                }
                else
                {
                    lng_idEjercicio = _lst_INTERNO_Filtro_OpcionPadre_Modelo.Where(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.idEjercicio))).FirstOrDefault().VALOR;
                }

                //Ejercicio Filtro pantalla.................................................................................................................................
                //Instanciar la Variable
                if (_dct_ListadoFiltros == null)
                {
                    _dct_ListadoFiltros = new Dictionary<string, object>();
                }

                //Fìltrar por el Ejercicio Actual
                INTERNO_Listado_Filtros_Relacionadas_Modelo mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS = new INTERNO_Listado_Filtros_Relacionadas_Modelo();
                //CAMPO
                mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.CAMPO = nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.idEjercicio);
                //VALOR
                List<long> lst_Valores = new List<long>();
                lst_Valores.Add(lng_idEjercicio);
                mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.ID = lst_Valores;

                if (_dct_ListadoFiltros.Count > 0 && _dct_ListadoFiltros.ContainsKey(nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.Ejercicio)))
                {
                    _dct_ListadoFiltros[nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.Ejercicio)] = mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS;
                }
                else
                {
                    _dct_ListadoFiltros.Add(nameof(INTERNO_KRS_SolicitudesAusenciasProgramadas_Listado_Modelo.Ejercicio), mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS);
                }

                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_SolicitudesAusenciasProgramadas();

                bol_ValidarCampoEstado = false;
            }
            //Terminales
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRS_Terminales();
            }
            //KRS_SOLICITUDHORASEXTRAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS))
            {
                long lng_idEjercicio = -1;
                if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null || !_lst_INTERNO_Filtro_OpcionPadre_Modelo.Exists(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.idEjercicio))))
                {
                    //Instanciar la Variable
                    if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null)
                    {
                        _lst_INTERNO_Filtro_OpcionPadre_Modelo = new List<INTERNO_Filtro_OpcionPadre_Modelo>();
                    }

                    _lst_INTERNO_Filtro_OpcionPadre_Modelo.Add(new INTERNO_Filtro_OpcionPadre_Modelo(nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.idEjercicio), _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id));

                    lng_idEjercicio = _mdl_INTERNO_ValoresGenerales_Modelo.EjercicioActivo.id;
                }
                else
                {
                    lng_idEjercicio = _lst_INTERNO_Filtro_OpcionPadre_Modelo.Where(m => m.NOMBRE_CAMPO.Equals(nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.idEjercicio))).FirstOrDefault().VALOR;
                }

                //Ejercicio Filtro pantalla.................................................................................................................................
                //Instanciar la Variable
                if (_dct_ListadoFiltros == null)
                {
                    _dct_ListadoFiltros = new Dictionary<string, object>();
                }

                //Fìltrar por el Ejercicio Actual
                INTERNO_Listado_Filtros_Relacionadas_Modelo mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS = new INTERNO_Listado_Filtros_Relacionadas_Modelo();
                //CAMPO
                mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.CAMPO = nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.idEjercicio);
                //VALOR
                List<long> lst_Valores = new List<long>();
                lst_Valores.Add(lng_idEjercicio);
                mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS.ID = lst_Valores;

                if (_dct_ListadoFiltros.Count > 0 && _dct_ListadoFiltros.ContainsKey(nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.Ejercicio)))
                {
                    _dct_ListadoFiltros[nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.Ejercicio)] = mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS;
                }
                else
                {
                    _dct_ListadoFiltros.Add(nameof(INTERNO_AUX_SolicitudesHorasExtras_Listado_Modelo.Ejercicio), mdl_INTERNO_Listado_Filtros_Relacionadas_Modelo_FILTROS);
                }

                obj_ABS_Listado_Auxiliar = new ABS_Listado_SolicitudesHorasExtras();

                bol_ValidarCampoEstado = false;
            }
            //##########################################################################################################

            //Llamar a la Funcion general que cargara los datos y generar la pantalla del listado
            obj_Funciones_Listado.Mostrar_Listado(_bol_ListadoSeleccionable,
                                                    _int_AccionesPermitidas,
                                                    _frm_P_Base_Origen,
                                                    _mdl_INTERNO_ValoresGenerales_Modelo,
                                                    _dtt_FechaPorDefecto,
                                                    _str_SeleccionFiltro_NombreCampo,
                                                    _str_SeleccionFiltro_Valor,
                                                    _bol_SeleccionFiltro_SencibleMayusculasMinusculas,
                                                    _bol_SeleccionFiltro_PalabraCompleta,
                                                    str_Nombre_DLL,
                                                    _str_Opcion,
                                                    obj_ABS_Listado_Auxiliar,
                                                    _lst_INTERNO_Filtro_OpcionPadre_Modelo,
                                                    _lst_INTERNO_Filtro_Modelo,
                                                    _dct_ListadoFiltros,
                                                    _obj_Auxiliar,
                                                    bol_ValidarCampoEstado);
        }

        private List<dynamic> OBTENER_LISTADO(string _str_Opcion, 
                                                      long _lng_idEmpresaSeleccionada, 
                                                      long _lng_idEjercicioActual, 
                                                      List<string> _lst_CamposConRelacionABuscar, 
                                                      List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, 
                                                      List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            List<dynamic> lst_Valores = null;

            try
            {
                //AusenciasProgramadasTipos
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                {
                    KRS_AusenciasProgramadasTipos_Datos obj_KRS_AusenciasProgramadasTipos_Datos = new KRS_AusenciasProgramadasTipos_Datos();
                    lst_Valores = obj_KRS_AusenciasProgramadasTipos_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Configuraciones
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
                {
                    KRS_Configuraciones_Datos obj_KRS_Configuraciones_Datos = new KRS_Configuraciones_Datos();
                    lst_Valores = obj_KRS_Configuraciones_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ConfiguracionesEmails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONESEMAILS))
                {
                    KRS_ConfiguracionesEmails_Datos obj_KRS_ConfiguracionesEmails_Datos = new KRS_ConfiguracionesEmails_Datos();
                    lst_Valores = obj_KRS_ConfiguracionesEmails_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //DispositivosModelo
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
                {
                    KRSS_DispositivosModelo_Datos obj_KRSS_DispositivosModelo_Datos = new KRSS_DispositivosModelo_Datos();
                    lst_Valores = obj_KRSS_DispositivosModelo_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Emails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
                {
                    KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
                    lst_Valores = obj_KRS_Emails_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Empleados
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
                    lst_Valores = obj_KRS_Empleados_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //EventosTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
                {
                    KRS_EventosTipos_Datos obj_KRS_EventosTipos_Datos = new KRS_EventosTipos_Datos();
                    lst_Valores = obj_KRS_EventosTipos_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //HorasExtrasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
                {
                    KRS_HorasExtrasCabecera_Datos obj_KRS_HorasExtrasCabecera_Datos = new KRS_HorasExtrasCabecera_Datos();
                    lst_Valores = obj_KRS_HorasExtrasCabecera_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //JornadasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
                {
                    KRS_JornadasCabecera_Datos obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos();
                    lst_Valores = obj_KRS_JornadasCabecera_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PausasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
                {
                    KRS_PausasTipos_Datos obj_KRS_PausasTipos_Datos = new KRS_PausasTipos_Datos();
                    lst_Valores = obj_KRS_PausasTipos_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PerfilesCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
                {
                    KRS_PerfilesCabecera_Datos obj_KRS_PerfilesCabecera_Datos = new KRS_PerfilesCabecera_Datos();
                    lst_Valores = obj_KRS_PerfilesCabecera_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PresenciasProgramadasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                {
                    KRS_PresenciasProgramadasTipos_Datos obj_KRS_PresenciasProgramadasTipos_Datos = new KRS_PresenciasProgramadasTipos_Datos();
                    lst_Valores = obj_KRS_PresenciasProgramadasTipos_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //SOLICITUDESAUSENCIASPROGRAMADAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS))
                {
                    KRS_SolicitudesAusenciasProgramadas_Datos obj_KRS_SolicitudesAusenciasProgramadas_Datos = new KRS_SolicitudesAusenciasProgramadas_Datos();
                    lst_Valores = obj_KRS_SolicitudesAusenciasProgramadas_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Terminales
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
                {
                    KRS_Terminales_Datos obj_KRS_Terminales_Datos = new KRS_Terminales_Datos();
                    lst_Valores = obj_KRS_Terminales_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //SOLICITUDHORASEXTRAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS))
                {
                    AUX_SolicitudesHorasExtras_Datos obj_AUX_SolicitudesHorasExtras_Datos = new AUX_SolicitudesHorasExtras_Datos();
                    lst_Valores = obj_AUX_SolicitudesHorasExtras_Datos.Obtener_Listado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return lst_Valores;
        }

        private dynamic OBTENER_REGISTROSLISTADO(string _str_Opcion, 
                                                         long _lng_idEmpresaSeleccionada, 
                                                         long _lng_idEjercicioActual, 
                                                         List<string> _lst_CamposConRelacionABuscar, 
                                                         List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, 
                                                         List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo, 
                                                         long _lng_id, 
                                                         List<long> _lst_id)
        {
            dynamic dnm_Valor = null;

            try
            {
                //AusenciasProgramadasTipos
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                {
                    KRS_AusenciasProgramadasTipos_Datos obj_KRS_AusenciasProgramadasTipos_Datos = new KRS_AusenciasProgramadasTipos_Datos();
                    dnm_Valor = obj_KRS_AusenciasProgramadasTipos_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo,_lng_id,_lst_id);
                }
                //Configuraciones
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
                {
                    KRS_Configuraciones_Datos obj_KRS_Configuraciones_Datos = new KRS_Configuraciones_Datos();
                    dnm_Valor = obj_KRS_Configuraciones_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //DispositivosModelo
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
                {
                    KRSS_DispositivosModelo_Datos obj_KRSS_DispositivosModelo_Datos = new KRSS_DispositivosModelo_Datos();
                    dnm_Valor = obj_KRSS_DispositivosModelo_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //Emails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
                {
                    KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
                    dnm_Valor = obj_KRS_Emails_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //Empleados
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
                    dnm_Valor = obj_KRS_Empleados_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //EventosTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
                {
                    KRS_EventosTipos_Datos obj_KRS_EventosTipos_Datos = new KRS_EventosTipos_Datos();
                    dnm_Valor = obj_KRS_EventosTipos_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //HorasExtrasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
                {
                    KRS_HorasExtrasCabecera_Datos obj_KRS_HorasExtrasCabecera_Datos = new KRS_HorasExtrasCabecera_Datos();
                    dnm_Valor = obj_KRS_HorasExtrasCabecera_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //JornadasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
                {
                    KRS_JornadasCabecera_Datos obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos();
                    dnm_Valor = obj_KRS_JornadasCabecera_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //PausasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
                {
                    KRS_PausasTipos_Datos obj_KRS_PausasTipos_Datos = new KRS_PausasTipos_Datos();
                    dnm_Valor = obj_KRS_PausasTipos_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //PerfilesCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
                {
                    KRS_PerfilesCabecera_Datos obj_KRS_PerfilesCabecera_Datos = new KRS_PerfilesCabecera_Datos();
                    dnm_Valor = obj_KRS_PerfilesCabecera_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //PresenciasProgramadasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                {
                    KRS_PresenciasProgramadasTipos_Datos obj_KRS_PresenciasProgramadasTipos_Datos = new KRS_PresenciasProgramadasTipos_Datos();
                    dnm_Valor = obj_KRS_PresenciasProgramadasTipos_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //SOLICITUDESAUSENCIASPROGRAMADAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS))
                {
                    KRS_SolicitudesAusenciasProgramadas_Datos obj_KRS_SolicitudesAusenciasProgramadas_Datos = new KRS_SolicitudesAusenciasProgramadas_Datos();
                    dnm_Valor = obj_KRS_SolicitudesAusenciasProgramadas_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //Terminales
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
                {
                    KRS_Terminales_Datos obj_KRS_Terminales_Datos = new KRS_Terminales_Datos();
                    dnm_Valor = obj_KRS_Terminales_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
                //SOLICITUDHORASEXTRAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS))
                {
                    AUX_SolicitudesHorasExtras_Datos obj_AUX_SolicitudesHorasExtras_Datos = new AUX_SolicitudesHorasExtras_Datos();
                    dnm_Valor = obj_AUX_SolicitudesHorasExtras_Datos.Obtener_RegistroListado(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_id);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valor;
        }
        #endregion

        #region Listado Secundario
        private void MOSTRAR_LISTADO_SECUNDARIO(string _str_Opcion,
                                                string _str_idNodoArbolSecundarioSeleccion,
                                                P_Base _frm_P_Base_Origen,
                                                INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo,
                                                DateTime _dtt_FechaPorDefecto,
                                                List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo,
                                                List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo,
                                                Dictionary<string, object> _dct_ListadoFiltros,
                                                object _obj_Auxiliar)
        {
            //Nombre de la DLL Actual
            string str_Nombre_DLL = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

            Funciones_Listado_Secundario obj_Funciones_Listado_Secundario = new Funciones_Listado_Secundario();

            //Datos Variables segun Opcione ###########################################################
            ABS_Listado obj_ABS_Listado_Auxiliar = null;

            //FICHAJES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_FICHAJES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_KRSS_Fichajes();
            }

            //Llamar a la Funcion general que cargara los datos y generar la pantalla del listado
            obj_Funciones_Listado_Secundario.Mostrar_Listado(_frm_P_Base_Origen,
                                                            _str_idNodoArbolSecundarioSeleccion,
                                                            _mdl_INTERNO_ValoresGenerales_Modelo,
                                                            _dtt_FechaPorDefecto,
                                                            str_Nombre_DLL,
                                                            _str_Opcion,
                                                            obj_ABS_Listado_Auxiliar,
                                                            _lst_INTERNO_Filtro_OpcionPadre_Modelo,
                                                            _lst_INTERNO_Filtro_Modelo,
                                                            _dct_ListadoFiltros,
                                                            _obj_Auxiliar);
        }
        private List<dynamic> OBTENER_LISTADO_SECUNDARIO(string _str_Opcion,
                                                           long _lng_idEmpresaSeleccionada,
                                                           long _lng_idEjercicioActual,
                                                           List<string> _lst_CamposConRelacionABuscar,
                                                           List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo,
                                                           List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            List<dynamic> lst_Valores = null;

            try
            {
                //FICHAJES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_FICHAJES))
                {
                    //Agregar la empresa seleccionada para que filtr solo los fichajes de la empresa
                    if (_lst_INTERNO_Filtro_OpcionPadre_Modelo == null)
                    {
                        _lst_INTERNO_Filtro_OpcionPadre_Modelo = new List<INTERNO_Filtro_OpcionPadre_Modelo>();
                    }
                    _lst_INTERNO_Filtro_OpcionPadre_Modelo.Add(new INTERNO_Filtro_OpcionPadre_Modelo(Variables.G_STR_OPCION_GEN_EMPRESA, _lng_idEmpresaSeleccionada));

                    KRSS_Fichajes_Datos obj_KRSS_Fichajes_Datos = new KRSS_Fichajes_Datos();
                    lst_Valores = obj_KRSS_Fichajes_Datos.Obtener_Listado_Secundario(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return lst_Valores;
        }
        private dynamic OBTENER_REGISTROSLISTADO_SECUNDARIO(string _str_Opcion,
                                                        long _lng_idEmpresaSeleccionada,
                                                        long _lng_idEjercicioActual,
                                                        List<string> _lst_CamposConRelacionABuscar,
                                                        List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo,
                                                        List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo,
                                                        long _lng_id,
                                                        List<long> _lst_ids)
        {
            dynamic dnm_Valor = null;

            try
            {
                //FICHAJES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_FICHAJES))
                {
                    KRSS_Fichajes_Datos obj_KRSS_Fichajes_Datos = new KRSS_Fichajes_Datos();
                    dnm_Valor = obj_KRSS_Fichajes_Datos.Obtener_RegistroListado_Secundario(_lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valor;
        }
        #endregion

        private dynamic OBTENER_REGISTRO_F3(string _str_Opcion, 
                                                    string _str_Filtro, 
                                                    string _str_CampoBusqueda, 
                                                    long _lng_idEmpresaSeleccionada, 
                                                    long _lng_idEjercicioActual, 
                                                    List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, 
                                                    List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo,
                                                    object _obj_Filtros_Auxiliar)
        {
            dynamic dnm_Valores = null;

            try
            {
                //AusenciasProgramadasTipos
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                {
                    KRS_AusenciasProgramadasTipos_Datos obj_KRS_AusenciasProgramadasTipos_Datos = new KRS_AusenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_AusenciasProgramadasTipos_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Candelario
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_DIASFESTIVOS))
                {
                    KRS_DiasFestivos_Datos obj_KRS_DiasFestivos_Datos = new KRS_DiasFestivos_Datos();
                    dnm_Valores = obj_KRS_DiasFestivos_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Configuraciones
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
                {
                    KRS_Configuraciones_Datos obj_KRS_Configuraciones_Datos = new KRS_Configuraciones_Datos();
                    dnm_Valores = obj_KRS_Configuraciones_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ConfiguracionesEmails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONESEMAILS))
                {
                    KRS_ConfiguracionesEmails_Datos obj_KRS_ConfiguracionesEmails_Datos = new KRS_ConfiguracionesEmails_Datos();
                    dnm_Valores = obj_KRS_ConfiguracionesEmails_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //DispositivosModelo
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
                {
                    KRSS_DispositivosModelo_Datos obj_KRSS_DispositivosModelo_Datos = new KRSS_DispositivosModelo_Datos();
                    dnm_Valores = obj_KRSS_DispositivosModelo_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Emails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
                {
                    KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
                    dnm_Valores = obj_KRS_Emails_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Empleados
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
                    dnm_Valores = obj_KRS_Empleados_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //EventosTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
                {
                    KRS_EventosTipos_Datos obj_KRS_EventosTipos_Datos = new KRS_EventosTipos_Datos();
                    dnm_Valores = obj_KRS_EventosTipos_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //HorasExtras
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
                {
                    KRS_HorasExtrasCabecera_Datos obj_KRS_HorasExtrasCabecera_Datos = new KRS_HorasExtrasCabecera_Datos();
                    dnm_Valores = obj_KRS_HorasExtrasCabecera_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //JornadasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
                {
                    KRS_JornadasCabecera_Datos obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos();
                    dnm_Valores = obj_KRS_JornadasCabecera_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PausasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
                {
                    KRS_PausasTipos_Datos obj_KRS_PausasTipos_Datos = new KRS_PausasTipos_Datos();
                    dnm_Valores = obj_KRS_PausasTipos_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PerfilesCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
                {
                    KRS_PerfilesCabecera_Datos obj_KRS_PerfilesCabecera_Datos = new KRS_PerfilesCabecera_Datos();
                    dnm_Valores = obj_KRS_PerfilesCabecera_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PresenciasProgramadasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                {
                    KRS_PresenciasProgramadasTipos_Datos obj_KRS_PresenciasProgramadasTipos_Datos = new KRS_PresenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_PresenciasProgramadasTipos_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Terminales
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
                {
                    KRS_Terminales_Datos obj_KRS_Terminales_Datos = new KRS_Terminales_Datos();
                    dnm_Valores = obj_KRS_Terminales_Datos.Obtener_F3(_str_Filtro, _str_CampoBusqueda, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private dynamic OBTENER_REGISTRO_F3_PORID(string _str_Opcion,
                                                          long _lng_id, 
                                                          long _lng_idEmpresaSeleccionada, 
                                                          long _lng_idEjercicioActual, 
                                                          List<INTERNO_Filtro_OpcionPadre_Modelo> _lst_INTERNO_Filtro_OpcionPadre_Modelo, 
                                                          List<INTERNO_Filtro_Modelo> _lst_INTERNO_Filtro_Modelo)
        {
            dynamic dnm_Valores = null;

            try
            {
                //AusenciasProgramadasTipos
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                {
                    KRS_AusenciasProgramadasTipos_Datos obj_KRS_AusenciasProgramadasTipos_Datos = new KRS_AusenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_AusenciasProgramadasTipos_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Candelario
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_DIASFESTIVOS))
                {
                    KRS_DiasFestivos_Datos obj_KRS_DiasFestivos_Datos = new KRS_DiasFestivos_Datos();
                    dnm_Valores = obj_KRS_DiasFestivos_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Configuraciones
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
                {
                    KRS_Configuraciones_Datos obj_KRS_Configuraciones_Datos = new KRS_Configuraciones_Datos();
                    dnm_Valores = obj_KRS_Configuraciones_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ConfiguracionesEmails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONESEMAILS))
                {
                    KRS_ConfiguracionesEmails_Datos obj_KRS_ConfiguracionesEmails_Datos = new KRS_ConfiguracionesEmails_Datos();
                    dnm_Valores = obj_KRS_ConfiguracionesEmails_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //DispositivosModelo
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
                {
                    KRSS_DispositivosModelo_Datos obj_KRSS_DispositivosModelo_Datos = new KRSS_DispositivosModelo_Datos();
                    dnm_Valores = obj_KRSS_DispositivosModelo_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Emails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
                {
                    KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
                    dnm_Valores = obj_KRS_Emails_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Empleados
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
                    dnm_Valores = obj_KRS_Empleados_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //EventosTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
                {
                    KRS_EventosTipos_Datos obj_KRS_EventosTipos_Datos = new KRS_EventosTipos_Datos();
                    dnm_Valores = obj_KRS_EventosTipos_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //HorasExtrasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
                {
                    KRS_HorasExtrasCabecera_Datos obj_KRS_HorasExtrasCabecera_Datos = new KRS_HorasExtrasCabecera_Datos();
                    dnm_Valores = obj_KRS_HorasExtrasCabecera_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //JornadaCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
                {
                    KRS_JornadasCabecera_Datos obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos();
                    dnm_Valores = obj_KRS_JornadasCabecera_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PausasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
                {
                    KRS_PausasTipos_Datos obj_KRS_PausasTipos_Datos = new KRS_PausasTipos_Datos();
                    dnm_Valores = obj_KRS_PausasTipos_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PerfilesCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
                {
                    KRS_PerfilesCabecera_Datos obj_KRS_PerfilesCabecera_Datos = new KRS_PerfilesCabecera_Datos();
                    dnm_Valores = obj_KRS_PerfilesCabecera_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //PresenciasProgramadasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                {
                    KRS_PresenciasProgramadasTipos_Datos obj_KRS_PresenciasProgramadasTipos_Datos = new KRS_PresenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_PresenciasProgramadasTipos_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //Terminales
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
                {
                    KRS_Terminales_Datos obj_KRS_Terminales_Datos = new KRS_Terminales_Datos();
                    dnm_Valores = obj_KRS_Terminales_Datos.Obtener_F3_PorId(_lng_id, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private ABS_F3 OBTENCION_ABS_F3(string _str_Opcion)
        {
            ABS_F3 obj_ABS_F3 = null;

            //AusenciasProgramadasTipos
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
            {
                obj_ABS_F3 = new ABS_F3_KRS_AusenciasProgramadasTipos();
            }
            //ConfiguracionesEmails
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONESEMAILS))
            {
                obj_ABS_F3 = new ABS_F3_KRS_ConfiguracionesEmails();
            }
            //DispositivosModelo
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRSS_DISPOSITIVOSMODELO))
            {
                obj_ABS_F3 = new ABS_F3_KRSS_DispositivosModelo();
            }
            //Empleados
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
            {
                obj_ABS_F3 = new ABS_F3_KRS_Empleados();
            }
            //HorasExtrasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
            {
                obj_ABS_F3 = new ABS_F3_KRS_HorasExtrasCabecera();
            }
            //JornadasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
            {
                obj_ABS_F3 = new ABS_F3_KRS_JornadasCabecera();
            }
            //PausasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
            {
                obj_ABS_F3 = new ABS_F3_KRS_PausasTipos();
            }
            //PerfilesCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
            {
                obj_ABS_F3 = new ABS_F3_KRS_PerfilesCabecera();
            }
            //PresenciasProgramadasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
            {
                obj_ABS_F3 = new ABS_F3_KRS_PresenciasProgramadasTipos();
            }
            //Terminales
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
            {
                obj_ABS_F3 = new ABS_F3_KRS_Terminales();
            }

            return obj_ABS_F3;
        }

        private void MOSTRAR_EN_MANTENIMIENTO(string _str_Opcion, 
                                                   P_Base _frm_P_Base_Origen,
                                                   Exferia_F3 _usc_Exferia_F3_Origen, 
                                                   INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo, 
                                                   DateTime _dtt_FechaPorDefecto, 
                                                   INTERNO_OpcionesDetalle_Modelo _mdl_INTERNO_OpcionesDetalle_Modelo, 
                                                   long _lng_idRegistroSeleccionado, 
                                                   string _str_Campo1_Valor,
                                                   string _str_Campo2_Valor,
                                                   object _obj_Auxiliar,
                                                List<INTERNO_CampoValor_Modelo> _lst_ListadoArgumentos_ParaMantemiento)
        {
            //ArbolJerarquico
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_ARBOLJERARQUICO))
            {
                P_ArbolJerarquico frm_P_ArbolJerarquico = new P_ArbolJerarquico(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
               
                frm_P_ArbolJerarquico.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_ArbolJerarquico.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                frm_P_ArbolJerarquico.P_Base_id = _lng_idRegistroSeleccionado;
                frm_P_ArbolJerarquico.P_Base_TipoAperturaPantalla = 1;
                
                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ArbolJerarquico, _str_Opcion);
            }
            //AusenciasProgramadasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
            {
                P_AusenciasProgramadasTipos frm_P_AusenciasProgramadasTipos = new P_AusenciasProgramadasTipos(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_AusenciasProgramadasTipos.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_AusenciasProgramadasTipos.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_AusenciasProgramadasTipos.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_AusenciasProgramadasTipos.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_AusenciasProgramadasTipos.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_AusenciasProgramadasTipos.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_AusenciasProgramadasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_AusenciasProgramadasTipos.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_AusenciasProgramadasTipos.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_AusenciasProgramadasTipos.P_Base_TipoAperturaPantalla = 0;
                    frm_P_AusenciasProgramadasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_AusenciasProgramadasTipos, _str_Opcion);
            }
            //Calendario
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CALENDARIO))
            {
                P_Calendario frm_P_Calendario = new P_Calendario(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Calendario.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Calendario.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Calendario.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Calendario.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Calendario.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Calendario.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Calendario.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Calendario.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Calendario.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Calendario.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Calendario.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Calendario, _str_Opcion);
            }
            //Configuraciones
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
            {
                P_Configuraciones frm_P_Configuraciones = new P_Configuraciones(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Configuraciones.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Configuraciones.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Configuraciones.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Configuraciones.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Configuraciones.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Configuraciones.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Configuraciones.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Configuraciones.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Configuraciones.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Configuraciones.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Configuraciones.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Configuraciones, _str_Opcion);
            }
            //CONFIGURACIONGENERAL
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONGENERAL))
            {
                P_Configuracion frm_P_Configuracion = new P_Configuracion(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Configuracion.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Configuracion.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Configuracion.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Configuracion.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Configuracion.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Configuracion.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Configuracion.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Configuracion.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Configuracion.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Configuracion.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Configuracion.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Configuracion, _str_Opcion);
            }
            //Emails
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
            {
                P_Emails frm_P_Emails = new P_Emails(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Emails.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Emails.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Emails.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Emails.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Emails.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Emails.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Emails.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Emails.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Emails.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Emails.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Emails.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Emails, _str_Opcion);
            }
            //Empleados
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
            {
                P_Empleado frm_P_Empleado = new P_Empleado(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Empleado.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Empleado.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Empleado.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Empleado.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Empleado.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Empleado.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Empleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Empleado.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Empleado.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Empleado.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Empleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Empleado, _str_Opcion);
            }
            //EventosTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
            {
                P_EventosTipos frm_P_EventosTipos = new P_EventosTipos(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_EventosTipos.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_EventosTipos.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_EventosTipos.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_EventosTipos.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_EventosTipos.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_EventosTipos.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_EventosTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_EventosTipos.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_EventosTipos.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_EventosTipos.P_Base_TipoAperturaPantalla = 0;
                    frm_P_EventosTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_EventosTipos, _str_Opcion);
            }
            //FICHAJESAUTOMATICOS_GENERACION
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_FICHAJESAUTOMATICOS_GENERACION))
            {
                P_FichajesAutomaticos frm_P_FichajesAutomaticos = new P_FichajesAutomaticos(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);

                frm_P_FichajesAutomaticos.P_Base_PantallaPadre_IdentificadorTAG = "";
                frm_P_FichajesAutomaticos.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_FichajesAutomaticos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    
                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_FichajesAutomaticos, _str_Opcion);
            }
            //HorasExtrasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
            {
                P_HorasExtrasCabecera frm_P_HorasExtrasCabecera = new P_HorasExtrasCabecera(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_HorasExtrasCabecera.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_HorasExtrasCabecera.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_HorasExtrasCabecera.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_HorasExtrasCabecera.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_HorasExtrasCabecera.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_HorasExtrasCabecera.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_HorasExtrasCabecera.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_HorasExtrasCabecera.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_HorasExtrasCabecera.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_HorasExtrasCabecera.P_Base_TipoAperturaPantalla = 0;
                    frm_P_HorasExtrasCabecera.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_HorasExtrasCabecera, _str_Opcion);
            }
            //UTILIDADESKAIROS_EXFERIA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_UTILIDADESKAIROS_EXFERIA))
            {
                P_Utilidades_Exferia frm_P_Utilidades = new P_Utilidades_Exferia(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);

                frm_P_Utilidades.P_Base_PantallaPadre_IdentificadorTAG = "";
                frm_P_Utilidades.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                
                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Utilidades, _str_Opcion);
            }
            //ValoresGenerales
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_VALORESGENERALES))
            {
                P_ValoresGenerales frm_P_ValoresGenerales = new P_ValoresGenerales(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_ValoresGenerales.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_ValoresGenerales.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_ValoresGenerales.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_ValoresGenerales.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_ValoresGenerales.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_ValoresGenerales.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_ValoresGenerales.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_ValoresGenerales.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_ValoresGenerales.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_ValoresGenerales.P_Base_TipoAperturaPantalla = 0;
                    frm_P_ValoresGenerales.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ValoresGenerales, _str_Opcion);
            }
            //Incidencias
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRSS_INCIDENCIAS))
            {
                P_Incidencias frm_P_Fichajes = new P_Incidencias(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Fichajes.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Fichajes.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Fichajes.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Fichajes.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Fichajes.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Fichajes.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Fichajes.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Fichajes.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Fichajes.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Fichajes.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Fichajes.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Fichajes, _str_Opcion);
            }
            //CONSULTADETALLADA_POREMPLEADO
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_CONSULTADETALLADA_POREMPLEADO))
            {
                P_ConsultaDetallada_PorEmpleado frm_P_ConsultaDetallada_PorEmpleado = new P_ConsultaDetallada_PorEmpleado(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_ConsultaDetallada_PorEmpleado.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_ConsultaDetallada_PorEmpleado.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_TipoAperturaPantalla = 0;
                    frm_P_ConsultaDetallada_PorEmpleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ConsultaDetallada_PorEmpleado, _str_Opcion);
            }
            //CONSULTADETALLADA_PORDIAEMPLEADO
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_CONSULTADETALLADA_PORDIAEMPLEADO))
            {
                P_ConsultaDetallada_PorDiaEmpleado frm_P_ConsultaDetallada_PorDiaEmpleado = new P_ConsultaDetallada_PorDiaEmpleado(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_TipoAperturaPantalla = 0;
                    frm_P_ConsultaDetallada_PorDiaEmpleado.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ConsultaDetallada_PorDiaEmpleado, _str_Opcion);
            }
            //CONSULTADETALLADA_PORJORNADA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_CONSULTADETALLADA_PORJORNADAEMPLEADO))
            {
                P_ConsultaDetallada_PorJornadaEmpleado frm_P_ConsultaDetallada_PorJornada = new P_ConsultaDetallada_PorJornadaEmpleado(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_ConsultaDetallada_PorJornada.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_ConsultaDetallada_PorJornada.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_ConsultaDetallada_PorJornada.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_ConsultaDetallada_PorJornada.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_ConsultaDetallada_PorJornada.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_ConsultaDetallada_PorJornada.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_ConsultaDetallada_PorJornada.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_ConsultaDetallada_PorJornada.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_ConsultaDetallada_PorJornada.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_ConsultaDetallada_PorJornada.P_Base_TipoAperturaPantalla = 0;
                    frm_P_ConsultaDetallada_PorJornada.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ConsultaDetallada_PorJornada, _str_Opcion);
            }
            //JornadasCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
            {
                P_Jornada frm_P_Jornadas = new P_Jornada(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Jornadas.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Jornadas.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Jornadas.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Jornadas.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Jornadas.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Jornadas.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Jornadas.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Jornadas.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Jornadas.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Jornadas.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Jornadas.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Jornadas, _str_Opcion);
            }
            //PasuasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
            {
                P_PausasTipos frm_P_PausasTipos = new P_PausasTipos(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_PausasTipos.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_PausasTipos.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_PausasTipos.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_PausasTipos.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_PausasTipos.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_PausasTipos.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_PausasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_PausasTipos.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_PausasTipos.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_PausasTipos.P_Base_TipoAperturaPantalla = 0;
                    frm_P_PausasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_PausasTipos, _str_Opcion);
            }
            //PerfilesCabecera
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
            {
                P_Perfil frm_P_Perfil = new P_Perfil(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Perfil.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Perfil.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Perfil.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Perfil.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Perfil.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Perfil.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Perfil.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Perfil.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Perfil.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Perfil.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Perfil.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Perfil, _str_Opcion);
            }
            //PresenciasProgramadasTipos
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
            {
                P_PresenciasProgramadasTipos frm_P_PresenciasProgramadasTipos = new P_PresenciasProgramadasTipos(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_PresenciasProgramadasTipos.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_PresenciasProgramadasTipos.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_PresenciasProgramadasTipos.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_PresenciasProgramadasTipos.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_PresenciasProgramadasTipos.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_PresenciasProgramadasTipos.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_PresenciasProgramadasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_PresenciasProgramadasTipos.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_PresenciasProgramadasTipos.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_PresenciasProgramadasTipos.P_Base_TipoAperturaPantalla = 0;
                    frm_P_PresenciasProgramadasTipos.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_PresenciasProgramadasTipos, _str_Opcion);
            }
            //SOLICITUDESAUSENCIASPROGRAMADAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS))
            {
                P_SolicitudAusenciaProgramada frm_P_SolicitudAusenciaProgramada = new P_SolicitudAusenciaProgramada(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_SolicitudAusenciaProgramada.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_SolicitudAusenciaProgramada.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_SolicitudAusenciaProgramada.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_SolicitudAusenciaProgramada.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_SolicitudAusenciaProgramada.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_SolicitudAusenciaProgramada.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_SolicitudAusenciaProgramada.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_SolicitudAusenciaProgramada.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_SolicitudAusenciaProgramada.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_SolicitudAusenciaProgramada.P_Base_TipoAperturaPantalla = 0;
                    frm_P_SolicitudAusenciaProgramada.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_SolicitudAusenciaProgramada, _str_Opcion);
            }
            //SOLICITUDESAUSENCIASPROGRAMADASCOLORES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADASCOLORES))
            {
                P_SolicitudesAusenciasProgramadasColores frm_P_SolicitudesAusenciasProgramadasColores = new P_SolicitudesAusenciasProgramadasColores(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);

                frm_P_SolicitudesAusenciasProgramadasColores.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_SolicitudesAusenciasProgramadasColores.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                frm_P_SolicitudesAusenciasProgramadasColores.P_Base_id = _lng_idRegistroSeleccionado;
                frm_P_SolicitudesAusenciasProgramadasColores.P_Base_TipoAperturaPantalla = 1;

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_SolicitudesAusenciasProgramadasColores, _str_Opcion);
            }
            //SOLICITUDESAUSENCIASPROGRAMADAS_SUPERVISOR
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS_SUPERVISOR))
            {
                P_SolicitudesAusenciasProgramadas_Supervisor frm_P_SolicitudesAusencias = new P_SolicitudesAusenciasProgramadas_Supervisor(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);

                frm_P_SolicitudesAusencias.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_SolicitudesAusencias.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                frm_P_SolicitudesAusencias.P_Base_id = _lng_idRegistroSeleccionado;
                frm_P_SolicitudesAusencias.P_Base_TipoAperturaPantalla = 1;

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_SolicitudesAusencias, _str_Opcion);
            }
            //Terminales
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
            {
                P_Terminales frm_P_Terminales = new P_Terminales(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Terminales.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Terminales.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Terminales.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Terminales.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_Terminales.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_Terminales.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_Terminales.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Terminales.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_Terminales.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_Terminales.P_Base_TipoAperturaPantalla = 0;
                    frm_P_Terminales.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Terminales, _str_Opcion);
            }
            //SOLICITUDHORASEXTRA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS))
            {
                P_SolicitudHorasExtras frm_P_SolicitudHorasExtras = new P_SolicitudHorasExtras(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_SolicitudHorasExtras.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_SolicitudHorasExtras.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_SolicitudHorasExtras.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_SolicitudHorasExtras.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }
                //Se llamo desde un control F3
                else
                {
                    frm_P_SolicitudHorasExtras.P_Base_PantallaPadre_IdentificadorTAG = "";
                    frm_P_SolicitudHorasExtras.P_Base_F3Origen = _usc_Exferia_F3_Origen;
                }

                //Modificar
                if (_lng_idRegistroSeleccionado > 0)
                {
                    frm_P_SolicitudHorasExtras.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_SolicitudHorasExtras.P_Base_id = _lng_idRegistroSeleccionado;
                    frm_P_SolicitudHorasExtras.P_Base_TipoAperturaPantalla = 1;
                }
                //Alta
                else
                {
                    frm_P_SolicitudHorasExtras.P_Base_TipoAperturaPantalla = 0;
                    frm_P_SolicitudHorasExtras.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_SolicitudHorasExtras, _str_Opcion);
            }
            //SOLICITUDHORASEXTRAS_SUPERVISORES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS_SUPERVISORES))
            {
                P_SolicitudesHorasExtras_Supervisor frm_P_SolicitudesHorasExtras_Supervisor = new P_SolicitudesHorasExtras_Supervisor(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);

                frm_P_SolicitudesHorasExtras_Supervisor.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_SolicitudesHorasExtras_Supervisor.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                frm_P_SolicitudesHorasExtras_Supervisor.P_Base_id = _lng_idRegistroSeleccionado;
                frm_P_SolicitudesHorasExtras_Supervisor.P_Base_TipoAperturaPantalla = 1;

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_SolicitudesHorasExtras_Supervisor, _str_Opcion);
            }
        }

        private void Cargar_MantenimientoSimple(P_Base _frm_P_Base_Origen,
                                                Exferia_F3 _usc_Exferia_F3_Origen,
                                                INTERNO_OpcionesDetalle_Modelo _mdl_INTERNO_OpcionesDetalle_Modelo,
                                                long _lng_RegistroSeleccionado,
                                                P_MantenimientoSimple _frm_P_MantenimientoSimple,
                                                string _str_Opcion)
        {
            if (_frm_P_Base_Origen != null)
            {
                _frm_P_MantenimientoSimple.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                _frm_P_MantenimientoSimple.P_Base_PantallaOrigen = _frm_P_Base_Origen;
            }
            //Se llamo desde un control F3
            else
            {
                _frm_P_MantenimientoSimple.P_Base_PantallaPadre_IdentificadorTAG = "";
                _frm_P_MantenimientoSimple.P_Base_F3Origen = _usc_Exferia_F3_Origen;
            }

            //Modificar
            if (_lng_RegistroSeleccionado > 0)
            {
                _frm_P_MantenimientoSimple.P_Base_id = _lng_RegistroSeleccionado;
                _frm_P_MantenimientoSimple.P_Base_TipoAperturaPantalla = 1;
            }
            //Alta
            else
            {
                _frm_P_MantenimientoSimple.P_Base_TipoAperturaPantalla = 0;
            }

            Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(_frm_P_MantenimientoSimple, _str_Opcion);
        }

        private dynamic OBTENER_REGISTRO(string _str_Opcion, long _lng_id, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual)
        {
            dynamic dnm_Valores = null;

            try
            {
                //NO TENGO MUY CLARO DONDE SE HACE ESTA LLAMADA
                //CREO QUE EL MANTENIMIENTO SIMPLE EFECTUA LA LLAMADA DE ESTE METODO
                ////AusenciasProgramadasTipos
                //if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                //{
                //    KRS_AusenciasProgramadasTipos_Negocio obj_KRS_AusenciasProgramadasTipos_Negocio = new KRS_AusenciasProgramadasTipos_Negocio();
                //    dnm_Valores = obj_KRS_AusenciasProgramadasTipos_Negocio.Obtener(_lng_id);
                //}
                ////PresenciasProgramadas
                //else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                //{
                //    KRS_PresenciasProgramadasTipos_Negocio obj_KRS_PresenciasProgramadasTipos_Negocio = new KRS_PresenciasProgramadasTipos_Negocio();
                //    dnm_Valores = obj_KRS_PresenciasProgramadasTipos_Negocio.Obtener(_lng_id);
                //}
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private dynamic GRABAR_REGISTRO(string _str_Opcion, dynamic _dnm_Modelo)
        {
            dynamic dnm_Valores = null;

            try
            {
                //NO TENGO MUY CLARO DONDE SE HACE ESTA LLAMADA
                //CREO QUE EL MANTENIMIENTO SIMPLE EFECTUA LA LLAMADA DE ESTE METODO
                ////KRS_AusenciasProgramadasTipos
                //if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                //{
                //    KRS_AusenciasProgramadasTipos_Negocio obj_KRS_AusenciasProgramadasTipos_Negocio = new KRS_AusenciasProgramadasTipos_Negocio();
                //    dnm_Valores = obj_KRS_AusenciasProgramadasTipos_Negocio.Grabar(_dnm_Modelo);
                //}
                ////PresenciasProgramadasTipos
                //else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                //{
                //    KRS_PresenciasProgramadasTipos_Negocio obj_KRS_PresenciasProgramadasTipos_Negocio = new KRS_PresenciasProgramadasTipos_Negocio();
                //    dnm_Valores = obj_KRS_PresenciasProgramadasTipos_Negocio.Grabar(_dnm_Modelo);
                //}
                //ValoresGEnerales
                if(_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_VALORESGENERALES))
                {
                    KRS_ValoresGenerales_Datos obj_KRS_ValoresGenerales_Datos = new KRS_ValoresGenerales_Datos();
                    dnm_Valores = obj_KRS_ValoresGenerales_Datos.Grabar(_dnm_Modelo);
                }

            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private dynamic BORRAR_REGISTRO(string _str_Opcion, long _lng_id)
        {
            dynamic dnm_Valores = null;

            try
            {
                //AusenciasProgramadasTipos
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_AUSENCIASPROGRAMADASTIPOS))
                {
                    KRS_AusenciasProgramadasTipos_Datos obj_KRS_AusenciasProgramadasTipos_Datos = new KRS_AusenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_AusenciasProgramadasTipos_Datos.Borrar(_lng_id);
                }
                //Calendario (Dias Festivos)
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_DIASFESTIVOS))
                {
                    KRS_DiasFestivos_Datos obj_KRS_DiasFestivos_Datos = new KRS_DiasFestivos_Datos();
                    dnm_Valores = obj_KRS_DiasFestivos_Datos.Borrar(_lng_id);
                }
                //Configuraciones
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_CONFIGURACIONES))
                {
                    KRS_Configuraciones_Datos obj_KRS_Configuraciones_Datos = new KRS_Configuraciones_Datos();
                    dnm_Valores = obj_KRS_Configuraciones_Datos.Borrar(_lng_id);
                }
                //Emails
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMAILS))
                {
                    KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
                    dnm_Valores = obj_KRS_Emails_Datos.Borrar(_lng_id);
                }
                //Empleados
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
                    dnm_Valores = obj_KRS_Empleados_Datos.Borrar(_lng_id);
                }
                //EventosTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EVENTOSTIPOS))
                {
                    KRS_EventosTipos_Datos obj_KRS_EventosTipos_Datos = new KRS_EventosTipos_Datos();
                    dnm_Valores = obj_KRS_EventosTipos_Datos.Borrar(_lng_id);
                }
                //HorasExtrasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_HORASEXTRASCABECERA))
                {
                    KRS_HorasExtrasCabecera_Datos obj_KRS_HorasExtrasCabecera_Datos = new KRS_HorasExtrasCabecera_Datos();
                    dnm_Valores = obj_KRS_HorasExtrasCabecera_Datos.Borrar(_lng_id);
                }
                //JornadasCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_JORNADASCABECERA))
                {
                    KRS_JornadasCabecera_Datos obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos();
                    dnm_Valores = obj_KRS_JornadasCabecera_Datos.Borrar(_lng_id);
                }
                //PausasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PAUSASTIPOS))
                {
                    KRS_PausasTipos_Datos obj_KRS_PausasTipos_Datos = new KRS_PausasTipos_Datos();
                    dnm_Valores = obj_KRS_PausasTipos_Datos.Borrar(_lng_id);
                }
                //PerfilesCabecera
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PERFILESCABECERA))
                {
                    KRS_PerfilesCabecera_Datos obj_KRS_PerfilesCabecera_Datos = new KRS_PerfilesCabecera_Datos();
                    dnm_Valores = obj_KRS_PerfilesCabecera_Datos.Borrar(_lng_id);
                }
                //PresenciasProgramadasTipos
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_PRESENCIASPROGRAMADASTIPOS))
                {
                    KRS_PresenciasProgramadasTipos_Datos obj_KRS_PresenciasProgramadasTipos_Datos = new KRS_PresenciasProgramadasTipos_Datos();
                    dnm_Valores = obj_KRS_PresenciasProgramadasTipos_Datos.Borrar(_lng_id);
                }
                //SOLICITUDESAUSENCIASPROGRAMADAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_SOLICITUDESAUSENCIASPROGRAMADAS))
                {
                    KRS_SolicitudesAusenciasProgramadas_Datos obj_KRS_SolicitudesAusenciasProgramadas_Datos = new KRS_SolicitudesAusenciasProgramadas_Datos();
                    dnm_Valores = obj_KRS_SolicitudesAusenciasProgramadas_Datos.Borrar(_lng_id);
                }
                //Terminales
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_TERMINALES))
                {
                    KRS_Terminales_Datos obj_KRS_Terminales_Datos = new KRS_Terminales_Datos();
                    dnm_Valores = obj_KRS_Terminales_Datos.Borrar(_lng_id);
                }
                //SOLICITUDHORASEXTRAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_OTROS_KRS_SOLICITUDHORASEXTRAS))
                {
                    KRS_TareasPendientes_Datos obj_KRS_TareasPendientes_Datos = new KRS_TareasPendientes_Datos();
                    dnm_Valores = obj_KRS_TareasPendientes_Datos.Borrar_SolicitudHorasExtras(Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO,_lng_id);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private dynamic BORRAR_REGISTRO_POROBJETO(string _str_Opcion, object _mdl_obj)
        {
            throw new NotImplementedException();
        }

        private dynamic OBTENER_REGISTRO_TEXTBOXBUSQUEDA(string _str_Opcion, string _str_Filtro, string _str_CampoBusqueda, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual)
        {
            throw new NotImplementedException();
        }

        private ABS_TextBox_Busqueda OBTENCION_ABS_TEXTBOXBUSQUEDA(string _str_Opcion)
        {
            throw new NotImplementedException();
        }

        #region Procesos

        private void Proceso_Biometria_Traspaso(string _str_Opcion,
                                               P_Base _frm_P_Base_Origen,
                                               INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo,
                                               DateTime _dtt_FechaPorDefecto,
                                               List<dynamic> _lst_ids)
        {
            try
            {
                //Comprobamos si hay registros seleccionados antes de nada
                if (_lst_ids != null && _lst_ids.Count > 0)
                {
                    //KRS_EMPLEADOS
                    if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                    {
                        try
                        {
                            INTERNO_OpcionesDetalle_Modelo mdl_INTERNO_OpcionesDetalle_Modelo = Datos_Generales.PRV_Opciones_Buscar_Detalles(Variables.G_STR_OPCION_KRS_EMPLEADOS);//Cambiar por la del proceso en cuestión

                            //Instanciar el Formulario del traspaso
                            P_Empleados_Procesos_TraspasoBiometria frm_P_Empleados_Procesos_BiometriaTraspaso = new P_Empleados_Procesos_TraspasoBiometria(Variables.G_STR_OPCION_KRS_EMPLEADOS,
                                                                                                                                                           _mdl_INTERNO_ValoresGenerales_Modelo,
                                                                                                                                                           _dtt_FechaPorDefecto,
                                                                                                                                                           mdl_INTERNO_OpcionesDetalle_Modelo,
                                                                                                                                                           _lst_ids != null ? _lst_ids.Cast<long>().ToList() : null);

                            frm_P_Empleados_Procesos_BiometriaTraspaso.P_Base_TituloPantalla_CaminoHormigas = mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloListado.ToUpper();
                            frm_P_Empleados_Procesos_BiometriaTraspaso.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                            if (_frm_P_Base_Origen != null)
                            {
                                frm_P_Empleados_Procesos_BiometriaTraspaso.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                            }

                            //Muestra la pantalla empotrada
                            Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Empleados_Procesos_BiometriaTraspaso, _str_Opcion);
                        }
                        catch (Exception)
                        { }
                    }
                }
                else
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_KAIROSPRO_EMPLEADOS_NOSELECCIONADO());
                }
            }
            catch(Control_Errores)
            { }
            catch (Exception)
            { }
        }
        #endregion

        #region Copiar
        private void OTROS_KRS_EMPLEADO_RELLENARPERFILPOREJERCICIO(string _str_Opcion,
                                                                    P_Base _frm_P_Base_Origen,
                                                                    INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo,
                                                                    DateTime _dtt_FechaPorDefecto,
                                                                    List<dynamic> _lst_FilaSelecionadas)
        {
            try
            {


                //EMPLEADOS
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_KRS_EMPLEADOS))
                {
                    try
                    {
                        INTERNO_OpcionesDetalle_Modelo mdl_INTERNO_OpcionesDetalle_Modelo = Datos_Generales.PRV_Opciones_Buscar_Detalles(Variables.G_STR_OPCION_OTROS_KRS_EMPLEADO_RELLENARPERFILPOREJERCICIO);

                        P_Empleado_RellenarPerfil_PorEjercicio frm_P_Empleado_RellenarPerfil_PorEjercicio = new P_Empleado_RellenarPerfil_PorEjercicio(Variables.G_STR_OPCION_OTROS_KRS_EMPLEADO_RELLENARPERFILPOREJERCICIO,
                                                                                                                                                       _mdl_INTERNO_ValoresGenerales_Modelo,
                                                                                                                                                       _dtt_FechaPorDefecto,
                                                                                                                                                       mdl_INTERNO_OpcionesDetalle_Modelo,
                                                                                                                                                       _lst_FilaSelecionadas != null ? _lst_FilaSelecionadas.Cast<dynamic>().ToList() : null);

                        frm_P_Empleado_RellenarPerfil_PorEjercicio.P_Base_TituloPantalla_CaminoHormigas = mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloListado.ToUpper();
                        frm_P_Empleado_RellenarPerfil_PorEjercicio.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                        frm_P_Empleado_RellenarPerfil_PorEjercicio.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();

                        //Muestra la pantalla empotrada
                        Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Empleado_RellenarPerfil_PorEjercicio, _str_Opcion);
                    }
                    catch (Exception)
                    { }
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }
        }
        #endregion

    }
}
