示例#1
0
        /// <summary>
        /// Genera el contexto para el miembro indicado.
        /// </summary>
        /// <param name="conceptoMiembro">Miembro del que se requiere el contexto.</param>
        /// <param name="configuracion">Configuración para obtener el contexto.</param>
        /// <returns>Contexto generado o null si no se cuenta con lo necesario para generarlo.</returns>
        private Dto.ContextoDto GeneraContextoMiembro(ConceptoDto conceptoMiembro, ConfiguracionReporteExcel427000 configuracion)
        {
            PlantillaContextoDto plantillaContextoMiembro;

            Dto.ContextoDto contexto = null;
            var             configuracionPlantilla = configuracion.HipercuboReporte.Utileria.configuracion;

            if (configuracionPlantilla.PlantillasContextos.TryGetValue(conceptoMiembro.Nombre, out plantillaContextoMiembro) ||
                configuracionPlantilla.PlantillasContextos.TryGetValue(conceptoMiembro.Id, out plantillaContextoMiembro))
            {
                var idDimensionType = configuracionPlantilla.DimensionesDinamicas.First();
                PlantillaDimensionInfoDto plantillaDimensionType;
                if (configuracionPlantilla.PlantillaDimensiones.TryGetValue(idDimensionType, out plantillaDimensionType))
                {
                    var miembroType = plantillaDimensionType.CreaMiembroDimension(configuracion.IndiceSerieType.ToString());
                    configuracion.IndiceSerieType++;
                    var listaMiembrosDimension = new List <DimensionInfoDto>()
                    {
                        miembroType
                    };
                    contexto = plantillaContextoMiembro.GeneraContexto(configuracion.Instancia, configuracion.PlantillaDocumento, listaMiembrosDimension);
                    configuracion.PlantillaDocumento.InyectarContextoADocumentoInstancia(contexto);
                }
                else
                {
                    LogUtil.Error("No existe la definición de dimensión con el identificador [" + idDimensionType + "]");
                }
            }
            else
            {
                LogUtil.Error("No existe la definición de plantilla con el identificador [" + conceptoMiembro.Nombre + "]");
            }
            return(contexto);
        }
示例#2
0
        /// <summary>
        /// Crea un nuevo hecho.
        /// </summary>
        /// <param name="valor">Valor del hecho.</param>
        /// <param name="concepto">Concepto del hecho.</param>
        /// <param name="contexto">Contexto del hecho.</param>
        /// <param name="idUnidad">Identificador de la unidad.</param>
        /// <param name="instancia">Documento de instancia.</param>
        /// <param name="plantilla">Plantilla del documento.</param>
        /// <param name="resumenImportacion">Detalle de la importación.</param>
        /// <param name="nombreHoja">Nombre de la hoja.</param>
        /// <param name="numeroFila">Indice de la fila.</param>
        /// <param name="numeroColumna">Indice de la columna.</param>
        private void CreaHecho(
            String valor,
            ConceptoDto concepto,
            Dto.ContextoDto contexto,
            String idUnidad,
            DocumentoInstanciaXbrlDto instancia,
            IDefinicionPlantillaXbrl plantilla,
            ResumenProcesoImportacionExcelDto resumenImportacion,
            String nombreHoja,
            int numeroFila,
            int numeroColumna)
        {
            var idHecho    = "A" + Guid.NewGuid().ToString();
            var hechoNuevo = instancia.CrearHecho(concepto.Id, idUnidad, contexto.Id, idHecho);

            if (concepto.EsTipoDatoNumerico)
            {
                if (concepto.TipoDatoXbrl.Contains(TiposDatoXBRL.MonetaryItemType))
                {
                    hechoNuevo.Decimales = "-3";
                }
                else
                {
                    hechoNuevo.Decimales = "0";
                }
            }
            if (!ActualizarValor(concepto, valor, hechoNuevo, plantilla))
            {
                resumenImportacion.AgregarErrorFormato(
                    UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, concepto.Id),
                    nombreHoja,
                    numeroFila.ToString(),
                    numeroColumna.ToString(),
                    valor);
            }
            else
            {
                resumenImportacion.TotalHechosImportados++;
                var hechoImportado = new AbaxXBRLCore.Common.Dtos.InformacionHechoImportadoExcelDto()
                {
                    IdConcepto     = hechoNuevo.IdConcepto,
                    IdHecho        = hechoNuevo.Id,
                    ValorImportado = valor,
                    HojaExcel      = nombreHoja,
                    Renglon        = numeroFila,
                    Columna        = numeroColumna
                };
                resumenImportacion.AgregarHechoImportado(hechoImportado, UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, hechoNuevo.Id));
            }

            plantilla.InyectaHechoADocumentoInstancia(hechoNuevo);
        }
示例#3
0
        /// <summary>
        /// Crea los hechos en base a la configuración.
        /// </summary>
        /// <param name="fila">Fila donde se obtendrán los datos para genarar los hechos.</param>
        /// <param name="contexto">Contexto al que pertenecen los nuevos hechos.</param>
        /// <param name="configuracion">Configuración con la información general para la generación de los hechos.</param>
        private void GeneraHechos(IRow fila, ConceptoDto conceptoMiembroActual, ConfiguracionReporteExcel427000 configuracion)
        {
            var fechaDefault = configuracion.FechaDefault;

            Dto.ContextoDto contextoActual   = null;
            var             registroGenerado = false;

            foreach (var indexColumna in configuracion.DiccionarioConceptosPorColumna.Keys)
            {
                var    celda      = fila.GetCell(indexColumna);
                String valorHecho = null;
                if (celda != null && !celda.CellType.Equals(CellType.Blank))
                {
                    valorHecho = ExcelUtil.ObtenerValorCelda(celda.CellType, celda);
                }
                if (String.IsNullOrEmpty(valorHecho))
                {
                    if (!registroGenerado)
                    {
                        return;
                    }
                    else
                    {
                        //valorHecho = String.Empty;
                        continue;
                    }
                }
                ConceptoDto concepto;
                if (configuracion.DiccionarioConceptosPorColumna.TryGetValue(indexColumna, out concepto))
                {
                    if (contextoActual == null)
                    {
                        contextoActual = GeneraContextoMiembro(conceptoMiembroActual, configuracion);
                    }
                    configuracion.InicializaImportacion();
                    String    idUnidad   = null;
                    String    decimales  = null;
                    var       idConcepto = concepto.Id;
                    UnidadDto unidad;
                    if (configuracion.DiccionarioUnidadesPorIdConcepto.TryGetValue(idConcepto, out unidad))
                    {
                        idUnidad = unidad.Id;
                        configuracion.DiccionarioDecimalesPorIdConcepto.TryGetValue(idConcepto, out decimales);
                    }
                    var idHecho    = "A" + Guid.NewGuid().ToString();
                    var hechoNuevo = configuracion.Instancia.CrearHecho(concepto.Id, idUnidad, contextoActual.Id, idHecho);
                    hechoNuevo.Decimales = decimales;
                    if (!UtilAbax.ActualizarValorHecho(concepto, hechoNuevo, valorHecho, fechaDefault))
                    {
                        configuracion.ResumenImportacion.AgregarErrorFormato(
                            UtilAbax.ObtenerEtiqueta(configuracion.Instancia.Taxonomia, concepto.Id),
                            configuracion.NombreHoja,
                            fila.RowNum.ToString(),
                            indexColumna.ToString(),
                            valorHecho);
                    }
                    else
                    {
                        configuracion.ResumenImportacion.TotalHechosImportados++;
                        var hechoImportado = new AbaxXBRLCore.Common.Dtos.InformacionHechoImportadoExcelDto()
                        {
                            IdConcepto     = hechoNuevo.IdConcepto,
                            IdHecho        = hechoNuevo.Id,
                            ValorImportado = valorHecho,
                            HojaExcel      = configuracion.NombreHoja,
                            Renglon        = fila.RowNum,
                            Columna        = indexColumna
                        };
                        configuracion.ResumenImportacion.AgregarHechoImportado(hechoImportado, UtilAbax.ObtenerEtiqueta(configuracion.Instancia.Taxonomia, hechoNuevo.Id));
                    }

                    configuracion.PlantillaDocumento.InyectaHechoADocumentoInstancia(hechoNuevo);
                    registroGenerado = true;
                }
            }
        }