예제 #1
0
        /// <summary>
        /// Carga y agrega taxonomía a Cache
        /// </summary>
        /// <param name="list">Lista de DTS de taxonomía</param>
        /// <param name="CacheTaxonomia">Objeto de caché de taxonomía a agregar</param>
        /// <returns>La taxonomía agregada</returns>
        private TaxonomiaDto AgregarTaxonomiaACache(IList <DtsDocumentoInstanciaDto> list, ICacheTaxonomiaXBRL CacheTaxonomia)
        {
            var errores = new List <ErrorCargaTaxonomiaDto>();

            if (list != null && list.Count > 0)
            {
                var taxo = XPEServiceImpl.GetInstance(ForzarHttp).CargarTaxonomiaXbrl(list[0].HRef, errores, false);
                if (errores.Count > 0)
                {
                    LogUtil.Error("La taxonomía: " + list[0].HRef + " contiene errores");
                    foreach (var error in errores)
                    {
                        LogUtil.Error(error);
                    }
                }
                else
                {
                    if (CacheTaxonomia.ObtenerTaxonomia(list) == null)
                    {
                        CacheTaxonomia.AgregarTaxonomia(list, taxo);
                    }
                    return(taxo);
                }
            }
            else
            {
                errores.Add(new ErrorCargaTaxonomiaDto()
                {
                    Mensaje   = "No existen archivos en la lista de SchemaRef",
                    Severidad = ErrorCargaTaxonomiaDto.SEVERIDAD_FATAL
                });
            }

            return(null);
        }
예제 #2
0
        /// <summary>
        /// Retorna la definición de la taxonomía por el identificador.
        /// </summary>
        /// <param name="idTaxonomia">Identificador de la taxonomía.</param>
        /// <returns>Resultado con la definición de la taxonomía.</returns>
        private ResultadoOperacionDto ObtenerDefinicionTaxonomiaPorId(long idTaxonomia)
        {
            var resultado = DocumentoInstanciaService.ObtenerTaxonomiaBdPorId(idTaxonomia);
            var errores   = new List <ErrorCargaTaxonomiaDto>();

            if (resultado.Resultado && resultado.InformacionExtra != null)
            {
                //Cargar la taxonomía
                var taxoBd   = resultado.InformacionExtra as TaxonomiaXbrl;
                var listaDts =
                    DocumentoInstanciaXbrlDtoConverter.ConvertirDTSDocumentoInstancia(taxoBd.ArchivoTaxonomiaXbrl);
                var taxoDto = _cacheTaxonomiaXbrl.ObtenerTaxonomia(listaDts);
                if (taxoDto == null)
                {
                    var resultadoTaxonomia = DocumentoInstanciaService.ObtenerTaxonomiaXbrlProcesada(idTaxonomia, errores);
                    var taxonomia          = resultadoTaxonomia.InformacionExtra as ITaxonomiaXBRL;
                    taxoDto = XbrlViewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomia);
                    if (taxonomia.ManejadorErrores.PuedeContinuar())
                    {
                        _cacheTaxonomiaXbrl.AgregarTaxonomia(listaDts, taxoDto);
                        _estrategiaCacheTaxonomia.AgregarTaxonomia(DocumentoInstanciaXbrlDtoConverter.ConvertirArchivoTaxonomiaXbrl(taxoBd.ArchivoTaxonomiaXbrl)
                                                                   , taxonomia);
                    }
                    else
                    {
                        resultado.Resultado        = false;
                        resultado.InformacionExtra = taxonomia.ManejadorErrores.GetErroresTaxonomia();
                    }
                }
            }
            if (errores.Count() > 0)
            {
                LogUtil.Error(errores);
            }
            return(resultado);
        }