using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Modelos_Generales;
using Exferia_Aplicacion.Modelos_ServiciosWeb;
using Exferia_EntityFramework;
using Exferia_Formularios;
using Exferia_General._0_Modelos;
using Exferia_General._3_Vistas.ControlesPersonalizados_DentroPaneles;
using Exferia_General._3_Vistas.Listados;
using Exferia_General._3_Vistas.ListadosSeleccion;
using Exferia_General.General;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Transactions;
using System.Windows.Forms;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_General._3_Vistas.Controladoras
{
    public class P_LicenciasProductos_Controladora
    {
        #region Variables Generales
        private P_LicenciasProductos g_frm_P_LicenciasProductos = null;//Variable que enlaza con la pantalla asociada
        private PE_Esperando g_frm_PE_Esperando = null;

        private BackgroundWorker g_obj_TareaAsincrona_ValidarLicencia = null;

        #region Productos
        private int g_int_NumeroLineas_Productos = 0;
        private List<int> g_Array_ListadoLineas_Productos = new List<int>();
        private int g_int_Productos_PosicionY = 5;
        #endregion
        #endregion

        #region Contructor
        public P_LicenciasProductos_Controladora(P_LicenciasProductos _frm_P_LicenciasProductos)
        {
            g_frm_P_LicenciasProductos = _frm_P_LicenciasProductos;

        }
        #endregion

        public void Cargar_Datos()
        {
            try
            {
                if (Variables.G_MDL_LICENCIA_VALIDADA!=null)
                {
                    //vaciar datos
                    g_int_NumeroLineas_Productos = 0;
                    g_Array_ListadoLineas_Productos = new List<int>();
                    g_int_Productos_PosicionY = 5;
                    g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Controls.Clear();


                    DateTime dtt_FechaConsideradaNula = new DateTime(1900, 1, 1);
                    DateTime? dtt_FechaNula = null;
                    int? int_CantidadNula = null;

                    //Cliente
                    g_frm_P_LicenciasProductos.Exferia_Label_SinColor_Cliente.Text ="(" + Variables.G_MDL_LICENCIA_VALIDADA.idCliente.ToString() + ") " + Variables.G_MDL_LICENCIA_VALIDADA.ClienteRazonSocial;

                    //Numero Licencia
                    g_frm_P_LicenciasProductos.Exferia_Label_SinColor_NumeroLicencia.Text = "".PadRight(Variables.G_MDL_LICENCIA_VALIDADA.numeroLicencia.Length - 5, '#') + (Variables.G_MDL_LICENCIA_VALIDADA.numeroLicencia.Substring(Variables.G_MDL_LICENCIA_VALIDADA.numeroLicencia.Length - 5, 5));

                    #region AGENDA
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_AGENDA = Variables.G_INTERNO_LicenciasProductos_Modelo_AGENDA;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_AGENDA.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_AGENDA.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_AGENDA.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_AGENDA.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_AGENDA.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_AGENDA.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_AGENDA.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_AGENDA);
                    #endregion

                    #region CONTRATOS PUBLICOS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS = Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONCONTRATOSPUBLICOS;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONCONTRATOSPUBLICOS.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTCONTRATOSPUBLICOS.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTCONTRATOSPUBLICOS);
                    #endregion

                    #region CONTROL DE GASTOS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS = Variables.G_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CONTROLGASTOS.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_CONTROLGASTOS);
                    #endregion

                    #region CRM
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_CRM = Variables.G_INTERNO_LicenciasProductos_Modelo_CRM;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_CRM.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_CRM.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_CRM.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_CRM.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_CRM.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_CRM.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_CRM.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_CRM);
                    #endregion

                    #region ERP
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP = Variables.G_INTERNO_LicenciasProductos_Modelo_SIGMAERP;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAERP.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_SIGMAERP);
                    #endregion

                    #region GESTION DOCUMENTAL
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL = Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDOCUMENTAL.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDOCUMENTAL);
                    #endregion

                    #region GESTION DE EXPEDIENTES
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES = Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONDEEXPEDIENTES.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_GESTIONDEEXPEDIENTES);
                    #endregion

                    #region GESTION DE TASAS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS = Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_GESTIONTASAS.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_GESTIONTASAS);
                    #endregion

                    #region HERMES
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_HERMES = Variables.G_INTERNO_LicenciasProductos_Modelo_HERMES;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_HERMES.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_HERMES.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_HERMES.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_HERMES.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_HERMES.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HERMES.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_HERMES.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_HERMES);
                    #endregion

                    #region HPV
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA = Variables.G_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_HOTELPUNTOVENTA.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_HOTELPUNTOVENTA);
                    #endregion

                    #region KAIROS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO = Variables.G_INTERNO_LicenciasProductos_Modelo_KAIROSPRO;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KAIROSPRO.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_KAIROSPRO);
                    #endregion

                    #region KRONOS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_KRONOS = Variables.G_INTERNO_LicenciasProductos_Modelo_KRONOS;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_KRONOS.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_KRONOS.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_KRONOS.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_KRONOS.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_KRONOS.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_KRONOS.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_KRONOS.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_KRONOS);
                    #endregion

                    #region MYTHOS
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS = Variables.G_INTERNO_LicenciasProductos_Modelo_MYTHOS;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_MYTHOS.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_MYTHOS.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_MYTHOS);
                    #endregion

                    #region SIGMAMOBILE
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE = Variables.G_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SIGMAMOBILE.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_SIGMAMOBILE);
                    #endregion

                    #region SISTEMAGESTIONALMACEN
                    INTERNO_LicenciasProductos_Modelo mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN = Variables.G_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN;

                    INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN = Variables.G_MDL_LICENCIA_VALIDADA.ProductosFechas.Where(m => m.idProducto.Equals(Variables.G_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Producto_Id)).FirstOrDefault();
                    if (mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN != null)
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Producto_Adquirido = true;

                        //datos de la Licencia
                        mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Fecha_Inicio = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.fechaInicio > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.fechaInicio : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Fecha_Fin = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.fechaValidez > dtt_FechaConsideradaNula ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.fechaValidez : dtt_FechaNula;
                        mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Cantidad = mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.cantidad > 0 ? mdl_INTERNO_ServicioWeb_Licencia_ProductoFechas_Modelo_SISTEMAGESTIONALMACEN.cantidad : int_CantidadNula;
                    }
                    else
                    {
                        mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN.Producto_Adquirido = false;
                    }

                    //Crear Linea
                    Crear_Producto_Linea(mdl_INTERNO_LicenciasProductos_Modelo_SISTEMAGESTIONALMACEN);
                    #endregion

                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_LicenciasProductos_Controladora) + "/" + nameof(Cargar_Datos));
            }
        }

        #region Productos
        public void Crear_Producto_Linea(INTERNO_LicenciasProductos_Modelo _mdl_INTERNO_LicenciasProductos_Modelo)
        {
            try
            {
                //Añadir control creado en subproceso en el hilo principal ...................................
                if (g_frm_P_LicenciasProductos.InvokeRequired)
                {
                    g_frm_P_LicenciasProductos.Invoke((MethodInvoker)delegate
                    {
                        Crear_Producto_Linea(_mdl_INTERNO_LicenciasProductos_Modelo);
                    });
                    return;
                }

                g_int_NumeroLineas_Productos += 1;

                //Calcular tamaño del panel ##################
                int int_AnchopanelPrincipal = (712 * g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Width) / 722;
                if (g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Controls != null && g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Controls.Count > 0 && g_Array_ListadoLineas_Productos.Count > 0)
                {
                    int_AnchopanelPrincipal = g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Controls.Find("controlusuarios_CTU_P_LicenciasProdutos_Productos" + g_Array_ListadoLineas_Productos[0], false).FirstOrDefault().Width;
                }

                //Objeto Personalizado
                CTU_P_LicenciasProdutos_Productos controlusuarios_CTU_P_LicenciasProdutos_Productos = new CTU_P_LicenciasProdutos_Productos(_mdl_INTERNO_LicenciasProductos_Modelo, g_int_NumeroLineas_Productos);
                controlusuarios_CTU_P_LicenciasProdutos_Productos.Name = "controlusuarios_CTU_P_LicenciasProdutos_Productos" + g_int_NumeroLineas_Productos;
                controlusuarios_CTU_P_LicenciasProdutos_Productos.Size = new Size(int_AnchopanelPrincipal, 137);
                controlusuarios_CTU_P_LicenciasProdutos_Productos.Location = new Point(5, g_int_Productos_PosicionY);
                controlusuarios_CTU_P_LicenciasProdutos_Productos.Anchor = (AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
              
                //Añadir al panel principal
                g_frm_P_LicenciasProductos.Exferia_Panel_Degradado_ProductosLineas.Controls.Add(controlusuarios_CTU_P_LicenciasProdutos_Productos);
                g_Array_ListadoLineas_Productos.Add(g_int_NumeroLineas_Productos);

                //Sumar el alto
                g_int_Productos_PosicionY += 137 + 5;
            }
            catch(Exception ex)
            {
                Control_Errores.Errores_Log("",ex,nameof(P_LicenciasProductos_Controladora) + "/" + nameof(Crear_Producto_Linea));
            }
        }
        #endregion

        #region Tarea Asincrona Validacion de la Licencia
        private bool g_bol_Recargar_Arbol = false;
        public void ValidarLicencia()
        {
            try
            {
                g_frm_PE_Esperando = new PE_Esperando();
                

                // Si la tarea asincrona esta en marcha la paro
                if (g_obj_TareaAsincrona_ValidarLicencia != null)
                {
                    while (g_obj_TareaAsincrona_ValidarLicencia.IsBusy)
                        Application.DoEvents();
                }
                else
                {
                    g_obj_TareaAsincrona_ValidarLicencia = new BackgroundWorker();
                    g_obj_TareaAsincrona_ValidarLicencia.DoWork += new DoWorkEventHandler(TareaAsincrona_ValidacionLicencia_DoWork);
                    g_obj_TareaAsincrona_ValidarLicencia.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TareaAsincrona_ValidacionLicencia_Completed);
                    g_obj_TareaAsincrona_ValidarLicencia.WorkerReportsProgress = false;
                }

                //(Tarea Asincrona) Cargar Datos ##################################################################
                g_obj_TareaAsincrona_ValidarLicencia.RunWorkerAsync();
                //#################################################################################################

                g_frm_PE_Esperando.ShowDialog();
            }
            catch (Exception ex)
            {
                if (g_frm_PE_Esperando != null)
                {
                    g_frm_PE_Esperando.Close();
                    g_frm_PE_Esperando = null;
                }

                Control_Errores.Errores_Log("", ex, nameof(P_LicenciasProductos_Controladora) + "/" + nameof(ValidarLicencia));
            }
        }

        private void TareaAsincrona_ValidacionLicencia_DoWork(object sender, DoWorkEventArgs e)
        {
            INTERNO_ServicioWeb_Licencia_Modelo mdl_INTERNO_ServicioWeb_Licencia_Modelo = new INTERNO_ServicioWeb_Licencia_Modelo();
            mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta = Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR;

            try
            {
                //Llama al Servicio Web para Actualizar
                //Cargamos el ensamblado #########################################################################################################################################################################
                Assembly m_assembly_1 = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_SERVICIOWEB + ".dll");
                //Obtenemos el tipo de la clase
                Type m_type_1 = m_assembly_1.GetType("" + Variables.G_STR_LIBRERIA_SERVICIOWEB + "." + Variables.G_STR_LIBRERIA_DATOSSERVICIOWEB);
                //creamos la instancia
                var obj_Clase_1 = Activator.CreateInstance(m_type_1);
                //Cargamos el metodo solicitado
                MethodInfo obj_MethodInfo_1 = obj_Clase_1.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSSERVICIOWEB_PROCEDIMIENTO_VALIDAR_LICENCIA, BindingFlags.Instance | BindingFlags.NonPublic);

                //Obtener valores
                object[] arr_Parametros_1 = {   Variables.G_MDL_LICENCIA_VALIDADA.idCliente,
                                                Variables.G_MDL_LICENCIA_VALIDADA.numeroLicencia
                                            };

                //Pasamos los parametros al metodo y lo ejecutamos
                mdl_INTERNO_ServicioWeb_Licencia_Modelo = (INTERNO_ServicioWeb_Licencia_Modelo)obj_MethodInfo_1.Invoke(obj_Clase_1, arr_Parametros_1);
                //##################################################################################################################################################################################################


                //Esta validado correctamente
                if (mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta.Equals(Variables.G_INT_VALIDARLICENCIA_RESPUESTA_NUMEROLICENCIA_CORRECTO))
                {
                    //Actulizar variables validacion de licencia
                    Variables.G_MDL_LICENCIA_VALIDADA = mdl_INTERNO_ServicioWeb_Licencia_Modelo;
                    Funciones_FicherosXML.CrearDocumentoXML_Licencia(Variables.G_MDL_LICENCIA_VALIDADA);

                    g_bol_Recargar_Arbol=Datos_Generales.PRV_OpcionesDisponiblesParaCliente_Actualizar_Segun_ProductosLicenciasFechas();
                    Datos_Generales.PRV_Productos_Cargar();
                }
            }
            catch (ThreadAbortException ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_LicenciasProductos_Controladora) + "" + nameof(TareaAsincrona_ValidacionLicencia_DoWork));
                mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta = Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR_TAREAASINCRONA;
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta = Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR_TAREAASINCRONA;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_LicenciasProductos_Controladora) + "" + nameof(TareaAsincrona_ValidacionLicencia_DoWork));
                mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta = Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR_TAREAASINCRONA;
            }
            finally
            {
                e.Result = mdl_INTERNO_ServicioWeb_Licencia_Modelo;
            }
        }
        private void TareaAsincrona_ValidacionLicencia_Completed(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                if (g_frm_PE_Esperando != null)
                {
                    g_frm_PE_Esperando.Close();
                    g_frm_PE_Esperando = null;
                }

                INTERNO_ServicioWeb_Licencia_Modelo mdl_INTERNO_ServicioWeb_Licencia_Modelo = (INTERNO_ServicioWeb_Licencia_Modelo)e.Result;

                // Hubo un Error en tarea Asincrna
                if (mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta.Equals(Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR_TAREAASINCRONA))
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_LICENCIA_ERROR_TAREAASINCRONA);
                }
                // Hubo un Error 
                else if (mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta.Equals(Variables.G_INT_VALIDARLICENCIA_RESPUESTA_ERROR))
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_LICENCIA_ERROR_SERVICIO);
                }
                else if (mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta.Equals(Variables.G_INT_VALIDARLICENCIA_RESPUESTA_NUMEROLICENCIA_INCORRECTO))
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_LICENCIA_VALIDACIONES_LICENCIANOEXISTE);
                }
                else if (mdl_INTERNO_ServicioWeb_Licencia_Modelo.respuesta.Equals(Variables.G_INT_VALIDARLICENCIA_RESPUESTA_NUMEROLICENCIA_CORRECTO))
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_LICENCIA_VALIDACIONES_LICENCIAVALIDADACORRECTAMENTE);

                    Variables.G_OBJ_CONTROLADORA_PANTALLAPRINCIPAL.Mostrar_DatosLicencia();

                    if (g_bol_Recargar_Arbol)
                    {
                        Variables.G_OBJ_CONTROLADORA_PANTALLAPRINCIPAL.Recarga_Datos_Arbol_Permisos();
                    }
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(P_LicenciasProductos_Controladora) + "/" + nameof(TareaAsincrona_ValidacionLicencia_Completed));
            }
        }
        #endregion
    
    }
}
