Пример #1
0
        /// <summary>
        /// Obtiene el valor a presentar como título del concepto.
        /// </summary>
        /// <param name="celda">Celda que se pretende presentar.</param>
        /// <param name="instancia">Documento de instancia.</param>
        /// <param name="exportadorOrigen">Exportador original.</param>
        /// <param name="estructuraReporte">Datos generales del reporte.</param>
        /// <returns>Texto a presentar como título.</returns>
        private String ObtenTextoTituloConcepto(
            CeldasPresentacionHipercuboDto celda,
            DocumentoInstanciaXbrlDto instancia,
            ExportadorRolDocumentoBase exportadorOrigen,
            ReporteXBRLDTO estructuraReporte)
        {
            var idConceptoTitulo = !String.IsNullOrEmpty(celda.IdConceptoTitulo) ? celda.IdConceptoTitulo : celda.IdConcepto;
            var tituloConcepto   = exportadorOrigen.ObtenEtiquetaConcepto(idConceptoTitulo, instancia, estructuraReporte.Lenguaje);

            if (String.IsNullOrEmpty(tituloConcepto))
            {
                tituloConcepto = idConceptoTitulo;
            }
            return(tituloConcepto);
        }
Пример #2
0
        /// <summary>
        /// Determina si debe agregar un enalce a un documento adjunto.
        /// </summary>
        /// <param name="tituloReporte">Título con el que se presenta el reporte.</param>
        /// <param name="docBuilder">Constructor del documento.</param>
        /// <param name="celda">Celda que se presenta.</param>
        /// <param name="tarjeta">Diccionario con la información a presentar.</param>
        /// <param name="estructuraReporte">DTO con la estructura del reporte.</param>
        private void EvaluaPresentarEnlaceArchivo(
            String tituloReporte,
            DocumentBuilder docBuilder,
            CeldasPresentacionHipercuboDto celda,
            IDictionary <string, HechoDto> tarjeta,
            ReporteXBRLDTO estructuraReporte)
        {
            HechoDto hechoReporte;

            if (!String.IsNullOrEmpty(celda.ArchivoAdjunto) && tarjeta.TryGetValue(celda.ArchivoAdjunto, out hechoReporte) && !String.IsNullOrEmpty(hechoReporte.Valor))
            {
                if (estructuraReporte.ArchivosAdjuntos == null)
                {
                    estructuraReporte.ArchivosAdjuntos = new Dictionary <String, ArchivoReporteDTO>();
                }
                var archivoReporte = new ArchivoReporteDTO()
                {
                    TituloArchivo = tituloReporte, HechoArchivo = hechoReporte
                };
                estructuraReporte.ArchivosAdjuntos[hechoReporte.Id] = archivoReporte;
                EscribeVinculoArchivo(docBuilder, archivoReporte);
            }
        }
Пример #3
0
        /// <summary>
        /// Pinta el contenido de una celda compuesta por varios conceptos.
        /// </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>
        private void PintaCeldaCompuesta(
            DocumentBuilder docBuilder,
            CeldasPresentacionHipercuboDto celda,
            IDictionary <string, HechoDto> tarjeta,
            ExportadorRolDocumentoBase exportadorOrigen)
        {
            HechoDto hecho;
            var      valor   = new StringBuilder();
            var      esHtml  = false;
            var      colspan = 1;

            foreach (var idConcepto in celda.IdsConceptos)
            {
                if (tarjeta.TryGetValue(idConcepto, out hecho))
                {
                    if (!esHtml)
                    {
                        esHtml = hecho.TipoDato.Contains(ExportadorRolDocumentoBase.TIPO_DATO_TEXT_BLOCK);
                    }
                    if (colspan < celda.Colspan)
                    {
                        colspan = celda.Colspan;
                    }

                    valor.Append(" ");
                    valor.Append(hecho.Valor ?? String.Empty);
                    if (!celda.ConcatenarValores)
                    {
                        break;
                    }
                }
            }
            var texto = valor.ToString().Substring(1);

            exportadorOrigen.SetCellColspan(docBuilder, texto, colspan, esHtml);
        }
Пример #4
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);
            }
        }