public override void crearHipercubos(DocumentoInstanciaXbrlDto instancia) { reporteXBRLDTO.Hipercubos = new Dictionary<String, HipercuboReporteDTO>(); foreach (var definitionRolUri in instancia.Taxonomia.ListaHipercubos.Keys) { var listaHipercubos = instancia.Taxonomia.ListaHipercubos[definitionRolUri]; for (var indexHipercubo = 0; indexHipercubo < listaHipercubos.Count; indexHipercubo++) { var hipercubo = listaHipercubos[indexHipercubo]; var path = ReporteXBRLUtil.AR_PROS_PATH_HIPERCUBOS_JSON. Replace(ReporteXBRLUtil.CLAVE_TAXONOMIA, reporteXBRLDTO.Taxonomia). Replace(ReporteXBRLUtil.CLAVE_RA_PROS, reporteXBRLDTO.PrefijoRaProspecto). Replace(ReporteXBRLUtil.CONCEPTO_HIPERCUBO, hipercubo.IdConceptoHipercubo); var names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); if (names.Contains(path)) { plantilla.DeterminarParametrosConfiguracion(instancia); plantilla.GenerarVariablesDocumentoInstancia(); var hipercuboUtil = new EvaluadorHipercuboUtil(path, instancia, plantilla); if (hipercuboUtil.configuracion.DimensionesDinamicas.Count == 0) { LogUtil.Info("No existen dimensiones dinamicas en la configuración de hipercubo: " + path); continue; } var aliasDimensionEje = hipercuboUtil.configuracion.DimensionesDinamicas[0]; var miembrosEje = hipercuboUtil.ObtenMiembrosDimension(aliasDimensionEje); miembrosEje = miembrosEje.OrderBy(o => o.ElementoMiembroTipificado).ToList(); var titulos = hipercuboUtil.ObtenTitulosMiembrosDimension(aliasDimensionEje, miembrosEje); var hechos = hipercuboUtil.ObtenMatrizHechos(miembrosEje); if (titulos != null && hechos != null) { var hipercuboDto = new HipercuboReporteDTO(); hipercuboDto.Titulos = titulos; hipercuboDto.Hechos = hechos; hipercuboDto.Utileria = hipercuboUtil; try { reporteXBRLDTO.Hipercubos[hipercubo.IdConceptoHipercubo] = hipercuboDto; } catch (Exception e) { throw e; } } } } } }
/// <summary> /// Obtiene la configuración del hipercubo que se pretende evaluar. /// </summary> /// <param name="idConceptoHipercubo">Identificador del concepto del hipercubo.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="plantilla">Plantilla del documento de instancia.</param> /// <returns>DTO con la configuración general del hipercubo.</returns> private HipercuboReporteDTO ObtenConfiguracionHipercubo(String idConceptoHipercubo, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantilla) { var claveTaxonomia = ObtenClaveTaxonomia(instancia.EspacioNombresPrincipal); var path = ReporteXBRLUtil.AR_PROS_PATH_HIPERCUBOS_JSON. Replace(ReporteXBRLUtil.CLAVE_TAXONOMIA, claveTaxonomia). Replace(ReporteXBRLUtil.CONCEPTO_HIPERCUBO, idConceptoHipercubo); var hipercuboUtil = new EvaluadorHipercuboUtil(path, instancia, plantilla); var aliasDimensionEje = hipercuboUtil.configuracion.DimensionesDinamicas[0]; var miembrosEje = hipercuboUtil.ObtenMiembrosDimension(aliasDimensionEje); miembrosEje = miembrosEje.OrderBy(o => o.ElementoMiembroTipificado).ToList(); var titulos = hipercuboUtil.ObtenTitulosMiembrosDimension(aliasDimensionEje, miembrosEje); var hechos = hipercuboUtil.ObtenMatrizHechos(miembrosEje); var hipercuboDto = new HipercuboReporteDTO(); hipercuboDto.Titulos = titulos; hipercuboDto.Hechos = hechos; hipercuboDto.Utileria = hipercuboUtil; return(hipercuboDto); }