Ejemplo n.º 1
0
        /// <summary> 
        ///  Genera el mensaje XML de Ticket de Requerimiento de Acceso (TRA).
        ///  Genera un Sistema de Gestion de Contenidos (CMS) del Ticket de Requerimiento de Acceso (TRA) con el certificado.
        ///  Codifica el CMS en Base64
        ///  Invoca al WebService de Autentificacion y Autorizacion (WSAA) con el CMS Firmado y Recibo la respuesta Ticket de Autorizacion (TA)
        ///  Extrae y valido la informacion de Autorizacion (TA)
        /// </summary> 
        /// <param name="pCertificado_Peticion">Objeto Certificado de Peticion</param> 
        /// <remarks></remarks>     
        public Entidades.Tickets_Acceso Gestionar_TA(Entidades.CertificadosX509 pCertificado_Peticion)
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Rta = new Entidades.Tickets_Acceso();
            XmlDocument Xml_LoginTicket_Peticion        = new XmlDocument();
            byte[] LoginTicket_Peticion_Firmada         = null;            
            string Codificado_CMS_Login_TicketPeticion  = "";
            string loginTicket_Respuesta                = "";


            // PASO 1: Genero el mensaje XML de Ticket de Requerimiento de Acceso (TRA).
            Xml_LoginTicket_Peticion = Generar_XML_TRA(pCertificado_Peticion);

            // PASO 2: Genero un Sistema de Gestion de Contenidos (CMS) del Ticket de Requerimiento de Acceso (TRA) con el certificado.
            LoginTicket_Peticion_Firmada = Firmar_XML_TRA(Xml_LoginTicket_Peticion);

            // PASO 3: Codifico el CMS en Base64
            Codificado_CMS_Login_TicketPeticion = Codificar_CMS_TRA(LoginTicket_Peticion_Firmada);

            // PASO 4: Invoco al WebService de Autentificacion y Autorizacion (WSAA) con el CMS Firmado y Recibo la respuesta Ticket de Autorizacion (TA)
            loginTicket_Respuesta = Obtener_TA_Respuesta(Codificado_CMS_Login_TicketPeticion, pCertificado_Peticion);

            // PASO 5: Extraigo y valido la informacion de Autorizacion (TA)
            objEntidadesTicket_Rta = Obtener_Entidad_Respuesta(loginTicket_Respuesta);

            return objEntidadesTicket_Rta;

        }
Ejemplo n.º 2
0
        /// <summary>
        /// Delega a la Capa de Datos devolver un Ticket de Acceso Vigente de la B.D.
        /// </summary>
        /// <returns></returns>
        public Entidades.Tickets_Acceso TraerTicketActivo()
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();

            objEntidadesTicket_Acceso = objDatosTickets_Acceso.TraerTicketActivo();

            return objEntidadesTicket_Acceso;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Control del Botón de Pedir Ticket de Acceso.
        /// Si hay uno vigente en la B.D. utiliza este, sino pide uno nuevo al WebService.
        /// </summary>
        private void pedirTicketAcceso()
        {
            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            /*Verifica si tiene una configuracion cargada en la B.D.*/
            if (objEntidadesConfiguracionCertificado.Cuit != 0)
            {
                /*Tiene una configuracion cargada*/
                //Entidades.Tickets objEntidadesTicket_Rta = new Entidades.Tickets();
                Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
                Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

                //Devuelve un Ticket Vigente guardado en la B.D.
                objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

                if (objEntidadesTicket_Acceso.Id_Ticket == 0)
                {
                    /*No hay ningún Ticket de Acceso habilitado en la base de Datos, se pedirá uno nuevo*/
                    Entidades.CertificadosX509 objEntidadesCertificado = new Entidades.CertificadosX509();
                    Logica.CertificadosX509 objLogicaCertificado = new Logica.CertificadosX509();

                    objEntidadesCertificado.IdServicioNegocio = DEFAULT_SERVICIO;

                    if (objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
                    {
                        objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_PRODUCCION;                        
                    }
                    else
                    {
                        objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_HOMOLOGACION;
                    }

                    /*Pido en el WebService un Nuevo Ticket de Acceso*/
                    Logica.Tickets objTicketRespuesta = new Logica.Tickets();
                    objEntidadesTicket_Acceso = objTicketRespuesta.Gestionar_TA(objEntidadesCertificado);

                    objEntidadesTicket_Acceso.Cuit = objEntidadesConfiguracionCertificado.Cuit;
                    objEntidadesTicket_Acceso.TipoAprobacion = objEntidadesConfiguracionCertificado.TipoAprobacion;

                    if (objEntidadesTicket_Acceso.Sign != null)
                    {
                        Logica.Tickets_Acceso objTicketsAcceso = new Logica.Tickets_Acceso();
                        //Guarda el ticket en la B.D.
                        objTicketsAcceso.Agregar(objEntidadesTicket_Acceso);
                    }
                }

                mostrarDatosTicketAcceso(objEntidadesTicket_Acceso);
            }
            else
            {
                MessageBox.Show("Para utilizar el programa primero debe cargar el certificado desde Configuracion -> Certificado");
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Detecta si el WebService WSFEv1 de AFIP está funcionando
        /// </summary>
        /// <returns></returns>
        public bool estadoWS()
        {
            bool estado = false;

            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

            //Llamo al Webservice para recuperar los Paises
            Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();

            if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
            {
                /*WebService Producción*/
                if (objLogicaWebServiceAfip.FEDummy() == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    estado = true;
                }
                else
                {
                    estado = false;
                }

            }
            else
            {
                /*WebService Homologacion*/
                if (objLogicaWebServiceAfip.FEDummy_Homologacion() == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    estado = true;
                }
                else
                {
                    estado = false;
                }
            }

            return estado;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Control Botón Actualizar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnActualizarUltimosNros_Click(object sender, EventArgs e)
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

            //Asigno Punto de Venta
            int ptoVenta = Convert.ToInt32(cboPtosVenta.SelectedValue);

            //Llamo al Webservice para recuperar los Ultimos Nros. de Comprobantes
            Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();
                

            if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
            {
                /*WebService Producción*/
                if (objLogicaWebServiceAfip.FECompUltimoAutorizado(objEntidadesTicket_Acceso, ptoVenta) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    MessageBox.Show("Últimos Nros. de Comprobantes actualizados desde el WebService");
                }
                else
                {
                    MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                }
            }
            else
            {
                /*WebService Homologacion*/
                if (objLogicaWebServiceAfip.FECompUltimoAutorizado_Homologacion(objEntidadesTicket_Acceso, ptoVenta) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    MessageBox.Show("Últimos Nros. de Comprobantes actualizados desde el WebService");
                }
                else
                {
                    MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                }
            }
            TraerTodos();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Control del Botón Actualizar Puntos de Venta
        /// Llama al WebService para obtener los Puntos de Venta y guardarlos en la B.D.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnActualizarPtoVenta_Click(object sender, EventArgs e)
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

            //Llamo al Webservice para recuperar los Puntos de Venta
            Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();

            if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
            {
                /*WebService Producción*/
                if (objLogicaWebServiceAfip.FEParamGetPtosVenta(objEntidadesTicket_Acceso) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    MessageBox.Show("Puntos de Venta actualizados desde el WebService");
                }
                else
                {
                    MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                }

            }
            else
            {
                /*WebService Homologacion*/
                if (objLogicaWebServiceAfip.FEParamGetPtosVenta_Homologacion(objEntidadesTicket_Acceso) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    MessageBox.Show("Puntos de Venta actualizados desde el WebService");
                }
                else
                {
                    MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                }
            }

            TraerTodos();
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Obtengo la informacion del Ticket de Autorizacion (TA)
        /// y obtengo un objeto Ticket Autorizacion
        /// </summary>
        /// <param name="pLoginRespuesta">Respuesta TA</param>
        /// <returns></returns>
        public Entidades.Tickets_Acceso Obtener_Entidad_Respuesta(string pLoginRespuesta)
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Rta = new Entidades.Tickets_Acceso();

            try
            {
                Xml_LoginTicket_Respuesta = new XmlDocument();
                Xml_LoginTicket_Respuesta.LoadXml(pLoginRespuesta);

                objEntidadesTicket_Rta.Id_Ticket = UInt32.Parse(Xml_LoginTicket_Respuesta.SelectSingleNode("//uniqueId").InnerText);
                objEntidadesTicket_Rta.Fecha_Generacion = DateTime.Parse(Xml_LoginTicket_Respuesta.SelectSingleNode("//generationTime").InnerText);
                objEntidadesTicket_Rta.Fecha_Expiracion = DateTime.Parse(Xml_LoginTicket_Respuesta.SelectSingleNode("//expirationTime").InnerText);
                objEntidadesTicket_Rta.Sign = Xml_LoginTicket_Respuesta.SelectSingleNode("//sign").InnerText;
                objEntidadesTicket_Rta.Token = Xml_LoginTicket_Respuesta.SelectSingleNode("//token").InnerText;
            }
            catch (Exception exAnalizarLoginTicketResponse)
            {
                throw new Exception("ERROR: Clase: Logica.Tickets. Metodo: Obtener_Entidad_Respuesta. Detalle: " + exAnalizarLoginTicketResponse.Message);
            }

            return objEntidadesTicket_Rta;
        }
        /// <summary>
        /// Control Botón Actualizar desde AFIP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTraerCbtes_Click(object sender, EventArgs e)
        {
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();
            Entidades.Comprobantes objEntidadesComprobantes = new Entidades.Comprobantes();            

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();
          
            //Asigno Punto de Venta
            int ptoVenta = Convert.ToInt32(cboPtosVenta.SelectedValue);
            //Asigno Tipo de Comprobante
            int tipoCbte = Convert.ToInt32(cboTipoCbte.SelectedValue);

            //Llamo al Webservice para recuperar los Comprobantes Aprobados
            Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();

            if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
            {
                
                if (chkFiltroNros.Checked == true)
                {
                    /*WebService Producción*/
                    if (objLogicaWebServiceAfip.FECompConsultar(objEntidadesTicket_Acceso, ptoVenta, tipoCbte, Convert.ToInt64(txtNroCbteDesde.Text), Convert.ToInt64(txtNroCbteHasta.Text)) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        MessageBox.Show("Comprobantes Autorizados desde el WebService");
                    }
                    else
                    {
                        MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                    }
                }
                else
                {
                    /*WebService Producción*/
                    if (objLogicaWebServiceAfip.FECompConsultar(objEntidadesTicket_Acceso, ptoVenta, tipoCbte) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        MessageBox.Show("Comprobantes Autorizados desde el WebService");
                    }
                    else
                    {
                        MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                    }
                }

            }
            else
            {
                if (chkFiltroNros.Checked == true)
                {
                    /*WebService Homologacion*/
                    if (objLogicaWebServiceAfip.FECompConsultar_Homologacion(objEntidadesTicket_Acceso, ptoVenta, tipoCbte, Convert.ToInt64(txtNroCbteDesde.Text), Convert.ToInt64(txtNroCbteHasta.Text)) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        MessageBox.Show("Comprobantes Autorizados desde el WebService");
                    }
                    else
                    {
                        MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                    }
                }
                else
                {                    
                    /*WebService Homologacion*/
                    if (objLogicaWebServiceAfip.FECompConsultar_Homologacion(objEntidadesTicket_Acceso, ptoVenta, tipoCbte) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        MessageBox.Show("Comprobantes Autorizados desde el WebService");
                    }
                    else
                    {
                        MessageBox.Show("El WebService devolvió un Error/Evento. Por favor revise los Logs");
                    }
                }

            }
            TraerTodos(ptoVenta, tipoCbte);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Actualiza desde el WebService los Últimos Nros de Comprobantes Autorizados
        /// </summary>
        private void actualizarUltAutorizadosRTA()
        {
            lblTablaUltAutorizadosRTA.ForeColor = Color.Black;
            lblTablaUltAutorizadosRTA.Text = "Procesando...";
            lblTablaUltAutorizadosRTA.Refresh();

            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

            /*Busco Todos los Puntos de Venta que existen*/
            int ptoVenta;
            Logica.PtosVenta objLogicaPtosVenta = new Logica.PtosVenta();

            DataTable puntosVentaDT = objLogicaPtosVenta.TraerTodos();

            foreach(DataRow ptoVentafila in puntosVentaDT.Rows)
            {
                //Asigno Punto de Venta
                ptoVenta = Convert.ToInt32(ptoVentafila["Id_PtoVenta"]);

                //Llamo al Webservice para recuperar los Ultimos Nros. de Comprobantes
                Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();


                if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
                {
                    /*WebService Producción*/
                    if (objLogicaWebServiceAfip.FECompUltimoAutorizado(objEntidadesTicket_Acceso, ptoVenta) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        lblTablaUltAutorizadosRTA.ForeColor = Color.Green;
                        lblTablaUltAutorizadosRTA.Text = "OK";
                        lblTablaUltAutorizadosRTA.Refresh();
                    }
                    else
                    {
                        lblTablaUltAutorizadosRTA.ForeColor = Color.Red;
                        lblTablaUltAutorizadosRTA.Text = "ERROR";
                        lblTablaUltAutorizadosRTA.Refresh();
                    }
                }
                else
                {
                    /*WebService Homologacion*/
                    if (objLogicaWebServiceAfip.FECompUltimoAutorizado_Homologacion(objEntidadesTicket_Acceso, ptoVenta) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                    {
                        lblTablaUltAutorizadosRTA.ForeColor = Color.Green;
                        lblTablaUltAutorizadosRTA.Text = "OK";
                        lblTablaUltAutorizadosRTA.Refresh();
                    }
                    else
                    {
                        lblTablaUltAutorizadosRTA.ForeColor = Color.Red;
                        lblTablaUltAutorizadosRTA.Text = "ERROR";
                        lblTablaUltAutorizadosRTA.Refresh();
                    }
                }
            }            
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Actualiza desde el WebService la Tabla de Puntos de Ventas
        /// </summary>
        private void actualizarTablaPuntosVenta()
        {
            lblTablaPuntosVentaRTA.ForeColor = Color.Black;
            lblTablaPuntosVentaRTA.Text = "Procesando...";
            lblTablaPuntosVentaRTA.Refresh();

            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

            objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

            //Llamo al Webservice para recuperar los Puntos de Venta
            Logica.WebServices_AFIP objLogicaWebServiceAfip = new Logica.WebServices_AFIP();

            if (objEntidadesTicket_Acceso.TipoAprobacion == 'P') //Producción
            {
                /*WebService Producción*/
                if (objLogicaWebServiceAfip.FEParamGetPtosVenta(objEntidadesTicket_Acceso) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    lblTablaPuntosVentaRTA.ForeColor = Color.Green;
                    lblTablaPuntosVentaRTA.Text = "OK";
                    lblTablaPuntosVentaRTA.Refresh();
                }
                else
                {
                    lblTablaPuntosVentaRTA.ForeColor = Color.Red;
                    lblTablaPuntosVentaRTA.Text = "ERROR";
                    lblTablaPuntosVentaRTA.Refresh();
                }

            }
            else
            {
                /*WebService Homologacion*/
                if (objLogicaWebServiceAfip.FEParamGetPtosVenta_Homologacion(objEntidadesTicket_Acceso) == Entidades.WebServices_AFIP.RespuestaWS.Correcta)
                {
                    lblTablaPuntosVentaRTA.ForeColor = Color.Green;
                    lblTablaPuntosVentaRTA.Text = "OK";
                    lblTablaPuntosVentaRTA.Refresh();
                }
                else
                {
                    lblTablaPuntosVentaRTA.ForeColor = Color.Red;
                    lblTablaPuntosVentaRTA.Text = "ERROR";
                    lblTablaPuntosVentaRTA.Refresh();
                }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Pide un Nuevo Ticket de Acceso con las configuraciones cargadas
        /// </summary>
        /// <returns></returns>
        private bool pedirNuevoTicketAcc()
        {
            bool respuesta = false;
            lblPedirNuevoTicketAccRTA.ForeColor = Color.Black;
            lblPedirNuevoTicketAccRTA.Text = "Procesando...";
            lblPedirNuevoTicketAccRTA.Refresh();

            /*Pide la configuración desde la B.D.*/
            Entidades.Configuracion_Certificado objEntidadesConfiguracionCertificado = new Entidades.Configuracion_Certificado();
            Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            /*Creo un Certificado a partir de la configuración que recuperé desde la B.D.*/
            Entidades.CertificadosX509 objEntidadesCertificado = new Entidades.CertificadosX509();
            const string DEFAULT_SERVICIO = "wsfe";
            const string SERVIDOR_WSAA_PRODUCCION = "https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL";
            const string SERVIDOR_WSAA_HOMOLOGACION = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms?WSDL";

            objEntidadesCertificado.IdServicioNegocio = DEFAULT_SERVICIO;

            if (objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_PRODUCCION;                        
            }
            else
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_HOMOLOGACION;
            }

            /*Pido en el WebService un Nuevo Ticket de Acceso*/
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();
            Logica.Tickets objTicketRespuesta = new Logica.Tickets();

            objEntidadesTicket_Acceso = objTicketRespuesta.Gestionar_TA(objEntidadesCertificado);
            objEntidadesTicket_Acceso.Cuit = objEntidadesConfiguracionCertificado.Cuit;
            objEntidadesTicket_Acceso.TipoAprobacion = objEntidadesConfiguracionCertificado.TipoAprobacion;

            if (objEntidadesTicket_Acceso.Sign != null)
            {
                Logica.Tickets_Acceso objTicketsAcceso = new Logica.Tickets_Acceso();
                //Guarda el ticket en la B.D.
                objTicketsAcceso.Agregar(objEntidadesTicket_Acceso);
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Green;
                lblPedirNuevoTicketAccRTA.Text = "OK";
                lblPedirNuevoTicketAccRTA.Refresh();
                respuesta = true;
            }
            else
            {
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Red;
                lblPedirNuevoTicketAccRTA.Text = "ERROR";
                lblPedirNuevoTicketAccRTA.Refresh();
            }

            return respuesta;
        }