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