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