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