public void FormatoTypeTexbloc(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                string valor = ObtenertipoDato(concepto, TIPO_DATO_STRING);

                if (concepto.TipoDato == valor)
                {
                    if (concepto.Hechos != null)
                    {
                        foreach (String llave in concepto.Hechos.Keys)
                        {
                            hecho = concepto.Hechos[llave];
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                //Escribir titulo campo
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Llena los elementos con el primer hecho encontrado del concepto indicado.
        /// </summary>
        /// <param name="conceptos">Arreglo con los conceptos buscados</param>
        /// <param name="instancia">Documento de insntacia.</param>
        /// <returns>Lista de conceptos evaluados</returns>
        private IList<ConceptoReporteDTO> llenarRolAnualProspecto(IList<ConceptoReporteDTO> conceptos, DocumentoInstanciaXbrlDto instancia)
        {
            IList<String> listaAliasPeriodos = new List<String>()
            {
                "periodo_actual",
                "periodo_anterior",
                "periodo_pre_anterior",
                "anual_actual",
                "anual_anterior",
                "anual_pre_anterior"
            };
            foreach (ConceptoReporteDTO concepto in conceptos)
            {
                HechoReporteDTO hechoReporte = null;
                llenarConcepto(concepto, instancia);
                if (concepto.Abstracto)
                {
                    continue;
                }
                foreach (var aliasPeriodo in listaAliasPeriodos)
                {
                    if (concepto.Hechos.TryGetValue(aliasPeriodo, out hechoReporte))
                    {
                        obtenerHecho(concepto, hechoReporte, instancia);
                    }
                }
            }

            return conceptos;
        }
        public void EscribeNotas(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IList <ConceptoReporteDTO> listaConseptosReporte)
        {
            HechoReporteDTO hecho = null;
            var             ExportarNotasVacias = true;

            foreach (ConceptoReporteDTO concepto in listaConseptosReporte)
            {
                if (concepto.Abstracto || concepto.Numerico)
                {
                    var subLista = ObtenSubLista(listaConseptosReporte, listaConseptosReporte.IndexOf(concepto));
                    PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, subLista);
                    return;
                }


                if (concepto.Hechos != null)
                {
                    var imprimePeriodo = concepto.Hechos.Count > 1;

                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) || ExportarNotasVacias)
                        {
                            //Escribir titulo campo
                            escribirConceptoEnTablaNotaPeriodo(docBuilder, hecho, concepto, estructuraReporte, llave);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Escribe el valor de un concepto directamente en la página actual.
        /// </summary>
        /// <param name="concepto">Concepto del reporte que se pretende presentar.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="estructuraReporte">Datos generales del reporte.</param>
        /// <returns>Hecho presentado</returns>
        private HechoReporteDTO EscribeConcepto(ConceptoDto concepto, HechoDto hecho, DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, ExportadorRolDocumentoBase exportadorBase)
        {
            HechoReporteDTO hechoReporteDTO = null;
            var             esBloqueDeTexto = false;
            var             cadenaMuyGrande = false;

            if (hechoReporteDTO != null && !String.IsNullOrEmpty(hechoReporteDTO.Valor))
            {
                // condicion para obtener el formato de los tres primeros conceptos
                esBloqueDeTexto = concepto.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                cadenaMuyGrande = hechoReporteDTO.Valor.Length > 20;
                if (esBloqueDeTexto || cadenaMuyGrande)
                {
                    if (!docBuilder.CurrentParagraph.PreviousSibling.NodeType.Equals(NodeType.Paragraph))
                    {
                        docBuilder.Font.Size = 8;
                        docBuilder.Font.Bold = false;
                        docBuilder.Writeln();
                        docBuilder.Writeln();
                    }
                    exportadorBase.EscribirNotaTextoAtributosAdicionales(docBuilder, estructuraReporte, hecho, concepto);
                }
                else
                {
                    var etiquetaConcepto = exportadorBase.ObtenEtiquetaConcepto(concepto.Id, estructuraReporte.Instancia, estructuraReporte.Lenguaje);

                    exportadorBase.EscribirADosColumnasConceptoValor(etiquetaConcepto, hecho.Valor, docBuilder);
                }
            }

            return(hechoReporteDTO);
        }
Exemplo n.º 5
0
        private void escribirNotaEnTabla(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, String idConcepto)
        {
            var             conceptoDto = ((List <ConceptoReporteDTO>)estructuraReporte.Roles[ID_ROL]).Find(c => c.IdConcepto == idConcepto);
            HechoReporteDTO hecho       = null;

            if (conceptoDto != null && conceptoDto.Hechos != null)
            {
                foreach (String llave in conceptoDto.Hechos.Keys)
                {
                    hecho = conceptoDto.Hechos[llave];
                    if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                    {
                        establecerFuenteTituloCampo(docBuilder);

                        docBuilder.Font.Size  = 9;
                        docBuilder.Font.Color = Color.Black;
                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                        docBuilder.ParagraphFormat.LeftIndent = 9;
                        docBuilder.Write(conceptoDto.Valor);

                        Table tablaActual = docBuilder.StartTable();
                        docBuilder.InsertCell();
                        docBuilder.Font.Size    = 1;
                        docBuilder.Font.Spacing = 1;
                        tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
                        docBuilder.CellFormat.Borders.Top.Color              = Color.DarkGray;
                        docBuilder.CellFormat.Borders.Top.LineStyle          = LineStyle.Single;
                        docBuilder.CellFormat.Borders.Top.LineWidth          = 2;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                        docBuilder.EndRow();
                        docBuilder.EndTable();

                        establecerFuenteValorCampo(docBuilder);
                        docBuilder.Font.Color = Color.Black;
                        docBuilder.InsertParagraph();
                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                        docBuilder.ParagraphFormat.LeftIndent = 0;
                        escribirValorHecho(docBuilder, estructuraReporte, hecho, conceptoDto);

                        tablaActual = docBuilder.StartTable();
                        docBuilder.InsertCell();
                        docBuilder.Font.Size    = 1;
                        docBuilder.Font.Spacing = 1;
                        tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
                        docBuilder.CellFormat.Borders.Bottom.Color     = Color.DarkGray;
                        docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
                        docBuilder.CellFormat.Borders.Bottom.LineWidth = 2;
                        docBuilder.EndRow();
                        docBuilder.EndTable();

                        //docBuilder.Writeln();
                        //docBuilder.Writeln();
                    }
                }
            }
        }
        private IList <ConceptoReporteDTO> llenarRol301100(IList <ConceptoReporteDTO> conceptos, DocumentoInstanciaXbrlDto instancia)
        {
            foreach (ConceptoReporteDTO concepto in conceptos)
            {
                HechoReporteDTO hechoReporte = null;
                llenarConcepto(concepto, instancia);
                if (concepto.Abstracto)
                {
                    continue;
                }
                if (!concepto.Hechos.ContainsKey("periodo_actual"))
                {
                    IList <String> hechos;
                    if (!instancia.HechosPorIdConcepto.TryGetValue(concepto.IdConcepto, out hechos))
                    {
                        continue;
                    }

                    if (hechos != null)
                    {
                        foreach (String idHecho in hechos)
                        {
                            String fecha = null;

                            HechoDto    hecho    = instancia.HechosPorId[idHecho];
                            ContextoDto contexto = instancia.ContextosPorId[hecho.IdContexto];

                            if (contexto.ContieneInformacionDimensional)
                            {
                                //log.info(hecho.Valor);

                                if (contexto.Periodo.Tipo == PeriodoDto.Instante)
                                {
                                    fecha = DateReporteUtil.formatoFechaEstandar(contexto.Periodo.FechaInstante);

                                    if ((fecha.Equals(reporteXBRLDTO.PeriodosReporte["periodo_actual"])) &&
                                        concepto.Hechos.ContainsKey(contexto.ValoresDimension[0].IdItemMiembro))
                                    {
                                        hechoReporte = concepto.Hechos[contexto.ValoresDimension[0].IdItemMiembro];
                                        llenarHecho(concepto, hecho, hechoReporte);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    hechoReporte = concepto.Hechos["periodo_actual"];
                    obtenerHecho(concepto, hechoReporte, instancia);
                }
            }

            return(conceptos);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Escribe NOMBRE : VALOR de un hecho en 2 columnas
        /// </summary>
        private void escribirADosColumnasConceptoValor(DocumentBuilder docBuilder, String idConceptoFin, String idInicioConcepto, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.Writeln("");
            Table tablaActual = docBuilder.StartTable();

            docBuilder.ParagraphFormat.SpaceAfter  = 5;
            docBuilder.ParagraphFormat.SpaceBefore = 5;
            var banderahecho = 0;

            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.IdConcepto == idInicioConcepto)
                {
                    banderahecho = 1;
                }

                if (banderahecho == 1)
                {
                    if (concepto.Hechos != null)
                    {
                        foreach (String llave in concepto.Hechos.Keys)
                        {
                            hecho = concepto.Hechos[llave];
                            docBuilder.InsertCell();
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                // docBuilder.InsertCell();
                                establecerFuenteTituloCampo(docBuilder);
                                escribirTituloConcepto(docBuilder, concepto.IdConcepto, estructuraReporte.Roles[rolAExportar.Rol]);
                                docBuilder.Write(": ");
                                docBuilder.InsertCell();
                                establecerFuenteValorCampo(docBuilder);
                                escribirValorHecho(docBuilder, estructuraReporte, estructuraReporte.Roles[rolAExportar.Rol], concepto.IdConcepto);
                                docBuilder.EndRow();
                            }
                        }
                    }
                }
                if (concepto.IdConcepto == idConceptoFin)
                {
                    banderahecho = 0;
                }
            }
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            tablaActual.SetBorder(BorderType.Horizontal, LineStyle.Single, .75, Color.DarkGray, true);
            tablaActual.SetBorder(BorderType.Bottom, LineStyle.Single, .75, Color.DarkGray, true);
            docBuilder.EndTable();
        }
        /// <summary>
        /// Escribe el valor de un concepto directamente en la página actual.
        /// </summary>
        /// <param name="concepto">Concepto del reporte que se pretende presentar.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="estructuraReporte">Datos generales del reporte.</param>
        /// <returns>Hecho presentado</returns>
        private HechoReporteDTO EscribeConcepto(ConceptoReporteDTO concepto, DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte)
        {
            HechoReporteDTO hechoReporteDTO = null;

            foreach (var idHecho in concepto.Hechos.Keys)
            {
                if (concepto.Hechos.TryGetValue(idHecho, out hechoReporteDTO) &&
                    hechoReporteDTO != null && !String.IsNullOrEmpty(hechoReporteDTO.Valor))
                {
                    break;
                }
            }
            var esBloqueDeTexto = false;
            var cadenaMuyGrande = false;

            if (hechoReporteDTO != null && !String.IsNullOrEmpty(hechoReporteDTO.Valor))
            {
                // condicion para obtener el formato de los tres primeros conceptos
                string text_block = ObtenertipoDato(concepto, ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                esBloqueDeTexto = concepto.TipoDato == text_block;
                var longitudFila = concepto.Valor.Length + hechoReporteDTO.Valor.Length;
                cadenaMuyGrande = longitudFila > 40;
                if (esBloqueDeTexto || cadenaMuyGrande)
                {
                    if (!docBuilder.CurrentParagraph.PreviousSibling.NodeType.Equals(NodeType.Paragraph))
                    {
                        docBuilder.Font.Size = 8;
                        docBuilder.Font.Bold = false;
                        docBuilder.Writeln();
                        docBuilder.Writeln();
                    }

                    EscribirTipoNotaTexto(docBuilder, estructuraReporte, hechoReporteDTO, concepto);
                }
                else
                {
                    EscribirADosColumnasConceptoValor(docBuilder, estructuraReporte, concepto, hechoReporteDTO);
                }
            }

            return(hechoReporteDTO);
        }
Exemplo n.º 9
0
        private static void obtenerNotasAlPie(HechoDto hecho, HechoReporteDTO hechoReporteDTO, ReporteXBRLDTO reporteXBRLDTO)
        {
            if ((hecho.NotasAlPie != null && hecho.NotasAlPie.Count > 0) &&
                (hecho.Valor != null && !String.IsNullOrEmpty(hecho.Valor.Trim())) &&
                (hecho.NotasAlPie.Values != null && hecho.NotasAlPie.Values.Count > 0))
            {
                if (reporteXBRLDTO.NotasAlPie.Contains(hecho.Id))
                {
                    hechoReporteDTO.NotaAlPie = true;
                    hechoReporteDTO.IdHecho   = hecho.Id;
                }
                else
                {
                    String textoNota = "";

                    foreach (IList <NotaAlPieDto> notas in hecho.NotasAlPie.Values)
                    {
                        foreach (NotaAlPieDto subnota in notas)
                        {
                            if (subnota.Idioma.Equals(reporteXBRLDTO.Lenguaje.ToLower()))
                            {
                                textoNota = textoNota + "<p>&mdash;&nbsp;</p>" + subnota.Valor;
                            }
                        }
                    }

                    if (String.IsNullOrEmpty(textoNota) && hecho.NotasAlPie.First().Value.ElementAt(0) != null)
                    {
                        textoNota = hecho.NotasAlPie.First().Value.ElementAt(0).Valor;
                    }

                    if (!String.IsNullOrEmpty(textoNota) && !reporteXBRLDTO.NotasAlPie.Contains(hecho.Id))
                    {
                        hechoReporteDTO.NotaAlPie = true;
                        hechoReporteDTO.IdHecho   = hecho.Id;

                        contadorTMP++;
                        reporteXBRLDTO.NotasAlPie.Add(hecho.Id, new KeyValuePair <int, string>(contadorTMP, textoNota));
                    }
                }
            }
        }
        /// <summary>
        /// Pinta los conceptos de tipo nota.
        /// </summary>
        /// <param name="docBuilder"></param>
        /// <param name="instancia"></param>
        /// <param name="rolAExportar"></param>
        /// <param name="estructuraReporte"></param>
        /// <param name="listaConseptosReporte"></param>
        private void PintaNotas(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IList <ConceptoReporteDTO> listaConseptosReporte)
        {
            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.Hechos != null && concepto.TipoDato.EndsWith(TIPO_DATO_TEXT_BLOCK))
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                        {
                            //Escribir titulo campo
                            escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            break;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Llena los conceptos haciendo uso de identificador del periodo evaluado.
        /// </summary>
        /// <param name="conceptos"></param>
        /// <param name="instancia"></param>
        /// <returns></returns>
        private IList<ConceptoReporteDTO> llenarRolAnualProspecto424000(IList<ConceptoReporteDTO> conceptos, DocumentoInstanciaXbrlDto instancia)
        {
            IList<String> listaAliasPeriodos = new List<String>()
            {
                "periodo_actual",
                "periodo_anterior",
                "periodo_pre_anterior",
                "anual_actual",
                "anual_anterior",
                "anual_pre_anterior"
            };
            foreach (ConceptoReporteDTO concepto in conceptos)
            {
                HechoReporteDTO hechoReporte = null;
                llenarConcepto(concepto, instancia);
                if (concepto.Abstracto)
                {
                    continue;
                }
                foreach (var aliasPeriodo in listaAliasPeriodos)
                {
                    if (concepto.Hechos.TryGetValue(aliasPeriodo, out hechoReporte))
                    {
                        obtenerHecho(concepto, hechoReporte, aliasPeriodo, instancia);

                        if (hechoReporte != null)
                        {
                            if (concepto.Numerico && concepto.TipoDato.Contains(ReporteXBRLUtil.TIPO_DATO_MONETARY))
                            {   
                                hechoReporte.ValorFormateado = ReporteXBRLUtil.formatoDecimal(hechoReporte.ValorNumerico, ReporteXBRLUtil.FORMATO_CANTIDADES_DECIMALES);
                            }
                        }
                    }
                }
            }

            return conceptos;
        }
Exemplo n.º 12
0
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            //Titulo rol
            imprimirTituloRol(docBuilder, rolAExportar);


            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.Hechos != null)
                {
                    foreach (String llave  in  concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) || ExportarNotasVacias)
                        {
                            //Escribir titulo campo
                            var forzarHtml = PresentarComoHTML != null && PresentarComoHTML.ContainsKey(concepto.IdConcepto);
                            if (PresentarComoTextoAdosFilas != null && PresentarComoTextoAdosFilas.ContainsKey(concepto.IdConcepto))
                            {
                                EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte, forzarHtml);
                            }
                            else
                            {
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto, forzarHtml);
                            }
                        }
                    }
                }
            }
        }
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            IList <ConceptoReporteDTO> listaConceptos = estructuraReporte.Roles[rolAExportar.Rol];

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            imprimirTituloRol(docBuilder, rolAExportar);

            Table tablaActual = docBuilder.StartTable();

            docBuilder.ParagraphFormat.SpaceAfter  = 5;
            docBuilder.ParagraphFormat.SpaceBefore = 5;

            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                        {
                            escribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                            //Escribir titulo campo
                            //  escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                        }
                    }
                }
            }
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            tablaActual.SetBorder(BorderType.Horizontal, LineStyle.Single, .75, Color.DarkGray, true);
            tablaActual.SetBorder(BorderType.Bottom, LineStyle.Single, .75, Color.DarkGray, true);
            docBuilder.EndTable();
        }
Exemplo n.º 14
0
        protected override void escribirConceptoEnTablaNota(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, HechoReporteDTO hecho, ConceptoReporteDTO conceptoActual, bool forzarHtml = false)
        {
            // condicion para obtener el formato de los tres primeros conceptos
            string text_block = ObtenertipoDato(conceptoActual, TIPO_DATO_TEXT_BLOCK);


            string cadena = ObtenertipoDato(conceptoActual, TIPO_DATO_STRING);

            if (conceptoActual.TipoDato == cadena || conceptoActual.TipoDato == text_block)
            {
                establecerFuenteTituloCampo(docBuilder);
                docBuilder.Font.Size  = TamanioLetraTituloConceptoNota;
                docBuilder.Font.Color = Color.Black;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                if (conceptoActual.AtributosAdicionales != null && conceptoActual.AtributosAdicionales.Count == 1)
                {
                    conceptosEnIndice(docBuilder, conceptoActual);
                }
                else
                {
                    docBuilder.Write(conceptoActual != null ? conceptoActual.Valor + ":" : "");
                }
                Table tablaActual2 = docBuilder.StartTable();
                docBuilder.InsertCell();
                docBuilder.Font.Size    = 1;
                docBuilder.Font.Spacing = 1;
                tablaActual2.SetBorders(LineStyle.None, 0, Color.Black);
                docBuilder.CellFormat.Borders.Top.Color     = Color.DarkGray;
                docBuilder.CellFormat.Borders.Top.LineStyle = LineStyle.Single;
                docBuilder.CellFormat.Borders.Top.LineWidth = 2;
                docBuilder.EndRow();
                docBuilder.EndTable();

                establecerFuenteValorCampo(docBuilder);
                docBuilder.Font.Color = Color.Black;
                //  docBuilder.InsertParagraph();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                escribirValorHecho(docBuilder, estructuraReporte, hecho, conceptoActual);

                tablaActual2 = docBuilder.StartTable();
                docBuilder.InsertCell();
                docBuilder.Font.Size    = 1;
                docBuilder.Font.Spacing = 1;
                tablaActual2.SetBorders(LineStyle.None, 0, Color.Black);
                docBuilder.CellFormat.Borders.Bottom.Color     = Color.DarkGray;
                docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
                docBuilder.CellFormat.Borders.Bottom.LineWidth = 2;

                docBuilder.EndRow();
                docBuilder.EndTable();
                docBuilder.Writeln();
            }
            docBuilder.MoveToDocumentEnd();
        }
Exemplo n.º 15
0
        ///
        /// (non-Javadoc)
        /// @see com.bmv.spread.xbrl.reportes.exportador.ExportadorRolDocumentoInstancia#exportarRolAWord(com.aspose.words.DocumentBuilder, com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto, com.bmv.spread.xbrl.reportes.dto.IndiceReporteDTO, com.bmv.spread.xbrl.reportes.dto.ReporteXBRLDTO)
        ////
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            imprimirTituloRol(docBuilder, rolAExportar);

            //Escribir nota inicial
            IList <ConceptoReporteDTO> conceptos = estructuraReporte.Roles[rolAExportar.Rol];
            HechoReporteDTO            hechoNota = null;
            var conceptoNota = "ifrs_mx-cor_20141205_InformacionARevelarSobrePosicionMonetariaEnMonedaExtranjeraBloqueDeTexto";

            foreach (var concepto in conceptos)
            {
                if (!concepto.IdConcepto.Equals(conceptoNota))
                {
                    continue;
                }
                foreach (var llave in concepto.Hechos.Keys)
                {
                    hechoNota = concepto.Hechos[llave];
                    if (hechoNota != null)
                    {
                        if (String.IsNullOrWhiteSpace(hechoNota.Valor) && instancia.HechosPorIdConcepto.ContainsKey(conceptoNota))
                        {
                            var idsHechos = instancia.HechosPorIdConcepto[conceptoNota];
                            foreach (var idHecho in idsHechos)
                            {
                                if (instancia.HechosPorId.ContainsKey(idHecho))
                                {
                                    var hechoReal = instancia.HechosPorId[idHecho];
                                    if (!String.IsNullOrWhiteSpace(hechoReal.Valor))
                                    {
                                        hechoNota.Valor = hechoReal.Valor;
                                        break;
                                    }
                                }
                            }
                        }
                        if (!String.IsNullOrWhiteSpace(hechoNota.Valor))
                        {
                            escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hechoNota, concepto);
                            break;
                        }
                    }
                }
            }
            //conceptos.Remove(0);

            conceptos = ((List <ConceptoReporteDTO>)conceptos).GetRange(1, conceptos.Count() - 1);


            Table tablaActual = docBuilder.StartTable();
            ConceptoReporteDTO primerConcepto = null;

            foreach (ConceptoReporteDTO concepto  in  conceptos)
            {        //estructuraReporte.Roles[rolAExportar.Rol]){
                if (!concepto.Abstracto)
                {
                    primerConcepto = concepto;
                    break;
                }
            }
            docBuilder.Font.Color = Color.White;
            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraTituloTabla;

            //Titlo de dimension

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.Auto;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            int iCol = 0;

            foreach (String columna  in  primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                docBuilder.CellFormat.WrapText       = false;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                if (iCol == 0)
                {
                    String descPeriodo = (String)estructuraReporte.ParametrosReporte["ifrs_mx-cor_20141205_MonedasEje_HEADER"];
                    docBuilder.Write(descPeriodo);
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                }
                else
                {
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
                iCol++;
            }

            docBuilder.EndRow();

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.Auto;
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
            foreach (String columna  in  primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                docBuilder.CellFormat.WrapText       = false;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                String descPeriodo = (String)estructuraReporte.ParametrosReporte[columna + "_HEADER"];
                docBuilder.Write(descPeriodo);
                docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            }
            docBuilder.EndRow();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraContenidoTabla;
            foreach (ConceptoReporteDTO concepto  in  conceptos)
            {
                if (concepto.Abstracto && !ConceptosAbstractosPermitidos.Contains(concepto.IdConcepto))
                {
                    continue;
                }
                docBuilder.InsertCell();
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.CellFormat.WrapText = true;
                docBuilder.Font.Color          = Color.Black;
                if (concepto.Abstracto)
                {
                    docBuilder.Bold       = true;
                    docBuilder.Font.Color = Color.White;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                }
                else
                {
                    docBuilder.Bold = false;
                }
                docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                docBuilder.Write(concepto.Valor);
                if (concepto.Abstracto)
                {
                    for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                    }
                }
                else
                {
                    foreach (HechoReporteDTO hecho  in  concepto.Hechos.Values)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);

                        docBuilder.ParagraphFormat.LeftIndent = 0;
                        if (concepto.Numerico)
                        {
                            docBuilder.CellFormat.WrapText       = true;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                        }
                        else
                        {
                            docBuilder.CellFormat.WrapText       = false;
                            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        }
                        escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                    }
                }
                docBuilder.RowFormat.AllowBreakAcrossPages = true;
                docBuilder.RowFormat.HeadingFormat         = false;
                docBuilder.EndRow();
            }


            tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR);
            docBuilder.EndTable();
        }
        /// <summary>
        /// Imprime el valor de un hecho a dos columnas.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="estructuraReporte">DTO con información general del reporte actual</param>
        /// <param name="concepto">Concepto que se presenta.</param>
        /// <param name="hecho">Hecho que se persenta.</param>
        public override void EscribirADosColumnasConceptoValor(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto, HechoReporteDTO hecho)
        {
            Table tablaActual = docBuilder.StartTable();

            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            docBuilder.ParagraphFormat.SpaceAfter  = 5;
            docBuilder.ParagraphFormat.SpaceBefore = 5;

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
            var anchoMinimoEtiqueta = (AnchoMinimoTitulodosColumnas != null && AnchoMinimoTitulodosColumnas > 0) ? AnchoMinimoTitulodosColumnas ?? 30 : 30;
            var anchoMinimoValor    = 100 - anchoMinimoEtiqueta;

            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(anchoMinimoEtiqueta);

            docBuilder.CellFormat.Borders.LineStyle = LineStyle.None;
            docBuilder.CellFormat.Borders.LineWidth = 0;
            if (!concepto.IdConcepto.Equals("rel_news_Ticker"))
            {
                docBuilder.CellFormat.Borders.Right.Color     = Color.Black;
                docBuilder.CellFormat.Borders.Right.LineStyle = LineStyle.Single;
                docBuilder.CellFormat.Borders.Right.LineWidth = .75;
            }
            else
            {
                docBuilder.CellFormat.Borders.Bottom.Color     = Color.Black;
                docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
                docBuilder.CellFormat.Borders.Bottom.LineWidth = .75;
            }

            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = 11;
            docBuilder.Font.Color = Color.Black;
            AplicaEstilosEtiquetaConcepto(docBuilder, concepto.IdConcepto, estructuraReporte);
            docBuilder.Write(concepto.Valor);
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify;

            //docBuilder.Write(": ");
            var estructurasRol = estructuraReporte.Roles.Values.First();
            var esPar          = estructurasRol.IndexOf(concepto) % 2;

            docBuilder.InsertCell();
            if (esPar == 0)
            {
                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.FromArgb(255, 242, 242, 242);
            }
            if (!concepto.IdConcepto.Equals("rel_news_Ticker"))
            {
                docBuilder.CellFormat.Borders.Right.Color     = Color.White;
                docBuilder.CellFormat.Borders.Right.LineStyle = LineStyle.None;
                docBuilder.CellFormat.Borders.Right.LineWidth = 0;
            }
            else
            {
                docBuilder.CellFormat.Borders.Bottom.Color     = Color.Black;
                docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
                docBuilder.CellFormat.Borders.Bottom.LineWidth = .75;
            }
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(anchoMinimoValor);
            establecerFuenteValorCampo(docBuilder);
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

            docBuilder.Font.Size = 10;
            AplicaEstilosValorConcepto(docBuilder, concepto.IdConcepto, estructuraReporte);
            escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
            docBuilder.EndRow();

            docBuilder.EndTable();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
        }
Exemplo n.º 17
0
        /// <summary>
        /// Implementación de método abstracto que dispara la generación del report.
        /// </summary>
        /// <param name="docBuilder">Constructor de Aspose para la generación del contenido.</param>
        /// <param name="instancia">Documento de instancia XBRL.</param>
        /// <param name="rolAExportar">Definición del rol que se pretende presentar.</param>
        /// <param name="estructuraReporte">Información adicional sobre la estructura del reporte.</param>
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            Idioma = estructuraReporte.Lenguaje;

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            //Titulo rol
            imprimirTituloRol(docBuilder, rolAExportar);


            HechoReporteDTO hecho = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (ConceptosIgnorar.ContainsKey(concepto.IdConcepto))
                {
                    continue;
                }
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        var esBloqueTexto = concepto.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK);
                        if (esBloqueTexto)
                        {
                            if (ExportarNotasVacias || (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                //Escribir titulo campo
                                EscribirNotaTextoAtributosAdicionales(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }

                        if (concepto.TipoDato != null &&
                            (concepto.TipoDato.Contains(TIPO_DATO_SI_NO) || concepto.Numerico))
                        {
                            EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_CompanyAdministratorsAbstract"))
                        {
                            ImprimeTitulo(docBuilder, concepto);
                            PintaAdministradores(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyAdministratorsTable"]);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_CompanyShareholdersAbstract"))
                        {
                            ImprimeTitulo(docBuilder, concepto);
                            PintaAccionistas(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyShareholdersTable"]);
                        }
                        else if (concepto.IdConcepto.Equals("ar_pros_ReferenceIncorporationAdministration"))
                        {
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                            }
                        }
                    }
                }
            }
        }
        private IList <ConceptoReporteDTO> llenarRol800003(IList <ConceptoReporteDTO> conceptos, DocumentoInstanciaXbrlDto instancia)
        {
            foreach (ConceptoReporteDTO concepto  in  conceptos)
            {
                HechoReporteDTO hechoReporte = null;

                llenarConcepto(concepto, instancia);

                IDictionary <String, HechoReporteDTO> hechosReporte = concepto.Hechos;

                if (!concepto.Abstracto && hechosReporte != null)
                {
                    if (hechosReporte.ContainsKey("cierre_trim_actual"))
                    {
                        hechoReporte       = hechosReporte["cierre_trim_actual"];
                        hechoReporte.Valor = ReporteXBRLUtil.obtenerValorHecho(concepto.IdConcepto, instancia);
                    }
                    else
                    {
                        IList <String> hechos;
                        if (!instancia.HechosPorIdConcepto.TryGetValue(concepto.IdConcepto, out hechos))
                        {
                            //var detalleError = CreaDetalleError(instancia, "No fue posible obtener el listado de hechos para el concepto \"" + concepto.IdConcepto + "\".");
                            //detalleError.Add("ConceptoError", concepto);
                            //LogUtil.Error(detalleError);
                            continue;
                        }

                        if (hechos != null)
                        {
                            foreach (String idHecho  in  hechos)
                            {
                                String fecha = null;

                                HechoDto    hecho;
                                ContextoDto contexto;

                                if (instancia.HechosPorId.TryGetValue(idHecho, out hecho) &&
                                    instancia.ContextosPorId.TryGetValue(hecho.IdContexto, out contexto) &&
                                    contexto.ContieneInformacionDimensional)
                                {
                                    //log.info(hecho.Valor);
                                    if (contexto.Periodo.Tipo == PeriodoDto.Instante)
                                    {
                                        fecha = DateReporteUtil.formatoFechaEstandar(contexto.Periodo.FechaInstante);
                                        String fechaCierrreTrimestreActual;
                                        String idItemMiembroContexto = contexto.ValoresDimension[0].IdItemMiembro;
                                        if (reporteXBRLDTO.PeriodosReporte.TryGetValue("cierre_trim_actual", out fechaCierrreTrimestreActual) &&
                                            fecha.Equals(fechaCierrreTrimestreActual) &&
                                            concepto.Hechos.TryGetValue(idItemMiembroContexto, out hechoReporte))
                                        {
                                            llenarHecho(concepto, hecho, hechoReporte);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(conceptos);
        }
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            var colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Landscape;
            if (UsarHojaOficio)
            {
                docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Legal;
            }
            else
            {
                docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Letter;
            }
            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);
            var etiquetaHoja = estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_HOJA");
            var etiquetaDe   = estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_DE");

            imprimirTituloRol(docBuilder, rolAExportar);
            //var pageCount = docBuilder.Document.PageCount;

            Table tablaActual = docBuilder.StartTable();
            ConceptoReporteDTO primerConcepto = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (!concepto.Abstracto)
                {
                    primerConcepto = concepto;
                    break;
                }
            }
            int             iCol     = 0;
            HechoReporteDTO hecho    = null;
            List <String>   columnas = new List <String>();

            foreach (String periodoItera in primerConcepto.Hechos.Keys)
            {
                columnas.Add(periodoItera);
            }
            String periodo = null;
            int    hoja    = 1;
            int    hojas   = (int)Math.Ceiling((double)columnas.Count() / (double)ColumnasPorHoja);

            while (iCol < columnas.Count())
            {
                int iColFinalInicio   = iCol;
                int iColSeccionActual = iCol;
                //Fila encabezado
                docBuilder.ParagraphFormat.SpaceAfter  = 0;
                docBuilder.ParagraphFormat.SpaceBefore = 2;
                establecerFuenteTituloCampo(docBuilder);
                docBuilder.Font.Size = TamanioLetraTituloTabla;

                docBuilder.InsertCell();
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaTitulos);

                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                docBuilder.InsertCell();
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                docBuilder.Font.Color = Color.White;
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.Write((String)estructuraReporte.ParametrosReporte["ifrs-full_ComponentsOfEquityAxis_HEADER"]);

                for (; iColSeccionActual + 1 < iColFinalInicio + ColumnasPorHoja && iColSeccionActual + 1 < columnas.Count(); iColSeccionActual++)
                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
                docBuilder.EndRow();

                docBuilder.InsertCell();
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaTitulos);
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Center;
                docBuilder.Font.Color = Color.White;
                docBuilder.Font.Bold  = true;
                if (hojas > 1)
                {
                    docBuilder.Write(etiquetaHoja + " " + hoja + " " + etiquetaDe + " " + hojas);
                }


                iColSeccionActual = iCol;
                for (; iColSeccionActual < iColFinalInicio + ColumnasPorHoja && iColSeccionActual < columnas.Count(); iColSeccionActual++)
                {
                    periodo = columnas[iColSeccionActual];
                    docBuilder.InsertCell();
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Center;
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                    docBuilder.CellFormat.WrapText        = true;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    String descPeriodo = (String)estructuraReporte.ParametrosReporte[periodo + "_HEADER"];
                    docBuilder.Writeln(descPeriodo);
                    iCol++;
                }
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.EndRow();
                foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
                {
                    if (concepto.Abstracto && !ConceptosAbstractosPermitidos.Contains(concepto.IdConcepto))
                    {
                        continue;
                    }
                    //LogUtil.Info("Exportador == > Concepto:[" + concepto.IdConcepto + "],\t\t\tAbstracto:[" + concepto.Abstracto + "],\t\thechos:[" + concepto.Hechos.Count() + "]");
                    iColSeccionActual = iColFinalInicio;

                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                    if (hojas > 1)
                    {
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaTitulos);
                    }
                    else
                    {
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    }

                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.Font.Color = Color.Black;
                    if (concepto.Abstracto)
                    {
                        docBuilder.Bold       = true;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    }
                    else
                    {
                        docBuilder.Bold = false;
                    }
                    docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores != null?concepto.Tabuladores:0);              ///3);
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                    docBuilder.Write(concepto.Valor);

                    for (; iColSeccionActual < (iColFinalInicio + ColumnasPorHoja) && iColSeccionActual < columnas.Count(); iColSeccionActual++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                        docBuilder.ParagraphFormat.LeftIndent = 0;
                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Right;
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

                        if (concepto.Abstracto)
                        {
                            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                        }
                        else
                        {
                            //LogUtil.Info("ExportadorEntro == > Concepto:[" + concepto.IdConcepto + "],\t\t\tSeccionActual:[" + columnas[iColSeccionActual] + "],\t\thecho:[" + hecho == null ? "sinHecho" : hecho.ValorFormateado ?? "null" + "]");
                            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                            docBuilder.Font.Color = Color.Black;
                            if (concepto.Hechos.ContainsKey(columnas[iColSeccionActual]))
                            {
                                hecho = concepto.Hechos[columnas[iColSeccionActual]];
                            }
                            else
                            {
                                hecho = null;
                            }

                            if (hecho != null && hecho.ValorFormateado != null)
                            {
                                escribirLinkNotaAlPie(docBuilder, hecho, estructuraReporte);
                                docBuilder.Write(hecho.ValorFormateado);
                            }
                        }
                    }



                    if (hojas > 1)
                    {
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    }

                    docBuilder.EndRow();
                }
                if (iCol >= columnas.Count())
                {
                    break;
                }
                tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR);
                docBuilder.EndTable();
                if (estructuraReporte.Roles[rolAExportar.Rol].Count < 25)
                {
                    docBuilder.InsertBreak(BreakType.PageBreak);
                }

                /*if (pageCount == docBuilder.Document.PageCount)
                 * {
                 *  docBuilder.InsertBreak(BreakType.PageBreak);
                 * }
                 * pageCount = docBuilder.Document.PageCount;
                 */
                tablaActual = docBuilder.StartTable();
                hoja++;
            }
            tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR);
            docBuilder.EndTable();
        }
        protected override void escribirConceptoEnTablaNota(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, HechoReporteDTO hecho, ConceptoReporteDTO conceptoActual, bool forzarHtml = false)
        {
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = TamanioLetraTituloConceptoNota;
            docBuilder.Font.Color = Color.Black;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

            if (conceptoActual.AtributosAdicionales != null && conceptoActual.AtributosAdicionales.Count == 1)
            {
                conceptosEnIndice(docBuilder, conceptoActual);
            }
            else
            {
                docBuilder.Write(conceptoActual != null ? conceptoActual.Valor + ":" : "");
            }

            Table tablaActual = docBuilder.StartTable();

            docBuilder.InsertCell();
            docBuilder.Font.Size    = 1;
            docBuilder.Font.Spacing = 1;
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            docBuilder.CellFormat.Borders.Top.Color     = Color.DarkGray;
            docBuilder.CellFormat.Borders.Top.LineStyle = LineStyle.Single;
            docBuilder.CellFormat.Borders.Top.LineWidth = 2;
            docBuilder.EndRow();
            docBuilder.EndTable();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Color = Color.Black;
            docBuilder.InsertParagraph();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            escribirValorHecho(docBuilder, estructuraReporte, hecho, conceptoActual);

            tablaActual = docBuilder.StartTable();
            docBuilder.InsertCell();
            docBuilder.Font.Size    = 1;
            docBuilder.Font.Spacing = 1;
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            docBuilder.CellFormat.Borders.Bottom.Color     = Color.DarkGray;
            docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
            docBuilder.CellFormat.Borders.Bottom.LineWidth = 2;
            docBuilder.EndRow();
            docBuilder.EndTable();

            docBuilder.Writeln();
            docBuilder.Writeln();
        }
        /// <summary>
        /// Escribe el contenido de un hecho de tipo textbloc marcando los estilos del título en color negro.
        /// También lo marca compo titulo 2 para que se muestre en la tabla de contenido.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento..</param>
        /// <param name="estructuraReporte">Información general de la distribución de elementos en el reporte.</param>
        /// <param name="hecho">Hecho de tipo nota de texot que se pretende imprimir.</param>
        /// <param name="conceptoActual">Identificador del concepto de tipo bloque de texot.</param>
        public override void EscribirTipoNotaTexto(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, HechoReporteDTO hecho, ConceptoReporteDTO conceptoActual)
        {
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = TamanioLetraTituloConceptoNota;
            docBuilder.Font.Color = Color.Black;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify;
            docBuilder.ParagraphFormat.Borders.Bottom.LineStyle = LineStyle.Single;
            docBuilder.ParagraphFormat.Borders.Bottom.Color     = Color.DarkGray;
            docBuilder.ParagraphFormat.Borders.Bottom.LineWidth = 2;
            if (conceptoActual.AtributosAdicionales != null)
            {
                if (conceptoActual.AtributosAdicionales.Count == 1)
                {
                    conceptosEnIndice(docBuilder, conceptoActual);
                }
                else
                {
                    //AplicaEstilosEtiquetaConcepto(docBuilder, conceptoActual.IdConcepto, estructuraReporte);
                    docBuilder.Write(conceptoActual.Valor);
                }
            }
            else
            {
                //AplicaEstilosEtiquetaConcepto(docBuilder, conceptoActual.IdConcepto, estructuraReporte);
                docBuilder.Write(conceptoActual.Valor);
            }
            //Table tablaActual = docBuilder.StartTable();
            //docBuilder.InsertCell();
            //docBuilder.Font.Size = 1;
            //docBuilder.Font.Spacing = 1;
            //tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            //docBuilder.CellFormat.Borders.Top.Color = Color.DarkGray;
            //docBuilder.CellFormat.Borders.Top.LineStyle = LineStyle.Single;
            //docBuilder.CellFormat.Borders.Top.LineWidth = 2;
            //docBuilder.EndRow();
            //docBuilder.EndTable();

            docBuilder.ParagraphFormat.Borders.LineStyle = LineStyle.None;

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Color = Color.Black;
            docBuilder.InsertParagraph();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify;
            //AplicaEstilosValorConcepto(docBuilder, conceptoActual.IdConcepto, estructuraReporte);
            escribirValorHecho(docBuilder, estructuraReporte, hecho, conceptoActual);

            docBuilder.Writeln();
            docBuilder.ParagraphFormat.Borders.Top.LineStyle = LineStyle.Single;
            docBuilder.ParagraphFormat.Borders.Top.Color     = Color.DarkGray;
            docBuilder.ParagraphFormat.Borders.Top.LineWidth = 2;
            docBuilder.Writeln();
            docBuilder.ParagraphFormat.Borders.LineStyle = LineStyle.None;
            //tablaActual = docBuilder.StartTable();
            //docBuilder.InsertCell();
            //docBuilder.Font.Size = 1;
            //docBuilder.Font.Spacing = 1;
            //tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            //docBuilder.CellFormat.Borders.Bottom.Color = Color.DarkGray;
            //docBuilder.CellFormat.Borders.Bottom.LineStyle = LineStyle.Single;
            //docBuilder.CellFormat.Borders.Bottom.LineWidth = 2;
            //docBuilder.EndRow();
            //docBuilder.EndTable();
            //docBuilder.Writeln();
            //docBuilder.Writeln();
        }
        private void PintaTabla(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IList <ConceptoReporteDTO> listaConseptosReporte)
        {
            Table tablaActual = docBuilder.StartTable();
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

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

            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))
            {
                foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
                {
                    if (!concepto.Abstracto)
                    {
                        primerConcepto = concepto;
                        break;
                    }
                }
            }
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraTituloTabla;
            docBuilder.InsertCell();

            //tablaActual.StyleIdentifier = StyleIdentifier.LIGHT_GRID_ACCENT_1;
            //tablaActual.StyleOptions = TableStyleOptions.FIRST_ROW;

            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
            docBuilder.Font.Color = Color.White;
            docBuilder.Write(estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_CONCEPTO"));

            String fechaReporteCadena      = estructuraReporte.FechaReporte;
            String fechaConstitucionCadena = estructuraReporte.Plantilla.ObtenerParametrosConfiguracion()["fechaConstitucion"];

            DateTime fechaReporte      = DateReporteUtil.obtenerFecha(fechaReporteCadena);
            DateTime fechaConstitucion = DateReporteUtil.obtenerFecha(fechaConstitucionCadena);

            int diferenciaAnios = fechaReporte.Year - fechaConstitucion.Year;

            var periodosPermitidos = new Dictionary <String, bool>()
            {
                { "anual_actual", true },
            };

            if (diferenciaAnios == 1)
            {
                periodosPermitidos.Add("anual_anterior", true);
            }
            else if (diferenciaAnios >= 2)
            {
                periodosPermitidos.Add("anual_anterior", true);
                periodosPermitidos.Add("anual_pre_anterior", true);
            }

            foreach (String periodo in primerConcepto.Hechos.Keys)
            {
                if (!periodosPermitidos.ContainsKey(periodo))
                {
                    continue;
                }

                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                //docBuilder.CellFormat.Width = 35;
                docBuilder.CellFormat.WrapText = false;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                String descPeriodo = estructuraReporte.PeriodosReporte[periodo];
                docBuilder.Writeln(estructuraReporte.Titulos[periodo]);
                docBuilder.Writeln(estructuraReporte.Moneda);
                docBuilder.Write(descPeriodo.Replace("_", " - "));
            }
            docBuilder.RowFormat.HeadingFormat = true;
            docBuilder.EndRow();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraContenidoTabla;
            foreach (ConceptoReporteDTO concepto in listaConseptosReporte)
            {
                /* if (ConceptosOcultar.Contains(concepto.IdConcepto))
                 * {
                 *   continue;
                 * }*/

                //if(!concepto.Abstracto && !concepto.Numerico)
                //{
                //    establecerBordesGrisesTabla(tablaActual);
                //    docBuilder.EndTable();
                //    var subLista = ObtenSubLista(listaConseptosReporte, listaConseptosReporte.IndexOf(concepto));
                //    EscribeNotas(docBuilder, instancia, rolAExportar, estructuraReporte, subLista);
                //    return;
                //}
                if (concepto.TipoDato.EndsWith(TIPO_DATO_MONETARY) || concepto.TipoDato.EndsWith(TIPO_DATO_PERSHERE))
                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                    docBuilder.CellFormat.WrapText = true;
                    docBuilder.Font.Color          = Color.Black;
                    if (concepto.Abstracto)
                    {
                        docBuilder.Bold       = true;
                        docBuilder.Font.Color = Color.White;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                    }
                    else
                    {
                        docBuilder.Bold = false;
                    }
                    docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0);
                    docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                    if (concepto.AtributosAdicionales != null)
                    {
                        if (concepto.AtributosAdicionales.Count == 1)
                        {
                            conceptosEnIndice(docBuilder, concepto);
                        }
                        else
                        {
                            docBuilder.Write(concepto.Valor);
                        }
                    }
                    else
                    {
                        docBuilder.Write(concepto.Valor);
                    }

                    if (concepto.Abstracto)
                    {
                        for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                        }
                    }
                    else
                    {
                        foreach (var periodo in concepto.Hechos.Keys)
                        {
                            if (!periodosPermitidos.ContainsKey(periodo))
                            {
                                continue;
                            }
                            HechoReporteDTO hecho = concepto.Hechos[periodo];
                            if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                            {
                                docBuilder.InsertCell();
                                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);

                                docBuilder.ParagraphFormat.LeftIndent = 0;
                                if (concepto.Numerico)
                                {
                                    docBuilder.CellFormat.WrapText       = true;
                                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                                }
                                else
                                {
                                    docBuilder.CellFormat.WrapText       = false;
                                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                                }
                                escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }
                        docBuilder.RowFormat.AllowBreakAcrossPages = true;
                        docBuilder.RowFormat.HeadingFormat         = false;
                        docBuilder.EndRow();
                    }
                }
            }
            establecerBordesGrisesTabla(tablaActual);
            docBuilder.EndTable();
        }
        /// <summary>
        /// Imprime el valor de un hecho a dos columnas.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="estructuraReporte">DTO con información general del reporte actual</param>
        /// <param name="concepto">Concepto que se presenta.</param>
        /// <param name="hecho">Hecho que se persenta.</param>
        public override void EscribirADosColumnasConceptoValor(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto, HechoReporteDTO hecho)
        {
            Table tablaActual = docBuilder.StartTable();

            docBuilder.ParagraphFormat.SpaceAfter  = 5;
            docBuilder.ParagraphFormat.SpaceBefore = 5;

            docBuilder.InsertCell();
            if (AnchoMinimoTitulodosColumnas != null && AnchoMinimoTitulodosColumnas > 0)
            {
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(AnchoMinimoTitulodosColumnas ?? 50);
            }

            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = 11;
            docBuilder.Font.Color = Color.Black;
            //AplicaEstilosEtiquetaConcepto(docBuilder, concepto.IdConcepto, estructuraReporte);
            docBuilder.Write(concepto.Valor);
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify;
            docBuilder.Write(": ");

            docBuilder.InsertCell();
            int porcentajeSegundaColumna = 50;

            docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(porcentajeSegundaColumna);
            establecerFuenteValorCampo(docBuilder);
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
            docBuilder.Font.Size = 10;
            //AplicaEstilosValorConcepto(docBuilder, concepto.IdConcepto, estructuraReporte);
            escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
            docBuilder.EndRow();

            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            tablaActual.SetBorder(BorderType.Horizontal, LineStyle.Single, .75, Color.DarkGray, true);
            tablaActual.SetBorder(BorderType.Bottom, LineStyle.Single, .75, Color.DarkGray, true);

            docBuilder.EndTable();
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
        }
Exemplo n.º 24
0
        public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            //   docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;

            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;

            //  escribirEncabezado(docBuilder, instancia, estructuraReporte, true);

            imprimirTituloRol(docBuilder, rolAExportar);
            var             lista  = new List <ConceptoReporteDTO>();
            var             lista2 = new List <ConceptoReporteDTO>();
            var             lista3 = new List <ConceptoReporteDTO>();
            HechoReporteDTO hecho  = null;

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                        {
                            if (!ConceptoHiper.Contains(concepto.IdConcepto))
                            {
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            }
                            string tipoNumerico = ObtenertipoDato(concepto, TIPO_DATO_MONETARY);

                            if (concepto.TipoDato == tipoNumerico && concepto.IdConcepto != ID_Importe && concepto.IdConcepto != ID_IVA && concepto.IdConcepto != ID_Total)
                            {
                                lista.Add(concepto);
                                banderahecho = 1;
                            }
                            else if (banderahecho == 1)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista);
                                banderahecho = 0;
                                lista.Clear();
                            }
                            string tipoNoNegativo = ObtenertipoDato(concepto, TIPO_DATO_NoNEGATIVO);
                            if (concepto.TipoDato == tipoNoNegativo)
                            {
                                lista2.Add(concepto);
                                banderahecho = 2;
                            }
                            else if (banderahecho == 2)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista2);
                                banderahecho = 0;
                                lista2.Clear();
                            }
                            string tipoDecimal = ObtenertipoDato(concepto, TIPO_DATO_DECIMAL);
                            if (concepto.TipoDato == tipoNoNegativo)
                            {
                                lista3.Add(concepto);
                                banderahecho = 3;
                            }
                            else if (banderahecho == 3)
                            {
                                PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista3);
                                banderahecho = 0;
                                lista3.Clear();
                            }

                            string conceptoAdosColumnas = ObtenertipoDato(concepto, TIPO_DATO_SI_NO);

                            if (concepto.TipoDato == conceptoAdosColumnas || concepto.IdConcepto == ID_Tipo_Oferta ||
                                concepto.IdConcepto == ID_Denominacion_moneda || concepto.IdConcepto == ID_Pesos || concepto.IdConcepto == ID_Pesos1)
                            {
                                escribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                            }
                        }
                    }

                    if (hipercubosSerie.Contains(concepto.IdConcepto))
                    {
                        docBuilder.Writeln();
                        var      conceptoActual = concepto;
                        string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                        string   ConceptoHipercubo = (d[0]);
                        PintaTablaDimensionSerie(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte, conceptoActual);
                    }
                    else if (hipercubosExist.Contains(concepto.IdConcepto))
                    {
                        docBuilder.Writeln();

                        string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                        string   ConceptoHipercubo = (d[0]);
                        PintaTablaDimensionExplicita(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte);
                    }
                }
            }

            banderahecho = 0;
            Evaluador.Clear();
            ConceptoHiper.Clear();
        }
        protected void escribirConceptoEnTablaNotaPeriodo(DocumentBuilder docBuilder, HechoReporteDTO hecho, ConceptoReporteDTO conceptoActual, ReporteXBRLDTO estructuraReporte, String periodo)
        {
            docBuilder.Writeln();
            Table tablaActual = docBuilder.StartTable();

            String descPeriodo = estructuraReporte.PeriodosReporte[periodo];

            docBuilder.InsertCell();
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size  = TamanioLetraTituloConceptoNota;
            docBuilder.Font.Color = Color.Gray;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            docBuilder.Writeln(conceptoActual != null ? conceptoActual.Valor : String.Empty);
            docBuilder.Writeln(estructuraReporte.Titulos[periodo]);
            docBuilder.Write(descPeriodo.Replace("_", " - "));
            docBuilder.RowFormat.HeadingFormat = true;

            docBuilder.EndRow();
            docBuilder.InsertCell();
            docBuilder.Font.Color = Color.Black;
            tablaActual.SetBorders(LineStyle.None, 0, Color.Black);

            establecerBordesNota(docBuilder);

            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
            establecerFuenteValorCampo(docBuilder);
            escribirValorHecho(docBuilder, estructuraReporte, hecho, conceptoActual);
            docBuilder.RowFormat.HeadingFormat = false;
            docBuilder.EndRow();
            docBuilder.EndTable();
            docBuilder.InsertParagraph();
        }
Exemplo n.º 26
0
        public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;
            Idioma = estructuraReporte.Lenguaje;


            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);

            //Titulo rol
            imprimirTituloRol(docBuilder, rolAExportar);

            HechoReporteDTO hecho = null;

            ConceptoHiper.Add("");

            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                if (ConceptosHipercubos.ContainsKey(concepto.IdConcepto))
                {
                    continue;
                }
                if (concepto.Hechos != null)
                {
                    foreach (String llave in concepto.Hechos.Keys)
                    {
                        hecho = concepto.Hechos[llave];
                        if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                        {
                            if (!ConceptoHiper.Contains(concepto.IdConcepto))
                            {
                                //Escribe titulo campo
                                escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }
                    }
                }

                string conceptoAdosColumnas = ObtenertipoDato(concepto, TIPO_DATO_SI_NO);

                if (concepto.TipoDato != null &&
                    (concepto.TipoDato == conceptoAdosColumnas || concepto.Numerico))
                {
                    EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                }

                string conceptoPDF = ObtenertipoDato(concepto, TIPO_DATOS_BASE64_FILE);

                if (concepto.TipoDato == conceptoPDF)
                {
                    if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)))
                    {
                        EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte);
                    }
                }


                if (hipercubosSerie.Contains(concepto.IdConcepto))
                {
                    docBuilder.Writeln();
                    var      conceptoActual = concepto;
                    string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                    string   ConceptoHipercubo = (d[0]);
                    PintaTablaDimensionSerie(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte, conceptoActual);
                }
                if (hipercubosExist.Contains(concepto.IdConcepto))
                {
                    docBuilder.Writeln();

                    string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None);
                    string   ConceptoHipercubo = (d[0]);
                    PintaTablaDimensionExplicita(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte);
                }
                else if (concepto.IdConcepto.Equals("ar_pros_CompanyAdministratorsAbstract"))
                {
                    ImprimeTitulo(docBuilder, concepto);
                    PintaAdministradores(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyAdministratorsTable"]);
                }
                else if (concepto.IdConcepto.Equals("ar_pros_CompanyShareholdersAbstract"))
                {
                    ImprimeTitulo(docBuilder, concepto);
                    PintaAccionistas(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyShareholdersTable"]);
                }
                else if (concepto.IdConcepto.Equals("ar_pros_SubcommitteesSynopsis"))
                {
                    ImprimeTitulo(docBuilder, concepto);
                    PintaListaSubcomites(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_SubcommitteesTable"]);
                }
            }

            Evaluador.Clear();
            ConceptoHiper.Clear();
        }
Exemplo n.º 27
0
        ///
        /// (non-Javadoc)
        /// @see com.bmv.spread.xbrl.reportes.exportador.ExportadorRolDocumentoInstancia#exportarRolAWord(com.aspose.words.DocumentBuilder, com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto, com.bmv.spread.xbrl.reportes.dto.IndiceReporteDTO, com.bmv.spread.xbrl.reportes.dto.ReporteXBRLDTO)
        ////
        override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte)
        {
            docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait;
            docBuilder.CurrentSection.PageSetup.PaperSize   = PaperSize.Letter;
            Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]);

            docBuilder.CurrentSection.PageSetup.LeftMargin  = 40;
            docBuilder.CurrentSection.PageSetup.RightMargin = 40;

            escribirEncabezado(docBuilder, instancia, estructuraReporte, true);

            imprimirTituloRol(docBuilder, rolAExportar);

            Table tablaActual = docBuilder.StartTable();

            //docBuilder.ParagraphFormat.LineSpacing = 1.5;
            docBuilder.ParagraphFormat.SpaceAfter  = 0;
            docBuilder.ParagraphFormat.SpaceBefore = 2;

            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))
            {
                foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
                {
                    if (!concepto.Abstracto)
                    {
                        primerConcepto = concepto;
                        break;
                    }
                }
            }
            if (primerConcepto == null)
            {
                LogUtil.Error("No existen conceptos configurados para el rol: " + rolAExportar.Rol);
                throw new IndexOutOfRangeException("No existen conceptos configurados para el rol: " + rolAExportar.Rol);
            }
            establecerFuenteTituloCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraTituloTabla;
            docBuilder.InsertCell();

            //tablaActual.StyleIdentifier = StyleIdentifier.LIGHT_GRID_ACCENT_1;
            //tablaActual.StyleOptions = TableStyleOptions.FIRST_ROW;

            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
            docBuilder.Font.Color = Color.White;
            docBuilder.Write(estructuraReporte.ObtenValorEtiquetaReporte("ETIQUETA_CONCEPTO"));
            foreach (String periodo  in  primerConcepto.Hechos.Keys)
            {
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                //docBuilder.CellFormat.Width = 35;
                docBuilder.CellFormat.WrapText = false;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                String descPeriodo = String.Empty;
                if (estructuraReporte.PeriodosReporte.ContainsKey(periodo))
                {
                    descPeriodo = estructuraReporte.PeriodosReporte[periodo];
                }
                else if (estructuraReporte.ParametrosReporte.ContainsKey(periodo + "_HEADER"))
                {
                    descPeriodo = (string)estructuraReporte.ParametrosReporte[(periodo + "_HEADER")];
                }
                if (estructuraReporte.Titulos.ContainsKey(periodo))
                {
                    docBuilder.Writeln(estructuraReporte.Titulos[periodo]);
                }
                docBuilder.Write(descPeriodo.Replace("_", " - "));
            }
            docBuilder.RowFormat.HeadingFormat = true;
            docBuilder.EndRow();

            establecerFuenteValorCampo(docBuilder);
            docBuilder.Font.Size = TamanioLetraContenidoTabla;
            foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol])
            {
                var conceptoNota = concepto.TipoDato.Contains("textBlockItemType");
                docBuilder.InsertCell();
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                docBuilder.CellFormat.PreferredWidth  = PreferredWidth.Auto;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.CellFormat.WrapText = true;
                docBuilder.Font.Color          = Color.Black;
                if (concepto.Abstracto)
                {
                    docBuilder.Bold       = true;
                    docBuilder.Font.Color = Color.White;
                    docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                }
                else
                {
                    docBuilder.Bold = false;
                }
                docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores != null ? concepto.Tabuladores : 0);          ///3);
                docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                docBuilder.Write(concepto.Valor);



                if (concepto.Abstracto)
                {
                    for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                        docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                    }
                }
                else
                {
                    if (conceptoNota)
                    {
                        //Extender el título
                        HechoReporteDTO ultimoHecho = null;
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                        foreach (HechoReporteDTO hecho in concepto.Hechos.Values)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                            ultimoHecho = hecho;
                        }
                        docBuilder.RowFormat.AllowBreakAcrossPages = true;
                        docBuilder.RowFormat.HeadingFormat         = false;
                        docBuilder.EndRow();

                        docBuilder.InsertCell();
                        docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                        docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                        docBuilder.CellFormat.WrapText = true;
                        docBuilder.Font.Color          = Color.Black;
                        docBuilder.CellFormat.WrapText = false;
                        escribirValorHecho(docBuilder, estructuraReporte, ultimoHecho, concepto);

                        docBuilder.ParagraphFormat.Alignment  = ParagraphAlignment.Left;
                        docBuilder.CellFormat.HorizontalMerge = CellMerge.First;

                        foreach (HechoReporteDTO hecho in concepto.Hechos.Values)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);
                            docBuilder.ParagraphFormat.LeftIndent = 0;
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                        }
                    }
                    else
                    {
                        foreach (HechoReporteDTO hecho in concepto.Hechos.Values)
                        {
                            docBuilder.InsertCell();
                            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                            docBuilder.CellFormat.PreferredWidth  = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos);

                            docBuilder.ParagraphFormat.LeftIndent = 0;
                            if (concepto.Numerico)
                            {
                                docBuilder.CellFormat.WrapText       = true;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                            }
                            else
                            {
                                docBuilder.CellFormat.WrapText       = false;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                            }
                            escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                        }
                    }
                }
                docBuilder.RowFormat.AllowBreakAcrossPages = true;
                docBuilder.RowFormat.HeadingFormat         = false;
                docBuilder.EndRow();
            }
            establecerBordesGrisesTabla(tablaActual);
            docBuilder.EndTable();
        }