/// <summary> /// Pinta la sección de calificaciones en la tabla correspondiente. /// </summary> /// <param name="docBuilder">Puntero de </param> /// <param name="instancia"></param> /// <param name="estructuraReporte"></param> private void PintaCalificacionesEnTabla( DocumentBuilder docBuilder, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, HipercuboReporteDTO hipercuboSerie, ExportadorRolDocumentoBase exportadorOrigen) { var hipercubo = estructuraReporte.Hipercubos["ar_pros_SecuritiesRatingTable"]; hipercubo = FiltrarHipercuboCalificaciones(hipercubo, hipercuboSerie); if (hipercubo == null) { return; } var lenguaje = estructuraReporte.Lenguaje; var textoTituloSecciion = exportadorOrigen.ObtenEtiquetaConcepto("ar_pros_SecuritiesRatingAbstract", instancia, lenguaje); PintaFilaSubTitulo(textoTituloSecciion, docBuilder, hipercubo.Titulos.Count, exportadorOrigen); var diccionarioTarjetas = hipercubo.Utileria.ReordenaConjutosPorExplicitaConceptoImplicita(hipercubo.Hechos); foreach (var clavePlantilla in diccionarioTarjetas.Keys) { var diccionarioConceptos = diccionarioTarjetas[clavePlantilla]; var primerHecho = diccionarioConceptos.Values.First().First(); var idDimensionExplicita = hipercubo.Utileria.ObtenDimensionesTipo(primerHecho, instancia, true).First().IdDimension; var miembroExplicita = hipercubo.Utileria.ObtenMiembroDimension(primerHecho, idDimensionExplicita, instancia); var textoTituloMiembro = " " + exportadorOrigen.ObtenEtiquetaConcepto(miembroExplicita.IdItemMiembro, instancia, lenguaje); PintaFilaSubTitulo(textoTituloMiembro, docBuilder, hipercubo.Titulos.Count, exportadorOrigen); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; docBuilder.RowFormat.HeadingFormat = false; foreach (var idConcepto in diccionarioConceptos.Keys) { docBuilder.InsertCell(); var nombreConcepto = " " + DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); var listaHechos = diccionarioConceptos[idConcepto]; for (var indexHecho = 0; indexHecho < listaHechos.Count; indexHecho++) { var hecho = listaHechos[indexHecho]; docBuilder.InsertCell(); if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor)) { exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]); } } docBuilder.EndRow(); } } }
/// <summary> /// 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> /// Pinta todas las filas de la tabla de hechos. /// </summary> /// <param name="instancia">Documento de instancia donde se obtiene la información.</param> /// <param name="listacontextos">Lista con los contextos a presentar.</param> /// <param name="diccionarioHechos">Diccionario con los hechos a presentar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="exportadorBase">Exportador original del reporte.</param> /// <param name="estructuraReporte">Dto con datos auxiliares para la presentación del documento.</param> public void PintaFilasHechos( DocumentoInstanciaXbrlDto instancia, IList <ContextoDto> listacontextos, IDictionary <string, IDictionary <string, HechoDto> > diccionarioHechos, DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorBase, ReporteXBRLDTO estructuraReporte) { var numeroColumnas = listacontextos.Count + 1; foreach (var idConcepto in ConceptosTabla) { ConceptoDto concepto; if (instancia.Taxonomia.ConceptosPorId.TryGetValue(idConcepto, out concepto)) { var etiquetaConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, concepto.Id, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); if (concepto.EsAbstracto ?? false) { PintaFilaSubTitulo(etiquetaConcepto, docBuilder, numeroColumnas, exportadorBase); } else { if (!concepto.EsTipoDatoNumerico) { continue; } docBuilder.InsertCell(); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Bold = true; docBuilder.Write(etiquetaConcepto); IDictionary <string, HechoDto> diccionarioHechosPorContexto = null; diccionarioHechos.TryGetValue(concepto.Id, out diccionarioHechosPorContexto); foreach (var contexto in listacontextos) { docBuilder.InsertCell(); docBuilder.Bold = false; HechoDto hecho; if (diccionarioHechosPorContexto != null && diccionarioHechosPorContexto.TryGetValue(contexto.Id, out hecho)) { docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; exportadorBase.EscribirValorHecho(docBuilder, estructuraReporte, hecho, concepto); } } docBuilder.EndRow(); } } } docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; }
private IList <DesgloseDeCreditosReporteDto> llenarDesgloseDeCreditos(DocumentoInstanciaXbrlDto instancia) { IList <DesgloseDeCreditosReporteDto> desgloseCreditos = null; try { int outContadorNotasAlPie = 0; desgloseCreditos = DesgloseDeCreditosHelper.generarContenidoDeReporte(instancia, reporteXBRLDTO, ContadorNotasAlPie, out outContadorNotasAlPie); ContadorNotasAlPie = outContadorNotasAlPie; } catch (Exception ex) { LogUtil.Error(ex); } return(desgloseCreditos); }
/// <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 PintaTablaCubo( HipercuboReporteDTO hipercubo, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, DocumentBuilder docBuilder, ConceptoReporteDTO concepto, IndiceReporteDTO rolAExportar, ExportadorRolDocumentoBase exportadorOrigen) { docBuilder.InsertBreak(BreakType.PageBreak); Table tablaActual = docBuilder.StartTable(); Color colorTitulo = exportadorOrigen.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; //docBuilder.InsertCell(); // docBuilder.EndRow(); // Formatos de celdas que le da el color de fondo de los titulos de la tabla que se crea docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; // docBuilder.InsertCell(); foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; docBuilder.InsertCell(); var nombreConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto(instancia.Taxonomia, idConcepto, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); docBuilder.Write(nombreConcepto); } docBuilder.EndRow(); docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; var cantidadCeldasVacias = hipercubo.Hechos.Count - 1; foreach (var idPlantillaContexto in hipercubo.Utileria.configuracion.PlantillasContextos.Keys) { var plantilla = hipercubo.Utileria.configuracion.PlantillasContextos[idPlantillaContexto]; var miembroPlantilla = plantilla.ValoresDimension[0]; var nombreMiembro = DesgloseDeCreditosHelper.obtenerEtiquetaDeConcepto(instancia.Taxonomia, miembroPlantilla.IdItemMiembro, "es", ReporteXBRLUtil.ETIQUETA_DEFAULT); /* docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.LightGray; * docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; * docBuilder.Font.Color = Color.Black;*/ docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; docBuilder.InsertCell(); docBuilder.Write(nombreMiembro); if (cantidadCeldasVacias > 0) { for (var indexMiembro = 0; indexMiembro < cantidadCeldasVacias; indexMiembro++) { docBuilder.InsertCell(); docBuilder.Write(String.Empty); } docBuilder.EndRow(); } var countType = 0; docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.CellFormat.PreferredWidth = PreferredWidth.Auto; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; countType = matrizPlantillaContexto[idPlantillaContexto].Length; break; } Boolean dimensiones = false; for (var indexType = 0; indexType < countType; indexType++) { if (indexType > 0) { dimensiones = true; } docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; foreach (var idConcepto in hipercubo.Hechos.Keys) { var matrizPlantillaContexto = hipercubo.Hechos[idConcepto]; var listaHechos = matrizPlantillaContexto[idPlantillaContexto]; if (listaHechos != null) { var hecho = listaHechos[indexType]; var valorHecho = hecho.Valor; if (dimensiones) { docBuilder.EndRow(); docBuilder.InsertCell(); dimensiones = false; } else { docBuilder.InsertCell(); } if (hecho.NoEsNumerico) { docBuilder.CellFormat.WrapText = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; } else { docBuilder.CellFormat.WrapText = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; } if ((hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor))) { docBuilder.Write(valorHecho); } } } } docBuilder.RowFormat.AllowBreakAcrossPages = true; docBuilder.RowFormat.HeadingFormat = false; docBuilder.EndRow(); } establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); }
/// <summary> /// Pinta el contenido de un cubo ya organizado en una tabla de Word /// </summary> private void PintaTablaCubo( HipercuboReporteDTO hipercubo, DocumentoInstanciaXbrlDto instancia, ReporteXBRLDTO estructuraReporte, DocumentBuilder docBuilder, ConceptoReporteDTO concepto, IndiceReporteDTO rolAExportar, ExportadorRolDocumentoBase exportadorOrigen) { var matrizHechosPlantillaContexto = hipercubo.Utileria.ReordenaConjutosPorExplicitaImplicitaTituloConcepto(hipercubo.Hechos, hipercubo.Titulos); var matrizHechosTitulo = matrizHechosPlantillaContexto.Values.First(); var colorTitulo = exportadorOrigen.ObtenColorTitulo(); docBuilder.ParagraphFormat.SpaceAfter = 0; docBuilder.ParagraphFormat.SpaceBefore = 2; foreach (var tituloSerie in matrizHechosTitulo.Keys) { var tablaActual = docBuilder.StartTable(); PintaFilaSubTitulo(tituloSerie, docBuilder, 2, exportadorOrigen); var hechosPorConcepto = matrizHechosTitulo[tituloSerie]; foreach (var idConcepto in hechosPorConcepto.Keys) { if (!ConceptosAplican.Contains(idConcepto)) { continue; } var etiquetaConcepto = DesgloseDeCreditosHelper .obtenerEtiquetaDeConcepto( instancia.Taxonomia, idConcepto, estructuraReporte.Lenguaje, ReporteXBRLUtil.ETIQUETA_DEFAULT); AsignaEstilosConcepto(docBuilder, exportadorOrigen); docBuilder.Bold = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.InsertCell(); docBuilder.Write(etiquetaConcepto); docBuilder.InsertCell(); docBuilder.Bold = false; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Right; var hecho = hechosPorConcepto[idConcepto]; if (hecho != null && !String.IsNullOrWhiteSpace(hecho.Valor) && instancia.Taxonomia.ConceptosPorId.ContainsKey(hecho.IdConcepto)) { var conceptoHecho = instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]; if (conceptoHecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK)) { WordUtil.InsertHtml(docBuilder, hecho.IdConcepto + ":" + hecho.Id, ExportadorRolDocumentoBase.PARRAFO_HTML_NOTAS_Texblock + hecho.Valor + "</p>", false, true); } else { exportadorOrigen.EscribirValorHecho(docBuilder, estructuraReporte, hecho, instancia.Taxonomia.ConceptosPorId[hecho.IdConcepto]); } } docBuilder.EndRow(); } exportadorOrigen.establecerBordesGrisesTabla(tablaActual); docBuilder.EndTable(); docBuilder.Writeln(); docBuilder.Writeln(); } }
/// <summary> /// Pinta el contenido 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(); }