using Exferia_Aplicacion.General;
using Exferia_Controles;
using Exferia_CRM._1_Datos;
using Exferia_CRM._3_Vistas;
using Exferia_CRM._3_Vistas.F3;
using Exferia_CRM._3_Vistas.Listados;
using Exferia_CRM._3_Vistas.MantenimientoSimple;
using Exferia_CRM.General;
using Exferia_Formularios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_CRM
{
    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;

            Funciones_Listado obj_Funciones_Listado = new Funciones_Listado();

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

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


            //ACCIONES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_Acciones();
            }
            //ACCIONESCABECERA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONESCABECERA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_AccionesCabecera();
            }
            //CAMPANYA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_Campanyas();
            }
            //CLIENTESPOTENCIALES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_ClientesPotenciales();
            }
            //ENCUESTAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_Encuestas();
            }
            //LIQUIDACIONES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRMH_Liquidaciones();
            }
            //MOTIVOSNOVISITA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_MotivosNoVisita();
            }
            //TERMINALES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_CRM_Terminales();
            }

            //#################################################################################################

            //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);
        }

        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
            {
                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    lst_Valores = obj_CRM_Acciones_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ACCIONESCABECERA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONESCABECERA))
                {
                    CRM_AccionesCabecera_Datos obj_CRM_Acciones_Datos = new CRM_AccionesCabecera_Datos();
                    lst_Valores = obj_CRM_Acciones_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CAMPANYA
                else if(_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    lst_Valores = obj_CRM_Campanyas_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    lst_Valores = obj_CRM_ClientesPotenciales_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos = new CRM_Encuestas_Datos();
                    lst_Valores = obj_CRM_Encuestas_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //LIQUIDACIONES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    lst_Valores = obj_CRMH_Liquidaciones_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    lst_Valores = obj_CRM_MotivosNoVisita_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    lst_Valores = obj_CRM_Terminales_Datos.Obtener_Listado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _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_ids)
        {
            dynamic dnm_Valor = null;

            try
            {
                //ACCIONES
                if(_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valor = obj_CRM_Acciones_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //ACCIONESCABECERA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONESCABECERA))
                {
                    CRM_AccionesCabecera_Datos obj_CRM_Acciones_Datos = new CRM_AccionesCabecera_Datos();
                    dnm_Valor = obj_CRM_Acciones_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //CAMPANYA
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valor = obj_CRM_Campanyas_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valor = obj_CRM_ClientesPotenciales_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos = new CRM_Encuestas_Datos();
                    dnm_Valor = obj_CRM_Encuestas_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valor = obj_CRMH_Liquidaciones_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valor = obj_CRM_MotivosNoVisita_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valor = obj_CRM_Terminales_Datos.Obtener_RegistroListado(_lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_CamposConRelacionABuscar, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo, _lng_id, _lst_ids);
                }
            }
            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;

            //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
            {
            }
            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
            {
            }
            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
            {
                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valores = obj_CRM_Acciones_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CAMPANYA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valores = obj_CRM_Campanyas_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valores = obj_CRM_ClientesPotenciales_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos= new CRM_Encuestas_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valores = obj_CRMH_Liquidaciones_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valores = obj_CRM_MotivosNoVisita_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valores = obj_CRM_Terminales_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEjercicioActual,_lng_idEjercicioActual,_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
            {
                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valores = obj_CRM_Acciones_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CAMPANYA
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valores = obj_CRM_Campanyas_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valores = obj_CRM_ClientesPotenciales_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos= new CRM_Encuestas_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valores = obj_CRMH_Liquidaciones_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valores = obj_CRM_MotivosNoVisita_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _lst_INTERNO_Filtro_OpcionPadre_Modelo, _lst_INTERNO_Filtro_Modelo);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valores = obj_CRM_Terminales_Datos.Obtener_F3_PorId(_lng_id, _lng_idEmpresaSeleccionada, _lng_idEjercicioActual, _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;

            //ACCIONES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
            {
                obj_ABS_F3 = new ABS_F3_CRM_Acciones();
            }

            //CAMPANYA
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
            {
                obj_ABS_F3 = new ABS_F3_CRM_Campanyas();
            }
            //CLIENTESPOTENCIALES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
            {
                obj_ABS_F3 = new ABS_F3_CRM_ClientesPotenciales();
            }
            //ENCUESTAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
            {
                obj_ABS_F3 = new ABS_F3_CRM_Encuestas();
            }
            //LIQUIDACION
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
            {

            }
            //MOTIVOSNOVISITA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
            {
                obj_ABS_F3 = new ABS_F3_CRM_MotivosNoVisita();
            }
            //TERMINAL
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
            {
                obj_ABS_F3 = new ABS_F3_CRM_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_RegistroSeleccionado,
                                                    string _str_Campo1_Valor,
                                                    string _str_Campo2_Valor,
                                                    object _obj_Auxiliar,
                                                    List<INTERNO_CampoValor_Modelo> _lst_ListadoArgumentos_ParaMantemiento)
        {


            //ACCIONES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
            {
                P_Acciones frm_P_Acciones = new P_Acciones(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Acciones.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Acciones.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Acciones, _str_Opcion);
            }

            //ACCIONESCABECERA
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONESCABECERA))
            {
                P_AccionesCabecera frm_P_AccionesCabecera = new P_AccionesCabecera(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_AccionesCabecera.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_AccionesCabecera.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_AccionesCabecera, _str_Opcion);
            }
            //CAMPANYA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
            {
                P_Campanyas frm_P_Campanyas = new P_Campanyas(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Campanyas.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Campanyas.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Campanyas, _str_Opcion);
            }
            //CLIENTESPOTENCIALES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
            {
                P_ClientesPotenciales frm_P_ClientesPotenciales = new P_ClientesPotenciales(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_ClientesPotenciales.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_ClientesPotenciales.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_ClientesPotenciales, _str_Opcion);
            }
            //ENCUESTAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
            {
                P_Encuestas frm_P_Encuestas = new P_Encuestas(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Encuestas.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Encuestas.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Encuestas, _str_Opcion);
            }
            //LIQUIDACION
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
            {
                P_Liquidaciones frm_P_Liquidaciones = new P_Liquidaciones(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Liquidaciones.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Liquidaciones.P_Base_Campo_2 = _str_Campo2_Valor;

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

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

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Liquidaciones, _str_Opcion);
            }
            //MOTIVOSNOVISITA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
            {
                P_MantenimientoSimple frm_P_MantenimientoSimple = new P_MantenimientoSimple(new ABS_MantenimientoSimple_CRM_MotivosNoVisita(), _mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto);
                frm_P_MantenimientoSimple.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_MantenimientoSimple.P_Base_Campo_2 = _str_Campo2_Valor;

                Cargar_MantenimientoSimple(_frm_P_Base_Origen, _usc_Exferia_F3_Origen, _mdl_INTERNO_OpcionesDetalle_Modelo, _lng_RegistroSeleccionado, frm_P_MantenimientoSimple, _str_Opcion);
            }
            //TERMINALES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
            {
                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_RegistroSeleccionado > 0)
                {
                    frm_P_Terminales.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Terminales.P_Base_id = _lng_RegistroSeleccionado;
                    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);
            }
            //INFORMES_ALTASCONVERSIONES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_INFORMES_ALTASCONVERSIONES))
            {
                P_Informes_AltasConversiones P_Informes_AltasConversiones = new P_Informes_AltasConversiones(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                P_Informes_AltasConversiones.P_Base_Campo_1 = _str_Campo1_Valor;
                P_Informes_AltasConversiones.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    P_Informes_AltasConversiones.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    P_Informes_AltasConversiones.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }

                //Modificar
                if (_lng_RegistroSeleccionado > 0)
                {
                    P_Informes_AltasConversiones.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    P_Informes_AltasConversiones.P_Base_id = _lng_RegistroSeleccionado;
                    P_Informes_AltasConversiones.P_Base_TipoAperturaPantalla = 1;
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(P_Informes_AltasConversiones, _str_Opcion);
            }
            //INFORMES_TRANSACCIONES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_INFORMES_TRANSACCIONES))
            {
                P_Informes_Transacciones frm_P_Informes_Transacciones = new P_Informes_Transacciones(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Informes_Transacciones.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Informes_Transacciones.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Informes_Transacciones.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Informes_Transacciones.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }

                //Modificar
                if (_lng_RegistroSeleccionado > 0)
                {
                    frm_P_Informes_Transacciones.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Informes_Transacciones.P_Base_id = _lng_RegistroSeleccionado;
                    frm_P_Informes_Transacciones.P_Base_TipoAperturaPantalla = 1;
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Informes_Transacciones, _str_Opcion);
            }
            //INFORMES_VENTAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_INFORMES_VENTAS))
            {
                P_Informes_Ventas frm_P_Informes_Ventas = new P_Informes_Ventas(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);
                frm_P_Informes_Ventas.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Informes_Ventas.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                if (_frm_P_Base_Origen != null)
                {
                    frm_P_Informes_Ventas.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                    frm_P_Informes_Ventas.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                }

                //Modificar
                if (_lng_RegistroSeleccionado > 0)
                {
                    frm_P_Informes_Ventas.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                    frm_P_Informes_Ventas.P_Base_id = _lng_RegistroSeleccionado;
                    frm_P_Informes_Ventas.P_Base_TipoAperturaPantalla = 1;
                }

                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Informes_Ventas, _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_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();
                _frm_P_MantenimientoSimple.P_Base_id = _lng_RegistroSeleccionado;
                _frm_P_MantenimientoSimple.P_Base_TipoAperturaPantalla = 1;
            }
            //Alta
            else
            {
                _frm_P_MantenimientoSimple.P_Base_TipoAperturaPantalla = 0;
                _frm_P_MantenimientoSimple.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper() + " -> Alta";
            }

            Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(_frm_P_MantenimientoSimple, _str_Opcion);
        }

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

            try
            {

                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valores = obj_CRM_Acciones_Datos.Obtener(_lng_id);
                }


                //CAMPANYA
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valores = obj_CRM_Campanyas_Datos.Obtener(_lng_id );
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_Encuestas_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Obtener(_lng_id);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos = new CRM_Encuestas_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Obtener(_lng_id);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valores = obj_CRMH_Liquidaciones_Datos.Obtener(_lng_id);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valores = obj_CRM_MotivosNoVisita_Datos.Obtener(_lng_id);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valores = obj_CRM_Terminales_Datos.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
            {
                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valores = obj_CRM_Acciones_Datos.Grabar(_dnm_Modelo);
                }
                //CAMPANYA
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valores = obj_CRM_Campanyas_Datos.Grabar(_dnm_Modelo);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valores = obj_CRM_ClientesPotenciales_Datos.Grabar(_dnm_Modelo);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos = new CRM_Encuestas_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Grabar(_dnm_Modelo);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valores = obj_CRMH_Liquidaciones_Datos.Grabar(_dnm_Modelo);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valores = obj_CRM_MotivosNoVisita_Datos.Grabar(_dnm_Modelo);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valores = obj_CRM_Terminales_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
            {
                //ACCIONES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ACCIONES))
                {
                    CRM_Acciones_Datos obj_CRM_Acciones_Datos = new CRM_Acciones_Datos();
                    dnm_Valores = obj_CRM_Acciones_Datos.Borrar(_lng_id);
                }
                //CAMPANYA
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CAMPANYA))
                {
                    CRM_Campanyas_Datos obj_CRM_Campanyas_Datos = new CRM_Campanyas_Datos();
                    dnm_Valores = obj_CRM_Campanyas_Datos.Borrar(_lng_id);
                }
                //CLIENTESPOTENCIALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_CLIENTESPOTENCIAL))
                {
                    CRM_ClientesPotenciales_Datos obj_CRM_ClientesPotenciales_Datos = new CRM_ClientesPotenciales_Datos();
                    dnm_Valores = obj_CRM_ClientesPotenciales_Datos.Borrar(_lng_id);
                }
                //ENCUESTAS
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_ENCUESTA))
                {
                    CRM_Encuestas_Datos obj_CRM_Encuestas_Datos= new CRM_Encuestas_Datos();
                    dnm_Valores = obj_CRM_Encuestas_Datos.Borrar(_lng_id);
                }
                //LIQUIDACION
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRMH_LIQUIDACIONES))
                {
                    CRMH_Liquidaciones_Datos obj_CRMH_Liquidaciones_Datos = new CRMH_Liquidaciones_Datos();
                    dnm_Valores = obj_CRMH_Liquidaciones_Datos.Borrar(_lng_id);
                }
                //MOTIVOSNOVISITA
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_MOTIVONOVISITA))
                {
                    CRM_MotivosNoVisita_Datos obj_CRM_MotivosNoVisita_Datos = new CRM_MotivosNoVisita_Datos();
                    dnm_Valores = obj_CRM_MotivosNoVisita_Datos.Borrar(_lng_id);
                }
                //TERMINALES
                else if (_str_Opcion.Equals(Variables.G_STR_OPCION_CRM_TERMINAL))
                {
                    CRM_Terminales_Datos obj_CRM_Terminales_Datos = new CRM_Terminales_Datos();
                    dnm_Valores = obj_CRM_Terminales_Datos.Borrar(_lng_id);
                }
            }
            catch (Control_Errores)
            { }
            catch (Exception)
            { }

            return dnm_Valores;
        }

        private dynamic BORRAR_REGISTRO_POROBJETO(string _str_Opcion, object _mdl_obj)
        {
            dynamic dnm_Valores = null;

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

            return dnm_Valores;
        }
    }
}
