예제 #1
0
        /// <summary>
        /// Pinta el contenido de una celda para un concepto simple.
        /// </summary>
        /// <param name="docBuilder">Constructor del documenot.</param>
        /// <param name="celda">Celda que se pretende presentar.</param>
        /// <param name="tarjeta">Tarjeta con el valor de la celda.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        /// <param name="estructuraReporte">Dto con información general del reporte.</param>
        private void PintaCeldaConceptoSimple(
            DocumentBuilder docBuilder,
            CeldasPresentacionHipercuboDto celda,
            IDictionary <string, HechoDto> tarjeta,
            ExportadorRolDocumentoBase exportadorOrigen,
            ReporteXBRLDTO estructuraReporte)
        {
            HechoDto hecho;
            var      texto  = String.Empty;
            var      esHtml = false;

            if (tarjeta.TryGetValue(celda.IdConcepto, out hecho))
            {
                esHtml = hecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                texto  = hecho.Valor ?? String.Empty;
            }
            if (celda.AgregarEnIndice)
            {
                AsignaEstilosParaIndice(docBuilder, exportadorOrigen);
            }
            if (celda.Colspan > 1)
            {
                var newCells = celda.Colspan - 1;
                docBuilder.InsertCell();
                docBuilder.CellFormat.HorizontalMerge = CellMerge.First;
                if (!esHtml)
                {
                    if (!WordUtil.EsRTF(texto))
                    {
                        docBuilder.Write(texto);
                    }
                    else
                    {
                        var lastIndex = texto.Length < 1000 ? texto.Length - 1 : 1000;
                        docBuilder.Write(texto.Substring(0, lastIndex));
                    }
                    EvaluaPresentarEnlaceArchivo(texto, docBuilder, celda, tarjeta, estructuraReporte);
                }
                else
                {
                    WordUtil.InsertHtml(docBuilder, ":celda", "<div style=\"font-family:Arial;font-size: 6pt;\">" + texto + "</div>", false);
                }
                for (var index = 0; index < newCells; index++)
                {
                    docBuilder.InsertCell();
                    docBuilder.CellFormat.HorizontalMerge = CellMerge.Previous;
                }
            }
            else
            {
                docBuilder.InsertCell();
                docBuilder.CellFormat.HorizontalMerge = CellMerge.None;
                if (!esHtml)
                {
                    docBuilder.Write(texto);
                    EvaluaPresentarEnlaceArchivo(texto, docBuilder, celda, tarjeta, estructuraReporte);
                }
                else
                {
                    WordUtil.InsertHtml(docBuilder, ":celda", "<div style=\"font-family:Arial;font-size: 6pt;\">" + texto + "</div>", false);
                }
            }
            if (celda.AgregarEnIndice)
            {
                EliminaEstilosParaIndice(docBuilder, exportadorOrigen);
            }
        }