Beispiel #1
0
        private void PintaTablaDimensionSerie(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto)
        {
            docBuilder.Writeln();
            // var listaConseptosReportes = estructuraReporte.Hipercubos;
            foreach (var dato in estructuraReporte.Hipercubos)
            {
                var      variable = dato;
                string[] d        = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None);
                string   conceptoHipercuboTable = (d[0]);

                if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key))
                {
                    ConceptoReporteDTO primerConcepto = null;

                    if (!estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
                    {
                        throw new IndexOutOfRangeException("No existe el rol [" + rolAExportar.Rol + "] dentro del listado de roles del reporte.");
                    }
                    if (estructuraReporte.Roles.ContainsKey(rolAExportar.Rol))
                    {
                        if (!concepto.Abstracto)
                        {
                            primerConcepto = concepto;
                            break;
                        }
                    }

                    var hipercubo = variable;


                    Table tablaActual = docBuilder.StartTable();
                    Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);
                    docBuilder.ParagraphFormat.SpaceAfter  = 0;
                    docBuilder.ParagraphFormat.SpaceBefore = 2;

                    //docBuilder.InsertCell();
                    // docBuilder.EndRow();
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    docBuilder.Font.Color = Color.White;
                    docBuilder.Font.Size  = TamanioLetraContenidoTabla;

                    docBuilder.InsertCell();

                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.Font.Color = Color.White;
                    establecerFuenteTituloCampo(docBuilder);
                    docBuilder.Font.Size = TamanioLetraTituloTabla;
                    docBuilder.Write("Serie [Eje]");
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                    if (hipercubo.Value.Titulos.Count > 0)
                    {
                        for (var indexTitulo = 0; indexTitulo < hipercubo.Value.Titulos.Count; indexTitulo++)
                        {
                            var titulo = hipercubo.Value.Titulos[indexTitulo];
                            docBuilder.InsertCell();
                            docBuilder.Write(titulo);
                        }
                        docBuilder.EndRow();
                    }



                    establecerFuenteTituloCampo(docBuilder);
                    docBuilder.Font.Size = TamanioLetraTituloTabla;

                    int fila = 0;


                    if (concepto.Abstracto)
                    {
                        fila = +1;

                        for (int iCell = 0; iCell < fila; iCell++)
                        {
                            docBuilder.InsertCell();
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        }
                    }
                    if (concepto.Abstracto)
                    {
                        docBuilder.Bold       = true;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;

                        docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                        docBuilder.Write(concepto.Valor);
                        docBuilder.InsertCell();
                        docBuilder.EndRow();
                        //  tituloAbstracto.Add(concepto.Valor);
                    }
                    else
                    {
                        docBuilder.Bold = false;
                    }


                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.Font.Color = Color.Black;
                    docBuilder.Bold       = false;
                    foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                    {
                        var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                        docBuilder.InsertCell();
                        var nombreConcepto =
                            DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT);
                        docBuilder.Write(nombreConcepto);
                        ConceptoHiper.Add(idConcepto);

                        foreach (var idPlantillaContexto in matrizPlantillaContexto.Keys)
                        {
                            docBuilder.CellFormat.WrapText       = true;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                            var listaHechos = matrizPlantillaContexto[idPlantillaContexto];
                            for (var indexHecho = 0; indexHecho < listaHechos.Length; indexHecho++)
                            {
                                var hecho      = listaHechos[indexHecho];
                                var valorHecho = hecho.Valor;

                                docBuilder.InsertCell();
                                if (hecho.NoEsNumerico)
                                {
                                    docBuilder.CellFormat.WrapText       = true;
                                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                                }
                                else
                                {
                                    docBuilder.CellFormat.WrapText       = false;
                                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                                }


                                if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto))
                                {
                                    var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto];
                                    if (conceptoHecho.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK))
                                    {
                                        WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" + hecho.Id, PARRAFO_HTML_NOTAS_Texblock + valorHecho + "</p>", false, true);

                                        //docBuilder.InsertHtml(PARRAFO_HTML_NOTAS_Texblock + limpiarBloqueTexto(valorHecho) + "</p>", true);
                                    }
                                    else
                                    {
                                        docBuilder.Writeln(valorHecho);
                                    }
                                }
                            }
                        }

                        docBuilder.EndRow();
                    }


                    establecerBordesGrisesTabla(tablaActual);
                    docBuilder.EndTable();
                    docBuilder.Writeln();
                    docBuilder.Writeln();
                    Evaluador.Add(variable.Key);
                    break;
                }
            }
        }
Beispiel #2
0
        public static IList <DesgloseDeCreditosReporteDto> generarContenidoDeReporte(DocumentoInstanciaXbrlDto documentoInstancia, ReporteXBRLDTO reporteXBRLDTO, int ContadorNotasAlPie, out int outContadorNotasAlPie)
        {
            IList <DesgloseDeCreditosReporteDto> contenido = new List <DesgloseDeCreditosReporteDto>();
            var idioma = reporteXBRLDTO.Lenguaje;

            contadorTMP = ContadorNotasAlPie;

            String[] estructuraDelReporte = new String[] { "ifrs_mx-cor_20141205_BancariosSinopsis", "ifrs_mx-cor_20141205_ComercioExteriorBancarios",
                                                           "ifrs_mx-cor_20141205_ConGarantiaBancarios", "ifrs_mx-cor_20141205_BancaComercial", "ifrs_mx-cor_20141205_OtrosBancarios",
                                                           "ifrs_mx-cor_20141205_TotalBancarios", "ifrs_mx-cor_20141205_BursatilesYColocacionesPrivadasSinopsis",
                                                           "ifrs_mx-cor_20141205_BursatilesListadasEnBolsaQuirografarios", "ifrs_mx-cor_20141205_BursatilesListadasEnBolsaConGarantia",
                                                           "ifrs_mx-cor_20141205_ColocacionesPrivadasQuirografarios", "ifrs_mx-cor_20141205_ColocacionesPrivadasConGarantia",
                                                           "ifrs_mx-cor_20141205_TotalBursatilesListadasEnBolsaYColocacionesPrivadas",
                                                           "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesConCostoSinopsis",
                                                           "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesConCosto", "ifrs_mx-cor_20141205_TotalOtrosPasivosCirculantesYNoCirculantesConCosto",
                                                           "ifrs_mx-cor_20141205_ProveedoresSinopsis", "ifrs_mx-cor_20141205_Proveedores", "ifrs_mx-cor_20141205_TotalProveedores",
                                                           "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesSinCostoSinopsis",
                                                           "ifrs_mx-cor_20141205_OtrosPasivosCirculantesYNoCirculantesSinCosto", "ifrs_mx-cor_20141205_TotalOtrosPasivosCirculantesYNoCirculantesSinCosto",
                                                           "ifrs_mx-cor_20141205_TotalDeCreditos" };

            List <HechoDto> hechos              = new List <HechoDto>();
            List <String>   idsHechos           = new List <String>();
            IList <String>  idHechosPorConcepto = null;

            foreach (String idConcepto  in  estructuraDelReporte)
            {
                if (!idConcepto.EndsWith("Sinopsis"))
                {
                    if (documentoInstancia.HechosPorIdConcepto.ContainsKey(idConcepto))
                    {
                        idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto[idConcepto];
                        idsHechos.AddRange(idHechosPorConcepto);
                    }
                }
            }

            if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo"))
            {
                idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo"];
                idsHechos.AddRange(idHechosPorConcepto);
            }

            if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_FechaDeFirmaContrato"))
            {
                idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_FechaDeFirmaContrato"];
                idsHechos.AddRange(idHechosPorConcepto);
            }

            if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_FechaDeVencimiento"))
            {
                idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_FechaDeVencimiento"];
                idsHechos.AddRange(idHechosPorConcepto);
            }

            if (documentoInstancia.HechosPorIdConcepto.ContainsKey("ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa"))
            {
                idHechosPorConcepto = documentoInstancia.HechosPorIdConcepto["ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa"];
                idsHechos.AddRange(idHechosPorConcepto);
            }

            IDictionary <String, List <String> > institucionesPorConcepto = new Dictionary <String, List <String> >();
            IDictionary <String, IDictionary <String, DesgloseDeCreditosReporteDto> > detalleDtoPorConcepto = new Dictionary <String, IDictionary <String, DesgloseDeCreditosReporteDto> >();

            foreach (String idHecho  in  idsHechos)
            {
                if (!documentoInstancia.HechosPorId.ContainsKey(idHecho))
                {
                    LogUtil.Error("Se solicitia un hecho que no existe en el documento {idHecho:[" + idHecho + "]}");
                    continue;
                }

                var hecho = documentoInstancia.HechosPorId[idHecho];
                if (!documentoInstancia.ContextosPorId.ContainsKey(hecho.IdContexto))
                {
                    LogUtil.Error("No existe el contexto definido para el hecho {idHecho:[" + idHecho + "], idContexto:[" + hecho.IdContexto + "]}");
                    continue;
                }
                var contexto = documentoInstancia.ContextosPorId[hecho.IdContexto];

                IDictionary <String, DesgloseDeCreditosReporteDto> detalleDtoPorInstitucion = null;
                if (!detalleDtoPorConcepto.ContainsKey(hecho.IdConcepto))
                {
                    detalleDtoPorInstitucion = new Dictionary <String, DesgloseDeCreditosReporteDto>();
                    detalleDtoPorConcepto.Add(hecho.IdConcepto, detalleDtoPorInstitucion);
                }
                else
                {
                    detalleDtoPorInstitucion = detalleDtoPorConcepto[hecho.IdConcepto];
                }

                hechos.Add(hecho);
                String idMiembroEjeDenominacion    = "";
                String idMiembroEjeIntervaloTiempo = "";
                String miembroTipificado           = "";
                foreach (DimensionInfoDto dimensionInfo  in  contexto.ValoresDimension)
                {
                    if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_InstitucionEje"))
                    {
                        miembroTipificado = dimensionInfo.ElementoMiembroTipificado;
                        if (!detalleDtoPorInstitucion.ContainsKey(miembroTipificado))
                        {
                            DesgloseDeCreditosReporteDto detalleInstitucionDto = new DesgloseDeCreditosReporteDto();
                            detalleInstitucionDto.Titulo = ReporteXBRLUtil.eliminaEtiquetas(miembroTipificado);
                            detalleDtoPorInstitucion.Add(miembroTipificado, detalleInstitucionDto);
                        }
                        if (!institucionesPorConcepto.ContainsKey(miembroTipificado))
                        {
                            List <String> idsConceptos = new List <String>();
                            idsConceptos.Add(hecho.IdConcepto);
                            institucionesPorConcepto.Add(miembroTipificado, idsConceptos);
                        }
                        else
                        {
                            if (!institucionesPorConcepto[miembroTipificado].Contains(hecho.IdConcepto))
                            {
                                institucionesPorConcepto[miembroTipificado].Add(hecho.IdConcepto);
                            }
                        }
                    }
                }
                foreach (DimensionInfoDto dimensionInfo  in  contexto.ValoresDimension)
                {
                    if (dimensionInfo.Explicita)
                    {
                        if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_DenominacionEje"))
                        {
                            idMiembroEjeDenominacion = dimensionInfo.IdItemMiembro;
                        }
                        else if (dimensionInfo.IdDimension.Equals("ifrs_mx-cor_20141205_IntervaloDeTiempoEje"))
                        {
                            idMiembroEjeIntervaloTiempo = dimensionInfo.IdItemMiembro;
                        }
                    }
                }

                if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo"))
                {
                    if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") &&
                        idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro"))
                    {
                        if (institucionesPorConcepto.ContainsKey(miembroTipificado))
                        {
                            foreach (String idConcepto in institucionesPorConcepto[miembroTipificado])
                            {
                                var intitucionExtranejraAux = CommonConstants.CADENAS_VERDADERAS.Contains(hecho.Valor.Trim().ToLower());
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera       = new HechoReporteDTO();
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera.Valor = intitucionExtranejraAux.ToString().ToLower();
                                obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].InstitucionExtranjera, reporteXBRLDTO);
                            }
                        }
                    }
                }
                else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_FechaDeFirmaContrato"))
                {
                    if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") &&
                        idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro"))
                    {
                        if (institucionesPorConcepto.ContainsKey(miembroTipificado))
                        {
                            foreach (String idConcepto in institucionesPorConcepto[miembroTipificado])
                            {
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato       = new HechoReporteDTO();
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato.Valor = hecho.Valor;
                                obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaFirmaContrato, reporteXBRLDTO);
                            }
                        }
                    }
                }
                else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_FechaDeVencimiento"))
                {
                    if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") &&
                        idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro"))
                    {
                        if (institucionesPorConcepto.ContainsKey(miembroTipificado))
                        {
                            foreach (String idConcepto in institucionesPorConcepto[miembroTipificado])
                            {
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento       = new HechoReporteDTO();
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento.Valor = hecho.Valor;
                                obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].FechaVencimiento, reporteXBRLDTO);
                            }
                        }
                    }
                }
                else if (hecho.IdConcepto.Equals("ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa"))
                {
                    if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_TotalMonedasMiembro") &&
                        idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_TotalIntervalosMiembro"))
                    {
                        if (institucionesPorConcepto.ContainsKey(miembroTipificado))
                        {
                            foreach (String idConcepto in institucionesPorConcepto[miembroTipificado])
                            {
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres       = new HechoReporteDTO();
                                detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres.Valor = hecho.Valor;
                                obtenerNotasAlPie(hecho, detalleDtoPorConcepto[idConcepto][miembroTipificado].TasaInteres, reporteXBRLDTO);
                            }
                        }
                    }
                }
                else
                {
                    if (detalleDtoPorConcepto.ContainsKey(hecho.IdConcepto) && detalleDtoPorConcepto[hecho.IdConcepto].ContainsKey(miembroTipificado))
                    {
                        var elementoTipificadoPorConcepto = detalleDtoPorConcepto[hecho.IdConcepto][miembroTipificado];
                        if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_MonedaNacionalMiembro"))
                        {
                            if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_AnoActualMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalAnioActual = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalAnioActual.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalAnioActual.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalAnioActual, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta1AnoMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalUnAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalUnAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalUnAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalUnAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta2AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalDosAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalDosAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalDosAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalDosAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta3AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalTresAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalTresAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalTresAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalTresAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta4AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalCuatroAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaNacionalCincoMasAnio, reporteXBRLDTO);
                            }
                        }
                        else if (idMiembroEjeDenominacion.Equals("ifrs_mx-cor_20141205_MonedaExtranjeraMiembro"))
                        {
                            if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_AnoActualMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraAnioActual, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta1AnoMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraUnAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta2AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraDosAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta3AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraTresAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta4AnosMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraCuatroAnio, reporteXBRLDTO);
                            }
                            else if (idMiembroEjeIntervaloTiempo.Equals("ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro"))
                            {
                                elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio = new HechoReporteDTO();
                                elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio.ValorNumerico   = hecho.ValorNumerico;
                                elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hecho.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_MONETARIAS);
                                obtenerNotasAlPie(hecho, elementoTipificadoPorConcepto.MonedaExtranjeraCincoMasAnio, reporteXBRLDTO);
                            }
                        }
                    }
                    else
                    {
                        LogUtil.Error("No se encontro el elemento detalleDtoPorConcepto: {IdConcepto:[" + hecho.IdConcepto + "], miembroTipificado:[" + miembroTipificado + "]}");
                    }
                }
            }

            foreach (String idConcepto  in  estructuraDelReporte)
            {
                if (idConcepto.EndsWith("Sinopsis"))
                {
                    DesgloseDeCreditosReporteDto detalleDto = new DesgloseDeCreditosReporteDto();
                    detalleDto.Titulo = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(documentoInstancia.Taxonomia, idConcepto,
                                                                                           idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT);
                    detalleDto.TituloAbstracto = true;
                    contenido.Add(detalleDto);
                }
                else
                {
                    DesgloseDeCreditosReporteDto detalleDto = new DesgloseDeCreditosReporteDto();

                    detalleDto.Titulo = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(documentoInstancia.Taxonomia, idConcepto,
                                                                                           idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT);
                    detalleDto.TituloAbstracto = true;
                    contenido.Add(detalleDto);

                    DesgloseDeCreditosReporteDto detalleTotalDto = null;
                    if (detalleDtoPorConcepto.ContainsKey(idConcepto))
                    {
                        foreach (String miembroInstitucion in detalleDtoPorConcepto[idConcepto].Keys)
                        {
                            if (detalleDtoPorConcepto[idConcepto][miembroInstitucion].Titulo.Equals("TOTAL"))
                            {
                                detalleTotalDto = detalleDtoPorConcepto[idConcepto][miembroInstitucion];
                            }
                            else
                            {
                                contenido.Add(detalleDtoPorConcepto[idConcepto][miembroInstitucion]);
                            }
                        }
                    }

                    if (detalleTotalDto != null)
                    {
                        detalleTotalDto.Total = true;
                        contenido.Add(detalleTotalDto);
                    }
                }
            }

            outContadorNotasAlPie = contadorTMP;
            contadorTMP           = 0;

            return(contenido);
        }
Beispiel #3
0
        private void PintaTablaDimensionExplicita(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.Writeln();

            foreach (var dato in estructuraReporte.Hipercubos)
            {
                if (dato.Value.Hechos.Count > 0)
                {
                    var variable = dato;
                    // modificaciones en la condicion para obtner un hipercubo exlicito
                    string[] d = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None);
                    string   conceptoHipercuboTable = (d[0]);

                    if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key))
                    {
                        var hipercubo = variable;
                        docBuilder.InsertBreak(BreakType.PageBreak);
                        Table tablaActual = docBuilder.StartTable();
                        Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);
                        docBuilder.ParagraphFormat.SpaceAfter  = 0;
                        docBuilder.ParagraphFormat.SpaceBefore = 2;

                        //docBuilder.InsertCell();
                        // docBuilder.EndRow();
                        // Formatos de celdas que le da el color de fondo de los titulos de la tabla que se crea
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.Font.Size  = TamanioLetraContenidoTabla;

                        //   docBuilder.InsertCell();


                        foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                        {
                            var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                            docBuilder.InsertCell();
                            var nombreConcepto =
                                DesgloseDeCreditosHelper
                                .obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT);
                            docBuilder.Write(nombreConcepto);
                        }
                        docBuilder.EndRow();

                        docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                        docBuilder.Font.Color = Color.Black;
                        var cantidadCeldasVacias = hipercubo.Value.Hechos.Count - 1;

                        if (hipercubo.Value.Hechos.Count == 0)
                        {
                            return;
                        }

                        foreach (var idPlantillaContexto in hipercubo.Value.Utileria.configuracion.PlantillasContextos.Keys)
                        {
                            var plantilla        = hipercubo.Value.Utileria.configuracion.PlantillasContextos[idPlantillaContexto];
                            var miembroPlantilla = plantilla.ValoresDimension[0];
                            var nombreMiembro    =
                                DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroPlantilla.IdItemMiembro, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT);

                            /* docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.LightGray;
                             * docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                             * docBuilder.Font.Color = Color.Black;*/
                            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                            docBuilder.Font.Color = Color.White;
                            docBuilder.Font.Size  = TamanioLetraContenidoTabla;
                            docBuilder.InsertCell();
                            docBuilder.Write(nombreMiembro);
                            if (cantidadCeldasVacias > 0)
                            {
                                for (var indexMiembro = 0; indexMiembro < cantidadCeldasVacias; indexMiembro++)
                                {
                                    docBuilder.InsertCell();
                                    docBuilder.Write(String.Empty);
                                }
                                docBuilder.EndRow();
                            }
                            var countType = 0;
                            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                            docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                            docBuilder.Font.Color = Color.Black;
                            docBuilder.Bold       = false;
                            foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                            {
                                var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                                if (matrizPlantillaContexto.ContainsKey(idPlantillaContexto))
                                {
                                    countType = matrizPlantillaContexto[idPlantillaContexto].Length;
                                }
                                else
                                {
                                    LogUtil.Error("No se encontro la definición para la plantilla de contexto:" + idPlantillaContexto);
                                }
                                break;
                            }
                            Boolean dimensiones = false;
                            for (var indexType = 0; indexType < countType; indexType++)
                            {
                                if (indexType > 0)
                                {
                                    dimensiones = true;
                                }

                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                                foreach (var idConcepto in hipercubo.Value.Hechos.Keys)
                                {
                                    var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto];
                                    ConceptoHiper.Add(idConcepto);
                                    var listaHechos = matrizPlantillaContexto[idPlantillaContexto];
                                    if (listaHechos != null)
                                    {
                                        var hecho = listaHechos[indexType];

                                        var valorHecho = hecho.Valor;
                                        if (dimensiones)
                                        {
                                            docBuilder.EndRow();
                                            docBuilder.InsertCell();
                                            dimensiones = false;
                                        }
                                        else
                                        {
                                            docBuilder.InsertCell();
                                        }

                                        if (hecho.NoEsNumerico)
                                        {
                                            docBuilder.CellFormat.WrapText       = true;
                                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                                        }
                                        else
                                        {
                                            docBuilder.CellFormat.WrapText       = false;
                                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                                        }
                                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                                        {
                                            docBuilder.Write(valorHecho);
                                        }
                                    }
                                }
                            }
                            docBuilder.RowFormat.AllowBreakAcrossPages = true;
                            docBuilder.RowFormat.HeadingFormat         = false;
                            if (countType > 0)
                            {
                                docBuilder.EndRow();
                            }
                        }


                        establecerBordesGrisesTabla(tablaActual);
                        docBuilder.EndTable();
                        docBuilder.Writeln();
                        Evaluador.Add(variable.Key);
                    }
                }
            }
        }
Beispiel #4
0
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Landscape;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Legal;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 10;
            docBuilder.CurrentSection.PageSetup.RightMargin = 10;

            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);


            imprimirTituloRol(docBuilder, rolAExportar);

            Table tablaDesglose = docBuilder.StartTable();

            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraReporteDesglose;

            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;

            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;

            var idioma = estructuraReporte.Lenguaje;

            docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_InstitucionEje",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_InstitucionExtranjeraSiNo",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_FechaDeFirmaContrato",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_FechaDeVencimiento",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.First;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_TasaDeInteresYOSobretasa",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_DenominacionEje",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.RowFormat.HeadingFormat    = true;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_MonedaNacionalMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_MonedaExtranjeraMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.RowFormat.HeadingFormat    = true;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_IntervaloDeTiempoEje",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_IntervaloDeTiempoEje",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;

            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.RowFormat.HeadingFormat    = true;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;

            docBuilder.InsertCell();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            docBuilder.CellFormat.VerticalMerge   = CellMerge.Previous;

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_AnoActualMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta1AnoMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta2AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta3AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta4AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_AnoActualMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta1AnoMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta2AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.CellFormat.VerticalMerge = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta3AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            docBuilder.CellFormat.VerticalMerge  = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta4AnosMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.InsertCell();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            docBuilder.CellFormat.VerticalMerge  = CellMerge.None;
            docBuilder.Write(DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, "ifrs_mx-cor_20141205_Hasta5AnosOMasMiembro",
                                                                                idioma, ReporteXBRLUtil.ETIQUETA_DEFAULT));

            docBuilder.EndRow();

            foreach (DesgloseDeCreditosReporteDto dto in estructuraReporte.DesgloseCreditos)
            {
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

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


                if (dto.TituloAbstracto)
                {
                    docBuilder.Font.Color = Color.White;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;

                    docBuilder.Write(dto.Titulo);
                    for (int i = 0; i < 16; i++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                        docBuilder.Font.Color = Color.White;
                        if (i == 0)
                        {
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                        }
                        else
                        {
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                            docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                        }
                    }
                }
                else
                {
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.Font.Color = Color.Black;
                    docBuilder.Write(dto.Titulo);
                    docBuilder.InsertCell();
                    docBuilder.Font.Color = Color.Black;
                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.InstitucionExtranjera != null)
                    {
                        docBuilder.Write(Boolean.Parse(dto.InstitucionExtranjera.Valor) ? "SI" : "NO");
                        escribirLinkNotaAlPie(docBuilder, dto.InstitucionExtranjera, estructuraReporte);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.FechaFirmaContrato != null && dto.FechaFirmaContrato.Valor != null && DateReporteUtil.obtenerFecha(dto.FechaFirmaContrato.Valor) != default(DateTime))
                    {
                        docBuilder.Write(DateUtil.ToFormatString(DateReporteUtil.obtenerFecha(dto.FechaFirmaContrato.Valor), ReporteXBRLUtil.FORMATO_FECHA_YYYY_MM_DD));
                        escribirLinkNotaAlPie(docBuilder, dto.FechaFirmaContrato, estructuraReporte);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.FechaVencimiento != null && dto.FechaVencimiento.Valor != null && DateReporteUtil.obtenerFecha(dto.FechaVencimiento.Valor) != default(DateTime))
                    {
                        docBuilder.Write(DateUtil.ToFormatString(DateReporteUtil.obtenerFecha(dto.FechaVencimiento.Valor), ReporteXBRLUtil.FORMATO_FECHA_YYYY_MM_DD));
                        escribirLinkNotaAlPie(docBuilder, dto.FechaVencimiento, estructuraReporte);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.TasaInteres != null && dto.TasaInteres.Valor != null)
                    {
                        docBuilder.Write(dto.TasaInteres.Valor);
                        escribirLinkNotaAlPie(docBuilder, dto.TasaInteres, estructuraReporte);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalAnioActual != null && dto.MonedaNacionalAnioActual.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalAnioActual, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalAnioActual.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalUnAnio != null && dto.MonedaNacionalUnAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalUnAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalUnAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalDosAnio != null && dto.MonedaNacionalDosAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalDosAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalDosAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalTresAnio != null && dto.MonedaNacionalTresAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalTresAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalTresAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalCuatroAnio != null && dto.MonedaNacionalCuatroAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalCuatroAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalCuatroAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaNacionalCincoMasAnio != null && dto.MonedaNacionalCincoMasAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaNacionalCincoMasAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaNacionalCincoMasAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraAnioActual != null && dto.MonedaExtranjeraAnioActual.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraAnioActual, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraAnioActual.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraUnAnio != null && dto.MonedaExtranjeraUnAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraUnAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraUnAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraDosAnio != null && dto.MonedaExtranjeraDosAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraDosAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraDosAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraTresAnio != null && dto.MonedaExtranjeraTresAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraTresAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraTresAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraCuatroAnio != null && dto.MonedaExtranjeraCuatroAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraCuatroAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraCuatroAnio.ValorFormateado);
                    }

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.VerticalMerge   = CellMerge.None;
                    if (dto.MonedaExtranjeraCincoMasAnio != null && dto.MonedaExtranjeraCincoMasAnio.ValorFormateado != null)
                    {
                        escribirLinkNotaAlPie(docBuilder, dto.MonedaExtranjeraCincoMasAnio, estructuraReporte);
                        docBuilder.Write(dto.MonedaExtranjeraCincoMasAnio.ValorFormateado);
                    }
                }
                docBuilder.EndRow();
            }
            establecerBordesGrisesTabla(tablaDesglose);
            docBuilder.EndTable();
        }