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

namespace Exferia_SistemaGestionAlmacen
{
    public class Opciones
    {
        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);
            ABS_Opciones_Evento_RegistroSeleccionado?.Invoke(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;


            //SOPORTES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
            {
                obj_ABS_Listado_Auxiliar = new ABS_Listado_SGA_Soportes();
            }

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

            //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
            {
                
                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    lst_Valores = obj_SGA_Soportes_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
            {
                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valor = obj_SGA_Soportes_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

        #region F3
        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
            {
                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valores = obj_SGA_Soportes_Datos.Obtener_F3(_str_filtro, _str_CampoBusqueda, _lng_idEmpresaSeleccionada, _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
            {
                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valores = obj_SGA_Soportes_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;

            //SOPORTES
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
            {
                obj_ABS_F3 = new ABS_F3_SGA_Soportes();
            }

            return obj_ABS_F3;
        }

        #endregion

        #region Mantenimiento
        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)
        {
            //INVENTARIOS
            if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_INVENTARIOS))
            {
                P_Visor_Inventario frm_P_Visor_Inventario = new P_Visor_Inventario(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);


                frm_P_Visor_Inventario.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Visor_Inventario.P_Base_Campo_2 = _str_Campo2_Valor;
                frm_P_Visor_Inventario.P_Base_PantallaPadre_IdentificadorTAG = "";
                frm_P_Visor_Inventario.P_Base_PantallaOrigen = _frm_P_Base_Origen;
                frm_P_Visor_Inventario.P_Base_TipoAperturaPantalla = 0;
                frm_P_Visor_Inventario.P_Base_TituloPantalla_CaminoHormigas = _mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento.ToUpper();


                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Visor_Inventario, _str_Opcion);
            }
            //INVENTARIOS_CABECERA
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_INVENTARIOS_CABECERA))
            {
                P_Inventario_Cabecera frm_P_Inventario_Cabecera = new P_Inventario_Cabecera(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);


                frm_P_Inventario_Cabecera.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Inventario_Cabecera.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                frm_P_Inventario_Cabecera.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                frm_P_Inventario_Cabecera.P_Base_PantallaOrigen = _frm_P_Base_Origen;

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


                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Inventario_Cabecera, _str_Opcion);
            }
            //INVENTARIOS_LINEAS
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_INVENTARIOS_LINEAS))
            {
                P_Inventario_Linea frm_P_Inventario_Linea = new P_Inventario_Linea(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);


                frm_P_Inventario_Linea.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Inventario_Linea.P_Base_Campo_2 = _str_Campo2_Valor;

                //Se llamo desde una pantalla
                frm_P_Inventario_Linea.P_Base_PantallaPadre_IdentificadorTAG = _frm_P_Base_Origen.Tag.ToString();
                frm_P_Inventario_Linea.P_Base_PantallaOrigen = _frm_P_Base_Origen;

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


                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Inventario_Linea, _str_Opcion);
            }
            //SOPORTES
            else if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
            {
                P_Soporte frm_P_Soporte = new P_Soporte(_mdl_INTERNO_ValoresGenerales_Modelo, _dtt_FechaPorDefecto, _mdl_INTERNO_OpcionesDetalle_Modelo);


                frm_P_Soporte.P_Base_Campo_1 = _str_Campo1_Valor;
                frm_P_Soporte.P_Base_Campo_2 = _str_Campo2_Valor;

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

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


                Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(frm_P_Soporte, _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);
        }
        #endregion

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

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

            Funciones_PanelPrincipal.Cargar_PantallaEmpotrada(_frm_P_MantenimientoAgrupacionesCabecera, _str_Opcion);
        }

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

            try
            {

                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valores = obj_SGA_Soportes_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
            {
                //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valores = obj_SGA_Soportes_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
            {
                 //SOPORTES
                if (_str_Opcion.Equals(Variables.G_STR_OPCION_SGA_SOPORTES))
                {
                    SGA_Soportes_Datos obj_SGA_Soportes_Datos = new SGA_Soportes_Datos();
                    dnm_Valores = obj_SGA_Soportes_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;
        }

        private dynamic OBTENER_REGISTRO_TEXTBOXBUSQUEDA(string _str_Opcion, string _str_Filtro, string _str_CampoBusqueda, long _lng_idEmpresaSeleccionada, long _lng_idEjercicioActual)
        {
            dynamic dnm_Valor = null;

            try
            {

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

            return dnm_Valor;
        }

        private ABS_TextBox_Busqueda OBTENCION_ABS_TEXTBOXBUSQUEDA(string _str_Opcion)
        {
            ABS_TextBox_Busqueda obj_ABS_TextBox_Busqueda = null;

            return obj_ABS_TextBox_Busqueda;
        }

    }
}
