private void agregarTaxonomia(DocumentoInstanciaXbrlDto instanciaDto, CacheTaxonomiaEnMemoriaXBRL _cacheTaxonomiaXbrl) { var viewerService = new XbrlViewerService(); var taxonomiaDto = _cacheTaxonomiaXbrl.ObtenerTaxonomia(instanciaDto.DtsDocumentoInstancia); var manejadorErrores = new ManejadorErroresCargaTaxonomia(); if (taxonomiaDto == null) { var taxo = new TaxonomiaXBRL { ManejadorErrores = manejadorErrores }; foreach (var dts in instanciaDto.DtsDocumentoInstancia) { if (dts.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF) { taxo.ProcesarDefinicionDeEsquema(dts.HRef); } } taxo.CrearArbolDeRelaciones(); taxonomiaDto = viewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxo); if (manejadorErrores.PuedeContinuar()) { _cacheTaxonomiaXbrl.AgregarTaxonomia(instanciaDto.DtsDocumentoInstancia, taxonomiaDto); } else { return; } } instanciaDto.Taxonomia = taxonomiaDto; }
public void TestImportarHechosDeDocumento() { var service = new DocumentoInstanciaService { DocumentoInstanciaRepository = new DocumentoInstanciaRepository(), UsuarioDocumentoInstanciaRepository = new UsuarioDocumentoInstanciaRepository(), VersionDocumentoInstanciaRepository = new VersionDocumentoInstanciaRepository(), EmpresaRepository = new EmpresaRepository(), UsuarioRepository = new UsuarioRepository(), UnidadRepository = new UnidadRepository(), ContextoRepository = new ContextoRepository(), DtsDocumentoInstanciaRepository = new DtsDocumentoInstanciaRepository(), HechoRepository = new HechoRepository(), NotaAlPieRepository = new NotaAlPieRepository() }; var _cacheTaxonomiaXbrl = new CacheTaxonomiaEnMemoriaXBRL(); var resultadoDocumento = service.ObtenerModeloDocumentoInstanciaXbrl(105, 19); var instanciaDto = resultadoDocumento.InformacionExtra as DocumentoInstanciaXbrlDto; agregarTaxonomia(instanciaDto, _cacheTaxonomiaXbrl); foreach (var hecho in instanciaDto.HechosPorId.Values) { Debug.WriteLine(hecho.IdConcepto + ":" + hecho.Id + ":" + hecho.Valor); } resultadoDocumento = service.ImportarHechosADocumentoInstancia(instanciaDto, 97, false, true, 19); Debug.WriteLine(resultadoDocumento.InformacionExtra); foreach (var hecho in instanciaDto.HechosPorId.Values) { Debug.WriteLine(hecho.IdConcepto + ":" + hecho.Id + ":" + hecho.Valor); } }
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); } }
/// <summary> /// Veirifica si la taxonomía del archivo está en caché, si no está, se carga y agrega /// </summary> /// <param name="docIns"></param> /// <param name="cache"></param> private void VerificarTaxonomiaEnCache(DocumentoInstanciaXbrlDto docIns, CacheTaxonomiaEnMemoriaXBRL cache) { if (cache.ObtenerTaxonomia(docIns.DtsDocumentoInstancia) == null) { var servicio = XPEServiceImpl.GetInstance(); var errores = new List <ErrorCargaTaxonomiaDto>(); cache.AgregarTaxonomia(docIns.DtsDocumentoInstancia, servicio.CargarTaxonomiaXbrl(docIns.DtsDocumentoInstancia[0].HRef, errores, true) ); } }
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); } } } }
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); * }*/ }