Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }