/// <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); }
public void ImportarDatosDeHojaExcel(ISheet hojaAImportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, ResumenProcesoImportacionExcelDto resumenImportacion, IDefinicionPlantillaXbrl plantillaDocumento) { var maxRow = hojaPlantilla.LastRowNum; var fechaDefault = plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"); var idiomaDefault = instancia.Taxonomia != null && instancia.Taxonomia.IdiomasTaxonomia != null && instancia.Taxonomia.IdiomasTaxonomia.Keys.Count > 0 ? instancia.Taxonomia.IdiomasTaxonomia.Keys.First() : String.Empty; for (var iRenglon = 0; iRenglon <= maxRow; iRenglon++) { var renglon = hojaPlantilla.GetRow(iRenglon); if (renglon != null) { var maxCol = renglon.LastCellNum; for (var iCol = 0; iCol <= maxCol; iCol++) { var valorHechoPlantilla = ExcelUtil.ObtenerValorCelda(renglon, iCol); if (!String.IsNullOrEmpty(valorHechoPlantilla) && valorHechoPlantilla.StartsWith(PREFIJO_CELDA_HECHO_PLANTILLA) && valorHechoPlantilla.Length > PREFIJO_CELDA_HECHO_PLANTILLA.Length) { var idHechoPlantilla = valorHechoPlantilla.Substring(PREFIJO_CELDA_HECHO_PLANTILLA.Length); var valorCeldaImportar = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, iCol); if (!String.IsNullOrEmpty(valorCeldaImportar)) { //Buscar el hecho de plantilla en el documento de instancia var hechoInstancia = plantillaDocumento.BuscarHechoPlantillaEnHechosDocumentoInstancia( idHechoPlantilla); //Si el hecho no existe crearlo en base a la plantilla if (hechoInstancia == null) { hechoInstancia = plantillaDocumento.CrearHechoAPartirDeIdDefinicionPlantilla( idHechoPlantilla); if (hechoInstancia != null) { hechoInstancia.NotasAlPie = ExcelUtil.ObtenerComentariosCelda(renglon, iCol, idiomaDefault); plantillaDocumento.InyectaHechoADocumentoInstancia(hechoInstancia); } } if (hechoInstancia != null) { var conceptoImportar = instancia.Taxonomia.ConceptosPorId[hechoInstancia.IdConcepto]; if (!UtilAbax.ActualizarValorHecho(conceptoImportar, hechoInstancia, valorCeldaImportar, fechaDefault)) { resumenImportacion.AgregarErrorFormato( UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, conceptoImportar.Id), hojaAImportar.SheetName, iRenglon.ToString(), iCol.ToString(), valorCeldaImportar); } else { resumenImportacion.TotalHechosImportados++; var hechoImportado = new InformacionHechoImportadoExcelDto() { IdConcepto = hechoInstancia.IdConcepto, IdHecho = hechoInstancia.Id, ValorImportado = valorCeldaImportar, HojaExcel = hojaAImportar.SheetName, Renglon = iRenglon, Columna = iCol }; resumenImportacion.AgregarHechoImportado(hechoImportado, UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, conceptoImportar.Id)); } } } } } } } }