コード例 #1
0
        /// <summary>
        /// Genera un nuevo miembro de dimension con el template actual.
        /// </summary>
        /// <param name="nombreMiembro">Nombre del miembro.</param>
        /// <returns>Miembro de la dimensión.</returns>
        public DimensionInfoDto CreaMiembroDimension(String nombreMiembro)
        {
            var miembroDimension = new DimensionInfoDto()
            {
                Explicita                 = this.Explicita,
                IdDimension               = this.IdDimension,
                IdItemMiembro             = this.IdItemMiembro,
                QNameDimension            = this.QNameDimension,
                QNameItemMiembro          = this.QNameItemMiembro,
                ElementoMiembroTipificado = this.ElementoMiembroTipificado
            };

            if (Explicita)
            {
                var slashLastIndex = PrefijoValor.LastIndexOf("/");
                var prefijoId      = PrefijoValor.Substring(slashLastIndex).Replace(":", "_");
                miembroDimension.IdItemMiembro    = prefijoId + nombreMiembro;
                miembroDimension.QNameItemMiembro = GeneraIdentificador(nombreMiembro);
            }
            else
            {
                miembroDimension.ElementoMiembroTipificado = GeneraIdentificador(nombreMiembro);
            }
            return(miembroDimension);
        }
        /// <summary>
        /// Obtiene el nombre de la marca o producto
        /// </summary>
        /// <param name="dimensionMember">dimension con origen de datos</param>
        /// <returns>Valor del miembro de la dimensión</returns>
        private string ObtenerNombreMarcaOProducto(DimensionInfoDto dimensionMember)
        {
            var nodo = XmlUtil.CrearElementoXML(dimensionMember.ElementoMiembroTipificado);

            if (nodo != null && nodo.HasChildNodes)
            {
                return(nodo.ChildNodes[0].InnerText);
            }
            return(String.Empty);
        }
コード例 #3
0
        /// <summary>
        /// Obtiene el nombre de la institución
        /// </summary>
        /// <param name="institucionMember">institución con origen de datos</param>
        /// <returns>Nombre de la institucion</returns>
        private string ObtenerNombreInstitucion(DimensionInfoDto institucionMember)
        {
            var nodo = XmlUtil.CrearElementoXML(institucionMember.ElementoMiembroTipificado);

            if (nodo != null && nodo.HasChildNodes)
            {
                return(nodo.ChildNodes[0].InnerText);
            }
            return(null);
        }
コード例 #4
0
        /// <summary>
        /// Gets the member value.
        /// </summary>
        /// <param name="dimension">Dimension to evaluate.</param>
        /// <param name="document">Document owner of the dimension.</param>
        /// <returns>Member value.</returns>
        private static String GetDimensionMember(DimensionInfoDto dimension, DocumentoInstanciaXbrlDto document)
        {
            var member = String.Empty;

            if (dimension.Explicita)
            {
                member = dimension.IdItemMiembro;
            }
            else
            {
                member = CellStoreUtil.EliminaEtiquetas(dimension.ElementoMiembroTipificado);
            }
            return(member);
        }
コード例 #5
0
        /// <summary>
        /// Obtiene el miembro de la dimensión indicada.
        /// </summary>
        /// <param name="hecho">Hecho del que se requiere el miembro</param>
        /// <param name="idDimension">Identificador de la dimensión</param>
        /// <param name="instancia">Documento de instnacia donde se obtiene el contexto.</param>
        /// <returns>Miembro d ela dimensión para el hecho indicado.</returns>
        public DimensionInfoDto ObtenMiembroDimension(HechoDto hecho, String idDimension, DocumentoInstanciaXbrlDto instancia)
        {
            var contexto = instancia.ContextosPorId[hecho.IdContexto];
            DimensionInfoDto miembroRetorno = null;

            for (var indexMiembro = 0; indexMiembro < contexto.ValoresDimension.Count; indexMiembro++)
            {
                var miembro = contexto.ValoresDimension[indexMiembro];
                if (miembro.IdDimension.Equals(idDimension))
                {
                    miembroRetorno = miembro;
                }
            }
            return(miembroRetorno);
        }
コード例 #6
0
        /// <summary>
        /// Retorna le valor limpio del miembro de la dimensión
        /// </summary>
        /// <param name="dimension">Dimension a evaluar.</param>
        /// <returns>Nombre sin prefijo ni subfijo.</returns>
        public string ObtenNombreMiembro(DimensionInfoDto dimension)
        {
            string nombre = null;

            if (dimension.QNameDimension == QNameDimension)
            {
                var nombreCompleto = Explicita ? dimension.QNameItemMiembro : dimension.ElementoMiembroTipificado;
                nombre = nombreCompleto.Replace(PrefijoValor, String.Empty);
                if (!String.IsNullOrEmpty(SubfijoValor))
                {
                    nombre = nombre.Replace(SubfijoValor, String.Empty);
                }
            }
            return(nombre);
        }
コード例 #7
0
        private static DimensionInfoDto obtenerPrimero(IList <DimensionInfoDto> dimensiones, String IdDimension)
        {
            DimensionInfoDto primero = null;

            foreach (DimensionInfoDto dimension in  dimensiones)
            {
                if (dimension.IdDimension != null && dimension.IdDimension.Equals(IdDimension) &&
                    dimension.ElementoMiembroTipificado != null)
                {
                    //&& !dimension.ElementoMiembroTipificado.Contains(todos)) {
                    primero = dimension;
                    break;
                }
            }

            return(primero);
        }
        public void ImportarDatosDeHojaExcel(NPOI.SS.UserModel.ISheet hojaAImportar, NPOI.SS.UserModel.ISheet hojaPlantilla, Dto.DocumentoInstanciaXbrlDto instancia, string rol, Common.Dtos.ResumenProcesoImportacionExcelDto resumenImportacion, Model.IDefinicionPlantillaXbrl plantillaDocumento)
        {
            DateTime fechaEvento         = DateTime.MinValue;
            int      numeroRenglonActual = RENGLON_INICIO_DATOS;
            var      qNameEntidad        = plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" +
                                           plantillaDocumento.ObtenerVariablePorId("nombreEntidad");
            ContextoDto contextoDestinoSimple    = null;
            ContextoDto contextoDestinoDimension = null;

            if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2016_10_12"), out fechaEvento))
            {
                contextoDestinoSimple = ObtenerContextoDestino(instancia, plantillaDocumento, qNameEntidad, fechaEvento, new List <DimensionInfoDto>());

                ActualizarValorHecho(instancia, "rel_ev_Ticker", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);
                ActualizarValorHecho(instancia, "rel_ev_Date", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);
                ActualizarValorHecho(instancia, "rel_ev_BusinessName", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);
                ActualizarValorHecho(instancia, "rel_ev_Place", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);
                ActualizarValorHecho(instancia, "rel_ev_Subject", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);

                if (!instancia.EspacioNombresPrincipal.Contains("fondos"))
                {
                    ActualizarValorHecho(instancia, "rel_ev_ForeignMarket", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoSimple, plantillaDocumento, resumenImportacion);
                }


                var valorTipoEvento      = ExcelUtil.ObtenerValorCelda(hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS);
                var idConceptoTipoEvento = BuscarTipoEvento(valorTipoEvento, instancia);
                if (idConceptoTipoEvento != null)
                {
                    DimensionInfoDto dimInfo = new DimensionInfoDto()
                    {
                        Explicita        = true,
                        IdDimension      = "rel_ev_RelevantEventTypesAxis",
                        QNameDimension   = instancia.Taxonomia.ConceptosPorId["rel_ev_RelevantEventTypesAxis"].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId["rel_ev_RelevantEventTypesAxis"].Nombre,
                        IdItemMiembro    = idConceptoTipoEvento,
                        QNameItemMiembro = instancia.Taxonomia.ConceptosPorId[idConceptoTipoEvento].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId[idConceptoTipoEvento].Nombre
                    };
                    contextoDestinoDimension = ObtenerContextoDestino(instancia, plantillaDocumento, qNameEntidad, fechaEvento, new List <DimensionInfoDto>()
                    {
                        dimInfo
                    });
                    ActualizarValorHecho(instancia, "rel_ev_RelevantEventContent", hojaAImportar, numeroRenglonActual++, COLUMNA_DATOS, contextoDestinoDimension, plantillaDocumento, resumenImportacion);
                }
            }
        }
コード例 #9
0
 /// <summary>
 /// Asigna los elementos de la dimensión a la plantilla.
 /// </summary>
 /// <param name="input">Elemento del que se tomarán los datos a popular.</param>
 public PlantillaDimensionInfoDto Deserialize(DimensionInfoDto input)
 {
     this.Explicita      = input.Explicita;
     this.IdDimension    = input.IdDimension;
     this.QNameDimension = input.QNameDimension;
     //this.ElementoMiembroTipificado = input.ElementoMiembroTipificado;
     if (input.Explicita)
     {
         var indexToken = input.QNameItemMiembro.LastIndexOf(":");
         this.PrefijoValor          = input.QNameItemMiembro.Substring(0, indexToken + 1);
         this.EtiquetaNuevoElemento = input.QNameItemMiembro.Substring(indexToken + 1);
         this.SubfijoValor          = String.Empty;
     }
     else
     {
         var indexToken     = input.ElementoMiembroTipificado.IndexOf(">");
         var indexTokenEnd  = input.ElementoMiembroTipificado.IndexOf("<", indexToken);
         var elementoLength = (indexTokenEnd - indexToken) - 1;
         this.PrefijoValor          = input.ElementoMiembroTipificado.Substring(0, (indexToken + 1));
         this.EtiquetaNuevoElemento = input.ElementoMiembroTipificado.Substring((indexToken + 1), elementoLength);
         this.SubfijoValor          = input.ElementoMiembroTipificado.Substring(indexTokenEnd);;
     }
     return(this);
 }
        public void ImportarDatosDeHojaExcel(ISheet hojaAImportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol,
                                             AbaxXBRLCore.Common.Dtos.ResumenProcesoImportacionExcelDto resumenImportacion, Model.IDefinicionPlantillaXbrl plantillaDocumento)
        {
            var numRenglones = hojaAImportar.LastRowNum;
            var qNameEntidad = plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" +
                               plantillaDocumento.ObtenerVariablePorId("nombreEntidad");

            for (var iRenglon = _renglonInicioHechos; iRenglon <= numRenglones; iRenglon++)
            {
                var valorMarca    = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, _columnaMarca);
                var valorProducto = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, _columnaProducto);

                if (_tituloRenglonTotal.Equals(valorProducto.Trim()))
                {
                    //Fin de tabla
                    valorMarca    = _todasLasMarcas;
                    valorProducto = _todosLosProductos;
                }

                if (!String.IsNullOrEmpty(valorMarca) && !String.IsNullOrEmpty(valorProducto))
                {
                    for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++)
                    {
                        var valorHecho = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, iCol);
                        if (!String.IsNullOrEmpty(valorHecho))
                        {
                            var dimensionMarca = new DimensionInfoDto()
                            {
                                Explicita                 = false,
                                IdDimension               = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionMarca, _columnaMarca),
                                QNameDimension            = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionMarca, _columnaMarca)]),
                                ElementoMiembroTipificado = String.Format(_templateTypedMemeberMarcas, System.Web.HttpUtility.HtmlEncode(valorMarca))
                            };
                            var dimensionProducto = new DimensionInfoDto()
                            {
                                Explicita                 = false,
                                IdDimension               = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionProducto, _columnaProducto),
                                QNameDimension            = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionProducto, _columnaProducto)]),
                                ElementoMiembroTipificado = String.Format(_templateTypedMemeberProducto, System.Web.HttpUtility.HtmlEncode(valorProducto))
                            };
                            var dimensionTipoIngreso = new DimensionInfoDto()
                            {
                                Explicita        = true,
                                IdDimension      = _idDimensionTipoIngresos,
                                QNameDimension   = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionTipoIngresos]),
                                IdItemMiembro    = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol),
                                QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol)]),
                            };

                            DateTime fechaInicio = DateTime.MinValue;
                            DateTime fechaFin    = DateTime.MinValue;
                            //Trimestre actual

                            if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_09_30"), out fechaFin)
                                &&
                                XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"), out fechaInicio))
                            {
                                ActualizarValorHecho(instancia.Taxonomia.ConceptosPorId[_idElementoPrimarioIngresos],
                                                     valorHecho,
                                                     new List <DimensionInfoDto>()
                                {
                                    dimensionMarca,
                                    dimensionProducto,
                                    dimensionTipoIngreso
                                },
                                                     fechaInicio, fechaFin, qNameEntidad,
                                                     instancia, plantillaDocumento, resumenImportacion, hojaAImportar, iRenglon, iCol);
                            }
                        }
                    }
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// Aplica las reglas de validacion de periodos de acuerdo a lo requerido:
        /// Se valida que exista por lo menos la acumulada del ejercicio reportado
        /// para los formatos principales de la taxonomía
        /// </summary>
        /// <param name="instancia">Documento de instancia a validar</param>
        /// <param name="parametros">Parametros de validación</param>
        /// <param name="fechaTrimestreParam">Fecha de trimestre reportado</param>
        /// <param name="hrefTax">Dirección HREF de la taxonomía referenciada</param>
        /// <param name="resultadoValidacion">Objeto de resultado de validación</param>
        /// <returns>True si la validación es exitosa, false si falta algún dato requerido, si faltan datos requeridos se agregan los mensajes de error correspondientes</returns>
        private bool ValidarPeriodosRequeridos(DocumentoInstanciaXbrlDto instancia, IDictionary <string, string> parametros, DateTime fechaTrimestreParam, String hrefTax, ResultadoValidacionDocumentoXBRLDto resultadoValidacion)
        {
            DateTime fechaInicioEjercicio = new DateTime(fechaTrimestreParam.Year, 1, 1);
            DateTime fechaInicioTrimestre = new DateTime(fechaTrimestreParam.Ticks).AddDays(1).AddMonths(-3);

            //Estado de situación financiera: Existencia del cierre del trimestre
            if (!ExisteInformacionEnPeriodo(instancia, ID_EQUITY_AND_LIABILITES, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de resultados:
            //Trimestral
            if (!ExisteInformacionEnPeriodo(instancia, ID_UTILIDAD_PERDIDA_NETA, fechaInicioTrimestre, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioTrimestre) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }
            //Acumulado
            if (!ExisteInformacionEnPeriodo(instancia, ID_UTILIDAD_PERDIDA_NETA, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de resultados ORI:
            //Trimestral
            if (!ExisteInformacionEnPeriodo(instancia, ID_RESULTADO_INTEGRAL, fechaInicioTrimestre, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioTrimestre) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }
            //Acumulado
            if (!ExisteInformacionEnPeriodo(instancia, ID_RESULTADO_INTEGRAL, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de flujos de efectivo
            if (!ExisteInformacionEnPeriodo(instancia, ID_CONCEPTO_INCREMENTO_DISMINUCION_EFECTIVO_ANTES_DE_CAMBIO_EN_TASA, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de cambios en el capital contable
            //Para cada miembro, empezando por la dim default

            /* Reactiva eventualmente esta validación
             * if (!ExisteInformacionEnPeriodo(instancia, ID_CAMBIOS_EN_EL_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, new List<DimensionInfoDto>()))
             * {
             *  AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
             *  return false;
             * }
             * if (!ExisteInformacionEnPeriodo(instancia, ID_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, new List<DimensionInfoDto>()))
             * {
             *  AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaTrimestreParam)), false);
             *  return false;
             * }
             */
            var listaDimCapital  = new List <DimensionInfoDto>();
            var dimensionBuscada = new DimensionInfoDto()
            {
                IdDimension = ID_COMPONENTES_DEL_CAPITAL,
                Explicita   = true
            };

            listaDimCapital.Add(dimensionBuscada);

            foreach (var idMiembroCapital in MIEMBROS_CAPITAL[hrefTax])
            {
                dimensionBuscada.IdItemMiembro = idMiembroCapital;
                if (!ExisteInformacionEnPeriodo(instancia, ID_CAMBIOS_EN_EL_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, listaDimCapital))
                {
                    AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                    return(false);
                }
                if (!ExisteInformacionEnPeriodo(instancia, ID_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, listaDimCapital))
                {
                    AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_FID_RV013, DateUtil.ToStandarString(fechaTrimestreParam)), false);
                    return(false);
                }
            }


            return(true);
        }
        public void ExportarRolADocumentoWord(Document word, Section seccionActual, DocumentoInstanciaXbrlDto instancia, string rol, IDefinicionPlantillaXbrl plantillaDocumento, string claveIdioma)
        {
            //Buscar el la tabla   []
            Table tabla800005 = null;

            NodeCollection allTables = seccionActual.GetChildNodes(NodeType.Table, true);

            foreach (Table table in allTables)
            {
                if (table.Range.Text.Contains("Ingresos nacionales [miembro]") || table.Range.Text.Contains("National income [member]"))
                {
                    tabla800005 = table;
                    break;
                }
            }

            if (tabla800005 != null)
            {
                DateTime fechaInicio = DateTime.MinValue;
                DateTime fechaFin    = DateTime.MinValue;
                //Trimestre actual


                if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_09_30"), out fechaFin)
                    &&
                    XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"), out fechaInicio))
                {
                    var todasLasMarcas = new DimensionInfoDto()
                    {
                        Explicita   = false,
                        IdDimension = _idDimensionMarcas,
                        ElementoMiembroTipificado = String.Format(_templateTypedMemeberMarcas, _todasLasMarcas)
                    };
                    var todosLosProductos = new DimensionInfoDto()
                    {
                        Explicita   = false,
                        IdDimension = _idDimensionProductos,
                        ElementoMiembroTipificado = String.Format(_templateTypedMemeberProducto, _todosLosProductos)
                    };


                    var combinacionesMarcaProducto = ObtenerCombinacionesDimensionesMarcaProducto(instancia, fechaInicio, fechaFin);

                    var iRenglon            = _renglonWordInicioHechos;
                    var renglonInicioHechos = tabla800005.Rows[_renglonWordInicioHechos];

                    foreach (var combinacion in combinacionesMarcaProducto)
                    {
                        var renglonNuevo = (Row)renglonInicioHechos.Clone(true);

                        tabla800005.InsertBefore(renglonNuevo, renglonInicioHechos);

                        renglonNuevo.Cells[0].FirstParagraph.AppendChild(new Run(word, ObtenerNombreMarcaOProducto(combinacion[0])));
                        renglonNuevo.Cells[0].FirstParagraph.Runs[0].Font.Name = "Arial";
                        renglonNuevo.Cells[0].FirstParagraph.Runs[0].Font.Size = 6;
                        renglonNuevo.Cells[1].FirstParagraph.AppendChild(new Run(word, ObtenerNombreMarcaOProducto(combinacion[1])));
                        renglonNuevo.Cells[1].FirstParagraph.Runs[0].Font.Name = "Arial";
                        renglonNuevo.Cells[1].FirstParagraph.Runs[0].Font.Size = 6;

                        var dimensionTipoIngreso = new DimensionInfoDto()
                        {
                            Explicita = true,
                        };

                        var listaDimensiones = new List <DimensionInfoDto>
                        {
                            combinacion[0],
                            combinacion[1],
                            dimensionTipoIngreso
                        };

                        for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++)
                        {
                            dimensionTipoIngreso.IdDimension   = _idDimensionTipoIngresos;
                            dimensionTipoIngreso.IdItemMiembro = _elementosMiembroTipoIngreso[iCol - _columnaInicioHechos];

                            var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio,
                                                               fechaFin, listaDimensiones);
                            if (hecho != null && hecho.Count > 0)
                            {
                                string valor = "$ ";

                                double valorDouble = 0;
                                if (Double.TryParse(hecho[0].Valor, NumberStyles.Any, CultureInfo.InvariantCulture,
                                                    out valorDouble))
                                {
                                    valor += valorDouble.ToString("#,##0.00");
                                }
                                else
                                {
                                    valor = hecho[0].Valor;
                                }
                                renglonNuevo.Cells[iCol].FirstParagraph.AppendChild(new Run(word, valor));
                                renglonNuevo.Cells[iCol].FirstParagraph.Runs[0].Font.Name = "Arial";
                                renglonNuevo.Cells[iCol].FirstParagraph.Runs[0].Font.Size = 6;
                            }
                        }
                        iRenglon++;
                    }
                    var renglonTotal = tabla800005.LastRow;
                    for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++)
                    {
                        var tipoIngreso = new DimensionInfoDto()
                        {
                            Explicita     = true,
                            IdDimension   = _idDimensionTipoIngresos,
                            IdItemMiembro = _elementosMiembroTipoIngreso[iCol - _columnaInicioHechos]
                        };

                        var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio,
                                                           fechaFin, new List <DimensionInfoDto>()
                        {
                            todasLasMarcas, todosLosProductos, tipoIngreso
                        });
                        if (hecho != null && hecho.Count > 0)
                        {
                            string valor       = "$ ";
                            double valorDouble = 0;
                            if (Double.TryParse(hecho[0].Valor, NumberStyles.Any, CultureInfo.InvariantCulture,
                                                out valorDouble))
                            {
                                valor += valorDouble.ToString("#,##0.00");
                            }
                            else
                            {
                                valor = hecho[0].Valor;
                            }
                            renglonTotal.Cells[iCol].FirstParagraph.AppendChild(new Run(word, valor));
                            renglonTotal.Cells[iCol].FirstParagraph.Runs[0].Font.Name = "Arial";
                            renglonTotal.Cells[iCol].FirstParagraph.Runs[0].Font.Size = 6;
                        }
                    }
                }
            }
        }
        public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, Model.IDefinicionPlantillaXbrl plantillaDocumento, String idioma)
        {
            DateTime fechaInicio = DateTime.MinValue;
            DateTime fechaFin    = DateTime.MinValue;

            //Trimestre actual

            if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_09_30"), out fechaFin)
                &&
                XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"), out fechaInicio))
            {
                var todasLasMarcas = new DimensionInfoDto()
                {
                    Explicita                 = false,
                    IdDimension               = _idDimensionMarcas,
                    QNameDimension            = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionMarcas]),
                    ElementoMiembroTipificado = String.Format(_templateTypedMemeberMarcas, _todasLasMarcas)
                };
                var todosLosProductos = new DimensionInfoDto()
                {
                    Explicita                 = false,
                    IdDimension               = _idDimensionProductos,
                    QNameDimension            = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionProductos]),
                    ElementoMiembroTipificado = String.Format(_templateTypedMemeberProducto, _todosLosProductos)
                };


                var combinacionesMarcaProducto = ObtenerCombinacionesDimensionesMarcaProducto(instancia, fechaInicio, fechaFin);
                if (combinacionesMarcaProducto.Count > 0)
                {
                    hojaAExportar.ShiftRows(_renglonInicioHechos, hojaAExportar.LastRowNum, combinacionesMarcaProducto.Count);
                }

                var iRenglon = _renglonInicioHechos;
                foreach (var combinacion in combinacionesMarcaProducto)
                {
                    var renglon = hojaAExportar.CreateRow(iRenglon);

                    ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, _columnaMarca, ObtenerNombreMarcaOProducto(combinacion[0]), CellType.String, null);
                    ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, _columnaProducto, ObtenerNombreMarcaOProducto(combinacion[1]), CellType.String, null);

                    var dimensionTipoIngreso = new DimensionInfoDto()
                    {
                        Explicita = true,
                    };

                    var listaDimensiones = new List <DimensionInfoDto>
                    {
                        combinacion[0],
                        combinacion[1],
                        dimensionTipoIngreso
                    };

                    for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++)
                    {
                        dimensionTipoIngreso.IdDimension      = _idDimensionTipoIngresos;
                        dimensionTipoIngreso.QNameDimension   = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionTipoIngresos]);
                        dimensionTipoIngreso.IdItemMiembro    = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol);
                        dimensionTipoIngreso.QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol)]);

                        var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio,
                                                           fechaFin, listaDimensiones);
                        if (hecho != null && hecho.Count > 0)
                        {
                            ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hecho[0].Valor, CellType.Numeric, hecho[0]);
                        }
                    }
                    iRenglon++;
                }

                var numRenglones = hojaAExportar.LastRowNum;
                for (; iRenglon <= numRenglones; iRenglon++)
                {
                    if (_tituloRenglonTotal.Equals(ExcelUtil.ObtenerValorCelda(hojaAExportar, iRenglon, _columnaProducto)))
                    {
                        for (var iCol = _columnaInicioHechos; iCol <= _columnaFinHechos; iCol++)
                        {
                            var tipoIngreso = new DimensionInfoDto()
                            {
                                Explicita        = true,
                                IdDimension      = _idDimensionTipoIngresos,
                                QNameDimension   = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[_idDimensionTipoIngresos]),
                                IdItemMiembro    = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol),
                                QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionItemTipoIngreso, iCol)])
                            };

                            var hecho = instancia.BuscarHechos(_idElementoPrimarioIngresos, null, null, fechaInicio,
                                                               fechaFin, new List <DimensionInfoDto>()
                            {
                                todasLasMarcas, todosLosProductos, tipoIngreso
                            });
                            if (hecho != null && hecho.Count > 0)
                            {
                                ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hecho[0].Valor, CellType.Numeric, hecho[0]);
                            }
                        }
                        break;
                    }
                }
            }
        }
コード例 #14
0
        /// <summary>
        /// Obtiene el QNameItemMiembro ó el ElementoMiembroTipificado según el tipo
        /// </summary>
        /// <returns></returns>
        public string ObtenIdMiembro(DimensionInfoDto dimension)
        {
            var nombre = ObtenNombreMiembro(dimension);

            return(nombre.Replace(" ", "_").Replace(":", "_"));
        }
コード例 #15
0
        public static IList <IngresosProductoReporteDto> generaContenidoReporte(DocumentoInstanciaXbrlDto documentoInstancia, ReporteXBRLDTO reporteXBRLDTO, int ContadorNotasAlPie, out int outContadorNotasAlPie)
        {
            contadorTMP = ContadorNotasAlPie;

            IDictionary <String, IDictionary <String, IngresosProductoReporteDto> > marcas = new Dictionary <String, IDictionary <String, IngresosProductoReporteDto> >();

            IList <IngresosProductoReporteDto> contenido = null;

            IngresosProductoReporteDto total = new IngresosProductoReporteDto();

            total.Total = true;
            total.PrincipalesProductos = tituloRenglonTotal;

            String finPeriodo    = ReporteXBRLUtil.obtenerValorHecho(ReportConstants.ID_FECHA_CIERRE_REPORTE_2014, documentoInstancia);
            String inicioPeriodo = DateReporteUtil.obtenerPeriodos(finPeriodo)["acum_anio_actual"].Split(new String[] { "_" }, StringSplitOptions.None)[0];

            var dateInicioPeriodo = DateReporteUtil.obtenerFecha(inicioPeriodo);
            var dateFinPeriodo    = DateReporteUtil.obtenerFecha(finPeriodo);

            foreach (ContextoDto contexto in documentoInstancia.ContextosPorId.Values)
            {
                if (contexto.Periodo.Tipo == PeriodoDto.Instante)
                {
                    if (!contexto.Periodo.FechaInstante.Equals(dateFinPeriodo))
                    {
                        continue;
                    }
                }
                else
                {
                    if (!contexto.Periodo.FechaInicio.Equals(dateInicioPeriodo) || !contexto.Periodo.FechaFin.Equals(dateFinPeriodo))
                    {
                        continue;
                    }
                }

                if (contexto.ValoresDimension != null && contexto.ValoresDimension.Count() > 0)
                {
                    DimensionInfoDto dimensionMarca    = obtenerPrimero(contexto.ValoresDimension, IdDimensionMarcas);
                    DimensionInfoDto dimensionProducto = obtenerPrimero(contexto.ValoresDimension, IdDimensionProductos);

                    if (dimensionMarca != null && dimensionProducto != null)
                    {
                        String   marca     = obtenerNombreMarcaProducto(dimensionMarca.ElementoMiembroTipificado).Trim();
                        String   producto  = obtenerNombreMarcaProducto(dimensionProducto.ElementoMiembroTipificado).Trim();
                        String   idMiembro = obtenerIdItemMiembro(contexto.ValoresDimension);
                        HechoDto hecho     = documentoInstancia.HechosPorId[documentoInstancia.HechosPorIdContexto[contexto.Id][0]];

                        if (marca.Equals(todasLasMarcas) && producto.Equals(todosLosProductos))
                        {
                            actualizarIngresosProducto(total, producto, idMiembro, hecho, reporteXBRLDTO);
                        }
                        else
                        {
                            actualizarHechosProducto(marcas, marca, producto, idMiembro, hecho, reporteXBRLDTO);
                        }
                    }
                }
            }

            contenido = crearIngresosProducto(marcas);
            contenido.Add(total);

            outContadorNotasAlPie = contadorTMP;
            contadorTMP           = 0;

            return(contenido);
        }
コード例 #16
0
        /// <summary>
        /// Inicializa diccionarios auxiliares.
        /// </summary>
        private void Init()
        {
            var periodos             = new List <PlantillaPeriodoDto>();
            var conjuntosDimensiones = new List <IList <DimensionInfoDto> >();

            foreach (var aliasPlantillaPeriodo in configuracion.PlantillasContextos.Keys)
            {
                var plantillaContexto = configuracion.PlantillasContextos[aliasPlantillaPeriodo];
                var plantillaPeriodo  = plantillaContexto.Periodo;
                periodos.Add(plantillaPeriodo);
            }
            var listaFiltroDimensiones = new List <DimensionInfoDto>();

            foreach (var aliasDimensionItem in configuracion.PlantillaDimensiones.Keys)
            {
                var plantillaDimension = configuracion.PlantillaDimensiones[aliasDimensionItem];
                var dimension          = new DimensionInfoDto()
                {
                    Explicita      = plantillaDimension.Explicita,
                    QNameDimension = plantillaDimension.QNameDimension
                };
                listaFiltroDimensiones.Add(dimension);
            }
            conjuntosDimensiones.Add(listaFiltroDimensiones);

            filtro = new FiltroHechosDto()
            {
                IdConcepto = configuracion.IdConceptos,
                Periodo    = periodos,
                ConjuntosExactosDimensiones = conjuntosDimensiones
            };

            var idsHechos    = consultaDocumentoInstanciaUtil.BuscaHechosPorFiltro(filtro);
            var idsContextos = consultaDocumentoInstanciaUtil.ObtenIdsContextosHechos(idsHechos);

            foreach (var idContexto in idsContextos)
            {
                var contexto         = documentoInstancia.ContextosPorId[idContexto];
                var listaDimensiones = contexto.ContieneInformacionDimensional ?
                                       contexto.ValoresDimension : contexto.Entidad.ContieneInformacionDimensional ?
                                       contexto.Entidad.ValoresDimension : new List <DimensionInfoDto>();

                var diccionarioDimensionesContexto = new Dictionary <string, string>();
                foreach (var dimension in listaDimensiones)
                {
                    IDictionary <string, DimensionInfoDto> diccionarioMiembros;
                    var idDimension = dimension.IdDimension;
                    if (!miembrosDimension.TryGetValue(idDimension, out diccionarioMiembros))
                    {
                        diccionarioMiembros = new Dictionary <string, DimensionInfoDto>();
                        miembrosDimension.Add(idDimension, diccionarioMiembros);
                    }
                    PlantillaDimensionInfoDto plantillaDimension;
                    if (configuracion.PlantillaDimensiones.TryGetValue(idDimension, out plantillaDimension))
                    {
                        var idMiembro = plantillaDimension.ObtenIdMiembro(dimension);
                        if (!diccionarioMiembros.ContainsKey(idMiembro))
                        {
                            diccionarioMiembros.Add(idMiembro, dimension);
                        }
                        diccionarioDimensionesContexto.Add(idDimension, idMiembro);
                    }
                }
                var idGrupoDimensionesDinamicasBuilder = new StringBuilder();
                var grupo = new Dictionary <string, string>();
                foreach (var aliasDimensionDinamica in configuracion.DimensionesDinamicas)
                {
                    string idMiembroDimension;
                    if (diccionarioDimensionesContexto.TryGetValue(aliasDimensionDinamica, out idMiembroDimension))
                    {
                        idGrupoDimensionesDinamicasBuilder.Append('_');
                        idGrupoDimensionesDinamicasBuilder.Append(idMiembroDimension);
                        grupo.Add(aliasDimensionDinamica, idMiembroDimension);
                    }
                }
                var idGrupoDimesionesDinamicas = idGrupoDimensionesDinamicasBuilder.Length > 1 ? idGrupoDimensionesDinamicasBuilder.ToString().Substring(1) : "indefinida";
                if (!gruposDimensionesDinamicas.ContainsKey(idGrupoDimesionesDinamicas))
                {
                    gruposDimensionesDinamicas.Add(idGrupoDimesionesDinamicas, grupo);
                }
            }
        }
コード例 #17
0
        /// <summary>
        /// Crea el hint de las dimensiones definidas en el archivo
        /// </summary>
        /// <param name="documentoInstanciXbrlDto">Informacion del documento Instancia</param>
        private void CrearHintDimension(DocumentoInstanciaXbrlDto documentoInstanciXbrlDto)
        {
            foreach (var IdHecho in documentoInstanciXbrlDto.HechosPorId)
            {
                var Hecho           = IdHecho.Value;
                var Concepto        = documentoInstanciXbrlDto.Taxonomia.ConceptosPorId[Hecho.IdConcepto];
                var Contexto        = documentoInstanciXbrlDto.ContextosPorId[Hecho.IdContexto];
                var hintDimensional = new HintDimensional();
                hintDimensional.DimensionInfoDto = new List <DimensionInfoDto>();
                hintDimensional.idConcepto       = Concepto.Id;

                if (Contexto.ContieneInformacionDimensional)
                {
                    hintDimensional.idConcepto = Concepto.Id;
                    foreach (var dimencionInfoDto in Contexto.ValoresDimension)
                    {
                        hintDimensional.DimensionInfoDto.Add(dimencionInfoDto);
                    }
                }
                else
                {
                    var hiperCubosHecho = new List <HipercuboDto>();

                    foreach (var listaHipercubo in documentoInstanciXbrlDto.Taxonomia.ListaHipercubos.Values)
                    {
                        foreach (var hipercubo in listaHipercubo)
                        {
                            if (hipercubo.ElementosPrimarios.Contains(Hecho.IdConcepto))
                            {
                                hiperCubosHecho.Add(hipercubo);
                            }
                        }
                    }

                    if (hiperCubosHecho.Count > 0)
                    {
                        foreach (var hiperCubo in hiperCubosHecho)
                        {
                            if (hiperCubo.ElementosPrimarios.Contains(Hecho.IdConcepto))
                            {
                                foreach (var dimension in hiperCubo.Dimensiones)
                                {
                                    if (documentoInstanciXbrlDto.Taxonomia.DimensionDefaults.ContainsKey(dimension))
                                    {
                                        var dimencionInfoDto = new DimensionInfoDto();
                                        dimencionInfoDto.IdDimension   = dimension;
                                        dimencionInfoDto.IdItemMiembro = documentoInstanciXbrlDto.Taxonomia.DimensionDefaults[dimension];
                                        dimencionInfoDto.Explicita     = true;

                                        hintDimensional.DimensionInfoDto.Add(dimencionInfoDto);
                                    }
                                }
                            }
                        }
                    }
                }

                if (hintDimensional.DimensionInfoDto.Count > 0)
                {
                    var jsonDimension = JsonConvert.SerializeObject(hintDimensional);
                    var andList       = new BindingList <IMongoQuery>();
                    andList.Add(Query.EQ("idConcepto", hintDimensional.idConcepto));

                    foreach (var detalleDimensional in hintDimensional.DimensionInfoDto)
                    {
                        andList.Add(Query.EQ("DimensionInfoDto.Explicita", detalleDimensional.Explicita));

                        if (detalleDimensional.Explicita)
                        {
                            andList.Add(Query.EQ("DimensionInfoDto.IdDimension", detalleDimensional.IdDimension));
                            andList.Add(Query.EQ("DimensionInfoDto.IdItemMiembro", detalleDimensional.IdItemMiembro));
                        }
                        else
                        {
                            andList.Add(Query.EQ("DimensionInfoDto.IdDimension", detalleDimensional.IdDimension));
                        }
                    }
                    var query = Query.And(Query.EQ("Id", Concepto.Id), Query.EQ("EspacioNombresPrincipal", documentoInstanciXbrlDto.EspacioNombresPrincipal));

                    var resultado = BlockStoreConsulta.consulta(CollectionDimension, Query.And(andList));

                    if (resultado.Count == 0)
                    {
                        var bsonDocuments = BsonDocument.Parse(jsonDimension);

                        BlockStoreDocumentoInstancia.insertarBlockStore(CollectionDimension, bsonDocuments);
                    }
                }
            }
        }
コード例 #18
0
        /// <summary>
        /// Procesa un renglón de la tabla de personas responsables importando su contenido
        /// </summary>

        /// <returns></returns>
        private int ImportarRenglonFigura(int numRow, string idMiembroFiguraActual, ISheet hojaAImportar, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento, ResumenProcesoImportacionExcelDto resumenImportacion)
        {
            var      institucionesActuales = new Dictionary <string, int>();
            DateTime fechaInicio           = DateTime.MinValue;
            DateTime fechaFin = DateTime.MinValue;

            if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2014_12_31"), out fechaFin)
                &&
                XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId("fecha_2014_12_31"), out fechaInicio))
            {
                //Si inicia un tipo de figura

                int lastRowNum = hojaAImportar.LastRowNum;
                //Mientras no se termine el documento o no se encuentre el inicio de otra figura
                while (numRow <= lastRowNum)
                {
                    var valorCelda = ExcelUtil.ObtenerValorCelda(hojaAImportar, numRow, COL_CONCEPTO_FIGURA);

                    if (valorCelda != null && _mapeoMiembrosDimension.ContainsKey(valorCelda.Trim()))
                    {
                        break;
                    }

                    var valorInstitucion = ExcelUtil.ObtenerValorCelda(hojaAImportar, numRow, COL_CONCEPTO_INSTITUCION);
                    var valorLeyenda     = ExcelUtil.ObtenerValorCelda(hojaAImportar, numRow, COL_CONCEPTO_LEYENDA);
                    var valorNombre      = ExcelUtil.ObtenerValorCelda(hojaAImportar, numRow, COL_CONCEPTO_NOMBRE);
                    var valorCargo       = ExcelUtil.ObtenerValorCelda(hojaAImportar, numRow, COL_CONCEPTO_CARGO);


                    if (!String.IsNullOrEmpty(valorInstitucion) && !String.IsNullOrEmpty(valorNombre) && !String.IsNullOrEmpty(valorCargo))
                    {
                        if (!valoresAnterioresBorrados)
                        {
                            ReporteXBRLUtil.EliminarHechosConceptos(ID_CONCEPTO_PERSONAS, instancia);
                            ReporteXBRLUtil.EliminarHechosConceptos(ID_CONCEPTO_INSTITUCION, instancia);
                            valoresAnterioresBorrados = true;
                        }
                        var dimensionFigura = new DimensionInfoDto()
                        {
                            Explicita        = true,
                            IdDimension      = ID_DIMENSION_FIGURA,
                            QNameDimension   = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ID_DIMENSION_FIGURA]),
                            IdItemMiembro    = idMiembroFiguraActual,
                            QNameItemMiembro = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[idMiembroFiguraActual])
                        };
                        var dimensionInstitucion = new DimensionInfoDto()
                        {
                            Explicita      = false,
                            IdDimension    = ID_DIMENSION_TYPED_INSTITUCION,
                            QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ID_DIMENSION_TYPED_INSTITUCION])
                        };

                        var dimensionPersona = new DimensionInfoDto()
                        {
                            Explicita      = false,
                            IdDimension    = ID_DIMENSION_TYPED_PERSONA,
                            QNameDimension = ObtenerQNameConcepto(instancia.Taxonomia.ConceptosPorId[ID_DIMENSION_TYPED_PERSONA])
                        };

                        if (!institucionesActuales.ContainsKey(valorInstitucion))
                        {
                            //Agregar hechos de institución y leyenda
                            dimensionInstitucion.ElementoMiembroTipificado = String.Format(_templateTypedMemeberInstitucion, secuenciaInstitucion);
                            institucionesActuales[valorInstitucion]        = secuenciaInstitucion;
                            secuenciaInstitucion++;
                            ActualizarValorHecho(instancia.Taxonomia.ConceptosPorId[ID_CONCEPTO_INSTITUCION[0]],
                                                 valorInstitucion,
                                                 new List <DimensionInfoDto>()
                            {
                                dimensionFigura, dimensionInstitucion
                            },
                                                 fechaInicio, fechaFin,
                                                 plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" + plantillaDocumento.ObtenerVariablePorId("nombreEntidad"),
                                                 instancia, plantillaDocumento, resumenImportacion, hojaAImportar, numRow, COL_CONCEPTO_INSTITUCION);

                            ActualizarValorHecho(instancia.Taxonomia.ConceptosPorId[ID_CONCEPTO_INSTITUCION[1]],
                                                 valorLeyenda,
                                                 new List <DimensionInfoDto>()
                            {
                                dimensionFigura, dimensionInstitucion
                            },
                                                 fechaInicio, fechaFin,
                                                 plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" + plantillaDocumento.ObtenerVariablePorId("nombreEntidad"),
                                                 instancia, plantillaDocumento, resumenImportacion, hojaAImportar, numRow, COL_CONCEPTO_LEYENDA);
                        }
                        else
                        {
                            dimensionInstitucion.ElementoMiembroTipificado = String.Format(_templateTypedMemeberInstitucion, institucionesActuales[valorInstitucion]);
                        }

                        //Agregar hechos de nombre y cargo
                        dimensionPersona.ElementoMiembroTipificado = String.Format(_templateTypedMemeberPerson, secuenciaPersona++);

                        ActualizarValorHecho(instancia.Taxonomia.ConceptosPorId[ID_CONCEPTO_PERSONAS[0]],
                                             valorNombre,
                                             new List <DimensionInfoDto>()
                        {
                            dimensionFigura, dimensionInstitucion, dimensionPersona
                        },
                                             fechaInicio, fechaFin,
                                             plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" + plantillaDocumento.ObtenerVariablePorId("nombreEntidad"),
                                             instancia, plantillaDocumento, resumenImportacion, hojaAImportar, numRow, COL_CONCEPTO_NOMBRE);

                        ActualizarValorHecho(instancia.Taxonomia.ConceptosPorId[ID_CONCEPTO_PERSONAS[1]],
                                             valorCargo,
                                             new List <DimensionInfoDto>()
                        {
                            dimensionFigura, dimensionInstitucion, dimensionPersona
                        },
                                             fechaInicio, fechaFin,
                                             plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" + plantillaDocumento.ObtenerVariablePorId("nombreEntidad"),
                                             instancia, plantillaDocumento, resumenImportacion, hojaAImportar, numRow, COL_CONCEPTO_CARGO);
                    }

                    numRow++;
                }
            }


            return(numRow);
        }
        public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, Model.IDefinicionPlantillaXbrl plantillaDocumento, String idioma)
        {
            var numRenglones = hojaPlantilla.LastRowNum;

            for (var iRenglon = _renglonInicioHechos; iRenglon <= numRenglones; iRenglon++)
            {
                var idElementoPrimario = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, iRenglon, _columnaIdConcepto);
                if (idElementoPrimario != null && instancia.Taxonomia.ConceptosPorId.ContainsKey(idElementoPrimario))
                {
                    var concepto    = instancia.Taxonomia.ConceptosPorId[idElementoPrimario];
                    var EsAbstracto = concepto.EsAbstracto != null ? concepto.EsAbstracto.Value : false;
                    if (!EsAbstracto || (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value))
                    {
                        var idItemAjustes = _idItemMiembroSenialadoActualmenteAjustes;
                        //Si el concepto es un miembro de dimension, entonces se expresa el capital inicial para ese miembro
                        if (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value)
                        {
                            //Cambiar el concepto a capital contable y colocar el concepto a describir como miembro de la dimensión ajustes
                            idItemAjustes = concepto.Id;
                            concepto      = instancia.Taxonomia.ConceptosPorId[_elementosPrimarios[0]];
                        }
                        var numColumnas = hojaPlantilla.GetRow(iRenglon).LastCellNum;
                        for (int iCol = _columnaInicioHechos; iCol <= numColumnas; iCol++)
                        {
                            var valorDimensionAjustes = new DimensionInfoDto()
                            {
                                IdDimension   = _idDimensionAjustes,
                                IdItemMiembro = idItemAjustes,
                                Explicita     = true
                            };
                            var valorDimensionComponentesCapital = new DimensionInfoDto()
                            {
                                IdDimension   = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionComponentesCapital, _columnaInicioHechos),
                                IdItemMiembro = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonMiembroComponentesCapital, iCol),
                                Explicita     = true
                            };

                            if (!String.IsNullOrEmpty(valorDimensionAjustes.IdDimension) && !String.IsNullOrEmpty(valorDimensionAjustes.IdItemMiembro) &&
                                !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdDimension) &&
                                !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdItemMiembro))
                            {
                                DateTime fechaInicio         = DateTime.MinValue;
                                DateTime fechaFin            = DateTime.MinValue;
                                var      variableFechaFin    = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_09_30" : "fecha_2014_09_30";
                                var      variableFechaInicio = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_01_01" : "fecha_2014_01_01";

                                if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaFin), out fechaFin)
                                    &&
                                    XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaInicio), out fechaInicio))
                                {
                                    //Si es capital contable al inicio se envía de fecha de fin = fecha de inicio - 1 día
                                    //Si es capital contable al final se envía fecha de fin = fecha de fin
                                    if (iRenglon <= _renglonFinalAjustesRetrospectivos)
                                    {
                                        fechaFin = fechaInicio.AddDays(-1);
                                    }
                                    var listaDimensiones = new List <DimensionInfoDto>();

                                    if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionAjustes.IdDimension) &&
                                        !valorDimensionAjustes.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionAjustes.IdDimension]))
                                    {
                                        listaDimensiones.Add(valorDimensionAjustes);
                                    }
                                    if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionComponentesCapital.IdDimension) &&
                                        !valorDimensionComponentesCapital.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionComponentesCapital.IdDimension]))
                                    {
                                        listaDimensiones.Add(valorDimensionComponentesCapital);
                                    }

                                    var hechoDto = instancia.BuscarHechos(concepto.Id, null, null, fechaInicio, fechaFin,
                                                                          listaDimensiones);

                                    if (hechoDto != null && hechoDto.Count > 0)
                                    {
                                        ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon, iCol, hechoDto[0].Valor,
                                                                    concepto.EsTipoDatoNumerico?
                                                                    CellType.Numeric:CellType.String
                                                                    , hechoDto[0]);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public void ImportarDatosDeHojaExcel(ISheet hojaAImportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol,
                                             AbaxXBRLCore.Common.Dtos.ResumenProcesoImportacionExcelDto resumenImportacion, Model.IDefinicionPlantillaXbrl plantillaDocumento)
        {
            var numRenglones = hojaAImportar.LastRowNum;

            for (var iRenglon = _renglonInicioHechos; iRenglon <= numRenglones; iRenglon++)
            {
                var idElementoPrimario = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, iRenglon, _columnaIdConcepto);
                if (idElementoPrimario != null && instancia.Taxonomia.ConceptosPorId.ContainsKey(idElementoPrimario))
                {
                    var concepto    = instancia.Taxonomia.ConceptosPorId[idElementoPrimario];
                    var EsAbstracto = concepto.EsAbstracto != null ? concepto.EsAbstracto.Value : false;

                    if (!EsAbstracto || (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value))
                    {
                        var idItemAjustes = _idItemMiembroSenialadoActualmenteAjustes;
                        //Si el concepto es un miembro de dimension, entonces se expresa el capital inicial para ese miembro
                        if (concepto.EsMiembroDimension != null && concepto.EsMiembroDimension.Value)
                        {
                            //Cambiar el concepto a capital contable y colocar el concepto a describir como miembro de la dimensión ajustes
                            idItemAjustes = concepto.Id;
                            concepto      = instancia.Taxonomia.ConceptosPorId[_elementosPrimarios[0]];
                        }
                        var numColumnas = hojaAImportar.GetRow(iRenglon).LastCellNum;
                        for (int iCol = _columnaInicioHechos; iCol <= numColumnas; iCol++)
                        {
                            var valorCelda = ExcelUtil.ObtenerValorCelda(hojaAImportar, iRenglon, iCol);
                            if (!String.IsNullOrEmpty(valorCelda))
                            {
                                var valorDimensionAjustes = new DimensionInfoDto()
                                {
                                    IdDimension      = _idDimensionAjustes,
                                    IdItemMiembro    = idItemAjustes,
                                    QNameDimension   = instancia.Taxonomia.ConceptosPorId[_idDimensionAjustes].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId[_idDimensionAjustes].Nombre,
                                    QNameItemMiembro = instancia.Taxonomia.ConceptosPorId[idItemAjustes].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId[idItemAjustes].Nombre,
                                    Explicita        = true
                                };
                                var idDimensionCapital = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonDimensionComponentesCapital, _columnaInicioHechos);
                                var idItemCapital      = ExcelUtil.ObtenerIdConceptoDeCelda(hojaPlantilla, _renglonMiembroComponentesCapital, iCol);

                                if (!String.IsNullOrEmpty(idItemCapital) && instancia.Taxonomia.ConceptosPorId.ContainsKey(idItemCapital))
                                {
                                    var valorDimensionComponentesCapital = new DimensionInfoDto()
                                    {
                                        IdDimension      = idDimensionCapital,
                                        IdItemMiembro    = idItemCapital,
                                        QNameDimension   = instancia.Taxonomia.ConceptosPorId[idDimensionCapital].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId[idDimensionCapital].Nombre,
                                        QNameItemMiembro = instancia.Taxonomia.ConceptosPorId[idItemCapital].EspacioNombres + ":" + instancia.Taxonomia.ConceptosPorId[idItemCapital].Nombre,
                                        Explicita        = true
                                    };

                                    if (!String.IsNullOrEmpty(valorDimensionAjustes.IdDimension) && !String.IsNullOrEmpty(valorDimensionAjustes.IdItemMiembro) &&
                                        !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdDimension) &&
                                        !String.IsNullOrEmpty(valorDimensionComponentesCapital.IdItemMiembro))
                                    {
                                        DateTime fechaInicio         = DateTime.MinValue;
                                        DateTime fechaFin            = DateTime.MinValue;
                                        var      variableFechaFin    = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_09_30" : "fecha_2014_09_30";
                                        var      variableFechaInicio = hojaPlantilla.SheetName.Contains("Actual") ? "fecha_2015_01_01" : "fecha_2014_01_01";
                                        if (XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaFin), out fechaFin)
                                            &&
                                            XmlUtil.ParsearUnionDateTime(plantillaDocumento.ObtenerVariablePorId(variableFechaInicio), out fechaInicio))
                                        {
                                            //Si es capital contable al inicio se envía de fecha de fin = fecha de inicio - 1 día
                                            //Si es capital contable al final se envía fecha de fin = fecha de fin
                                            if (iRenglon <= _renglonFinalAjustesRetrospectivos)
                                            {
                                                fechaFin = fechaInicio.AddDays(-1);
                                            }
                                            var listaDimensiones = new List <DimensionInfoDto>();

                                            if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionAjustes.IdDimension) &&
                                                !valorDimensionAjustes.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionAjustes.IdDimension]))
                                            {
                                                listaDimensiones.Add(valorDimensionAjustes);
                                            }
                                            if (instancia.Taxonomia.DimensionDefaults.ContainsKey(valorDimensionComponentesCapital.IdDimension) &&
                                                !valorDimensionComponentesCapital.IdItemMiembro.Equals(instancia.Taxonomia.DimensionDefaults[valorDimensionComponentesCapital.IdDimension]))
                                            {
                                                listaDimensiones.Add(valorDimensionComponentesCapital);
                                            }

                                            ActualizarValorHecho(concepto, valorCelda,
                                                                 listaDimensiones,
                                                                 fechaInicio, fechaFin,
                                                                 plantillaDocumento.ObtenerVariablePorId("esquemaEntidad") + ":" + plantillaDocumento.ObtenerVariablePorId("nombreEntidad"),
                                                                 instancia, plantillaDocumento, resumenImportacion, hojaAImportar, iRenglon, iCol
                                                                 );
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #21
0
        /// <summary>
        /// Aplica las reglas de validacion de periodos de acuerdo a lo requerido:
        /// Se valida que exista por lo menos la información trimestral y acumulada del ejercicio reportado
        /// para los formatos principales de la taxonomía
        /// </summary>
        /// <param name="instancia">Documento de instancia a validar</param>
        /// <param name="parametros">Parametros de validación</param>
        /// <param name="fechaTrimestreParam">Fecha de trimestre reportado</param>
        /// <param name="resultadoValidacion">Objeto de resultado de validación</param>
        /// <returns>True si la validación es exitosa, false si falta algún dato requerido, si faltan datos requeridos se agregan los mensajes de error correspondientes</returns>
        private bool ValidarPeriodosRequeridos(DocumentoInstanciaXbrlDto instancia, IDictionary <string, string> parametros, DateTime fechaTrimestreParam, ResultadoValidacionDocumentoXBRLDto resultadoValidacion)
        {
            DateTime fechaInicioEjercicio = new DateTime(fechaTrimestreParam.Year, 1, 1);
            DateTime fechaInicioTrimestre = new DateTime(fechaTrimestreParam.Ticks).AddDays(1).AddMonths(-3);
            DateTime fechaA12Meses        = new DateTime(fechaTrimestreParam.Ticks).AddDays(1).AddYears(-1);

            LogUtil.Info("FechaInicioEjercicio:" + DateUtil.ToStandarString(fechaInicioEjercicio));
            LogUtil.Info("FechaInicioTrimestre:" + DateUtil.ToStandarString(fechaInicioTrimestre));
            //Estado de situación financiera: Exitencia del cierre del trimestre
            if (!ExisteInformacionEnPeriodo(instancia, ID_ACTIVOS, fechaInicioTrimestre, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de resultados:
            //Trimestral
            if (!ExisteInformacionEnPeriodo(instancia, ID_UTILIDAD_PERDIDA_NETA, fechaInicioTrimestre, fechaTrimestreParam, null) || !ExisteInformacionEnPeriodo(instancia, ID_RESULTADO_INTEGRAL, fechaInicioTrimestre, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaInicioTrimestre) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Acumulado
            if (!ExisteInformacionEnPeriodo(instancia, ID_UTILIDAD_PERDIDA_NETA, fechaInicioEjercicio, fechaTrimestreParam, null) || !ExisteInformacionEnPeriodo(instancia, ID_RESULTADO_INTEGRAL, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Informativos a 12 meses

            /*if (!ExisteInformacionEnPeriodo(instancia, ID_UTILIDAD_PERDIDA_NETA, fechaA12Meses, fechaTrimestreParam, null))
             * {
             *  AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaA12Meses) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
             *  return false;
             * }*/

            //Estado de flujos de efectivo
            if (!ExisteInformacionEnPeriodo(instancia, ID_INCREMENTO_DISMINUCION_EFECTIVO_Y_EQUIVALENTES, fechaInicioEjercicio, fechaTrimestreParam, null))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            //Estado de cambios en el capital contable
            //Para cada miembro, empezando por la dim default

            /* Temporalmente ignorar la dimension defaul
             * if (!ExisteInformacionEnPeriodo(instancia, ID_CAMBIOS_EN_EL_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, new List<DimensionInfoDto>()))
             * {
             *  AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
             *  return false;
             * }
             */
            if (!ExisteInformacionEnPeriodo(instancia, ID_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, new List <DimensionInfoDto>()))
            {
                AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaTrimestreParam)), false);
                return(false);
            }

            var listaDimCapital  = new List <DimensionInfoDto>();
            var dimensionBuscada = new DimensionInfoDto()
            {
                IdDimension = ID_COMPONENTES_DEL_CAPITAL,
                Explicita   = true
            };

            listaDimCapital.Add(dimensionBuscada);

            foreach (var idMiembroCapital in ID_MIEMBROS_CAPITAL_CONTABLE)
            {
                dimensionBuscada.IdItemMiembro = idMiembroCapital;
                if (!ExisteInformacionEnPeriodo(instancia, ID_CAMBIOS_EN_EL_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, listaDimCapital))
                {
                    AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaInicioEjercicio) + " - " + DateUtil.ToStandarString(fechaTrimestreParam)), false);
                    return(false);
                }
                if (!ExisteInformacionEnPeriodo(instancia, ID_CAPITAL_CONTABLE, fechaInicioEjercicio, fechaTrimestreParam, listaDimCapital))
                {
                    AgregarError(resultadoValidacion, null, null, String.Format(M_ERROR_RV009, DateUtil.ToStandarString(fechaTrimestreParam)), false);
                    return(false);
                }
            }


            return(true);
        }
コード例 #22
0
        private int InsertarRenglon(string idConceptoHechoActual, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento, int iRenglon, Document doc, Table tabla800001)
        {
            var _renglonPrimariosTotales = new String[]
            {
                "ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo",
                "ifrs_mx-cor_20141205_FechaDeFirmaContrato",
                "ifrs_mx-cor_20141205_FechaDeVencimiento",
                "ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa"
            };

            int      renglonesInsertados = 0;
            DateTime fechaInicio         = DateTime.MinValue;
            DateTime fechaFin            = DateTime.MinValue;

            //Trimestre actual
            if (AbaxXBRLCore.Common.Util.DateUtil.ParseDate(
                    plantillaDocumento.ObtenerVariablePorId("fecha_2015_09_30"),
                    AbaxXBRLCore.Common.Util.DateUtil.YMDateFormat, out fechaFin)
                &&
                AbaxXBRLCore.Common.Util.DateUtil.ParseDate(
                    plantillaDocumento.ObtenerVariablePorId("fecha_2015_07_01"),
                    AbaxXBRLCore.Common.Util.DateUtil.YMDateFormat, out fechaInicio))
            {
                var hechosElemento = instancia.BuscarHechos(idConceptoHechoActual, null, null, fechaInicio, fechaFin, null, false);

                var institucionesRelacionadas = ObtenerDistintasInstituciones(hechosElemento, instancia);

                var dimensionDenominacion = new DimensionInfoDto()
                {
                    Explicita     = true,
                    IdDimension   = _idDimensionDenominacion,
                    IdItemMiembro = _idItemMiembroTotalMonedas
                };
                var dimensionIntervalo = new DimensionInfoDto()
                {
                    Explicita     = true,
                    IdDimension   = _idDimensionIntervalo,
                    IdItemMiembro = _idItemMiembroTotalIntervalos
                };
                //Escribir renglón de institución
                foreach (var institucionMember in institucionesRelacionadas.Where(x => !x.ElementoMiembroTipificado.Contains(_institucionTotal)))
                {
                    renglonesInsertados++;
                    var renglonNuevo = iRenglon + renglonesInsertados;
                    var dimensiones  = new List <DimensionInfoDto>()
                    {
                        dimensionDenominacion, dimensionIntervalo, institucionMember
                    };
                    //insertar renglon

                    var renglon = (Row)tabla800001.Rows[renglonNuevo].Clone(true);

                    tabla800001.InsertAfter(renglon, tabla800001.Rows[renglonNuevo - 1]);

                    renglon.FirstCell.FirstParagraph.AppendChild(new Run(doc, ObtenerNombreInstitucion(institucionMember)));
                    renglon.FirstCell.FirstParagraph.Runs[0].Font.Name = "Arial";
                    renglon.FirstCell.FirstParagraph.Runs[0].Font.Size = 6;
                    //Escribir los elementos primarios que van en total
                    for (var iCol = _columnaInicioHechosTotales; iCol <= _columnaFinHechosTotales; iCol++)
                    {
                        var idConceptoHechoTotal = _renglonPrimariosTotales[iCol - _columnaInicioHechosTotales];

                        var hechoTotal = instancia.BuscarHechos(idConceptoHechoTotal, null, null, fechaInicio, fechaFin, dimensiones);
                        if (hechoTotal != null && hechoTotal.Count > 0)
                        {
                            renglon.Cells[iCol].FirstParagraph.AppendChild(new Run(doc, hechoTotal[0].Valor));
                            renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Name = "Arial";
                            renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Size = 6;
                        }
                        else
                        {
                            //renglon.Cells[iCol].FirstParagraph.Runs[0].Text = "";
                        }
                    }
                    //Montos
                    for (var iCol = _columnaInicioHechosMontos; iCol <= _columnaFinHechosMontos; iCol++)
                    {
                        //dimensionDenominacion.IdItemMiembro = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonItemMiembroDenominacion, iCol);
                        //dimensionIntervalo.IdItemMiembro = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonItemMiembroIntervalo, iCol);

                        //var hechoMonto = instancia.BuscarHechos(idConceptoHechoActual, null, null, fechaInicio, fechaFin, dimensiones);
                        //if (hechoMonto != null && hechoMonto.Count > 0)
                        //{
                        //    ExcelUtil.AsignarValorCelda(hojaAExportar, renglonNuevo, iCol, hechoMonto[0].Valor, CellType.Numeric);
                        //}
                        renglon.Cells[iCol].FirstParagraph.AppendChild(new Run(doc, "0"));
                        renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Name = "Arial";
                        renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Size = 6;
                    }
                }
                //Escribir en renglón de total
                foreach (var institucionMember in institucionesRelacionadas.Where(x => x.ElementoMiembroTipificado.Contains(_institucionTotal)))
                {
                    var dimensiones = new List <DimensionInfoDto>()
                    {
                        dimensionDenominacion, dimensionIntervalo, institucionMember
                    };
                    var renglon = tabla800001.Rows[iRenglon];
                    //Montos
                    for (var iCol = _columnaInicioHechosMontos; iCol <= _columnaFinHechosMontos; iCol++)
                    {
                        /*dimensionDenominacion.IdItemMiembro = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonItemMiembroDenominacion, iCol);
                         * dimensionIntervalo.IdItemMiembro = ExcelUtil.ObtenerValorCelda(hojaPlantilla, _renglonItemMiembroIntervalo, iCol);
                         *
                         * var hechoMonto = instancia.BuscarHechos(idConceptoHechoActual, null, null, fechaInicio, fechaFin, dimensiones);
                         * if (hechoMonto != null && hechoMonto.Count > 0)
                         * {
                         *  ExcelUtil.AsignarValorCelda(hojaAExportar, iRenglon + renglonesInsertados, iCol, hechoMonto[0].Valor, CellType.Numeric);
                         * }*/
                        renglon.Cells[iCol].FirstParagraph.AppendChild(new Run(doc, "0"));
                        renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Name = "Arial";
                        renglon.Cells[iCol].FirstParagraph.Runs[0].Font.Size = 6;
                    }
                }
            }
            return(renglonesInsertados);
        }