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);
            }
        }
示例#2
0
        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);
                    }
                }
            }
        }
示例#3
0
        /// <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;
            }
        }
示例#4
0
        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;
                }
            }
        }