public void CreaSeccion(ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { var exportadorBase = (ExportadorGeneralProspecto)exportadorOrigen; var hecho = exportadorBase.ObtenPrimerHechoPorIdConcepto(instancia, "rel_news_RelevantEventContent"); ContextoDto contexto; if (instancia.ContextosPorId.TryGetValue(hecho.IdContexto, out contexto)) { var elementoDimension = contexto.ValoresDimension.First(); var etiqueta = "Tipo de evento relevante";//exportadorBase.ObtenEtiquetaConcepto(elementoDimension.IdDimension, instancia, estructuraReporte.Lenguaje); var miembro = exportadorBase.ObtenEtiquetaConcepto(elementoDimension.IdItemMiembro, instancia, estructuraReporte.Lenguaje); AplicarEstilosEtiquetaNota(docBuilder, exportadorBase); docBuilder.Write(etiqueta); EliminaEstilosLinea(docBuilder, exportadorBase); AplicarEstilosValorNotaInicio(docBuilder, exportadorBase); WordUtil.InsertHtml(docBuilder, elementoDimension.IdDimension + ":" + hecho.Id, miembro, false, true); AplicarEstilosValorNotaFin(docBuilder, exportadorBase); } ConceptoDto concepto; if (instancia.Taxonomia.ConceptosPorId.TryGetValue(hecho.IdConcepto, out concepto)) { var etiquetaHecho = exportadorBase.ObtenEtiquetaConcepto(hecho.IdConcepto, instancia, estructuraReporte.Lenguaje); AplicarEstilosEtiquetaNota(docBuilder, exportadorBase); docBuilder.Write(etiquetaHecho); EliminaEstilosLinea(docBuilder, exportadorBase); AplicarEstilosValorNotaInicio(docBuilder, exportadorBase); exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hecho, concepto); AplicarEstilosValorNotaFin(docBuilder, exportadorBase); } }
/// <summary> /// Crea la tabla de series. /// </summary> /// <param name="conceptoContenedorHipercubo">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion( ConceptoReporteDTO conceptoContenedorHipercubo, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); HipercuboReporteDTO hipercuboReporteDto; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoContenedorHipercubo, instancia, rolAExportar.Uri); if (estructuraReporte.Hipercubos.TryGetValue(idConceptoHipercubo, out hipercuboReporteDto) && hipercuboReporteDto.Titulos.Count > 0) { PintaTablaCubo(hipercuboReporteDto, instancia, estructuraReporte, docBuilder, conceptoContenedorHipercubo, rolAExportar, (ExportadorRolDocumentoBase)exportadorOrigen); } } catch (Exception ex) { LogUtil.Error(ex); } }
public EstructuraFormatoDto ObtenEstructura(ConceptoReporteDTO conceptoOrigen, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar) { EstructuraFormatoDto estructuraRequerida = null; var listaEstructurasHipercubos = new List <EstructuraFormatoDto>(); var rolPresentacion = instancia.Taxonomia.RolesPresentacion.Where(x => x.Uri.Equals(rolAExportar.Uri)).FirstOrDefault(); var conceptosTaxonomia = instancia.Taxonomia.ConceptosPorId; if (rolPresentacion != null) { var estructurasAnalizar = new List <EstructuraFormatoDto>(rolPresentacion.Estructuras); for (var indiceEstructrua = 0; indiceEstructrua < estructurasAnalizar.Count; indiceEstructrua++) { var estructura = estructurasAnalizar[indiceEstructrua]; if (estructura.SubEstructuras != null && estructura.SubEstructuras.Count > 0) { if (estructura.IdConcepto.Equals(conceptoOrigen.IdConcepto)) { estructuraRequerida = estructura; break; } estructurasAnalizar.AddRange(estructura.SubEstructuras); } } } return(estructuraRequerida); }
public override void EvaluaEstructuraConcepto(EstructuraFormatoDto estructura, int tabuladores, IList <ConceptoReporteDTO> listaConceptos, String idRol) { List <String> idExcluyente = new List <String>() { "annext_UnpaidBalanceOfTheAssetsGroupedInArrearsAtTheEndOfThePeriodAbstract", "annext_CurrentMonth", "annext_LastMonth", "annext_NumberOfAssetsGroupedInArrearsAtTheEndOfThePeriodAbstract", "annext_NumberOfAssetsCurrentMonth", "annext_NumberOfAssetsLastMonth", }; //LogUtil.Info("tabuladores:" + tabuladores + ", idConcepto: " + estructura.IdConcepto); if (!reporteXBRLDTO.Instancia.Taxonomia.ConceptosPorId.ContainsKey(estructura.IdConcepto)) { throw new NullReferenceException("No existe el contexto [" + estructura.IdConcepto + "] en la taxonomía."); } var concepto = reporteXBRLDTO.Instancia.Taxonomia.ConceptosPorId[estructura.IdConcepto]; var hechosReporte = new Dictionary <string, HechoReporteDTO>(); if (!reporteXBRLDTO.ConfiguracionReporte.PeriodosPorRol.ContainsKey(idRol) || (concepto.EsMiembroDimension ?? false) || concepto.EsHipercubo || (concepto.EsDimension ?? false)) { return; } foreach (var idPeriodo in reporteXBRLDTO.ConfiguracionReporte.PeriodosPorRol[idRol]) { if ((!idPeriodo.Equals("periodo_actual") && idExcluyente.Contains(concepto.Id)) || (idPeriodo.Equals("periodo_actual") && !idExcluyente.Contains(concepto.Id))) { hechosReporte.Add(idPeriodo, new HechoReporteDTO()); } } var conceptoReporte = new ConceptoReporteDTO() { IdConcepto = concepto.Id, Abstracto = concepto.EsAbstracto ?? false, Etiqueta = estructura.RolEtiquetaPreferido, Numerico = concepto.EsTipoDatoNumerico, Tabuladores = tabuladores * reporteXBRLDTO.ConfiguracionReporte.EstilosReporte.MultiploTabuladores, TipoDato = concepto.TipoDato, Hechos = hechosReporte, AtributosAdicionales = concepto.AtributosAdicionales }; listaConceptos.Add(conceptoReporte); var listaSubEstructuras = estructura.SubEstructuras; if (listaSubEstructuras != null && listaSubEstructuras.Count() > 0) { var tabuladoresItera = tabuladores++; foreach (var subEstructura in listaSubEstructuras) { EvaluaEstructuraConcepto(subEstructura, tabuladoresItera, listaConceptos, idRol); } } }
/// <summary> /// Presenta un concepto determinado /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="rolAExportar">Rol a exportar.</param> /// <param name="estructuraReporte">Dto con información general del reporte.</param> /// <param name="concepto">Concepto que se presenta.</param> /// <param name="idsConceptosDescartar">Listado de identificadores de concepto a descartar.</param> /// <param name="conceptosHiercubos">Listado de conceptos que pertenecen a hipercubos.</param> public void PresentaConcepto( DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto, IList <string> idsConceptosDescartar, IDictionary <string, bool> conceptosHiercubos) { EscribeConcepto(concepto, docBuilder, estructuraReporte); }
/// <summary> /// Crea la tabla de series. /// </summary> /// <param name="conceptoOrigen">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion( ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; try { if (!ContieneInformacion(instancia)) { return; } var diccionarioHechos = ObtenDiccionarioHechos(instancia); var listaContextos = ObtenIdentificadoresContexto(diccionarioHechos, instancia); if (listaContextos.Count == 0 || diccionarioHechos.Values.First().Values.FirstOrDefault() == null) { return; } UnidadDto unidad = null; var hechoNumerico = diccionarioHechos.Values.First().Values.Where(X => X.EsNumerico).FirstOrDefault(); if (hechoNumerico != null) { instancia.UnidadesPorId.TryGetValue(hechoNumerico.IdUnidad, out unidad); } var numeroColumnas = listaContextos.Count() + 1; var tablaActual = docBuilder.StartTable(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; var etiquetaTitulo = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, conceptoOrigen.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); PintaFilaSubTitulo(etiquetaTitulo, docBuilder, numeroColumnas, exportadorBase); PintaEncabezadoTabla(listaContextos, docBuilder, (ExportadorRolDocumentoBase)exportadorOrigen, unidad); PintaFilasHechos(instancia, listaContextos, diccionarioHechos, docBuilder, exportadorBase, estructuraReporte); establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); } catch (Exception ex) { LogUtil.Error(ex); } }
/// <summary> /// Retorna el ConceptoReporteDTO con el identificador dado. /// </summary> /// <param name="idConcepto">Identificador del concepto.</param> /// <param name="estructuraReporte">Estructura del reporte.</param> /// <returns>Elemento requerido.</returns> public ConceptoReporteDTO ObtenConceptoReporte(String idConcepto, ReporteXBRLDTO estructuraReporte) { ConceptoReporteDTO conceptoReporte = null; foreach (var idRol in estructuraReporte.Roles.Keys) { var listaConceptosRol = estructuraReporte.Roles[idRol]; if (listaConceptosRol != null) { conceptoReporte = listaConceptosRol.Where(X => X.IdConcepto.Equals(idConcepto)).FirstOrDefault(); break; } } return(conceptoReporte); }
/// <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> /// 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> public void CreaSeccion( ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoOrigen, instancia, rolAExportar.Uri); HipercuboReporteDTO hipercuboReporteDto; if (estructuraReporte.Hipercubos.TryGetValue(idConceptoHipercubo, out hipercuboReporteDto) && hipercuboReporteDto.Titulos.Count > 0) { var configuracionGeneral = hipercuboReporteDto.Utileria.configuracion; if (configuracionGeneral.ConfiguracionPresentacion != null && configuracionGeneral.ConfiguracionPresentacion.Count > 0) { ConfiguracionPresentacionRegistroHipercuboDto configuracionPresentacion = null; if (String.IsNullOrEmpty(IdConfiguracion) || !configuracionGeneral.ConfiguracionPresentacion.TryGetValue(IdConfiguracion, out configuracionPresentacion)) { configuracionPresentacion = configuracionGeneral.ConfiguracionPresentacion.Values.FirstOrDefault(); } if (configuracionPresentacion.Tipo.Equals("Tarjeta")) { PintaTarjetasHipercubo( conceptoOrigen, docBuilder, instancia, rolAExportar, estructuraReporte, exportadorBase, hipercuboReporteDto, configuracionPresentacion); } } } } catch (Exception ex) { LogUtil.Error(ex); } }
/// <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); }
/// <summary> /// Obtiene el identificador del concepto hipercubo. /// </summary> /// <param name="conceptoContenedorHipercubo">Concepto que contiene el hipercubo.</param> /// <param name="instancia">Instanica XBRL que se anliza.</param> /// <param name="idRol">Identificador del rol actual.</param> /// <returns>Identificador del hipercubo.</returns> private String ObtenIdConceptoHipercubo(ConceptoReporteDTO conceptoContenedorHipercubo, DocumentoInstanciaXbrlDto instancia, String idRol) { String idConceptoHipercubo = null; var listaEstructurasHipercubos = new List <EstructuraFormatoDto>(); var rolPresentacion = instancia.Taxonomia.RolesPresentacion.Where(x => x.Uri.Equals(idRol)).FirstOrDefault(); var conceptosTaxonomia = instancia.Taxonomia.ConceptosPorId; if (rolPresentacion != null) { var estructurasAnalizar = new List <EstructuraFormatoDto>(rolPresentacion.Estructuras); for (var indiceEstructrua = 0; indiceEstructrua < estructurasAnalizar.Count; indiceEstructrua++) { var estructura = estructurasAnalizar[indiceEstructrua]; if (estructura.SubEstructuras != null && estructura.SubEstructuras.Count > 0) { var idConceptoContenedor = String.IsNullOrEmpty(IdConceptoReferencia) ? conceptoContenedorHipercubo.IdConcepto : IdConceptoReferencia; if (estructura.IdConcepto.Equals(idConceptoContenedor)) { ConceptoDto concepto; var conceptoHipercubo = estructura.SubEstructuras. Where(x => (conceptosTaxonomia.TryGetValue(x.IdConcepto, out concepto) && concepto.EsHipercubo)).FirstOrDefault(); if (conceptoHipercubo != null) { idConceptoHipercubo = conceptoHipercubo.IdConcepto; } break; } else { estructurasAnalizar.AddRange(estructura.SubEstructuras); } } } } return(idConceptoHipercubo); }
private void PintaTablaDimensionSerie(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, ConceptoReporteDTO concepto) { docBuilder.Writeln(); // var listaConseptosReportes = estructuraReporte.Hipercubos; foreach (var dato in estructuraReporte.Hipercubos) { var variable = dato; string[] d = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None); string conceptoHipercuboTable = (d[0]); if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key)) { ConceptoReporteDTO primerConcepto = null; if (!estructuraReporte.Roles.ContainsKey(rolAExportar.Rol)) { throw new IndexOutOfRangeException("No existe el rol [" + rolAExportar.Rol + "] dentro del listado de roles del reporte."); } if (estructuraReporte.Roles.ContainsKey(rolAExportar.Rol)) { if (!concepto.Abstracto) { primerConcepto = concepto; break; } } var hipercubo = variable; Table tablaActual = docBuilder.StartTable(); Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; //docBuilder.InsertCell(); // docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = TamanioLetraContenidoTabla; docBuilder.InsertCell(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.White; establecerFuenteTituloCampo(docBuilder); docBuilder.Font.Size = TamanioLetraTituloTabla; docBuilder.Write("Serie [Eje]"); docBuilder.CellFormat.HorizontalMerge = CellMerge.None; if (hipercubo.Value.Titulos.Count > 0) { for (var indexTitulo = 0; indexTitulo < hipercubo.Value.Titulos.Count; indexTitulo++) { var titulo = hipercubo.Value.Titulos[indexTitulo]; docBuilder.InsertCell(); docBuilder.Write(titulo); } docBuilder.EndRow(); } establecerFuenteTituloCampo(docBuilder); docBuilder.Font.Size = TamanioLetraTituloTabla; int fila = 0; if (concepto.Abstracto) { fila = +1; for (int iCell = 0; iCell < fila; iCell++) { docBuilder.InsertCell(); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } } if (concepto.Abstracto) { docBuilder.Bold = true; docBuilder.Font.Color = Color.White; docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Write(concepto.Valor); docBuilder.InsertCell(); docBuilder.EndRow(); // tituloAbstracto.Add(concepto.Valor); } else { docBuilder.Bold = false; } docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; foreach (var idConcepto in hipercubo.Value.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto]; docBuilder.InsertCell(); var nombreConcepto = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); ConceptoHiper.Add(idConcepto); foreach (var idPlantillaContexto in matrizPlantillaContexto.Keys) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; var listaHechos = matrizPlantillaContexto[idPlantillaContexto]; for (var indexHecho = 0; indexHecho < listaHechos.Length; indexHecho++) { var hecho = listaHechos[indexHecho]; var valorHecho = hecho.Valor; docBuilder.InsertCell(); if (hecho.NoEsNumerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto)) { var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]; if (conceptoHecho.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK)) { WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" + hecho.Id, PARRAFO_HTML_NOTAS_Texblock + valorHecho + "</p>", false, true); //docBuilder.InsertHtml(PARRAFO_HTML_NOTAS_Texblock + limpiarBloqueTexto(valorHecho) + "</p>", true); } else { docBuilder.Writeln(valorHecho); } } } } docBuilder.EndRow(); } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); Evaluador.Add(variable.Key); break; } } }
/// <summary> /// Retorna un listado con los conceptos que deben ser considerados para no ser evaluados por el exportador origen. /// </summary> /// <param name="conceptoOrigen">Concepto origen que sirve como marca para iniciar la generación de la sección.</param> /// <param name="instancia">Documento de instancia evaluado.</param> /// <param name="rolAExportar">Rol que se está exportando.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador del rol.</param> /// <returns>Retorna un listado con los conceptos que deben ser descartados en la presentación del exportador original.</returns> public IList <string> ObtenConceptosDescartar(ConceptoReporteDTO conceptoOrigen, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { return(null); }
/// /// (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(); }
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> /// Crea la tabla de series. /// </summary> /// <param name="conceptoOrigen">Concepto que contiene la definición del hipercubo de la tabla de series a evaluar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Instancia XBRL con la información a presentar.</param> /// <param name="rolAExportar">Rol donde esta contenida la tabla.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> /// <param name="exportadorOrigen">Exportador original del rol.</param> public void CreaSeccion(ConceptoReporteDTO conceptoOrigen, DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IExportadorRolDocumentoInstancia exportadorOrigen) { try { docBuilder.Writeln(); docBuilder.Writeln(); var exportadorBase = (ExportadorRolDocumentoBase)exportadorOrigen; var idConceptoHipercubo = ObtenIdConceptoHipercubo(conceptoOrigen, instancia, rolAExportar.Uri); var listaEstructurasHipercubos = new List <EstructuraFormatoDto>(); var rolPresentacion = instancia.Taxonomia.RolesPresentacion.Where(x => x.Uri.Equals(rolAExportar.Uri)).FirstOrDefault(); var conceptosTaxonomia = instancia.Taxonomia.ConceptosPorId; if (rolPresentacion != null) { var estructurasAnalizar = new List <EstructuraFormatoDto>(rolPresentacion.Estructuras); for (var indiceEstructrua = 0; indiceEstructrua < estructurasAnalizar.Count; indiceEstructrua++) { var estructura = estructurasAnalizar[indiceEstructrua]; if (estructura.SubEstructuras != null && estructura.SubEstructuras.Count > 0) { if (estructura.IdConcepto.Equals(conceptoOrigen.IdConcepto)) { ConceptoDto concepto; var conceptoHipercubo = estructura.SubEstructuras. Where(x => (conceptosTaxonomia.TryGetValue(x.IdConcepto, out concepto) && concepto.EsHipercubo)).FirstOrDefault(); var conceptoPartidas = estructura.SubEstructuras. Where(x => conceptosTaxonomia.TryGetValue(x.IdConcepto, out concepto) && !concepto.EsHipercubo).FirstOrDefault(); if (!ContieneInformacion(conceptoPartidas, instancia)) { return; } var tablaActual = docBuilder.StartTable(); var colorTitulo = exportadorBase.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; var etiquetaTitulo = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, conceptoOrigen.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); PintaFilaSubTitulo(etiquetaTitulo, docBuilder, 2, exportadorBase); if (conceptoHipercubo != null) { foreach (var conceptoDimension in conceptoHipercubo.SubEstructuras) { foreach (var conceptoMiembro in conceptoDimension.SubEstructuras) { var etiquetaMiembro = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, conceptoMiembro.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; PintaFilaSubTitulo(etiquetaMiembro, docBuilder, 2, exportadorBase); foreach (var partida in conceptoPartidas.SubEstructuras) { var etiquetaPartida = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, partida.IdConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Bold = true; docBuilder.InsertCell(); docBuilder.Write(etiquetaPartida); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Bold = false; docBuilder.InsertCell(); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; IList <String> idsHechosPartida; if (instancia.HechosPorIdConcepto.TryGetValue(partida.IdConcepto, out idsHechosPartida)) { foreach (var idHecho in idsHechosPartida) { HechoDto hechoPartida; ContextoDto contexto; ConceptoDto conceptoPartida; if (instancia.HechosPorId.TryGetValue(idHecho, out hechoPartida) && instancia.ContextosPorId.TryGetValue(hechoPartida.IdContexto, out contexto) && contexto.ContieneInformacionDimensional && contexto.ValoresDimension.Where(X => X.IdDimension.Equals(conceptoDimension.IdConcepto) && X.IdItemMiembro.Equals(conceptoMiembro.IdConcepto)).Count() > 0) { if (instancia.Taxonomia.ConceptosPorId.TryGetValue(partida.IdConcepto, out conceptoPartida)) { exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hechoPartida, conceptoPartida); } break; } } } docBuilder.EndRow(); } } } idConceptoHipercubo = conceptoHipercubo.IdConcepto; } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); break; } else { estructurasAnalizar.AddRange(estructura.SubEstructuras); } } } } } catch (Exception ex) { LogUtil.Error(ex); } }
private void escribirTablaIntervaloTiempo(DocumentBuilder docBuilder, ReporteXBRLDTO estructuraReporte, DocumentoInstanciaXbrlDto instancia, List <String> IdsConceptos, int inicio, int final) { Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]); IList <string> ConceptosAbstractosPermitidos = new List <string>() { IdsConceptos[inicio] }; List <ConceptoReporteDTO> conceptos = new List <ConceptoReporteDTO>(); if (inicio < final & final <= IdsConceptos.Count) { for (int i = inicio; i < final; i++) { conceptos.Add(BuscarPorIdConcepto(estructuraReporte, IdsConceptos[i])); } } docBuilder.Writeln(); Table tablaActual = docBuilder.StartTable(); ConceptoReporteDTO primerConcepto = null; foreach (ConceptoReporteDTO concepto in conceptos) { 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) { if (!columna.Equals("periodo_actual")) { 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["annext_TimeIntervalAxis_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) { if (!columna.Equals("periodo_actual")) { 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 (String contexto in concepto.Hechos.Keys) { if (!contexto.Equals("periodo_actual")) { 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, concepto.Hechos[contexto], concepto); } } } docBuilder.RowFormat.AllowBreakAcrossPages = true; docBuilder.RowFormat.HeadingFormat = false; docBuilder.EndRow(); } tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR); docBuilder.EndTable(); docBuilder.Writeln(); }
/// <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; }
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(); }
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(); }
/// <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(); }
/// <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; }
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(); }
/// <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(); } }
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(); }
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(); }
private void PintaTabla(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte, IList <ConceptoReporteDTO> listaConseptosReporte) { docBuilder.Writeln(); 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")); 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 = estructuraReporte.PeriodosReporte[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 listaConseptosReporte) { // string valor = ObtenertipoDato(concepto, TIPO_DATO_MONETARY); //string tipoNoNegativo = ObtenertipoDato(concepto, TIPO_DATO_NoNEGATIVO); if (concepto.IdConcepto != ID_Importe && concepto.IdConcepto != ID_IVA && concepto.IdConcepto != ID_Total) { 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 (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(); } } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); }
/// /// (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(); }