using System;
using System.Collections.Generic;
using System.Text;
using ceTe.DynamicPDF.Merger;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer;
using System.Data;
using ceTe.DynamicPDF.PageElements;
using PDFGenerator.BusinessLayer.Utils;
using NLog;

namespace PDFGenerator.Presentation.Section
{
    public class S80BIS : ISezione
    {
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

        string Titolo = string.Empty;
        string _testointroduttivo;

        /// <summary>
        /// Testo che introduce la sezione.
        /// </summary>
        public string TestoIntroduttivo
        {
            get { return _testointroduttivo; }
            set { _testointroduttivo = value; }
        }

        /// <summary>
        /// Setta il titolo.
        /// </summary>
        /// <param name="label"></param>
        public void setTitolo(string label)
        {
            Titolo = label;
        }


        public S80BIS()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public void writeSezione(DataThread dataThread)
        {
            dataThread.SETDATA();

            DocumentPDF document = dataThread.DocumentPDF;
            DatiTabella datitab;
            DataSetS80BIS set = (DataSetS80BIS)dataThread.Data.DatiSezione;
            string labelText2nd = SimpleTextGenerator.ProduceText(this, "S80BisBottomLbl", dataThread, null);

            //20180917 AC
            labelText2nd = labelText2nd.Replace("*", "(*)");
            //--20180917

            //setta la datatable che contiene i dati per disegnare la tabella Dati
            datitab = new DatiTabella();
            datitab.table = set.Tables["VaRMassimoProfiloFinanziario"];
            int nFasi = Convert.ToInt32(datitab.table.Rows[0]["NumeroFasi"]); //il valore è uguale in tutte le righe
            datitab.table.Columns.Remove("NumeroFasi");// rimuovo la colonna, non va stampata

            string captionFase1 = datitab.table.Columns["Fase1"].Caption;
            string captionFase2 = datitab.table.Columns["Fase2"].Caption;
            string captionFase3 = datitab.table.Columns["Fase3"].Caption;


            // Aggiungo una pagina se la tabella non entra nella corrente.
            if (document.checkMargin(130))
                document.addPage();


            //document.setSezTitolo(Titolo);
            document.setLastPos(-40);
            document.setChapterHeader(_testointroduttivo, 0, 520, 8);


            #region Disegno Tabella Header

            DataView viewHeader = new DataView(datitab.table);
            DataRow rowTemplate = datitab.table.Rows[0];

            viewHeader.RowFilter = ("Fase1 = 'xxx'");
            datitab.table = viewHeader.ToTable();
            datitab.table.Rows.Add(datitab.table.NewRow()); // serve solo per far scrivere l'intestazione.

            Tabella TabellaHeader = new Tabella();

            TabellaHeader.X = document.getMargineLeft();
            TabellaHeader.Y = document.getLastPos();
            TabellaHeader.AltezzaCella = 30;
            TabellaHeader.SaltoPagina = false;
            TabellaHeader.Datasource = datitab.table;
            TabellaHeader.Header = true; // la gestione dell'header viene fatta manualmente.  
            TabellaHeader.HeaderFont = 8;


            int larghezzaColonnaDescrizione = 512; //è variabile e da calcolare in base allo spazio disponibile
            int larghezzaColonnaFase1 = 130;
            int larghezzaColonnaFase2 = 150;
            int larghezzaColonnaFase3 = 130;
            int larghezzaUltimaColonna = 0;


            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false));
                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false));
                }
            }

            TabellaHeader.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false));

            TabellaHeader.Draw(datitab, document);

            #endregion

            #region Disegno Tabella VaRMassimoProfiloFinanziario

            datitab = new DatiTabella();
            datitab.table = set.Tables["VaRMassimoProfiloFinanziario"];
            Tabella TabellaVaRMassimoProfiloFinanziario = new Tabella();
            TabellaVaRMassimoProfiloFinanziario.X = document.getMargineLeft();
            TabellaVaRMassimoProfiloFinanziario.Y = document.getLastPos() + TabellaHeader.AltezzaTabella;
            TabellaVaRMassimoProfiloFinanziario.SaltoPagina = false;
            TabellaVaRMassimoProfiloFinanziario.Datasource = datitab.table;

            larghezzaColonnaDescrizione = 512;

            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));

                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                                         
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
                }
            }

            TabellaVaRMassimoProfiloFinanziario.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, false));


            TabellaVaRMassimoProfiloFinanziario.Draw(datitab, document);

            #endregion

            #region Disegno Tabella VaR

            datitab = new DatiTabella();
            datitab.table = set.Tables["VaR"];
            if (!string.IsNullOrEmpty(labelText2nd) && set.Tables["VaR"].Rows.Count > 0)
            {
                set.Tables["VaR"].Rows[0]["Descrizione"] += "*";
            }
            Tabella TabellaVaR = new Tabella();
            TabellaVaR.X = document.getMargineLeft();
            TabellaVaR.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella;
            TabellaVaR.SaltoPagina = false;
            TabellaVaR.Datasource = datitab.table;

            larghezzaColonnaDescrizione = 512;

            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, true)); // -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));

                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine                                         
                    TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));
                }
            }

            TabellaVaR.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, true));
            TabellaVaR.Draw(datitab, document);

            #endregion

            #region Disegno Tabella Copertura

            datitab = new DatiTabella();
            datitab.table = set.Tables["Copertura"];

            Tabella TabellaCopertura = new Tabella();
            TabellaCopertura.X = document.getMargineLeft();
            TabellaCopertura.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella;
            TabellaCopertura.SaltoPagina = false;
            TabellaCopertura.Datasource = datitab.table;

            larghezzaColonnaDescrizione = 512;

            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, false, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));

                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                                         
                    TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
                }
            }

            TabellaCopertura.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false));
            TabellaCopertura.Draw(datitab, document);


            #endregion

            // Marian
            //////////////////////////////


            #region Disegno Tabella RiskClassMax

            datitab = new DatiTabella();
            datitab.table = set.Tables["RiskClassMax"];

            Tabella TabellaRiskClassMax = new Tabella();
            TabellaRiskClassMax.X = document.getMargineLeft();
            TabellaRiskClassMax.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella;
            TabellaRiskClassMax.SaltoPagina = false;
            TabellaRiskClassMax.Datasource = datitab.table;

            larghezzaColonnaDescrizione = 512;

            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));

                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                                         
                    TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));
                }
            }

            TabellaRiskClassMax.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, false));
            TabellaRiskClassMax.Draw(datitab, document);

            #endregion


            #region Disegno Tabella RiskClass

            datitab = new DatiTabella();
            datitab.table = set.Tables["RiskClass"];
            Tabella TabellaRiskClass = new Tabella();
            TabellaRiskClass.X = document.getMargineLeft();
            TabellaRiskClass.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella;
            TabellaRiskClass.SaltoPagina = false;
            TabellaRiskClass.Datasource = datitab.table;

            larghezzaColonnaDescrizione = 512;

            // Definizione delle colonne
            foreach (DataColumn column in TabellaHeader.Datasource.Columns)
            {
                if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
                    larghezzaUltimaColonna = larghezzaColonnaFase1;
                    TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, true)); // -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));

                }
                if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
                    larghezzaUltimaColonna = larghezzaColonnaFase2;
                    TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine                                         
                    TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));
                }
                if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
                {
                    larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
                    larghezzaUltimaColonna = larghezzaColonnaFase3;
                    TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine                    
                    TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));
                }
            }

            TabellaRiskClass.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, true));


            TabellaRiskClass.Draw(datitab, document);

            #endregion
            //////////////////////////////

            #region Disegno riquadro su Situazione Corrente e freccia


            //// riquadro intorno la colonna Situazione Corrente
            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            // riquadro intorno la colonna Situazione Corrente
            float xRiquadro = 528 - larghezzaUltimaColonna + (larghezzaUltimaColonna / 2);

            Rectangle rettangoloSuSituazioneCorrente;

            if (TabellaCopertura.Datasource.Rows.Count > 0)
                //rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella - 30);
                // MZ 04-05-2010: Change the rectange hight according to adding the new two rows.
                rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella + TabellaRiskClass.AltezzaTabella - 30);
            else
                rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella + TabellaRiskClass.AltezzaTabella - 30);

            rettangoloSuSituazioneCorrente.CornerRadius = 5;
            page.Elements.Add(rettangoloSuSituazioneCorrente);

            //Freccia
            System.Reflection.Assembly thisExe;
            thisExe = System.Reflection.Assembly.GetExecutingAssembly();
            System.IO.Stream file = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("FrecciaS80"));

            switch (nFasi)
            {
                case 2: // Una freccia tra "attivazione monitoraggio" e "situazione corrente"
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaHeader.Y - 10, 0.57F));
                    break;

                case 3: // Una freccia tra "attivazione monitoraggio" e  "precedente invio report" e tra  "precedente invio report" e "situazione corrente"
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 245, TabellaHeader.Y - 10, 0.57F));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaHeader.Y - 10, 0.57F));
                    break;

                default:
                    break;
            }

            #endregion

            // imposto l'ultima posizione scrivibile.
            if (!string.IsNullOrEmpty(labelText2nd))
            {
                var lastPos = TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella - 5;
                if (lastPos + (int)Math.Ceiling(TabellaHeader.Y) > 705)
                    lastPos -= 17;
                document.setLastPos(lastPos);

                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelText2nd, document.getMargineLeft(), document.getLastPos(), 510, 70, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Justify));
                document.setLastPos(TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + 20);
            }

            /*** TEST - Verifica Tempistica 09/11/2023 - Pino ****/
            /*** Inserimento log per verifica tempistica della sezione ***/
            //DateTimeOffset dateOffsetValueFin = DateTimeOffset.Parse(DateTime.Now.ToString("hh:mm:ss.ffff"));
            //var tDiff = dateOffsetValueFin - dateOffsetValueIni;
            //logger.Trace("S80BIS " + tDiff);
            /**************************************************************/
        }
    }
}