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