public void FormatoTypeTexbloc(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { HechoReporteDTO hecho = null; foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol]) { string valor = ObtenertipoDato(concepto, TIPO_DATO_STRING); if (concepto.TipoDato == valor) { if (concepto.Hechos != null) { foreach (String llave in concepto.Hechos.Keys) { hecho = concepto.Hechos[llave]; if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { //Escribir titulo campo escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto); } } } } } }
/// <summary> /// 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); } }
/// <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> /// Crea el conetenido para el rol indicado. /// </summary> /// <param name="docBuilder">Constructor del docuemnto.</param> /// <param name="instancia">Instancia XBRL con la información a pintar.</param> /// <param name="rolAExportar">Rol que se pinta.</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> public void ImprimirContenidoRol( DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { var posicionActual = 1; IList <String> listaIdConceptoPosicion; foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol]) { EscribeConcepto(concepto, docBuilder, estructuraReporte); } }
/// <summary> /// Concatena los archivos al final del documento. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="rolAExportar">Rol que se exporta</param> /// <param name="estructuraReporte">DTO con información general del reporte.</param> public void ConcatenaArchivosAdjuntos( DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { if (estructuraReporte.ArchivosAdjuntos != null) { foreach (var archivoAdjuntar in estructuraReporte.ArchivosAdjuntos.Values) { GeneraPortadaArchivoAdjunto(archivoAdjuntar, docBuilder); AgregaImagenHechoPDF(docBuilder, archivoAdjuntar.HechoArchivo); } } }
/// <summary> /// Inserta una referencia a la portada para ser considerada en el indice. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="rolAExportar">Rol que se pretende exportar.</param> /// <param name="texto">Texto que se pretende agregar al indice.</param> protected void AgregarReferenciaIndice(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar, String texto) { docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading3; docBuilder.Font.Color = Color.Transparent; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Justify; docBuilder.Font.Size = 1; docBuilder.StartBookmark(rolAExportar.Rol); docBuilder.InsertHyperlink(texto.Replace("\n", "").Replace("\r", ""), "index", true); //docBuilder.Write(rolAExportar.Descripcion); docBuilder.EndBookmark(rolAExportar.Rol); docBuilder.InsertParagraph(); docBuilder.Font.Size = TamanioLetraTituloRol; docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal; //docBuilder.Writeln(); }
/** * Elimina del listado de roles 510 o 520 dependiendo de la bande que indica * si se va a usar el estado de flujo de efectivo por método indirecto o no * @param instancia documento de instancia procesado. */ private void quitarRolesNoUsadosDeEstadoDeFlujoDeEfectivo(DocumentoInstanciaXbrlDto instancia) { if (!reporteXBRLDTO.PrefijoTaxonomia.Equals(ReportConstants.PREFIJO_ID_TRAC)) { //Si existe la bandera CashFlowStatementForInderectMethod se elige si se elimina 510 o 520 String idCashFlowIndirect = reporteXBRLDTO.PrefijoTaxonomia + "CashFlowStatementForInderectMethod"; String indicadorCashFlowIndirect = ReporteXBRLUtil.obtenerValorHecho(idCashFlowIndirect, instancia); if (indicadorCashFlowIndirect != null) { IndiceReporteDTO indiceEliminar = null; String rolEliminar = null; if ("SI".Equals(indicadorCashFlowIndirect)) { //Se usa 520, elimina 510 rolEliminar = "510000"; } else { //Se usa 510, elimina 520 rolEliminar = "520000"; } foreach (IndiceReporteDTO indiceActual in reporteXBRLDTO.Indices) { if (indiceActual.Rol.Contains(rolEliminar)) { indiceEliminar = indiceActual; break; } } if (indiceEliminar != null) { reporteXBRLDTO.Indices.Remove(indiceEliminar); reporteXBRLDTO.Roles.Remove(indiceEliminar.Rol); int index = Array.BinarySearch(reporteXBRLDTO.NombresHojas, indiceEliminar.Rol); if (index >= 0) { reporteXBRLDTO.NombresHojas = reporteXBRLDTO.NombresHojas.Where((val, i) => i != index).ToArray(); } } } } }
/// <summary> /// Inserta una referencia a la portada para ser considerada en el indice. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="rolAExportar">Rol que se pretende exportar.</param> protected void AgregarTituloPortada(DocumentBuilder docBuilder, IndiceReporteDTO rolAExportar) { docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1; docBuilder.Font.Name = TipoLetraTituloRol; docBuilder.Font.Color = Color.Transparent; docBuilder.Font.Size = 1; docBuilder.StartBookmark(rolAExportar.Rol); docBuilder.InsertHyperlink(rolAExportar.Descripcion, "index", true); //docBuilder.Write(rolAExportar.Descripcion); docBuilder.EndBookmark(rolAExportar.Rol); docBuilder.InsertParagraph(); docBuilder.Font.Size = TamanioLetraTituloRol; docBuilder.Font.Color = Color.Black; docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal; //docBuilder.Writeln(); }
/// <summary> /// Método unificado para exportación a word, a partir de este formato se exporta al mismo word, a pdf /// o a html /// <summary> /// <param name="instancia">Datos del documento de instancia a exportar</param> /// <returns>Documento de word con el contenido a exportar</returns> /// @throws Exception public Document exportarDocumentoAWordInterno(DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO reporteXBRLDTO) { //StopWatch w = new StopWatch(); //w.start(); if (UbicacionPlantillaExportacion == null) { throw new Exception("La ubicación de la plantilla del archivo word es nula"); } Stream streamPlantilla = null; Document word = null; try{ streamPlantilla = Assembly.GetExecutingAssembly().GetManifestResourceStream(UbicacionPlantillaExportacion); if (streamPlantilla == null) { throw new Exception("La plantilla del archivo word es nula"); } word = new Document(streamPlantilla); DocumentBuilder docBuilder = new DocumentBuilder(word); docBuilder.MoveToDocumentEnd(); for (int iIndice = 0; iIndice < reporteXBRLDTO.Indices.Count(); iIndice++) { IndiceReporteDTO rolExportar = reporteXBRLDTO.Indices[iIndice]; if (ExportadorPorRol.ContainsKey(rolExportar.Uri)) { ExportadorPorRol[rolExportar.Uri].exportarRolAWord(docBuilder, instancia, rolExportar, reporteXBRLDTO); } } } catch (Exception ex) { LogUtil.Error(ex); throw; } finally { if (streamPlantilla != null) { streamPlantilla.Close(); } } return(word); }
/// <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> /// Obtiene el listado de los conceptos que no deben ser presentados. /// </summary> /// <param name="instancia">Documento de instancia a evaluar.</param> /// <param name="rolAExportar">Rol que se pretende exportar.</param> /// <param name="estructuraReporte">Dto con datos generales del reporte</param> /// <returns>Lista de conceptos que no sepresentand.</returns> public override IList <String> ObtenConceptosDescartar( DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { var listaDescartar = base.ObtenConceptosDescartar(instancia, rolAExportar, estructuraReporte); var hechoEmisionUnica = ObtenPrimerHechoPorIdConcepto(instancia, "ar_pros_OnlyEmission"); if (hechoEmisionUnica == null || String.IsNullOrEmpty(hechoEmisionUnica.Valor) || !hechoEmisionUnica.Valor.Equals("SI")) { listaDescartar.Add("ar_pros_OnlyEmission"); } if (ConceptosDespuesDelIndice != null) { foreach (var idConcepto in ConceptosDespuesDelIndice) { listaDescartar.Add(idConcepto); } } return(listaDescartar); }
/// <summary> /// Quita los roles de Anexo AA cuando no son requeridos /// </summary> /// @param instancia private void quitarRolesAnexoAA(DocumentoInstanciaXbrlDto instancia) { foreach (var idHecho in instancia.HechosPorId.Keys) { var hecho = instancia.HechosPorId[idHecho]; if ((hecho.IdConcepto == "ifrs_mx-cor_20160822_RequiresSubmittingAnnexAA" && hecho.Valor == "false")) { IndiceReporteDTO indiceEliminar = null; var listaIndices = new List <IndiceReporteDTO>(); String[] rolesEliminar = new String[] { "815100", "815101" }; foreach (IndiceReporteDTO indice in reporteXBRLDTO.Indices) { foreach (String rol in rolesEliminar) { if (indice.Rol.Equals(rol)) { listaIndices.Add(indice); } } } foreach (IndiceReporteDTO indiceActual in listaIndices) { indiceEliminar = indiceActual; if (indiceEliminar != null) { reporteXBRLDTO.Indices.Remove(indiceEliminar); reporteXBRLDTO.Roles.Remove(indiceEliminar.Rol); int index = Array.BinarySearch(reporteXBRLDTO.NombresHojas, indiceEliminar.Rol); if (index >= 0) { reporteXBRLDTO.NombresHojas = reporteXBRLDTO.NombresHojas.Where((val, i) => i != index).ToArray(); } } } } } }
private void escribirADosColumnasConceptoValor(DocumentBuilder docBuilder, String idConcepto, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { Table tablaActual = docBuilder.StartTable(); docBuilder.ParagraphFormat.SpaceAfter = 5; docBuilder.ParagraphFormat.SpaceBefore = 5; docBuilder.InsertCell(); establecerFuenteTituloCampo(docBuilder); docBuilder.Font.Size = TamanioLetraTituloConceptoNota; docBuilder.Font.Color = Color.Black; escribirTituloConcepto(docBuilder, idConcepto, estructuraReporte.Roles[rolAExportar.Rol]); docBuilder.Write(": "); docBuilder.InsertCell(); establecerFuenteValorCampo(docBuilder); escribirValorHecho(docBuilder, estructuraReporte, estructuraReporte.Roles[rolAExportar.Rol], idConcepto); 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(); }
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(); }
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; } } }
private void PintaTablaDimensionExplicita(DocumentBuilder docBuilder, String valor, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { docBuilder.Writeln(); foreach (var dato in estructuraReporte.Hipercubos) { if (dato.Value.Hechos.Count > 0) { var variable = dato; // modificaciones en la condicion para obtner un hipercubo exlicito string[] d = variable.Key.Split(new string[] { "Table" }, StringSplitOptions.None); string conceptoHipercuboTable = (d[0]); if (conceptoHipercuboTable == valor && !Evaluador.Contains(variable.Key)) { var hipercubo = variable; docBuilder.InsertBreak(BreakType.PageBreak); Table tablaActual = docBuilder.StartTable(); Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; //docBuilder.InsertCell(); // docBuilder.EndRow(); // Formatos de celdas que le da el color de fondo de los titulos de la tabla que se crea docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = TamanioLetraContenidoTabla; // docBuilder.InsertCell(); foreach (var idConcepto in hipercubo.Value.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto]; docBuilder.InsertCell(); var nombreConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); } docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; var cantidadCeldasVacias = hipercubo.Value.Hechos.Count - 1; if (hipercubo.Value.Hechos.Count == 0) { return; } foreach (var idPlantillaContexto in hipercubo.Value.Utileria.configuracion.PlantillasContextos.Keys) { var plantilla = hipercubo.Value.Utileria.configuracion.PlantillasContextos[idPlantillaContexto]; var miembroPlantilla = plantilla.ValoresDimension[0]; var nombreMiembro = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroPlantilla.IdItemMiembro, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); /* docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.LightGray; * docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; * docBuilder.Font.Color = Color.Black;*/ docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = TamanioLetraContenidoTabla; docBuilder.InsertCell(); docBuilder.Write(nombreMiembro); if (cantidadCeldasVacias > 0) { for (var indexMiembro = 0; indexMiembro < cantidadCeldasVacias; indexMiembro++) { docBuilder.InsertCell(); docBuilder.Write(String.Empty); } docBuilder.EndRow(); } var countType = 0; docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; foreach (var idConcepto in hipercubo.Value.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto]; if (matrizPlantillaContexto.ContainsKey(idPlantillaContexto)) { countType = matrizPlantillaContexto[idPlantillaContexto].Length; } else { LogUtil.Error("No se encontro la definición para la plantilla de contexto:" + idPlantillaContexto); } break; } Boolean dimensiones = false; for (var indexType = 0; indexType < countType; indexType++) { if (indexType > 0) { dimensiones = true; } docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; foreach (var idConcepto in hipercubo.Value.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Value.Hechos[idConcepto]; ConceptoHiper.Add(idConcepto); var listaHechos = matrizPlantillaContexto[idPlantillaContexto]; if (listaHechos != null) { var hecho = listaHechos[indexType]; var valorHecho = hecho.Valor; if (dimensiones) { docBuilder.EndRow(); docBuilder.InsertCell(); dimensiones = false; } else { docBuilder.InsertCell(); } if (hecho.NoEsNumerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { docBuilder.Write(valorHecho); } } } } docBuilder.RowFormat.AllowBreakAcrossPages = true; docBuilder.RowFormat.HeadingFormat = false; if (countType > 0) { docBuilder.EndRow(); } } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); Evaluador.Add(variable.Key); } } } }
/// /// (non-Javadoc) /// @see com.bmv.spread.xbrl.reportes.exportador.ExportadorRolDocumentoInstancia#exportarRolAWord(com.aspose.words.DocumentBuilder, com.hh.xbrl.abax.viewer.application.dto.DocumentoInstanciaXbrlDto, com.bmv.spread.xbrl.reportes.dto.IndiceReporteDTO, com.bmv.spread.xbrl.reportes.dto.ReporteXBRLDTO) //// override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { Color colorTitulo = Color.FromArgb(ColorTituloTabla[0], ColorTituloTabla[1], ColorTituloTabla[2]); docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.LeftMargin = 40; docBuilder.CurrentSection.PageSetup.RightMargin = 40; escribirEncabezado(docBuilder, instancia, estructuraReporte, true); imprimirTituloRol(docBuilder, rolAExportar); //Escribir nota inicial IList <ConceptoReporteDTO> conceptos = estructuraReporte.Roles[rolAExportar.Rol]; HechoReporteDTO hechoNota = null; var conceptoNota = "ifrs_mx-cor_20141205_InformacionARevelarSobrePosicionMonetariaEnMonedaExtranjeraBloqueDeTexto"; foreach (var concepto in conceptos) { if (!concepto.IdConcepto.Equals(conceptoNota)) { continue; } foreach (var llave in concepto.Hechos.Keys) { hechoNota = concepto.Hechos[llave]; if (hechoNota != null) { if (String.IsNullOrWhiteSpace(hechoNota.Valor) && instancia.HechosPorIdConcepto.ContainsKey(conceptoNota)) { var idsHechos = instancia.HechosPorIdConcepto[conceptoNota]; foreach (var idHecho in idsHechos) { if (instancia.HechosPorId.ContainsKey(idHecho)) { var hechoReal = instancia.HechosPorId[idHecho]; if (!String.IsNullOrWhiteSpace(hechoReal.Valor)) { hechoNota.Valor = hechoReal.Valor; break; } } } } if (!String.IsNullOrWhiteSpace(hechoNota.Valor)) { escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hechoNota, concepto); break; } } } } //conceptos.Remove(0); conceptos = ((List <ConceptoReporteDTO>)conceptos).GetRange(1, conceptos.Count() - 1); Table tablaActual = docBuilder.StartTable(); ConceptoReporteDTO primerConcepto = null; foreach (ConceptoReporteDTO concepto in conceptos) { //estructuraReporte.Roles[rolAExportar.Rol]){ if (!concepto.Abstracto) { primerConcepto = concepto; break; } } docBuilder.Font.Color = Color.White; docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; establecerFuenteTituloCampo(docBuilder); docBuilder.Font.Size = TamanioLetraTituloTabla; //Titlo de dimension docBuilder.InsertCell(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.CellFormat.HorizontalMerge = CellMerge.None; int iCol = 0; foreach (String columna in primerConcepto.Hechos.Keys) { docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos); docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center; docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; if (iCol == 0) { String descPeriodo = (String)estructuraReporte.ParametrosReporte["ifrs_mx-cor_20141205_MonedasEje_HEADER"]; docBuilder.Write(descPeriodo); docBuilder.CellFormat.HorizontalMerge = CellMerge.First; } else { docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous; } iCol++; } docBuilder.EndRow(); docBuilder.InsertCell(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.CellFormat.HorizontalMerge = CellMerge.None; foreach (String columna in primerConcepto.Hechos.Keys) { docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos); docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center; docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; String descPeriodo = (String)estructuraReporte.ParametrosReporte[columna + "_HEADER"]; docBuilder.Write(descPeriodo); docBuilder.CellFormat.HorizontalMerge = CellMerge.First; } docBuilder.EndRow(); establecerFuenteValorCampo(docBuilder); docBuilder.Font.Size = TamanioLetraContenidoTabla; foreach (ConceptoReporteDTO concepto in conceptos) { if (concepto.Abstracto && !ConceptosAbstractosPermitidos.Contains(concepto.IdConcepto)) { continue; } docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.WrapText = true; docBuilder.Font.Color = Color.Black; if (concepto.Abstracto) { docBuilder.Bold = true; docBuilder.Font.Color = Color.White; docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; } else { docBuilder.Bold = false; } docBuilder.ParagraphFormat.LeftIndent = (concepto.Tabuladores < 0 ? concepto.Tabuladores : 0); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Write(concepto.Valor); if (concepto.Abstracto) { for (int iCell = 0; iCell < primerConcepto.Hechos.Count(); iCell++) { docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos); } } else { foreach (HechoReporteDTO hecho in concepto.Hechos.Values) { docBuilder.InsertCell(); docBuilder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(AnchoPreferidoColumnaDatos); docBuilder.ParagraphFormat.LeftIndent = 0; if (concepto.Numerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } escribirValorHecho(docBuilder, estructuraReporte, hecho, concepto); } } docBuilder.RowFormat.AllowBreakAcrossPages = true; docBuilder.RowFormat.HeadingFormat = false; docBuilder.EndRow(); } tablaActual.SetBorders(LineStyle.Single, 1, ReportConstants.DEFAULT_BORDER_GREY_COLOR); docBuilder.EndTable(); }
/// <summary> /// 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); }
/// <summary> /// Implementación de método abstracto que dispara la generación del report. /// </summary> /// <param name="docBuilder">Constructor de Aspose para la generación del contenido.</param> /// <param name="instancia">Documento de instancia XBRL.</param> /// <param name="rolAExportar">Definición del rol que se pretende presentar.</param> /// <param name="estructuraReporte">Información adicional sobre la estructura del reporte.</param> override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { Idioma = estructuraReporte.Lenguaje; docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Letter; docBuilder.CurrentSection.PageSetup.LeftMargin = 40; docBuilder.CurrentSection.PageSetup.RightMargin = 40; escribirEncabezado(docBuilder, instancia, estructuraReporte, true); //Titulo rol imprimirTituloRol(docBuilder, rolAExportar); HechoReporteDTO hecho = null; foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol]) { if (ConceptosIgnorar.ContainsKey(concepto.IdConcepto)) { continue; } if (concepto.Hechos != null) { foreach (String llave in concepto.Hechos.Keys) { hecho = concepto.Hechos[llave]; var esBloqueTexto = concepto.TipoDato.Contains(TIPO_DATO_TEXT_BLOCK); if (esBloqueTexto) { if (ExportarNotasVacias || (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { //Escribir titulo campo EscribirNotaTextoAtributosAdicionales(docBuilder, estructuraReporte, hecho, concepto); } } if (concepto.TipoDato != null && (concepto.TipoDato.Contains(TIPO_DATO_SI_NO) || concepto.Numerico)) { EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte); } else if (concepto.IdConcepto.Equals("ar_pros_CompanyAdministratorsAbstract")) { ImprimeTitulo(docBuilder, concepto); PintaAdministradores(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyAdministratorsTable"]); } else if (concepto.IdConcepto.Equals("ar_pros_CompanyShareholdersAbstract")) { ImprimeTitulo(docBuilder, concepto); PintaAccionistas(docBuilder, instancia, estructuraReporte.Hipercubos["ar_pros_CompanyShareholdersTable"]); } else if (concepto.IdConcepto.Equals("ar_pros_ReferenceIncorporationAdministration")) { if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { EscribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte); } } } } } }
private 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(); }
public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { DescartarAbastractos = true; InicializaConfiguracionPaginaDefault(docBuilder); ImprimirContenidoRol(docBuilder, instancia, rolAExportar, estructuraReporte); escribirEncabezado(docBuilder, instancia, estructuraReporte, true); }
public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { //estructuraReporte.ConceptosReportePorRol[""][0].Hechos[""].Valor foreach (HeaderFooter head in docBuilder.Document.FirstSection.HeadersFooters) { head.Range.Replace("${label_rel_ev_RelevantEventReportAbstract}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventReportAbstract", instancia), false, false); head.Range.Replace("${label_rel_ev_Date}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Date", instancia), false, false); head.Range.Replace("${rel_ev_Date}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Date", instancia, ""), false, false); head.Range.Replace("${rel_ev_BusinessName}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""), false, false); } docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Ticker}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Ticker", instancia), false, false); docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Ticker}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Ticker", instancia, ""), false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_BusinessName}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_BusinessName", instancia), false, false); docBuilder.Document.FirstSection.Range.Replace("${rel_ev_BusinessName}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_BusinessName", instancia, ""), false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Place}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Place", instancia), false, false); docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Place}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Place", instancia, ""), false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_ForeignMarket}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_ForeignMarket", instancia), false, false); docBuilder.Document.FirstSection.Range.Replace("${rel_ev_ForeignMarket}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_ForeignMarket", instancia, ""), false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventTypesAxis}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventTypesAxis", instancia), false, false); string descTipoEvento = String.Empty; if (instancia.HechosPorIdConcepto.ContainsKey("rel_ev_RelevantEventContent")) { var listaHechosId = instancia.HechosPorIdConcepto["rel_ev_RelevantEventContent"]; if (listaHechosId.Count > 0) { var hechoContenido = instancia.HechosPorId[listaHechosId[0]]; var contexto = instancia.ContextosPorId[hechoContenido.IdContexto]; if (contexto.ValoresDimension != null && contexto.ValoresDimension.Count > 0) { descTipoEvento = ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, contexto.ValoresDimension[0].IdItemMiembro, instancia); } } } docBuilder.Document.FirstSection.Range.Replace("${rel_ev_RelevantEventTypesAxis}", descTipoEvento, false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_Subject}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_Subject", instancia), false, false); docBuilder.Document.FirstSection.Range.Replace("${rel_ev_Subject}", ReporteXBRLUtil.obtenerValorHechoDefault("rel_ev_Subject", instancia, ""), false, false); docBuilder.Document.FirstSection.Range.Replace("${label_rel_ev_RelevantEventContent}", ReporteXBRLUtil.obtenerEtiquetaConcepto(estructuraReporte.Lenguaje, null, "rel_ev_RelevantEventContent", instancia), false, false); docBuilder.MoveToSection(0); docBuilder.MoveToDocumentEnd(); foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys) { var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_RelevantEventContent"); if (concepto != null) { escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto); } } docBuilder.MoveToDocumentEnd(); /* * foreach (var rol in estructuraReporte.ConceptosReportePorRol.Keys) * { * var concepto = estructuraReporte.ConceptosReportePorRol[rol].FirstOrDefault(x => x.IdConcepto == "rel_ev_AttachedDocumentPdf"); * if (concepto != null) * { * //escribirConceptoEnTablaNota(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto); * * escribirValorHecho(docBuilder, estructuraReporte, concepto.Hechos["trim_actual"], concepto); * } * } */ }
/// <summary> /// Exportador a Word. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">DTO con la información de la instancia XBRL</param> /// <param name="rolAExportar">DTO con la información del rol a exportar.</param> /// <param name="estructuraReporte"></param> public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { estructuraReporte.AgregarSignoAMonetarios = true; InicializaConfiguracionPaginaDefault(docBuilder); AgregarTituloPortada(docBuilder, rolAExportar); InsertarLeyendaProspectoDefinitivo(docBuilder, instancia, estructuraReporte); IsertaLogotipoDeEmisora(docBuilder, instancia, estructuraReporte); ImprimirContenidoRol(docBuilder, instancia, rolAExportar, estructuraReporte); ImprimirFirmasArt13(docBuilder, instancia); imprimirIndice(docBuilder, BreakType.SectionBreakNewPage); ImprimirConceptosDespuesIndice(docBuilder, instancia, rolAExportar, estructuraReporte); escribirEncabezado(docBuilder, instancia, estructuraReporte, true); }
/// <summary> /// Imprime los conceptos que se deben de presentar despues del indice. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="rolAExportar">Rol que se esta exportando.</param> /// <param name="estructuraReporte">Dto con información general del reporte.</param> private void ImprimirConceptosDespuesIndice(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { var idsConceptosDescartar = new List <String>(); var conceptosHiercubos = new Dictionary <String, bool>(); if (ConceptosDespuesDelIndice != null) { foreach (var idConcepto in ConceptosDespuesDelIndice) { var concepto = ObtenConceptoReporte(idConcepto, estructuraReporte); if (concepto != null) { docBuilder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal; PresentaConcepto(docBuilder, instancia, rolAExportar, estructuraReporte, concepto, idsConceptosDescartar, conceptosHiercubos); } } } }
public override void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { // docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Letter; docBuilder.CurrentSection.PageSetup.LeftMargin = 40; docBuilder.CurrentSection.PageSetup.RightMargin = 40; // escribirEncabezado(docBuilder, instancia, estructuraReporte, true); imprimirTituloRol(docBuilder, rolAExportar); var lista = new List <ConceptoReporteDTO>(); var lista2 = new List <ConceptoReporteDTO>(); var lista3 = new List <ConceptoReporteDTO>(); HechoReporteDTO hecho = null; foreach (ConceptoReporteDTO concepto in estructuraReporte.Roles[rolAExportar.Rol]) { if (concepto.Hechos != null) { foreach (String llave in concepto.Hechos.Keys) { hecho = concepto.Hechos[llave]; if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { if (!ConceptoHiper.Contains(concepto.IdConcepto)) { escribirConceptoEnTablaNota(docBuilder, estructuraReporte, hecho, concepto); } string tipoNumerico = ObtenertipoDato(concepto, TIPO_DATO_MONETARY); if (concepto.TipoDato == tipoNumerico && concepto.IdConcepto != ID_Importe && concepto.IdConcepto != ID_IVA && concepto.IdConcepto != ID_Total) { lista.Add(concepto); banderahecho = 1; } else if (banderahecho == 1) { PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista); banderahecho = 0; lista.Clear(); } string tipoNoNegativo = ObtenertipoDato(concepto, TIPO_DATO_NoNEGATIVO); if (concepto.TipoDato == tipoNoNegativo) { lista2.Add(concepto); banderahecho = 2; } else if (banderahecho == 2) { PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista2); banderahecho = 0; lista2.Clear(); } string tipoDecimal = ObtenertipoDato(concepto, TIPO_DATO_DECIMAL); if (concepto.TipoDato == tipoNoNegativo) { lista3.Add(concepto); banderahecho = 3; } else if (banderahecho == 3) { PintaTabla(docBuilder, instancia, rolAExportar, estructuraReporte, lista3); banderahecho = 0; lista3.Clear(); } string conceptoAdosColumnas = ObtenertipoDato(concepto, TIPO_DATO_SI_NO); if (concepto.TipoDato == conceptoAdosColumnas || concepto.IdConcepto == ID_Tipo_Oferta || concepto.IdConcepto == ID_Denominacion_moneda || concepto.IdConcepto == ID_Pesos || concepto.IdConcepto == ID_Pesos1) { escribirADosColumnasConceptoValor(docBuilder, concepto.IdConcepto, rolAExportar, estructuraReporte); } } } if (hipercubosSerie.Contains(concepto.IdConcepto)) { docBuilder.Writeln(); var conceptoActual = concepto; string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None); string ConceptoHipercubo = (d[0]); PintaTablaDimensionSerie(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte, conceptoActual); } else if (hipercubosExist.Contains(concepto.IdConcepto)) { docBuilder.Writeln(); string[] d = concepto.IdConcepto.Split(new string[] { "Abstract" }, StringSplitOptions.None); string ConceptoHipercubo = (d[0]); PintaTablaDimensionExplicita(docBuilder, ConceptoHipercubo, instancia, rolAExportar, estructuraReporte); } } } banderahecho = 0; Evaluador.Clear(); ConceptoHiper.Clear(); }
/// <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); } }
override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Letter; docBuilder.CurrentSection.PageSetup.LeftMargin = 40; docBuilder.CurrentSection.PageSetup.RightMargin = 40; //escribirEncabezado(docBuilder, instancia, estructuraReporte, true); imprimirTituloRol(docBuilder, rolAExportar); docBuilder.Font.Name = TipoLetraTextos; docBuilder.Font.Bold = false; docBuilder.Font.Size = TamanioLetraTextos; docBuilder.Font.Color = Color.Black; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; foreach (String i in estructuraReporte.NotasAlPie.Keys) { var kv = (KeyValuePair <Int32, String>)estructuraReporte.NotasAlPie[i]; var nota = limpiarBloqueTexto(kv.Value); if (Regex.IsMatch(nota, "<") || Regex.IsMatch(nota, ">")) { nota = HttpUtility.HtmlDecode(nota); } else { nota = REGEXP_SALTO_LINEA.Replace(nota, "<br/>"); } docBuilder.InsertHyperlink("[" + kv.Key + "] " + FLECHA_ARRIBA, MARCADOR_LINK_NOTAALPIE + kv.Key + "]", true); docBuilder.StartBookmark(MARCADOR_NOTAALPIE + kv.Key + "]"); WordUtil.InsertHtml(docBuilder, "nn", PARRAFO_HTML_NOTAS + nota + "</p>", false, true); docBuilder.EndBookmark(MARCADOR_NOTAALPIE + kv.Key + "]"); } }
/// <summary> /// Implementación de método abstracto que dispara la generación del report. /// </summary> /// <param name="docBuilder">Constructor de Aspose para la generación del contenido.</param> /// <param name="instancia">Documento de instancia XBRL.</param> /// <param name="rolAExportar">Definición del rol que se pretende presentar.</param> /// <param name="estructuraReporte">Información adicional sobre la estructura del reporte.</param> override public void exportarRolAWord(DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, IndiceReporteDTO rolAExportar, ReporteXBRLDTO estructuraReporte) { Idioma = estructuraReporte.Lenguaje; docBuilder.CurrentSection.PageSetup.Orientation = Orientation.Portrait; docBuilder.CurrentSection.PageSetup.PaperSize = PaperSize.Letter; docBuilder.CurrentSection.PageSetup.LeftMargin = 40; docBuilder.CurrentSection.PageSetup.RightMargin = 40; escribirEncabezado(docBuilder, instancia, estructuraReporte, true); //Titulo rol //imprimirPortada(docBuilder, rolAExportar); //PintaCamposTablaPersonaResponsable(docBuilder,estructuraReporte); IList <String> idsHechosFirmasPersonasResponsables; if (instancia.HechosPorIdConcepto.TryGetValue("ar_pros_NameAndPositionsOfResponsiblePersonsPdf", out idsHechosFirmasPersonasResponsables) && idsHechosFirmasPersonasResponsables.Count > 0) { var idHechoFirmas = idsHechosFirmasPersonasResponsables.FirstOrDefault(); HechoDto hechoFirmaPersonasResponsables; if (instancia.HechosPorId.TryGetValue(idHechoFirmas, out hechoFirmaPersonasResponsables)) { AgregaImagenFirmas(docBuilder, hechoFirmaPersonasResponsables); } } }