Example #1
0
 /// <summary>
 /// Establece el estilo de la celdas para las celdas titulo.
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="exportadorOrigen">Exportador original del documento</param>
 private void EstablecerFuenteCeldaValor(DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen)
 {
     docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
     docBuilder.Font.Color = Color.Black;
     docBuilder.Bold       = false;
     docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
 }
Example #2
0
        /// <summary>
        /// Pinta el contenido de una tarjeta.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="estructuraReporte">Datos generales del reporte.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        /// <param name="instancia">Documento de instnacia.</param>
        /// <param name="tarjeta">Diccionario de hechos a presentar.</param>
        /// <param name="configuracionPresentacion">Configuración de la tarjeta a presentar.</param>
        private void PintaTarjeta(
            DocumentBuilder docBuilder,
            ReporteXBRLDTO estructuraReporte,
            ExportadorRolDocumentoBase exportadorOrigen,
            DocumentoInstanciaXbrlDto instancia,
            IDictionary <String, HechoDto> tarjeta,
            ConfiguracionPresentacionRegistroHipercuboDto configuracionPresentacion)
        {
            var tabla = docBuilder.StartTable();

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

            foreach (var fila in configuracionPresentacion.Filas)
            {
                if (TarjetaContieneConceptosFila(fila, tarjeta))
                {
                    if (fila.Tipo.Equals("DosFilas"))
                    {
                        PintaDosFilas(docBuilder, tarjeta, fila, instancia, exportadorOrigen, estructuraReporte);
                    }
                    if (fila.Tipo.Equals("UnaFila"))
                    {
                        PintaUnaFila(docBuilder, tarjeta, fila, instancia, exportadorOrigen, estructuraReporte);
                    }
                }
            }

            exportadorOrigen.establecerBordesGrisesTabla(tabla);
            docBuilder.EndTable();
            EstablecerFuenteCeldaValor(docBuilder, exportadorOrigen);
            docBuilder.Writeln();
            docBuilder.Writeln();
        }
Example #3
0
 /// <summary>
 /// Pinta un conjunto de elementos a dos filas.
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="tarjeta">Diccionario con los conceptos y hechos.</param>
 /// <param name="fila">Definición de la fila.</param>
 /// <param name="instancia">Documento de instancia.</param>
 /// <param name="exportadorOrigen">Esportador original del documento</param>
 /// <param name="estructuraReporte">Datos generales del reporte.</param>
 private void PintaUnaFila(
     DocumentBuilder docBuilder,
     IDictionary <string, HechoDto> tarjeta,
     FilaPresentacionHipercuboDto fila,
     DocumentoInstanciaXbrlDto instancia,
     ExportadorRolDocumentoBase exportadorOrigen,
     ReporteXBRLDTO estructuraReporte)
 {
     foreach (var celda in fila.Celdas)
     {
         if (!celda.SoloValor)
         {
             EstablecerFuenteCeldaTitulo(docBuilder, exportadorOrigen);
             var tituloConcepto = ObtenTextoTituloConcepto(celda, instancia, exportadorOrigen, estructuraReporte);
             exportadorOrigen.SetCellColspan(docBuilder, tituloConcepto, celda.ColspanTitulo);
         }
         if (celda.EsTitulo)
         {
             EstablecerFuenteCeldaTitulo(docBuilder, exportadorOrigen);
         }
         else
         {
             EstablecerFuenteCeldaValor(docBuilder, exportadorOrigen);
         }
         if (!String.IsNullOrEmpty(celda.IdConcepto))
         {
             PintaCeldaConceptoSimple(docBuilder, celda, tarjeta, exportadorOrigen, estructuraReporte);
         }
         else
         {
             PintaCeldaCompuesta(docBuilder, celda, tarjeta, exportadorOrigen);
         }
     }
     docBuilder.EndRow();
 }
 private void AsignaEstilosTitulo(DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen)
 {
     docBuilder.CellFormat.Shading.BackgroundPatternColor = exportadorOrigen.ObtenColorTitulo();
     docBuilder.Font.Color = Color.White;
     exportadorOrigen.establecerFuenteTituloCampo(docBuilder);
     docBuilder.Font.Size = exportadorOrigen.TamanioLetraTituloTabla;
 }
Example #5
0
        /// <summary>
        /// Establece el estilo de la celdas para las celdas titulo.
        /// </summary>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="exportadorOrigen">Exportador original del documento</param>
        private void EstablecerFuenteCeldaTitulo(DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen)
        {
            var colorTitulo = exportadorOrigen.ObtenColorTitulo();

            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.Font.Color = Color.White;
            docBuilder.Bold       = true;
            docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
        }
        /// <summary>
        /// Pinta la sección de calificaciones en la tabla correspondiente.
        /// </summary>
        /// <param name="docBuilder">Puntero de </param>
        /// <param name="instancia"></param>
        /// <param name="estructuraReporte"></param>
        private void PintaCalificacionesEnTabla(
            DocumentBuilder docBuilder,
            DocumentoInstanciaXbrlDto instancia,
            ReporteXBRLDTO estructuraReporte,
            HipercuboReporteDTO hipercuboSerie,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            var hipercubo = estructuraReporte.Hipercubos["ar_pros_SecuritiesRatingTable"];

            hipercubo = FiltrarHipercuboCalificaciones(hipercubo, hipercuboSerie);

            if (hipercubo == null)
            {
                return;
            }
            var lenguaje            = estructuraReporte.Lenguaje;
            var textoTituloSecciion = exportadorOrigen.ObtenEtiquetaConcepto("ar_pros_SecuritiesRatingAbstract", instancia, lenguaje);

            PintaFilaSubTitulo(textoTituloSecciion, docBuilder, hipercubo.Titulos.Count, exportadorOrigen);
            var diccionarioTarjetas = hipercubo.Utileria.ReordenaConjutosPorExplicitaConceptoImplicita(hipercubo.Hechos);

            foreach (var clavePlantilla in diccionarioTarjetas.Keys)
            {
                var diccionarioConceptos = diccionarioTarjetas[clavePlantilla];
                var primerHecho          = diccionarioConceptos.Values.First().First();
                var idDimensionExplicita = hipercubo.Utileria.ObtenDimensionesTipo(primerHecho, instancia, true).First().IdDimension;
                var miembroExplicita     = hipercubo.Utileria.ObtenMiembroDimension(primerHecho, idDimensionExplicita, instancia);
                var textoTituloMiembro   = "  " + exportadorOrigen.ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, lenguaje);
                PintaFilaSubTitulo(textoTituloMiembro, docBuilder, hipercubo.Titulos.Count, exportadorOrigen);

                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.Black;
                docBuilder.Bold       = false;
                docBuilder.RowFormat.HeadingFormat = false;

                foreach (var idConcepto in diccionarioConceptos.Keys)
                {
                    docBuilder.InsertCell();
                    var nombreConcepto = "    " + DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT);
                    docBuilder.Write(nombreConcepto);
                    var listaHechos = diccionarioConceptos[idConcepto];
                    for (var indexHecho = 0; indexHecho < listaHechos.Count; indexHecho++)
                    {
                        var hecho = listaHechos[indexHecho];
                        docBuilder.InsertCell();
                        if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))
                        {
                            exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]);
                        }
                    }
                    docBuilder.EndRow();
                }
            }
        }
        /// <summary>
        /// Pinta todas las filas de la tabla de hechos.
        /// </summary>
        /// <param name="instancia">Documento de instancia donde se obtiene la información.</param>
        /// <param name="listacontextos">Lista con los contextos a presentar.</param>
        /// <param name="diccionarioHechos">Diccionario con los hechos a presentar.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="exportadorBase">Exportador original del reporte.</param>
        /// <param name="estructuraReporte">Dto con datos auxiliares para la presentación del documento.</param>
        public void PintaFilasHechos(
            DocumentoInstanciaXbrlDto instancia,
            IList <ContextoDto> listacontextos,
            IDictionary <string, IDictionary <string, HechoDto> > diccionarioHechos,
            DocumentBuilder docBuilder,
            ExportadorRolDocumentoBase exportadorBase,
            ReporteXBRLDTO estructuraReporte)
        {
            var numeroColumnas = listacontextos.Count + 1;

            foreach (var idConcepto in ConceptosTabla)
            {
                ConceptoDto concepto;
                if (instancia.Taxonomia.ConceptosPorId.TryGetValue(idConcepto, out concepto))
                {
                    var etiquetaConcepto =
                        DesgloseDeCreditosHelper
                        .obtenerEtiquetaDeConcepto(instancia.Taxonomia, concepto.Id, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT);
                    if (concepto.EsAbstracto ?? false)
                    {
                        PintaFilaSubTitulo(etiquetaConcepto, docBuilder, numeroColumnas, exportadorBase);
                    }
                    else
                    {
                        if (!concepto.EsTipoDatoNumerico)
                        {
                            continue;
                        }
                        docBuilder.InsertCell();
                        docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        docBuilder.Bold = true;
                        docBuilder.Write(etiquetaConcepto);
                        IDictionary <string, HechoDto> diccionarioHechosPorContexto = null;
                        diccionarioHechos.TryGetValue(concepto.Id, out diccionarioHechosPorContexto);
                        foreach (var contexto in listacontextos)
                        {
                            docBuilder.InsertCell();
                            docBuilder.Bold = false;
                            HechoDto hecho;
                            if (diccionarioHechosPorContexto != null && diccionarioHechosPorContexto.TryGetValue(contexto.Id, out hecho))
                            {
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                                exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hecho, concepto);
                            }
                        }
                        docBuilder.EndRow();
                    }
                }
            }
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
        }
Example #8
0
        /// <summary>
        /// Obtiene el valor a presentar como título del concepto.
        /// </summary>
        /// <param name="celda">Celda que se pretende presentar.</param>
        /// <param name="instancia">Documento de instancia.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        /// <param name="estructuraReporte">Datos generales del reporte.</param>
        /// <returns>Texto a presentar como título.</returns>
        private String ObtenTextoTituloConcepto(
            CeldasPresentacionHipercuboDto celda,
            DocumentoInstanciaXbrlDto instancia,
            ExportadorRolDocumentoBase exportadorOrigen,
            ReporteXBRLDTO estructuraReporte)
        {
            var idConceptoTitulo = !String.IsNullOrEmpty(celda.IdConceptoTitulo) ? celda.IdConceptoTitulo : celda.IdConcepto;
            var tituloConcepto   = exportadorOrigen.ObtenEtiquetaConcepto(idConceptoTitulo, instancia, estructuraReporte.Lenguaje);

            if (String.IsNullOrEmpty(tituloConcepto))
            {
                tituloConcepto = idConceptoTitulo;
            }
            return(tituloConcepto);
        }
Example #9
0
        /// <summary>
        /// Constructor de la sección.
        /// </summary>
        /// <param name="conceptoOrigen">Concepto que encapsula el hipercubo.</param>
        /// <param name="docBuilder">Constructor del reporte.</param>
        /// <param name="instancia">Documento de instancia con la información.</param>
        /// <param name="rolAExportar">Rol que se pretende exprotar.</param>
        /// <param name="estructuraReporte">DTO con información general del reporte.</param>
        /// <param name="exportadorOrigen">Exportador actual que maneja la exportación del rol.</param>
        /// <param name="hipercuboReporteDto">Definición del hipercubo con la información a presentar.</param>
        /// <param name="configuracionPresentacion">Definición de la configuración que se pretende presentar.</param>
        public void PintaTarjetasHipercubo(
            ConceptoReporteDTO conceptoOrigen,
            DocumentBuilder docBuilder,
            DocumentoInstanciaXbrlDto instancia,
            IndiceReporteDTO rolAExportar,
            ReporteXBRLDTO estructuraReporte,
            ExportadorRolDocumentoBase exportadorOrigen,
            HipercuboReporteDTO hipercuboReporteDto,
            ConfiguracionPresentacionRegistroHipercuboDto configuracionPresentacion)
        {
            var    diccionarioTarjetas  = hipercuboReporteDto.Utileria.ReordenaConjutosPorExplicitaImplicitaConcepto(hipercuboReporteDto.Hechos);
            String idDimensionExplicita = null;

            foreach (var idPlantillaDimension in hipercuboReporteDto.Utileria.configuracion.PlantillaDimensiones.Keys)
            {
                var plantillaDimension = hipercuboReporteDto.Utileria.configuracion.PlantillaDimensiones[idPlantillaDimension];
                if (plantillaDimension.Explicita)
                {
                    idDimensionExplicita = plantillaDimension.IdDimension;
                    break;
                }
            }

            var idsPlantillasContextos = configuracionPresentacion.IdsPlantillasContextos;

            foreach (var clavePlantilla in diccionarioTarjetas.Keys)
            {
                if (idsPlantillasContextos != null && !idsPlantillasContextos.Contains(clavePlantilla))
                {
                    continue;
                }
                var listaTajetas       = diccionarioTarjetas[clavePlantilla];
                var primerHecho        = listaTajetas.First().First().Value;
                var miembroExplicita   = hipercuboReporteDto.Utileria.ObtenMiembroDimension(primerHecho, idDimensionExplicita, instancia);
                var textoTituloMiembro = exportadorOrigen.
                                         ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, estructuraReporte.Lenguaje);
                exportadorOrigen.ImprimeSubTitulo(docBuilder, textoTituloMiembro);
                foreach (var tarjeta in listaTajetas)
                {
                    PintaTarjeta(
                        docBuilder, estructuraReporte, exportadorOrigen,
                        instancia, tarjeta, configuracionPresentacion);
                }
            }
        }
Example #10
0
        /// <summary>
        /// Pinta el contenido de una celda compuesta por varios conceptos.
        /// </summary>
        /// <param name="docBuilder">Constructor del documenot.</param>
        /// <param name="celda">Celda que se pretende presentar.</param>
        /// <param name="tarjeta">Tarjeta con el valor de la celda.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        private void PintaCeldaCompuesta(
            DocumentBuilder docBuilder,
            CeldasPresentacionHipercuboDto celda,
            IDictionary <string, HechoDto> tarjeta,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            HechoDto hecho;
            var      valor   = new StringBuilder();
            var      esHtml  = false;
            var      colspan = 1;

            foreach (var idConcepto in celda.IdsConceptos)
            {
                if (tarjeta.TryGetValue(idConcepto, out hecho))
                {
                    if (!esHtml)
                    {
                        esHtml = hecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                    }
                    if (colspan < celda.Colspan)
                    {
                        colspan = celda.Colspan;
                    }

                    valor.Append(" ");
                    valor.Append(hecho.Valor ?? String.Empty);
                    if (!celda.ConcatenarValores)
                    {
                        break;
                    }
                }
            }
            var texto = valor.ToString().Substring(1);

            exportadorOrigen.SetCellColspan(docBuilder, texto, colspan, esHtml);
        }
        /// <summary>
        /// Pinta el encabezado de la tabla.
        /// </summary>
        /// <param name="listacontextos">Lista con los contextoos que se van a pintar.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="exportadorOrigen">Exportador origen.</param>
        /// <param name="unidad">Unidad en la que se reporta la información.</param>
        public void PintaEncabezadoTabla(IList <ContextoDto> listacontextos, DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen, UnidadDto unidad)
        {
            Color  colorTitulo = exportadorOrigen.ObtenColorTitulo();
            String textoUnidad = exportadorOrigen.ObtenTextoUnidad(unidad);

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.Font.Color = Color.White;
            docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
            docBuilder.RowFormat.HeadingFormat   = true;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

            docBuilder.Write("Concepto");

            foreach (var contexto in listacontextos)
            {
                var fechaPeriodo = contexto.Periodo.Tipo == PeriodoDto.Duracion ? contexto.Periodo.FechaFin : contexto.Periodo.FechaInstante;
                var textoFecha   = fechaPeriodo.ToString(DateUtil.DMYDateFormat);
                docBuilder.InsertCell();
                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                docBuilder.Writeln(textoFecha);
                docBuilder.Write(textoUnidad);
            }

            docBuilder.EndRow();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
            docBuilder.Font.Color = Color.Black;
            docBuilder.Bold       = false;
        }
Example #12
0
 /// <summary>
 /// Remueve el tipo de letra para el indice.
 /// </summary>
 /// <param name="docBuilder">Constructor del documento.</param>
 /// <param name="exportadorOrigen">Exportador origen.</param>
 private void EliminaEstilosParaIndice(DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen)
 {
     docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
     docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla;
     docBuilder.Font.Name = exportadorOrigen.TipoLetraTextos;
 }
        /// <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);
        }
 private void AsignaEstilosConcepto(DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen)
 {
     docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
     docBuilder.Font.Color = Color.Black;
     docBuilder.Bold       = false;
 }
        /// <summary>
        /// Pinta el contenido de un cubo ya organizado en una tabla de Word
        /// </summary>

        private void PintaTablaCubo(
            HipercuboReporteDTO hipercubo,
            DocumentoInstanciaXbrlDto instancia,
            ReporteXBRLDTO estructuraReporte,
            DocumentBuilder docBuilder,
            ConceptoReporteDTO concepto,
            IndiceReporteDTO rolAExportar,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            var matrizHechosPlantillaContexto = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaTituloConcepto(hipercubo.Hechos, hipercubo.Titulos);
            var matrizHechosTitulo            = matrizHechosPlantillaContexto.Values.First();

            var colorTitulo = exportadorOrigen.ObtenColorTitulo();

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

            foreach (var tituloSerie in matrizHechosTitulo.Keys)
            {
                var tablaActual = docBuilder.StartTable();
                PintaFilaSubTitulo(tituloSerie, docBuilder, 2, exportadorOrigen);
                var hechosPorConcepto = matrizHechosTitulo[tituloSerie];
                foreach (var idConcepto in hechosPorConcepto.Keys)
                {
                    if (!ConceptosAplican.Contains(idConcepto))
                    {
                        continue;
                    }
                    var etiquetaConcepto =
                        DesgloseDeCreditosHelper
                        .obtenerEtiquetaDeConcepto(
                            instancia.Taxonomia, idConcepto,
                            estructuraReporte.Lenguaje,
                            ReporteXBRLUtil.ETIQUETA_DEFAULT);
                    AsignaEstilosConcepto(docBuilder, exportadorOrigen);
                    docBuilder.Bold = true;
                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    docBuilder.InsertCell();
                    docBuilder.Write(etiquetaConcepto);
                    docBuilder.InsertCell();
                    docBuilder.Bold = false;
                    docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                    var hecho = hechosPorConcepto[idConcepto];
                    if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto))
                    {
                        var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto];
                        if (conceptoHecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK))
                        {
                            WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" +
                                                hecho.Id, ExportadorRolDocumentoBase.PARRAFO_HTML_NOTAS_Texblock + hecho.Valor + "</p>", false, true);
                        }
                        else
                        {
                            exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]);
                        }
                    }
                    docBuilder.EndRow();
                }
                exportadorOrigen.establecerBordesGrisesTabla(tablaActual);
                docBuilder.EndTable();
                docBuilder.Writeln();
                docBuilder.Writeln();
            }
        }
Example #16
0
        /// <summary>
        /// Pinta el contenido de una celda para un concepto simple.
        /// </summary>
        /// <param name="docBuilder">Constructor del documenot.</param>
        /// <param name="celda">Celda que se pretende presentar.</param>
        /// <param name="tarjeta">Tarjeta con el valor de la celda.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        /// <param name="estructuraReporte">Dto con información general del reporte.</param>
        private void PintaCeldaConceptoSimple(
            DocumentBuilder docBuilder,
            CeldasPresentacionHipercuboDto celda,
            IDictionary <string, HechoDto> tarjeta,
            ExportadorRolDocumentoBase exportadorOrigen,
            ReporteXBRLDTO estructuraReporte)
        {
            HechoDto hecho;
            var      texto  = String.Empty;
            var      esHtml = false;

            if (tarjeta.TryGetValue(celda.IdConcepto, out hecho))
            {
                esHtml = hecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                texto  = hecho.Valor ?? String.Empty;
            }
            if (celda.AgregarEnIndice)
            {
                AsignaEstilosParaIndice(docBuilder, exportadorOrigen);
            }
            if (celda.Colspan > 1)
            {
                var newCells = celda.Colspan - 1;
                docBuilder.InsertCell();
                docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                if (!esHtml)
                {
                    if (!WordUtil.EsRTF(texto))
                    {
                        docBuilder.Write(texto);
                    }
                    else
                    {
                        var lastIndex = texto.Length < 1000 ? texto.Length - 1 : 1000;
                        docBuilder.Write(texto.Substring(0, lastIndex));
                    }
                    EvaluaPresentarEnlaceArchivo(texto, docBuilder, celda, tarjeta, estructuraReporte);
                }
                else
                {
                    WordUtil.InsertHtml(docBuilder, ":celda", "<div style=\"font-family:Arial;font-size: 6pt;\">" + texto + "</div>", false);
                }
                for (var index = 0; index < newCells; index++)
                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
            }
            else
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                if (!esHtml)
                {
                    docBuilder.Write(texto);
                    EvaluaPresentarEnlaceArchivo(texto, docBuilder, celda, tarjeta, estructuraReporte);
                }
                else
                {
                    WordUtil.InsertHtml(docBuilder, ":celda", "<div style=\"font-family:Arial;font-size: 6pt;\">" + texto + "</div>", false);
                }
            }
            if (celda.AgregarEnIndice)
            {
                EliminaEstilosParaIndice(docBuilder, exportadorOrigen);
            }
        }
Example #17
0
        private void PintaTablaCubo(
            HipercuboReporteDTO hipercubo,
            DocumentoInstanciaXbrlDto instancia,
            ReporteXBRLDTO estructuraReporte,
            DocumentBuilder docBuilder,
            ConceptoReporteDTO concepto,
            IndiceReporteDTO rolAExportar,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            docBuilder.InsertBreak(BreakType.PageBreak);
            Table tablaActual = docBuilder.StartTable();
            Color colorTitulo = exportadorOrigen.ObtenColorTitulo();

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

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

            //   docBuilder.InsertCell();


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

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

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

                /* docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.LightGray;
                 * docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                 * docBuilder.Font.Color = Color.Black;*/
                docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
                docBuilder.Font.Color = Color.White;
                docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
                docBuilder.InsertCell();
                docBuilder.Write(nombreMiembro);
                if (cantidadCeldasVacias > 0)
                {
                    for (var indexMiembro = 0; indexMiembro < cantidadCeldasVacias; indexMiembro++)
                    {
                        docBuilder.InsertCell();
                        docBuilder.Write(String.Empty);
                    }
                    docBuilder.EndRow();
                }
                var countType = 0;
                docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
                docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto;
                docBuilder.Font.Color = Color.Black;
                docBuilder.Bold       = false;
                foreach (var idConcepto in hipercubo.Hechos.Keys)
                {
                    var matrizPlantillaContexto = hipercubo.Hechos[idConcepto];
                    countType = matrizPlantillaContexto[idPlantillaContexto].Length;
                    break;
                }
                Boolean dimensiones = false;
                for (var indexType = 0; indexType < countType; indexType++)
                {
                    if (indexType > 0)
                    {
                        dimensiones = true;
                    }

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

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

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

                docBuilder.RowFormat.AllowBreakAcrossPages = true;
                docBuilder.RowFormat.HeadingFormat         = false;
                docBuilder.EndRow();
            }


            establecerBordesGrisesTabla(tablaActual);
            docBuilder.EndTable();
            docBuilder.Writeln();
        }
Example #18
0
        /// <summary>
        /// Pinta una fila con el titulo indicado.
        /// </summary>
        /// <param name="textoTitulo">Texto del título.</param>
        /// <param name="docBuilder">Puntero del documento.</param>
        /// <param name="numeroSeries">Cantidad de series existentes.</param>
        /// <param name="exportadorOrigen">Exportador original</param>
        private void PintaFilaSubTitulo(String textoTitulo, DocumentBuilder docBuilder, int numeroSeries, ExportadorRolDocumentoBase exportadorOrigen)
        {
            Color colorTitulo = exportadorOrigen.ObtenColorTitulo();

            docBuilder.InsertCell();
            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.Font.Color = Color.White;
            docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
            docBuilder.RowFormat.HeadingFormat   = true;
            docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

            docBuilder.Write(textoTitulo);
            docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
            if (numeroSeries > 0)
            {
                for (var indexTitulo = 0; indexTitulo < numeroSeries; indexTitulo++)
                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
            }
            docBuilder.EndRow();
            docBuilder.CellFormat.HorizontalMerge = CellMerge.None;

            docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White;
            docBuilder.Font.Color = Color.Black;
            docBuilder.Bold       = false;
        }
        /// <summary>
        /// Pinta el contenido del hipercubo.
        /// </summary>
        /// <param name="hipercubo">Hipercubo.</param>
        /// <param name="instancia">Documento de instancia.</param>
        /// <param name="estructuraReporte">Estructura del reporte.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="concepto">Concepto origen.</param>
        /// <param name="rolAExportar">Rol que se pretende exportar.</param>
        /// <param name="exportadorOrigen">Exportador original</param>
        private void PintaTablaCubo(
            HipercuboReporteDTO hipercubo,
            DocumentoInstanciaXbrlDto instancia,
            ReporteXBRLDTO estructuraReporte,
            DocumentBuilder docBuilder,
            ConceptoReporteDTO concepto,
            IndiceReporteDTO rolAExportar,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            var tablaActual = docBuilder.StartTable();
            var colorTitulo = exportadorOrigen.ObtenColorTitulo();

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

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

            var listaIdsConcepto = new List <string>();

            foreach (var idConcepto in hipercubo.Hechos.Keys)
            {
                if (ConceptosAplica != null && !ConceptosAplica.Contains(idConcepto))
                {
                    continue;
                }
                listaIdsConcepto.Add(idConcepto);
            }

            var etiquetaTitulo = String.Empty;

            if (!String.IsNullOrEmpty(IdConceptoReferencia))
            {
                etiquetaTitulo =
                    DesgloseDeCreditosHelper
                    .obtenerEtiquetaDeConcepto(instancia.Taxonomia, IdConceptoReferencia, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT);
            }
            else
            {
                etiquetaTitulo = concepto.Valor;
            }
            PintaFilaSubTitulo(etiquetaTitulo, docBuilder, listaIdsConcepto.Count, exportadorOrigen);

            docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo;
            docBuilder.Font.Color = Color.White;
            docBuilder.Font.Size  = exportadorOrigen.TamanioLetraContenidoTabla;
            docBuilder.RowFormat.HeadingFormat = true;
            docBuilder.Bold = true;
            foreach (var idConcepto in listaIdsConcepto)
            {
                var nombreConcepto =
                    DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT);
                docBuilder.InsertCell();
                docBuilder.Write(nombreConcepto ?? "");
            }
            docBuilder.EndRow();

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

            var matrisHechos       = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaConcepto(hipercubo.Hechos);
            var idDimensionTitulos = String.Empty;

            if (matrisHechos.Count > 1)
            {
                var dimensionExplicita = hipercubo.Utileria.configuracion.PlantillaDimensiones.Values.Where(X => X.Explicita == true).FirstOrDefault();
                if (dimensionExplicita != null)
                {
                    idDimensionTitulos = dimensionExplicita.IdDimension;
                }
            }
            foreach (var idPlantillaContexto in matrisHechos.Keys)
            {
                if (IdsPlantillasContexto != null && !IdsPlantillasContexto.Contains(idPlantillaContexto))
                {
                    continue;
                }
                var listaImplicita = matrisHechos[idPlantillaContexto];
                var contieneHechos = listaImplicita.Where(X => X.Count > 0).FirstOrDefault() != null;
                if (!contieneHechos)
                {
                    continue;
                }

                if (!String.IsNullOrEmpty(idDimensionTitulos))
                {
                    Viewer.Application.Dto.Hipercubos.PlantillaContextoDto plantillaContexto;
                    if (hipercubo.Utileria.configuracion.PlantillasContextos.TryGetValue(idPlantillaContexto, out plantillaContexto))
                    {
                        var miembroDimension = plantillaContexto.ValoresDimension.Where(x => x.IdDimension.Equals(idDimensionTitulos)).FirstOrDefault();
                        if (miembroDimension != null)
                        {
                            var etiquetaMiembro =
                                DesgloseDeCreditosHelper
                                .obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroDimension.IdItemMiembro, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT);
                            PintaFilaSubTitulo(etiquetaMiembro, docBuilder, listaIdsConcepto.Count, exportadorOrigen);
                        }
                    }
                }


                for (var indexImplicita = 0; indexImplicita < listaImplicita.Count; indexImplicita++)
                {
                    var      diccionarioPorconcepto = listaImplicita[indexImplicita];
                    HechoDto hecho;
                    foreach (var idConceptoItera in listaIdsConcepto)
                    {
                        docBuilder.InsertCell();
                        if (diccionarioPorconcepto.TryGetValue(idConceptoItera, out hecho))
                        {
                            if (hecho.NoEsNumerico)
                            {
                                docBuilder.CellFormat.WrapText       = true;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                            }
                            else
                            {
                                docBuilder.CellFormat.WrapText       = false;
                                docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                            }
                            exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]);
                        }
                        else
                        {
                            docBuilder.Write(" ");
                        }
                    }
                    docBuilder.EndRow();
                }
            }
            exportadorOrigen.establecerBordesGrisesTabla(tablaActual);
            docBuilder.EndTable();
            docBuilder.Writeln();
            docBuilder.Writeln();
        }