示例#1
0
 /// <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();
 }
示例#2
0
        /// <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);
        }