示例#1
0
 /// <summary>
 /// Compone un empaquetable a partir de su forma
 /// en texto de fichero.
 /// </summary>
 /// <param name="texto">Segmento de texto.</param>
 /// <returns>Objeto IEmpaquetable representado
 /// por el segmento de texto</returns>
 public object DeFichero(string texto)
 {
     throw new NotImplementedException(Errores.MostrarMensaje("ConjuntoDeEmpaquetables.000",
                                                              "método DeFichero(string texto) de la clase ConjuntoDeEmpaquetables"));
 }
示例#2
0
        /// <summary>
        /// Presenta la declaración.
        /// <param name="test">Indica si la presentación se realiza en el entorno en pruebas de la AEAT.</param>
        /// <param name="certRef">Ruta de certificado para la presentación, en caso de que se utilice uno externo.</param>
        /// <param name="certClave">Contraseña del certificado.</param>
        /// </summary>
        /// <returns>Respuesta a la operación de presentación.</returns>
        public override Respuesta Presentar(bool test = false, string certRef = null, string certClave = null)
        {
            if (!_Confirmado)
            {
                throw new InvalidOperationException(Errores.MostrarMensaje("RegistroMod.003"));
            }

            int indiceUltimaPagina = RegistroCampos.Count;

            string registroTipo1 = null;
            string registroTipo2 = RegistroCampos[indiceUltimaPagina].AFichero();

            for (decimal p = 1; p < indiceUltimaPagina; p++)
            {
                registroTipo1 += RegistroCampos[p].AFichero();
            }


            VariablesEnvio.Clear();
            VariablesEnvio.Add("", registroTipo1);
            OrdenVariablesEnvio = new string[1] {
                ""
            };


            // 1. Inicialización
            var peticionInicializarEnvio = new PeticionTgvi(this, test, certRef, certClave, "InicializarEnvio");

            peticionInicializarEnvio.PreparaPeticion();

            if (string.IsNullOrWhiteSpace(this["ModeloDeclaracion"].Valor.ToString()))
            {
                throw new InvalidOperationException("Debe indicar el número de modelo en la casilla 'ModeloDeclaracion' en la página princial");
            }

            string numeroModelo = this["ModeloDeclaracion"].Valor.ToString();

            peticionInicializarEnvio.PeticionHttp.Headers.Add("MODELO", numeroModelo);
            peticionInicializarEnvio.PeticionHttp.Headers.Add("EJERCICIO", Ejercicio);
            peticionInicializarEnvio.PeticionHttp.Headers.Add("PERIODO", Periodo);
            peticionInicializarEnvio.PeticionHttp.Headers.Add("NDC", $"{this["NIF"].Valor}");
            peticionInicializarEnvio.PeticionHttp.Headers.Add("IDIOMA", "ES");
            peticionInicializarEnvio.PeticionHttp.Headers.Add("NUMBLOQUES", "1");
            peticionInicializarEnvio.PeticionHttp.Headers.Add("CODIFICACION", "ISO-8859-1");

            var respuestaTgvi = peticionInicializarEnvio.Presentar() as RespuestaTgvi;

            if (respuestaTgvi.Erronea)
            {
                return(respuestaTgvi);
            }

            string cookie = respuestaTgvi.Cookie;

            // 2. Envío datos

            if ((RegistroCampos[indiceUltimaPagina] as ConjuntoDeEmpaquetables).Empaquetables.Count > 40000)
            {
                throw new NotImplementedException("No implementada la paginación.");
            }

            VariablesEnvio[""] = registroTipo2;

            var peticionEnvio = new PeticionTgvi(this, test, certRef, certClave, "EnviarDatos", Encoding.UTF8, "text/plain; charset=UTF-8");

            peticionEnvio.PreparaPeticion();

            peticionEnvio.PeticionHttp.Headers.Add("IDENVIO", respuestaTgvi.IdEnvio);
            peticionEnvio.PeticionHttp.Headers.Add("NUMBLOQUE", "1");
            peticionEnvio.PeticionHttp.Headers.Add("CODIFICACION", "UTF-8");
            peticionEnvio.PeticionHttp.Headers.Add("Set-Cookie", cookie);


            respuestaTgvi = peticionEnvio.Presentar() as RespuestaTgvi;

            if (respuestaTgvi.Erronea)
            {
                RespuestaError errorInicial = respuestaTgvi.Errores[0];

                // Obtenemos el fichero con los registros erróneos.

                var peticionErrores = new PeticionTgvi(this, test, certRef, certClave, "RecuperarErrores", Encoding.UTF8, "text/plain; charset=UTF-8");

                peticionErrores.PreparaPeticion();

                peticionErrores.PeticionHttp.Headers.Add("IDENVIO", respuestaTgvi.IdEnvio);
                peticionErrores.PeticionHttp.Headers.Add("CODIFICACION", "UTF-8");
                peticionErrores.PeticionHttp.Headers.Add("Set-Cookie", cookie);

                respuestaTgvi = peticionErrores.Presentar() as RespuestaTgvi;

                respuestaTgvi.Errores.Add(errorInicial);

                return(respuestaTgvi);
            }

            // 3. Presentación

            VariablesEnvio[""] = "";

            var peticionPresentacion = new PeticionTgvi(this, test, certRef, certClave, "PresentarEnvio", Encoding.UTF8, "text/plain; charset=UTF-8");

            peticionPresentacion.PreparaPeticion();

            peticionPresentacion.PeticionHttp.Headers.Add("IDENVIO", respuestaTgvi.IdEnvio);
            peticionPresentacion.PeticionHttp.Headers.Add("FIRNIF", peticionPresentacion.CertificadoTitular.NIF);
            peticionPresentacion.PeticionHttp.Headers.Add("FIRNOMBRE", peticionPresentacion.CertificadoTitular.Nombre);
            peticionPresentacion.PeticionHttp.Headers.Add("FIR", "FirmaBasica");
            peticionEnvio.PeticionHttp.Headers.Add("Set-Cookie", cookie);


            respuestaTgvi = peticionPresentacion.Presentar() as RespuestaTgvi;

            if (respuestaTgvi.Erronea)
            {
                return(respuestaTgvi);
            }

            string pdfUrlServer = Parametros.Actuales.Pruebas ? "www6.aeat.es" : (test ? "www6.aeat.es" : "www2.agenciatributaria.gob.es");
            string pdfUrl       = $"https://{pdfUrlServer}/wlpl/inwinvoc/es.aeat.dit.adu.eeca.catalogo.VisualizaSc?COMPLETA=SI&ORIGEN=D&CSV={respuestaTgvi.CSV}";

            respuestaTgvi.DescargaPdfEnlace(pdfUrl);

            return(respuestaTgvi);
        }