/// <summary> /// Pinta un conjunto de elementos a dos filas. /// </summary> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="tarjeta">Diccionario con los conceptos y hechos.</param> /// <param name="fila">Definición de la fila.</param> /// <param name="instancia">Documento de instancia.</param> /// <param name="exportadorOrigen">Esportador original del documento</param> /// <param name="estructuraReporte">Datos generales del reporte.</param> private void PintaUnaFila( DocumentBuilder docBuilder, IDictionary <string, HechoDto> tarjeta, FilaPresentacionHipercuboDto fila, DocumentoInstanciaXbrlDto instancia, ExportadorRolDocumentoBase exportadorOrigen, ReporteXBRLDTO estructuraReporte) { foreach (var celda in fila.Celdas) { if (!celda.SoloValor) { EstablecerFuenteCeldaTitulo(docBuilder, exportadorOrigen); var tituloConcepto = ObtenTextoTituloConcepto(celda, instancia, exportadorOrigen, estructuraReporte); exportadorOrigen.SetCellColspan(docBuilder, tituloConcepto, celda.ColspanTitulo); } if (celda.EsTitulo) { EstablecerFuenteCeldaTitulo(docBuilder, exportadorOrigen); } else { EstablecerFuenteCeldaValor(docBuilder, exportadorOrigen); } if (!String.IsNullOrEmpty(celda.IdConcepto)) { PintaCeldaConceptoSimple(docBuilder, celda, tarjeta, exportadorOrigen, estructuraReporte); } else { PintaCeldaCompuesta(docBuilder, celda, tarjeta, exportadorOrigen); } } docBuilder.EndRow(); }
/// <summary> /// Determina si la tarjeta contiene todos los elementos necesarios para su presentación. /// </summary> /// <param name="fila">Fila a evaluar.</param> /// <param name="tarjeta">Diccionario a evaluar.</param> /// <returns>Si el diccionario contiene todos los conceptos indicados por la fila.</returns> private bool TarjetaContieneConceptosFila(FilaPresentacionHipercuboDto fila, IDictionary <String, HechoDto> tarjeta) { var contieneConceptos = true; HechoDto hecho = null; foreach (var celda in fila.Celdas) { if (celda.MostrarVacio) { continue; } if (!String.IsNullOrEmpty(celda.IdConcepto) && (!tarjeta.TryGetValue(celda.IdConcepto, out hecho) || (String.IsNullOrWhiteSpace(hecho.Valor)))) { contieneConceptos = false; } else if (celda.IdsConceptos != null && celda.IdsConceptos.Count > 0) { var contienAlmenosUnConcepto = false; foreach (var idConcepto in celda.IdsConceptos) { if (tarjeta.TryGetValue(idConcepto, out hecho) && !String.IsNullOrEmpty(hecho.Valor)) { contienAlmenosUnConcepto = true; break; } } if (!contienAlmenosUnConcepto) { contieneConceptos = false; } } if (!contieneConceptos) { break; } } return(contieneConceptos); }