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