public void TestExportarWordBmv2014() { DateTime fechaNet = new DateTime(); DateUtil.ParseDate("2015-01-01", DateUtil.YMDateFormat, out fechaNet); Date fecha = XPEUtil.CrearJavaDate(fechaNet); Debug.WriteLine(fecha.getYear()); XPEService serv = XPEServiceImpl.GetInstance(); Debug.WriteLine("COREROOT:" + serv.GetCoreRoot()); if (serv.GetErroresInicializacion() != null) { } var errores = new List <ErrorCargaTaxonomiaDto>(); var cache = new CacheTaxonomiaEnMemoriaXBRL(); var info = new AbaxCargaInfoDto(); ConfiguracionCargaInstanciaDto config = new ConfiguracionCargaInstanciaDto(); config.UrlArchivo = @"C:\Users\carlos\Desarrollo\ABAX\CNBV\plani_error\ifrsxbrl_PLANI_2016-3.xbrl"; config.Errores = errores; config.CacheTaxonomia = cache; config.InfoCarga = info; config.EjecutarValidaciones = false; config.ConstruirTaxonomia = true; var instancia = serv.CargarDocumentoInstanciaXbrl(config); Debug.WriteLine("Tiempo de carga:" + info.MsCarga); Debug.WriteLine("Tiempo de Validación:" + info.MsValidacion); Debug.WriteLine("Tiempo de Procesamiento de Fórmulas:" + info.MsFormulas); Debug.WriteLine("Tiempo de Transformación:" + info.MsTransformacion); ActivadorLicenciaAsposeUtil.ActivarAsposeWords(); instancia.ParametrosConfiguracion = new Dictionary <string, string>(); instancia.ParametrosConfiguracion.Add("trimestre", "3"); instancia.ParametrosConfiguracion.Add("primerAnio", "false"); instancia.ParametrosConfiguracion.Add("emisora", "PLANI"); instancia.ParametrosConfiguracion.Add("anio", "2015-01-01T06:00:00.000Z"); instancia.ParametrosConfiguracion.Add("moneda", "http://www.xbrl.org/2003/iso4217:MXN"); var importador = (IImportadorExportadorArchivoADocumentoInstancia)applicationContext.GetObject("ImportadorExportadorArchivosPlantilla"); var resultado = importador.ExportarDocumentoWord(instancia, "es"); using (var fileStream = new FileStream(@"C:\Users\carlos\Desarrollo\ABAX\CNBV\plani_error\ifrsxbrl_PLANI_2016-3-test.docx", FileMode.Create)) { var instanciaSalida = (byte[])(resultado.InformacionExtra as Dictionary <string, object>)["archivo"]; fileStream.Write(instanciaSalida, 0, instanciaSalida.Length); } }
public void testProcesarCarpeta() { LogUtil.LogDirPath = ".\\"; LogUtil.Inicializa(); var archivos = Directory.GetFiles(@"C:\temp\transjson", "*.xbrl"); var carpetaSalida = @"C:\temp\transjson\salida\"; var xbrlService = XPEServiceImpl.GetInstance(); Debug.WriteLine("COREROOT:" + xbrlService.GetCoreRoot()); ConfiguracionCargaInstanciaDto configCarga = null; var cache = new CacheTaxonomiaEnMemoriaXBRL(); LogUtil.Info("Iniciando proceso de transformación de archivos:" + archivos.Length); int i = 0; foreach (var rutaArchivo in archivos) { i++; configCarga = new ConfiguracionCargaInstanciaDto() { UrlArchivo = rutaArchivo, CacheTaxonomia = cache, ConstruirTaxonomia = true, EjecutarValidaciones = false, Errores = new List <ErrorCargaTaxonomiaDto>(), ForzarCerradoDeXbrl = false, InfoCarga = new AbaxCargaInfoDto() }; LogUtil.Info("(" + i + ") Leyendo archivo:" + Path.GetFileName(rutaArchivo)); var docIns = xbrlService.CargarDocumentoInstanciaXbrl(configCarga); LogUtil.Info("(" + i + ") Archivo Leido:" + Path.GetFileName(rutaArchivo)); if (docIns != null) { VerificarTaxonomiaEnCache(docIns, cache); LogUtil.Info("(" + i + ") Generando JSON:" + Path.GetFileName(rutaArchivo)); string objJson = JsonConvert.SerializeObject(docIns, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); using (var streamSalida = new FileStream(carpetaSalida + Path.GetFileNameWithoutExtension(rutaArchivo) + ".json", FileMode.Create)) { LogUtil.Info("(" + i + ") Escribiendo JSON:" + carpetaSalida + Path.GetFileNameWithoutExtension(rutaArchivo) + ".json"); var bytesEscribir = Encoding.UTF8.GetBytes(objJson); streamSalida.Write(bytesEscribir, 0, bytesEscribir.Length); } } } }
/// <summary> /// Procesa la carga y validación del archivo XBRL /// </summary> /// <param name="archivo">Archivo XBRL a cargar</param> /// <param name="resultadoValidacion">Objeto con los resultados de la validación</param> /// <param name="parametros">Parámetros adicionales para validación</param> private void ProcesarArchivoXBRL(String rutaAbsolutaArchivo, ResultadoValidacionDocumentoXBRLDto resultadoValidacion, IDictionary <string, string> parametros) { var configCarga = new ConfiguracionCargaInstanciaDto() { UrlArchivo = rutaAbsolutaArchivo, CacheTaxonomia = CacheTaxonomia, ConstruirTaxonomia = true, EjecutarValidaciones = true, Errores = new List <ErrorCargaTaxonomiaDto>(), ForzarCerradoDeXbrl = false, InfoCarga = new AbaxCargaInfoDto() }; var swTotal = Stopwatch.StartNew(); DocumentoInstanciaXbrlDto documentoXbrl = XPEServiceImpl.GetInstance(ForzarHttp).CargarDocumentoInstanciaXbrl(configCarga); swTotal.Stop(); LogUtil.Info("Tiempo de carga total (" + rutaAbsolutaArchivo + "):" + swTotal.ElapsedMilliseconds); resultadoValidacion.Valido = true; resultadoValidacion.MsCarga = configCarga.InfoCarga.MsCarga; resultadoValidacion.MsValidacion = configCarga.InfoCarga.MsValidacion; resultadoValidacion.MsFormulas = configCarga.InfoCarga.MsFormulas; resultadoValidacion.MsTransformacion = configCarga.InfoCarga.MsTransformacion; //El documento es legible, organizar periodos if (documentoXbrl != null) { if (documentoXbrl.Taxonomia == null) { documentoXbrl.Taxonomia = AgregarTaxonomiaACache(documentoXbrl.DtsDocumentoInstancia, CacheTaxonomia); } AplicarValidacionesGenerales(documentoXbrl, parametros, resultadoValidacion); if (resultadoValidacion.Valido) { CrearResumenDePeriodos(documentoXbrl, resultadoValidacion); //Aplicar validaciones específicas AplicarValidacionesDeNegocio(documentoXbrl, parametros, resultadoValidacion); } documentoXbrl.Cerrar(); documentoXbrl = null; //System.GC.Collect(); } //Acomodar errores foreach (var error in configCarga.Errores) { if (error.IdContexto == null) { resultadoValidacion.ErroresGenerales.Add(error); } else { if (resultadoValidacion.Periodos.Any(x => x.IdContextos.Contains(error.IdContexto))) { resultadoValidacion.Periodos.First(x => x.IdContextos.Contains(error.IdContexto)).Errores.Add(error); } } resultadoValidacion.Valido = false; } }
public void testInicializar() { DateTime fechaNet = new DateTime(); DateUtil.ParseDate("2015-01-01", DateUtil.YMDateFormat, out fechaNet); Date fecha = XPEUtil.CrearJavaDate(fechaNet); Debug.WriteLine(fecha.getYear()); XPEService serv = XPEServiceImpl.GetInstance(true); Debug.WriteLine("COREROOT:" + serv.GetCoreRoot()); if (serv.GetErroresInicializacion() != null) { } var errores = new List <ErrorCargaTaxonomiaDto>(); var config2 = new ConfiguracionCargaInstanciaDto(); config2.CacheTaxonomia = null; config2.ConstruirTaxonomia = true; config2.EjecutarValidaciones = true; config2.Errores = new List <ErrorCargaTaxonomiaDto>(); //config2.UrlArchivo = @"C:\Users\Emigdio\Desktop\tmp\AA_BMV\fiduxbrl_875171_CIB2919_2019-01_1.xbrl"; config2.Archivo = new FileStream(@"C:\Users\Emigdio\Desktop\tmp\AA_BMV\fiduxbrl_875171_CIB2919_2019-01_1.xbrl", FileMode.Open); var doc2 = serv.CargarDocumentoInstanciaXbrl(config2); Debug.WriteLine("Errores:" + config2.Errores.Count); config2.Archivo.Close(); var config1 = new ConfiguracionCargaInstanciaDto(); config1.CacheTaxonomia = null; config1.ConstruirTaxonomia = true; config1.EjecutarValidaciones = true; config1.Errores = new List <ErrorCargaTaxonomiaDto>(); config1.UrlArchivo = @"C:\tmp\ifrsxbrl_SENDA_2017-4.xbrl"; var doc1 = serv.CargarDocumentoInstanciaXbrl(config1); Debug.WriteLine("Errores:" + config1.Errores.Count); /* * var taxo = serv.CargarTaxonomiaXbrl("http://emisnet.bmv.com.mx/taxonomy/mx-ifrs-2014-12-05/full_ifrs_mc_mx_ics_entry_point_2014-12-05.xsd",errores,true); * Debug.WriteLine(taxo.EspacioNombresPrincipal); * Debug.WriteLine("Errores:" + errores.Count); * errores.Clear(); * * var taxo2 = serv.CargarTaxonomiaXbrl("https://taxonomiasxbrl.cnbv.gob.mx/taxonomy/ra-prospecto-2016-08-22/ar_N_entry_point_2016-08-22.xsd", errores, true); * Debug.WriteLine(taxo2.EspacioNombresPrincipal); * Debug.WriteLine("Errores:" + errores.Count); * errores.Clear(); */ var cache = new CacheTaxonomiaEnMemoriaXBRL(); var listaDts = new List <DtsDocumentoInstanciaDto>(); listaDts.Add(new DtsDocumentoInstanciaDto() { HRef = "http://emisnet.bmv.com.mx/taxonomy/mx-ifrs-2014-12-05/full_ifrs_mc_mx_ics_entry_point_2014-12-05.xsd", Tipo = DtsDocumentoInstanciaDto.SCHEMA_REF }); //cache.AgregarTaxonomia(listaDts, taxo); var info = new AbaxCargaInfoDto(); ConfiguracionCargaInstanciaDto config = new ConfiguracionCargaInstanciaDto(); config.UrlArchivo = @"C:\temp\lois\ifrsxbrl_BIMBO_2015-2.xbrl"; config.Errores = errores; config.CacheTaxonomia = cache; config.InfoCarga = info; config.EjecutarValidaciones = false; config.ConstruirTaxonomia = true; var instancia = serv.CargarDocumentoInstanciaXbrl(config); Debug.WriteLine("Tiempo de carga:" + info.MsCarga); Debug.WriteLine("Tiempo de Validación:" + info.MsValidacion); Debug.WriteLine("Tiempo de Procesamiento de Fórmulas:" + info.MsFormulas); Debug.WriteLine("Tiempo de Transformación:" + info.MsTransformacion); foreach (var dd in instancia.DtsDocumentoInstancia) { Debug.WriteLine(dd.HRef); } foreach (var Idhecho in instancia.HechosPorIdConcepto["ifrs-mc_ManagementCommentaryExplanatory"]) { var hecho = instancia.HechosPorId[Idhecho]; Debug.WriteLine(hecho.IdConcepto + " : " + hecho.IdContexto + ":" + hecho.Valor); } var sw = Stopwatch.StartNew(); var streamSalid = serv.GenerarDocumentoInstanciaXbrl(instancia, cache); sw.Stop(); Debug.WriteLine("Creación doc:" + sw.ElapsedMilliseconds); var salida = File.Create("C:\\temp\\load\\salida.xbrl"); streamSalid.CopyTo(salida); salida.Close(); streamSalid.Close(); foreach (var err in errores) { Debug.WriteLine(err.Mensaje); } /* foreach (var rol in taxo.RolesPresentacion) * { * Debug.WriteLine(rol.Uri); * }*/ }
public void GeneraReportesXBRL() { LogUtil.LogDirPath = @"..\..\TestOutput\"; LogUtil.Inicializa(); Exception exceptionThrow = null; var listaArchivosPath = Directory.GetFiles(@"..\..\TestInput\XBRL"); var xpe = XPEServiceImpl.GetInstance(); if (xpe.GetErroresInicializacion() != null && xpe.GetErroresInicializacion().Count > 0) { LogUtil.Error(xpe.GetErroresInicializacion()); } foreach (var pathArchivo in listaArchivosPath) { try { var fileName = Path.GetFileName(pathArchivo); var extension = Path.GetExtension(pathArchivo); if (!String.IsNullOrEmpty(extension) && !extension.ToLower().Equals(".xbrl")) { LogUtil.Info("No se procesa el archivo: " + pathArchivo + "\nSu extensión es: " + extension ?? String.Empty); continue; } ConfiguracionCargaInstanciaDto config = new ConfiguracionCargaInstanciaDto(); config.UrlArchivo = Path.GetFullPath(pathArchivo); config.ConstruirTaxonomia = true; config.EjecutarValidaciones = false; var documento = xpe.CargarDocumentoInstanciaXbrl(config); if (documento == null) { if (documento == null) { LogUtil.Error("No fué posible procesar el documento: " + pathArchivo); continue; } } var factoryBuilder = (ReporteBuilderFactory)applicationContext.GetObject("ReporteBuilderFactory"); var factoryExporter = (ExportadorDocumentoInstanciaFactory)applicationContext.GetObject("ExportadorDocumentoInstanciaFactory"); //var builder = factoryBuilder.obtenerReporteBuilder(instanciaDto,"en"); if (documento.Taxonomia != null) { LogUtil.Info("documento.Taxonomia.EspacioNombresPrincipal:" + documento.Taxonomia.EspacioNombresPrincipal ?? null); } LogUtil.Info("documento.EspacioNombresPrincipal:" + documento.EspacioNombresPrincipal ?? "null"); var espacioNombres = documento.Taxonomia != null ? documento.Taxonomia.EspacioNombresPrincipal ?? documento.EspacioNombresPrincipal : documento.EspacioNombresPrincipal; espacioNombres = espacioNombres.Replace("/", "_").Replace(" ", "_").Replace("-", "_").Replace(":", "_").Replace(".", "_"); var plantillaDocumento = (DefinicionPlantillaXbrlAbstract)applicationContext.GetObject(espacioNombres); plantillaDocumento.DeterminarParametrosConfiguracion(documento); var builder = factoryBuilder.obtenerReporteBuilder(documento, plantillaDocumento); var exporter = factoryExporter.ObtenerExportadorParaDocumento(documento); var pathSalida = @"..\..\TestOutput\Reportes\" + fileName; builder.crearReporteXBRLDTO(documento); //using (var fileStreamPDF = new FileStream(pathSalida + ".pdf", FileMode.Create)) //{ // var instanciaSalidaPDF = exporter.exportarDocumentoAPDF(documento, builder.ReporteXBRLDTO); // fileStreamPDF.Write(instanciaSalidaPDF, 0, instanciaSalidaPDF.Length); // fileStreamPDF.Flush(); // fileStreamPDF.Close(); //} using (var fileStreamWord = new FileStream(pathSalida + ".docx", FileMode.Create)) { var instanciaSalidaWord = exporter.exportarDocumentoAWord(documento, builder.ReporteXBRLDTO); fileStreamWord.Write(instanciaSalidaWord, 0, instanciaSalidaWord.Length); fileStreamWord.Flush(); fileStreamWord.Close(); } using (var fileStreamHtml = new FileStream(pathSalida + ".html", FileMode.Create)) { var instanciaSalidaHTML = exporter.exportarDocumentoAHTML(documento, builder.ReporteXBRLDTO); fileStreamHtml.Write(instanciaSalidaHTML, 0, instanciaSalidaHTML.Length); fileStreamHtml.Flush(); fileStreamHtml.Close(); } builder = factoryBuilder.obtenerReporteBuilder(documento, plantillaDocumento, "en"); exporter = factoryExporter.ObtenerExportadorParaDocumento(documento); pathSalida = @"..\..\TestOutput\Reportes\" + fileName + "-en"; builder.crearReporteXBRLDTO(documento); //using (var fileStreamPDF = new FileStream(pathSalida + ".pdf", FileMode.Create)) //{ // var instanciaSalidaPDF = exporter.exportarDocumentoAPDF(documento, builder.ReporteXBRLDTO); // fileStreamPDF.Write(instanciaSalidaPDF, 0, instanciaSalidaPDF.Length); // fileStreamPDF.Flush(); // fileStreamPDF.Close(); //} using (var fileStreamWord = new FileStream(pathSalida + ".docx", FileMode.Create)) { var instanciaSalidaWord = exporter.exportarDocumentoAWord(documento, builder.ReporteXBRLDTO); fileStreamWord.Write(instanciaSalidaWord, 0, instanciaSalidaWord.Length); fileStreamWord.Flush(); fileStreamWord.Close(); } using (var fileStreamHtml = new FileStream(pathSalida + ".html", FileMode.Create)) { var instanciaSalidaHTML = exporter.exportarDocumentoAHTML(documento, builder.ReporteXBRLDTO); fileStreamHtml.Write(instanciaSalidaHTML, 0, instanciaSalidaHTML.Length); fileStreamHtml.Flush(); fileStreamHtml.Close(); } }catch (Exception exception) { LogUtil.Error(exception); LogUtil.Error("pathArchivo: " + pathArchivo); if (exceptionThrow == null) { exceptionThrow = exception; } } if (exceptionThrow != null) { throw exceptionThrow; } } }