/// <summary> /// Genera un diccionario con los contextos por columna para las calificaciones. /// </summary> /// <param name="conceptoMiembro">Concepto miembro de las calificadoras.</param> /// <param name="diccionarioContextosSerie">Diccionario con los contextos por serie.</param> /// <param name="hipercuboUtil"></param> /// <param name="instancia">Documento de instancia a evaluar.</param> /// <param name="plantillaDocumento">Plantilla del documento de instancia.</param> /// <returns></returns> private IDictionary <int, Dto.ContextoDto> GeneraContextosCalificaciones( ConceptoDto conceptoMiembro, IDictionary <int, Dto.ContextoDto> diccionarioContextosSerie, EvaluadorHipercuboUtil hipercuboUtil, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento) { var contextosColumna = new Dictionary <int, Dto.ContextoDto>(); try { PlantillaContextoDto plantillaContextoDto = null; if (!hipercuboUtil.configuracion.PlantillasContextos.TryGetValue(conceptoMiembro.Nombre, out plantillaContextoDto)) { LogUtil.Error("No existe una definición de plantilla con el identificador \"" + conceptoMiembro.Nombre + "\"."); return(contextosColumna); } foreach (var indexColumn in diccionarioContextosSerie.Keys) { var contextoSerie = diccionarioContextosSerie[indexColumn]; var dimensiones = contextoSerie.ValoresDimension; var contextoCalificacion = plantillaContextoDto.GeneraContexto(instancia, plantillaDocumento, dimensiones); plantillaDocumento.InyectarContextoADocumentoInstancia(contextoCalificacion); contextosColumna.Add(indexColumn, contextoCalificacion); } } catch (Exception ex) { LogUtil.Error(ex); } return(contextosColumna); }
/// <summary> /// Genera los contextos de la serie. /// </summary> /// <param name="idDimension">Identificador de la idmensión evaluada.</param> /// <param name="rowImportar">Fila a iterar.</param> /// <param name="indiceColumnaInicio">Columna donde inicia la iteración.</param> /// <param name="hipercuboUtil">Utilería con la información del hipercubo.</param> /// <param name="resumenImportacion">Resumen de la importación para agregar errores en caso de presentarse.</param> /// <param name="nombreHoja">Nombre de la hoja.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="plantillaDocumento">Plantilla del documento.</param> /// <param name="claveIdioma"></param> /// <returns>Diccionario con los identificadores de contexto por columna.</returns> private IDictionary <int, Dto.ContextoDto> GeneraContextosSeries( String idDimension, IRow rowImportar, int indiceColumnaInicio, EvaluadorHipercuboUtil hipercuboUtil, ResumenProcesoImportacionExcelDto resumenImportacion, String nombreHoja, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento, string claveIdioma) { var nombreConcepto = ObtenEtiquetaConcepto(idDimension, instancia.Taxonomia, claveIdioma); var contextosColumna = new Dictionary <int, Dto.ContextoDto>(); PlantillaDimensionInfoDto plantillaDimension = null; if (!hipercuboUtil.configuracion.PlantillaDimensiones.TryGetValue(idDimension, out plantillaDimension)) { LogUtil.Error("No existe una definición de plantilla con el identificador \"" + idDimension + "\"."); return(contextosColumna); } PlantillaContextoDto plantillaContexto = hipercuboUtil.configuracion.PlantillasContextos.Values.First(); var seriesEvaluadas = new Dictionary <String, int>(); for (var indexSerie = indiceColumnaInicio; indexSerie <= rowImportar.LastCellNum; indexSerie++) { var celdaSerie = rowImportar.GetCell(indexSerie); if (celdaSerie != null && !celdaSerie.CellType.Equals(CellType.Blank)) { var nombreSerie = ExcelUtil.ObtenerValorCelda(celdaSerie.CellType, celdaSerie); if (String.IsNullOrWhiteSpace(nombreSerie)) { continue; } if (seriesEvaluadas.ContainsKey(nombreSerie)) { resumenImportacion.InformeErrores.Add(new InformeErrorImportacion() { Mensaje = "No fue posible agregar la serie \"" + nombreSerie + "\", de la hoja \"" + nombreHoja + "\" renglon \"" + rowImportar.RowNum.ToString() + "\" columna \"" + celdaSerie.ColumnIndex.ToString() + "\", debido a que este nombre de serie ya fué indicado previamente en la columna \"" + seriesEvaluadas[nombreSerie] + "\".", }); continue; } var miembroDimensionSerie = plantillaDimension.CreaMiembroDimension(nombreSerie); var listaDimensiones = new List <DimensionInfoDto>() { miembroDimensionSerie }; var contexto = plantillaContexto.GeneraContexto(instancia, plantillaDocumento, listaDimensiones); plantillaDocumento.InyectarContextoADocumentoInstancia(contexto); contextosColumna.Add(celdaSerie.ColumnIndex, contexto); seriesEvaluadas.Add(nombreSerie, celdaSerie.ColumnIndex); } } return(contextosColumna); }
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); }