public override void crearParametrosReporte(DocumentoInstanciaXbrlDto instancia)
        {
            String[] idConceptosMiembro = new String[] {
                "annext_SerieTypedAxis",

                "annext_TimeIntervalAxis",
                "annext_LessThan1MonthOrLessThan30DaysMember",
                "annext_Between31And60DaysOrBetween1AndUpTo2MonthsMember",
                "annext_Between61And90DaysOrBetween2AndUpTo3MonthsMember",
                "annext_Between91And120DaysOr3ToUpTo4MonthsMember",
                "annext_Between121And150DaysOrFrom4To5MonthsMember",
                "annext_Between151And180DaysOrBetween5AndUpTo6MonthsMember",
                "annext_MoreThan180DaysOrMoreThan6MonthsMember",
                "annext_InJudicialProcessMember",
                "annext_ExtensionMember",
                "annext_TotalMember",
            };

            IDictionary <Object, Object> parametrosReporte = new Dictionary <Object, Object>();

            foreach (String idConcepto in idConceptosMiembro)
            {
                parametrosReporte.Add((idConcepto + "_HEADER"), ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, null, idConcepto, instancia));
            }

            reporteXBRLDTO.ParametrosReporte = parametrosReporte;
        }
        public void ExportarDatosDeHojaExcel(ISheet hojaAExportar, ISheet hojaPlantilla, DocumentoInstanciaXbrlDto instancia, string rol, IDefinicionPlantillaXbrl plantillaDocumento, String idioma)
        {
            int numeroRenglonActual = RENGLON_INICIO_DATOS;

            EscribirValorPrimerHecho(instancia, "rel_ev_Ticker", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
            EscribirValorPrimerHecho(instancia, "rel_ev_Date", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
            EscribirValorPrimerHecho(instancia, "rel_ev_BusinessName", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
            EscribirValorPrimerHecho(instancia, "rel_ev_Place", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
            EscribirValorPrimerHecho(instancia, "rel_ev_Subject", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);

            if (!instancia.EspacioNombresPrincipal.Contains("fondos"))
            {
                EscribirValorPrimerHecho(instancia, "rel_ev_ForeignMarket", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
            }



            var descTipoEvento = "";

            if (instancia.HechosPorIdConcepto.ContainsKey("rel_ev_RelevantEventContent"))
            {
                var listaHechosId = instancia.HechosPorIdConcepto["rel_ev_RelevantEventContent"];
                if (listaHechosId.Count > 0)
                {
                    var hechoContenido = instancia.HechosPorId[listaHechosId[0]];
                    var contexto       = instancia.ContextosPorId[hechoContenido.IdContexto];
                    if (contexto.ValoresDimension != null && contexto.ValoresDimension.Count > 0)
                    {
                        descTipoEvento = ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, null, contexto.ValoresDimension[0].IdItemMiembro, instancia);
                    }
                }
            }

            ExcelUtil.AsignarValorCelda(hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS, descTipoEvento,
                                        CellType.String, null);

            EscribirValorPrimerHecho(instancia, "rel_ev_RelevantEventContent", hojaAExportar, numeroRenglonActual++, COLUMNA_DATOS);
        }
        public override void escribirEncabezado(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, bool imprimirFooter)
        {
            var etiquetaReporte = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_news_RelevantEventReportAbstract", instancia);
            var claveEntidad    = ReporteXBRLUtil.obtenerValorHechoDefault("rel_news_Ticker", instancia, "");
            var etiquetaFecha   = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_news_Date", instancia);
            var fechaReporte    = ReporteXBRLUtil.obtenerValorHechoDefault("rel_news_Date", instancia, "");
            var ETIQUETA_DE     = estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_DE");



            Section seccion = docBuilder.CurrentSection;

            seccion.PageSetup.DifferentFirstPageHeaderFooter = false;
            seccion.HeadersFooters.LinkToPrevious(false);
            seccion.HeadersFooters.Clear();
            docBuilder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);

            Table tablaHead = docBuilder.StartTable();

            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 0;
            docBuilder.CellFormat.ClearFormatting();
            ///Fila de año y trimestre
            docBuilder.InsertCell();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(70);
            docBuilder.Font.Color = Color.Gray;
            docBuilder.Font.Bold  = false;
            docBuilder.Font.Size  = 9;
            docBuilder.Write(etiquetaReporte + " - " + claveEntidad);
            docBuilder.Font.Color = Color.Black;
            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            docBuilder.Font.Color = Color.Gray;
            docBuilder.Font.Size  = 8;
            docBuilder.Write(etiquetaFecha + " - " + fechaReporte);

            tablaHead.PreferredWidth = PreferredWidth.FromPercent(100);
            tablaHead.SetBorders(LineStyle.None, 0, Color.White);
            docBuilder.EndTable();

            docBuilder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);

            var leyendaReportes = System.Configuration.ConfigurationManager.AppSettings.Get("LeyendaReportes");

            if (!String.IsNullOrEmpty(leyendaReportes))
            {
                Table tablaPie = docBuilder.StartTable();
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                docBuilder.Write(leyendaReportes);


                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;

                docBuilder.InsertField("PAGE", "");
                docBuilder.Write(" " + ETIQUETA_DE + " ");
                docBuilder.InsertField("NUMPAGES", "");
                tablaPie.SetBorders(LineStyle.None, 0, Color.Black);
                docBuilder.EndTable();
            }
            else
            {
                docBuilder.InsertField("PAGE", "");
                docBuilder.Write(" " + ETIQUETA_DE + " ");
                docBuilder.InsertField("NUMPAGES", "");
                docBuilder.CurrentParagraph.ParagraphFormat.Alignment = ParagraphAlignment.Right;
            }

            docBuilder.MoveToDocumentEnd();
        }
Exemple #4
0
        public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            //estructuraReporte.ConceptosReportePorRol[""][0].Hechos[""].Valor
            foreach (HeaderFooter head in docBuilder.Document.FirstSection.HeadersFooters)
            {
                head.Range.Replace("${label_rel_ev_RelevantEventReportAbstract}",
                                   ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventReportAbstract", instancia),
                                   false, false);

                head.Range.Replace("${label_rel_ev_Date}",
                                   ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Date", instancia),
                                   false, false);

                head.Range.Replace("${rel_ev_Date}",
                                   ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Date", instancia, ""),
                                   false, false);

                head.Range.Replace("${rel_ev_BusinessName}",
                                   ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""),
                                   false, false);
            }

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Ticker}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Ticker", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Ticker}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Ticker", instancia, ""),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_BusinessName}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_BusinessName", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_BusinessName}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Place}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Place", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Place}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Place", instancia, ""),
                                                           false, false);


            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_ForeignMarket}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_ForeignMarket", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_ForeignMarket}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_ForeignMarket", instancia, ""),
                                                           false, false);



            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventTypesAxis}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventTypesAxis", instancia),
                                                           false, false);

            string descTipoEvento = String.Empty;

            if (instancia.HechosPorIdConcepto.ContainsKey("rel_ev_RelevantEventContent"))
            {
                var listaHechosId = instancia.HechosPorIdConcepto["rel_ev_RelevantEventContent"];
                if (listaHechosId.Count > 0)
                {
                    var hechoContenido = instancia.HechosPorId[listaHechosId[0]];
                    var contexto       = instancia.ContextosPorId[hechoContenido.IdContexto];
                    if (contexto.ValoresDimension != null && contexto.ValoresDimension.Count > 0)
                    {
                        descTipoEvento = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, contexto.ValoresDimension[0].IdItemMiembro, instancia);
                    }
                }
            }

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_RelevantEventTypesAxis}",
                                                           descTipoEvento,
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Subject}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Subject", instancia),
                                                           false, false);

            docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Subject}",
                                                           ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Subject", instancia, ""),
                                                           false, false);


            docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventContent}",
                                                           ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventContent", instancia),
                                                           false, false);
            docBuilder.MoveToSection(0);
            docBuilder.MoveToDocumentEnd();

            foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys)
            {
                var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_RelevantEventContent");
                if (concepto != null)
                {
                    escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
                }
            }

            docBuilder.MoveToDocumentEnd();



            /*
             * foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys)
             * {
             *  var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_AttachedDocumentPdf");
             *  if (concepto != null)
             *  {
             *      //escribirConceptoEnTablaNota(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
             *
             *      escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto);
             *  }
             * }
             */
        }
Exemple #5
0
        ///
        /// (non-Javadoc)
        /// @see com.bmv.spread.xbrl.reportes.builder.ReporteBuilder#crearParametrosReporte(com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto)
        ////
        public override void crearParametrosReporte(DocumentoInstanciaXbrlDto instancia)
        {
            base.crearParametrosReporte(instancia);

            String[] idConceptosMiembro = new String[] {
                "ifrs-full_ComponentsOfEquityAxis",
                "ifrs-full_IssuedCapitalMember",
                "ifrs-full_RetainedEarningsMember",
                "ifrs-full_OtherReservesMember",
                "ifrs-full_EquityAttributableToOwnersOfParentMember",
                "ifrs-full_NoncontrollingInterestsMember",
                "ifrs-full_EquityMember",

                "mx_ccd_OtherComprehensiveIncomeMember",
                "mx_deuda_OtherComprehensiveIncomeMember"
            };

            IDictionary <Object, Object> parametrosReporte = reporteXBRLDTO.ParametrosReporte;

            foreach (String idConcepto in idConceptosMiembro)
            {
                if (idConcepto.StartsWith("ifrs") || idConcepto.StartsWith(reporteXBRLDTO.PrefijoTaxonomia))
                {
                    parametrosReporte.Add(ReporteXBRLUtil.HEADER.Replace(ReporteXBRLUtil.TITULO, idConcepto), ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, null, idConcepto, instancia));
                }
            }

            reporteXBRLDTO.ParametrosReporte = parametrosReporte;
        }
        /// <summary>
        /// (non-Javadoc)
        /// </summary>
        ///  @see com.bmv.spread.xbrl.reportes.builder.ReporteBuilder#crearParametrosReporte(com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto)
        public override void crearParametrosReporte(DocumentoInstanciaXbrlDto instancia)
        {
            base.crearParametrosReporte(instancia);

            String[] idConceptosMiembro = new String[] {
                "ifrs-full_ComponentsOfEquityAxis",
                "ifrs-full_IssuedCapitalMember",
                "ifrs-full_SharePremiumMember",
                "ifrs-full_TreasurySharesMember",
                "ifrs-full_RetainedEarningsMember",
                "ifrs-full_RevaluationSurplusMember",
                "ifrs-full_ReserveOfExchangeDifferencesOnTranslationMember",
                "ifrs-full_ReserveOfCashFlowHedgesMember",
                "ifrs-full_ReserveOfGainsAndLossesOnHedgingInstrumentsThatHedgeInvestmentsInEquityInstrumentsMember",
                "ifrs-full_ReserveOfChangeInValueOfTimeValueOfOptionsMember",
                "ifrs-full_ReserveOfChangeInValueOfForwardElementsOfForwardContractsMember",
                "ifrs-full_ReserveOfChangeInValueOfForeignCurrencyBasisSpreadsMember",
                "ifrs-full_ReserveOfGainsAndLossesOnFinancialAssetsMeasuredAtFairValueThroughOtherComprehensiveIncomeMember",
                "ifrs-full_ReserveOfGainsAndLossesOnRemeasuringAvailableforsaleFinancialAssetsMember",
                "ifrs-full_ReserveOfSharebasedPaymentsMember",
                "ifrs-full_ReserveOfRemeasurementsOfDefinedBenefitPlansMember",
                "ifrs-full_AmountRecognisedInOtherComprehensiveIncomeAndAccumulatedInEquityRelatingToNoncurrentAssetsOrDisposalGroupsHeldForSaleMember",
                "ifrs-full_ReserveOfGainsAndLossesFromInvestmentsInEquityInstrumentsMember",
                "ifrs-full_ReserveOfChangeInFairValueOfFinancialLiabilityAttributableToChangeInCreditRiskOfLiabilityMember",
                "ifrs-full_ReserveForCatastropheMember",
                "ifrs-full_ReserveForEqualisationMember",
                "ifrs-full_ReserveOfDiscretionaryParticipationFeaturesMember",
                "ifrs_mx-cor_20141205_OtrosResultadosIntegralesMiembro",
                "ifrs-full_OtherReservesMember",
                "ifrs-full_EquityAttributableToOwnersOfParentMember",
                "ifrs-full_NoncontrollingInterestsMember",
                "ifrs-full_EquityMember",

                "ifrs_mx-cor_20141205_MonedasEje",
                "ifrs_mx-cor_20141205_DolaresMiembro",
                "ifrs_mx-cor_20141205_DolaresContravalorPesosMiembro",
                "ifrs_mx-cor_20141205_OtrasMonedasContravalorDolaresMiembro",
                "ifrs_mx-cor_20141205_OtrasMonedasContravalorPesosMiembro",
                "ifrs_mx-cor_20141205_TotalDePesosMiembro",

                "ifrs_mx-cor_20141205_InstitucionEje",
                "ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo",
                "ifrs_mx-cor_20141205_FechaDeFirmaContrato",
                "ifrs_mx-cor_20141205_FechaDeVencimiento",
                "ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa",
                "ifrs_mx-cor_20141205_DenominacionEje",
                "ifrs_mx-cor_20141205_MonedaNacionalMiembro",
                "ifrs_mx-cor_20141205_IntervaloDeTiempoEje",
                "ifrs_mx-cor_20141205_MonedaExtranjeraMiembro",
                "ifrs_mx-cor_20141205_AnoActualMiembro",
                "ifrs_mx-cor_20141205_Hasta1AnoMiembro",
                "ifrs_mx-cor_20141205_Hasta2AnosMiembro",
                "ifrs_mx-cor_20141205_Hasta3AnosMiembro",
                "ifrs_mx-cor_20141205_Hasta4AnosMiembro",
                "ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro",

                "ifrs_mx-cor_20141205_PrincipalesProductosOLineaDeProductosPartidas",
                "ifrs_mx-cor_20141205_TipoDeIngresoEje",
                "ifrs_mx-cor_20141205_PrincipalesMarcasEje",
                "ifrs_mx-cor_20141205_PrincipalesProductosOLineaDeProductosEje",
                "ifrs_mx-cor_20141205_IngresosNacionalesMiembro",
                "ifrs_mx-cor_20141205_IngresosPorExportacionMiembro",
                "ifrs_mx-cor_20141205_IngresosDeSubsidiariasEnElExtranjeroMiembro",
                "ifrs_mx-cor_20141205_IngresosTotalesMiembro"
            };

            IDictionary <Object, Object> parametrosReporte = reporteXBRLDTO.ParametrosReporte;

            foreach (String idConcepto in  idConceptosMiembro)
            {
                parametrosReporte.Add((idConcepto + "_HEADER"), ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, null, idConcepto, instancia));
            }

            reporteXBRLDTO.ParametrosReporte = parametrosReporte;
        }
Exemple #7
0
        private void escribirTablaSerie(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, DocumentoInstanciaXbrlDto instancia, HipercuboReporteDTO hipercubo)
        {
            docBuilder.Font.Size = TamanioLetraTituloTabla;
            docBuilder.Writeln();
            Table tablaDesglose = docBuilder.StartTable();

            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);
            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;

            docBuilder.InsertCell();

            docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            docBuilder.Font.Name  = TipoLetraTituloConcepto;
            docBuilder.Font.Bold  = TituloConceptoNegrita;
            docBuilder.Font.Size  = TamanioLetraTituloTabla;
            docBuilder.Font.Color = Color.White;

            docBuilder.Write((String)estructuraReporte.ParametrosReporte["annext_SerieTypedAxis_HEADER"]);

            for (var indexTitulo = 0; indexTitulo < hipercubo.Titulos.Count; indexTitulo++)
            {
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaTitulos);
                var titulo = hipercubo.Titulos[indexTitulo];
                docBuilder.InsertCell();
                docBuilder.Write(titulo);
            }

            docBuilder.EndRow();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
            docBuilder.Font.Size  = TamanioLetraContenidoTabla;
            docBuilder.Font.Color = Color.Black;

            foreach (var idConcepto in hipercubo.Hechos.Keys)
            {
                var matrizPlantillaContexto = hipercubo.Hechos[idConcepto];
                docBuilder.InsertCell();
                var nombreConcepto = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT, idConcepto, instancia);
                docBuilder.Font.Name = TipoLetraTituloConcepto;
                docBuilder.Font.Bold = false;
                docBuilder.Font.Size = TamanioLetraContenidoTabla;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                docBuilder.Write(nombreConcepto);
                foreach (var idPlantillaContexto in matrizPlantillaContexto.Keys)
                {
                    var listaHechos = matrizPlantillaContexto[idPlantillaContexto];
                    for (var indexHecho = 0; indexHecho < listaHechos.Length; indexHecho++)
                    {
                        var hecho      = listaHechos[indexHecho];
                        var valorHecho = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                        docBuilder.InsertCell();
                        docBuilder.Font.Name = TipoLetraTextos;
                        docBuilder.Font.Bold = false;
                        docBuilder.Font.Size = TamanioLetraContenidoTabla;
                        docBuilder.ParagraphFormat.LeftIndent   = 0;
                        docBuilder.ParagraphFormat.Alignment    = ParagraphAlignment.Right;
                        docBuilder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                        docBuilder.Write(valorHecho);
                    }
                }
                docBuilder.EndRow();
            }
            docBuilder.EndTable();
            docBuilder.Writeln();
        }
        /// <summary>
        /// Imprime la sección correspondiente a los títulos de los elementos primarios enviados como parámetro, a 2 renglones
        /// </summary>
        /// <param name="p"></param>
        /// <param name="docBuilder"></param>
        /// <param name="instancia"></param>
        private void ImprimirTitulosGrupoPasivo(string[] elementosPrimarios, DocumentBuilder docBuilder, Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, String idioma)
        {
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            var primerElementoSubtabla = true;

            foreach (var idElemento in elementosPrimarios)
            {
                docBuilder.InsertCell();

                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.RowFormat.HeadingFormat   = true;

                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.White;

                docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT, idElemento, instancia));

                if (idElemento == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                {
                    //Subtabla va mezclada
                    if (primerElementoSubtabla)
                    {
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                        docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                        primerElementoSubtabla = false;
                        docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT,
                                                                                 ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, instancia));
                    }
                    else
                    {
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                    }
                }
            }
            docBuilder.EndRow();

            var iMiembroSubtabla = 0;

            foreach (var idElemento in elementosPrimarios)
            {
                docBuilder.InsertCell();

                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.RowFormat.HeadingFormat   = true;

                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.White;

                docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;



                if (idElemento == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                {
                    //Subtabla va mezclada

                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

                    docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT,
                                                                             ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iMiembroSubtabla++], instancia));
                }
            }
            docBuilder.EndRow();
        }
        /// <summary>
        /// Imprime el contenido de un grupo de hechos de tipo pasivo, ya sea un crédito o un renglón total
        /// </summary>

        private void ImprimirGrupoTipoPasivo(string idTipoPasivo, string[] elementosPrimarios, DocumentBuilder docBuilder, Viewer.Application.Dto.DocumentoInstanciaXbrlDto instancia, String idioma, Dto.ReporteXBRLDTO estructuraReporte)
        {
            var hechosDeTipoPasivo = ObtenerHechosPorDimensionYMiembro(instancia, null, ImportadorExportadorRol815100Bmv2014._idDimensionTipoPasivo, idTipoPasivo);

            if (ImportadorExportadorRol815100Bmv2014._miembrosTipoPasivoTotales.Contains(idTipoPasivo))
            {
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                docBuilder.RowFormat.HeadingFormat    = false;
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.Font.Color = Color.Black;
                docBuilder.Write(ReporteXBRLUtil.obtenerEtiquetaConcepto(idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT, idTipoPasivo, instancia));

                var iSubMiembro = 0;

                for (int iElemento = 1; iElemento < elementosPrimarios.Length; iElemento++)
                {
                    docBuilder.InsertCell();
                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                    docBuilder.RowFormat.HeadingFormat    = false;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.Font.Color = Color.Black;
                    if (ImportadorExportadorRol815100Bmv2014._elementosPrimariosTotal.Contains(elementosPrimarios[iElemento]))
                    {
                        var listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, hechosDeTipoPasivo, elementosPrimarios[iElemento], null);

                        if (elementosPrimarios[iElemento] == ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla)
                        {
                            listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iSubMiembro++]);
                        }


                        if (listaHechos != null && listaHechos.Count > 0)
                        {
                            if (!String.IsNullOrEmpty(listaHechos[0].Valor))
                            {
                                if (listaHechos[0].EsNumerico)
                                {
                                    var valorHecho = ReporteXBRLUtil.formatoDecimal(listaHechos[0].ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                    EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                    docBuilder.Write(valorHecho);
                                }
                                else
                                {
                                    EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                    docBuilder.Write(listaHechos[0].Valor);
                                }
                            }
                        }
                    }
                }
                docBuilder.EndRow();
            }
            else
            {
                var secuenciasEnHechos = OrganizarHechosPorSecuencia(instancia, hechosDeTipoPasivo);

                if (secuenciasEnHechos.Count > 0)
                {
                    foreach (var secuencia in secuenciasEnHechos.Keys)
                    {
                        int iMiembroSubtabla = 0;
                        foreach (var elementoPrimario in elementosPrimarios)
                        {
                            docBuilder.InsertCell();
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

                            docBuilder.RowFormat.HeadingFormat    = false;
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;


                            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                            docBuilder.Font.Color = Color.Black;


                            IList <HechoDto> listaHechos = null;

                            if (elementoPrimario.Equals(ImportadorExportadorRol815100Bmv2014._idConceptoSubtabla))
                            {
                                listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null);
                                listaHechos = FiltrarHechosPorDimensionYMiembro(instancia, listaHechos, ImportadorExportadorRol815100Bmv2014._idDimensionIntervalo, ImportadorExportadorRol815100Bmv2014._miembrosIntervaloDeTiempo[iMiembroSubtabla++]);
                            }
                            else
                            {
                                listaHechos = ObtenerHechosPorElementoPrimarioYSecuencia(instancia, secuenciasEnHechos[secuencia], elementoPrimario, null);
                            }

                            if (listaHechos != null && listaHechos.Count > 0)
                            {
                                if (!String.IsNullOrEmpty(listaHechos[0].Valor))
                                {
                                    if (listaHechos[0].EsNumerico)
                                    {
                                        var valorHecho = ReporteXBRLUtil.formatoDecimal(listaHechos[0].ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                        EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                        docBuilder.Write(valorHecho);
                                    }
                                    else
                                    {
                                        EscribirLinkNotaAlPie(docBuilder, listaHechos[0], estructuraReporte);
                                        docBuilder.Write(listaHechos[0].Valor);
                                    }
                                }
                            }
                        }
                        docBuilder.EndRow();
                    }
                }
            }
        }