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