/// <summary>
        /// Crea un hecho y lo inyecta al documento de instancia y a la tupla padre
        /// </summary>
        /// <param name="hechoEnTupla"></param>
        /// <param name="idConcepto"></param>
        /// <param name="instancia"></param>
        /// <returns></returns>
        private AbaxXBRLCore.Viewer.Application.Dto.HechoDto CrearHechoEnTupla(AbaxXBRLCore.Viewer.Application.Dto.HechoDto tupla, string idConcepto, DocumentoInstanciaXbrlDto instancia,
                                                                               Model.IDefinicionPlantillaXbrl plantillaDocumento, string idContextoGeneral)
        {
            var idHecho  = "INV_H_" + Guid.NewGuid().ToString();
            var concepto = instancia.Taxonomia.ConceptosPorId[idConcepto];
            List <MedidaDto> listaMedidas = null;
            string           idUnidad     = null;
            var decimales = "";

            if (concepto.TipoDatoXbrl.Contains(TiposDatoXBRL.MonetaryItemType))
            {
                idUnidad  = "moneda_reporte";
                decimales = "2";
            }
            else if (concepto.EsTipoDatoNumerico)
            {
                idUnidad  = "pure";
                decimales = "2";
            }

            var hechoNuevo = instancia.CrearHecho(idConcepto, idUnidad, idContextoGeneral, idHecho);

            hechoNuevo.Decimales = decimales;
            plantillaDocumento.InyectaHechoADocumentoInstancia(hechoNuevo);
            tupla.Hechos.Add(hechoNuevo.Id);
            return(hechoNuevo);
        }
        public void ImportarDatosDeHojaExcel(NPOI.SS.UserModel.ISheet hojaAImportar, NPOI.SS.UserModel.ISheet hojaPlantilla, Dto.DocumentoInstanciaXbrlDto instancia,
                                             string rol, AbaxXBRLCore.Common.Dtos.ResumenProcesoImportacionExcelDto resumenImportacion, Model.IDefinicionPlantillaXbrl plantillaDocumento)
        {
            //var idiomaDefault = instancia.Taxonomia != null && instancia.Taxonomia.IdiomasTaxonomia != null && instancia.Taxonomia.IdiomasTaxonomia.Keys.Count > 0 ?
            //                    instancia.Taxonomia.IdiomasTaxonomia.Keys.First() : String.Empty;
            //
            string idContextoGeneral = instancia.ContextosPorId.First().Value.Id;

            var numRenglones = hojaAImportar.LastRowNum;

            for (var iRenglon = _renglonInicioHechos; iRenglon <= numRenglones; iRenglon++)
            {
                var numColumnas = hojaAImportar.GetRow(iRenglon).LastCellNum;

                if (numColumnas > _columnaInicioHechos)
                {
                    var valorConsecutivo = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, _columnaInicioHechos);
                    if (!String.IsNullOrEmpty(valorConsecutivo))
                    {
                        //Localizar tupla

                        //Crear tupla
                        var hechoTupla = instancia.CrearHecho(_idConceptoRegistroCartera, null, null, "INV" + Guid.NewGuid().ToString());
                        plantillaDocumento.InyectaHechoADocumentoInstancia(hechoTupla);
                        hechoTupla.Hechos = new List <String>();

                        for (int iCol = _columnaInicioHechos; iCol <= numColumnas; iCol++)
                        {
                            var valorCelda = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, iCol);
                            if (!String.IsNullOrEmpty(valorCelda))
                            {
                                var idConcepto = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonIdConceptos, iCol);

                                if (!String.IsNullOrEmpty(idConcepto))
                                {
                                    //buscar el hecho dentro de la tupla, si no existe, crearlo

                                    var hechoEnTupla = CrearHechoEnTupla(hechoTupla, idConcepto, instancia, plantillaDocumento, idContextoGeneral);

                                    hechoEnTupla.Valor = valorCelda;
                                    //hechoEnTupla.NotasAlPie = ExcelUtil.ObtenerComentariosCelda(hojaAImportar.GetRow(iRenglon), iCol, idiomaDefault);
                                }
                            }
                        }
                    }
                }
            }
        }