/// <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; }
/// <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(); }
/// <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; }
/// <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; }
/// <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); }
/// <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); } } }
/// <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; }
/// <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(); } }
/// <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); } }
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(); }
/// <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(); }