using System;
using System.Data;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
using PDFGenerator.BusinessLayer;
using ceTe.DynamicPDF;
using System.Collections;

namespace PDFGenerator.Presentation.Section
{
    public class SIstogramma
    {
        protected string Titolo = " ";
        protected DataTable tabTortaTabella;
        protected DataTable tabTortaTotali;
        protected DataTable tabTortaContoCorrenteBancaFideuram;
        protected DataTable tabTortaLineaSelf;
        protected DataTable tabTortaPatrimonioNonRappresentabile;
        protected DataTable tabTotale;
        protected DataTable tabTortaPartiteViaggianti;

        /*** ESG DataTable delle caratteristiche  ***/
        protected DataTable tabCaratteristiche;
        /********************************************/

        private bool _noIndicizzato;
        protected DataTable tabNota;
        protected DocumentPDF document;
        protected float dim = 0;
        protected DatiTabella datitab = new DatiTabella();
        protected bool salto = false;
        protected int ChartHeigth = 145;
        protected string _header;
        protected bool _saltopaginaeffettuato = false;

        /**** Direct Banker 23/03/2023 - Pino *****/
        protected string DirectBanker;
        protected DataTable tabMacroAssetClass;
        /******************************************/

        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();



        public SIstogramma()
        {
            _noIndicizzato = false;
            _header = "";
        }

        #region ISezione Members
        protected void writeSezione(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();
            datitab.table = tabTortaTabella;
            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCellSpace(0);


            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTortaLineaSelf = 0;
            int rTotTotale = 0;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTortaLineaSelf != null)
                rTotTortaLineaSelf = tabTortaLineaSelf.Rows.Count;



            if (tabTotale != null)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            //if (_noIndicizzato)
            //    document.setTitolo("SOSTITUIRE_TITOLO");
            //else

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                // Inizio: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                if ((datathread.TipoReport.ToUpper() == "DIAGNOSI") && ((datathread.SezioneReport.Codice == "S153") || (datathread.SezioneReport.Codice == "S154") || (datathread.SezioneReport.Codice == "S163")))
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);

                }
                // Fine: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                else if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                {
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(Header);
                }
                else
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);
                }

            }

            //document.setHeaderSpace(10);

            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto());

            switch (dati.dataTab.Rows.Count)
            {
                case 2:
                    dati.setHeight(ChartHeigth - 43);
                    break;
                case 3:
                    dati.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    dati.setHeight(ChartHeigth);
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    dati.setHeight(ChartHeigth + 24);
                    break;
                default:
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
                    dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * (datitab.getNumRow() + datitab.GetRowDim() + 10)));
                    break;
            }

            dati.setWidth(200);
            Istogramma isto = new Istogramma();
            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); /// Buona



            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            var xrowDim = datitab.GetRowDim();

            if (tabTortaTabella.Rows.Count == 18 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;

            }
            datitab.SetRowDim(xrowDim);

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale) + dim))
                {
                    MaxRow = document.getWritableRow(23, false); //23

                    //if (tabTortaTabella.Rows.Count > 17 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
                    // MaxRow = document.getWritableRow(19, false);

                    // ulteriore controllo per evitare che la nota sfori sul footer. Questa gestione è da rifare totalmente.
                    if (document.checkMargin((MaxRow + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale + altezzaNotaPatrimonioNonRappresentabile) * 23))
                        MaxRow -= 1;

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow - (1 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                datitab.table = view.ToTable(false, setTableForTable());

                datitab.setY(document.getLastPos());
                datitab.setX(document.getMargineLeft());
                //setta posizione tabella
                document.InsertTable(tab.getTabella(datitab));

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                if (cut)
                {
                    document.changePage(389, dim + 20);
                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }

            // Totale della griglia
            datitab = new DatiTabella();
            datitab.table = tabTortaTotali;

            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));

            float yRect = datitab.getY() + 13;
            float yLineHeader = datitab.getY() + 12;

            // Barra colorata del footer anche estesa al grafico
            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                default:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
            }

            //if (dati.dataTab.Rows.Count == 4)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));

            dim += datitab.GetRowDim() * datitab.getNumRow();

            if (tabTortaPatrimonioNonRappresentabile != null)
            {
                DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
                datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;
                datitabPatrimonioNonRappresentabile.SetRowDim(xrowDim);
                datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
                datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
                datitabPatrimonioNonRappresentabile.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
                dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            }


            if (tabTortaContoCorrenteBancaFideuram != null)
            {
                DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();

                datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;
                datitabContoCorrenteBancaFideuram.SetRowDim(xrowDim);
                datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
                datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
                datitabContoCorrenteBancaFideuram.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
                dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            }

            if (tabTortaLineaSelf != null)
            {
                DatiTabella datitabLineaSelf = new DatiTabella();
                datitabLineaSelf.table = tabTortaLineaSelf;
                datitabLineaSelf.SetRowDim(xrowDim);
                datitabLineaSelf.setY(document.getLastPos() + dim);
                datitabLineaSelf.setX(document.getMargineLeft());
                datitabLineaSelf.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabLineaSelf.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabLineaSelf.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabLineaSelf));
                dim += datitabLineaSelf.GetRowDim() * datitabLineaSelf.getNumRow();
            }


            if (tabTortaPartiteViaggianti != null)
            {
                DatiTabella datitabPartiteViaggianti = new DatiTabella();
                datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

                datitabPartiteViaggianti.setY(document.getLastPos() + dim);
                datitabPartiteViaggianti.setX(document.getMargineLeft());
                datitabPartiteViaggianti.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
                dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            }

            if (tabTotale != null)
            {
                DatiTabella datitabContoTotale = new DatiTabella();
                tabTotale.Columns.Add();
                datitabContoTotale.table = tabTotale;

                datitabContoTotale.setY(document.getLastPos() + dim);
                datitabContoTotale.setX(document.getMargineLeft());
                datitabContoTotale.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
                datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
                datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

                document.InsertTable(tab.getTabella(datitabContoTotale));
                dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            }

            // Scrittura del footer sul grafico
            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                default:
                    float passo = 40.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 265F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));



                    //float passo = 40.0F; //23.5F;    //294.5F
                    ////float x = datitab.getX();
                    ////float barWidth = dati.getWidth();
                    //for (int i = 0; i <= Labels.Count-1; ++i)
                    //    if (i == 0)
                    //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 270F + i, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    //    else
                    //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 270F + (passo * i), yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));


                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, yRect, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
            }


            //if (dati.dataTab.Rows.Count == 4)
            //{
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //}
            //else
            //{
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //}

            dim += datitab.GetRowDim() * datitab.getNumRow();
        }

        protected string[] setTableForTable()
        {
            string[] Columns = new String[6];
            //eventuali operazioni sul dataset
            Columns[0] = "Descrizione";
            Columns[1] = "Controvalore";
            Columns[2] = "Percentuale";
            Columns[3] = "Red";
            Columns[4] = "Green";
            Columns[5] = "Blue";
            return Columns;
        }

        protected string[] setTableForIsto()
        {
            string[] Columns = new String[4];
            Columns[0] = "Percentuale";
            Columns[1] = "Red";
            Columns[2] = "Green";
            Columns[3] = "Blue";
            return Columns;
        }

        /***** Fix per FD 30/05/2023 - Pino ****/
        protected string[] setTableForIsto190()
        {
            string[] Columns = new String[4];
            Columns[0] = "percentuale_modello";
            Columns[1] = "Red";
            Columns[2] = "Green";
            Columns[3] = "Blue";
            return Columns;
        }
        /***************************************/


        protected string[] setTableForIstoESG()
        {
            string[] Columns = new String[4];
            Columns[0] = "PercentualeESG";
            Columns[1] = "Red";
            Columns[2] = "Green";
            Columns[3] = "Blue";
            return Columns;
        }

        protected string[] setTableForTableNoControvalore()
        {
            string[] Columns = new String[5];
            //eventuali operazioni sul dataset
            Columns[0] = "Descrizione";
            Columns[1] = "Percentuale";
            Columns[2] = "Red";
            Columns[3] = "Green";
            Columns[4] = "Blue";
            return Columns;
        }

        /*** Fix FD 30/05/2023 - Pino ***/
        protected string[] setTableForFD()
        {
            string[] Columns = new String[6];
            //eventuali operazioni sul dataset
            Columns[0] = "AssetClassName";
            Columns[1] = "PercentualeString";
            Columns[2] = "percentuale_modello_string";
            Columns[3] = "Red";
            Columns[4] = "Green";
            Columns[5] = "Blue";
            return Columns;
        }

        protected string[] setTableForFDAssetClass()
        {
            string[] Columns = new String[6];
            //eventuali operazioni sul dataset
            Columns[0] = "AssetClassName";
            Columns[1] = "Percentuale";
            Columns[2] = "percentuale_modello";
            Columns[3] = "Red";
            Columns[4] = "Green";
            Columns[5] = "Blue";
            return Columns;
        }
        /********************************/

        protected void writeSezioneComboSX(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();

            datitab.table = tabTortaTabella;
            vista = datitab.table;

            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCellSpace(0);


            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTotale = 0;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTotale != null)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
            if (document.checkMargin(ChartHeigth + 20 + datitab.GetRowDim() * 2)) document.addPage();

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);
                else
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
            }
            document.setChapterHeader(Header);


            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto());

            dati.setHeight(ChartHeigth);
            dati.setWidth(140);
            Istogramma isto = new Istogramma();
            document.InsertGrafico(isto.getGrafico(dati), 100, document.getLastPos());
            dim += (ChartHeigth + 20);
            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin((datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTotale)) + dim))
                {
                    MaxRow = document.getWritableRow(datitab.GetRowDim(), false) - (int)(dim / datitab.GetRowDim()) - 1;
                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {

                        if (i < MaxRow - (rTotTortaContoCorrenteBancaFideuram + rTotTotale + rTotTortaPatrimonioNonRappresentabile + 2))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                datitab.table = view.ToTable(false, setTableForTable());
                datitab.setY(document.getLastPos() + dim);
                datitab.setX(document.getMargineLeft());
                //setta posizione tabella
                document.InsertTable(tab.getTabella(datitab));
                dim += datitab.GetRowDim() * (datitab.getNumRow() + 1);

                if (cut)
                {
                    document.changePage(237, dim);
                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    salto = true;
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                }
            }

            datitab = new DatiTabella();

            if (tabTortaTotali != null)
            {
                datitab.table = tabTortaTotali;
                datitab.setY(document.getLastPos() + dim);
                datitab.setX(document.getMargineLeft());
                datitab.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true, 7);
                datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true, 7);
                datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true, 7);
                document.InsertTable(tab.getTabella(datitab));
                dim += datitab.GetRowDim() * datitab.getNumRow();

            }



            if (tabTortaPatrimonioNonRappresentabile != null)
            {
                DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
                datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;

                datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
                datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
                datitabPatrimonioNonRappresentabile.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
                dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            }


            if (tabTortaContoCorrenteBancaFideuram != null)
            {
                DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();
                datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;

                datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
                datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
                datitabContoCorrenteBancaFideuram.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
                dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            }

            if (tabTortaPartiteViaggianti != null)
            {
                DatiTabella datitabPartiteViaggianti = new DatiTabella();
                datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

                datitabPartiteViaggianti.setY(document.getLastPos() + dim);
                datitabPartiteViaggianti.setX(document.getMargineLeft());
                datitabPartiteViaggianti.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
                dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            }

            if (tabTotale != null)
            {
                DatiTabella datitabContoTotale = new DatiTabella();
                tabTotale.Columns.Add();
                datitabContoTotale.table = tabTotale;

                datitabContoTotale.setY(document.getLastPos() + dim);
                datitabContoTotale.setX(document.getMargineLeft());
                datitabContoTotale.setCell(115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true, 7);
                datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true, 7);
                datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true, 7);

                document.InsertTable(tab.getTabella(datitabContoTotale));
                dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            }

        }

        protected void writeSezione167()
        {

        }

        protected void writeSezione148(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();
            datitab.table = tabTortaTabella;
            float MargineTop;


            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            MargineTop = document.getLastPos();

            datitab.table.Columns[1].Caption = string.Empty;


            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();

            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            // ********************Modifica Andrea ***********************************************//
            datitab.setCell(0, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false, 0); // 90
            //************************************************************************************//
            datitab.setCell(125, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); // 120
            datitab.setCellSpace(0);

            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTortaLineaSelf = 0;
            int rTotTotale = 0;
            int imposs = 1000;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTortaLineaSelf != null)
                rTotTortaLineaSelf = tabTortaLineaSelf.Rows.Count;



            if (tabTotale != null && imposs == 3)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            //if (_noIndicizzato)
            //    document.setTitolo("SOSTITUIRE_TITOLO");
            //else

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                // Inizio: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                if ((datathread.TipoReport.ToUpper() == "DIAGNOSI") && ((datathread.SezioneReport.Codice == "S153") || (datathread.SezioneReport.Codice == "S154") || (datathread.SezioneReport.Codice == "S163")))
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest,"), 0, 520, 8);

                }
                // Fine: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                else if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                {
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);

                    if (datathread.SezioneReport.Codice == "FD148")
                    {
                        string testo = "In questa scheda è riportata la classificazione del suo patrimonio finanziario presso $/Banca/$ sulla base delle principali asset class finanziarie a cui è esposto, con evidenza del peso percentuale di ciascuna.";
                        document.setChapterHeader(testo.Replace("$/Banca/$", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest,"), 0, 520, 8);
                    }
                    else
                        document.setChapterHeader(Header);

                }
                else
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);

                    //  document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete), 0, 520, 8);

                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest,"), 0, Convert.ToInt32(document.getLastPos()) - 10, 520, 8);
                }

            }

            //document.setHeaderSpace();

            #region Nuova Tabella
            decimal totaleSelfNegFO = datathread.Periodico ? datathread.GetSelfNegativeValue("FO") : 0;
            decimal totalNegativeCurrentAccountValue = datathread.Periodico ? datathread.TotalNegativeCurrentAccountValue : 0;
            decimal GPEligoFondi = datathread.GPEligoFondi;
            decimal GPEligoTitoli = datathread.GPEligoTitoli;
            // decimal GradoCopertura = datathread.GradoCoperturaMacroAssetInterno;
            decimal PatrimonioTerzi = datathread.Patrimonioterzictv;
            decimal ProdottiNonRapp = datathread.PatrimonioNonRappresentabileFI;
            decimal PatrBancaSez = datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente - datathread.PartiteViaggiantiInvestimento - datathread.PartiteViaggiantiDisinvestimento - datathread.PatrimonioNonRappresentabileFI;
            decimal GradoCopertura = PatrBancaSez / datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente * 100;
            decimal PartiteViaggianti = datathread.PartiteViaggiantiInvestimento + datathread.PartiteViaggiantiDisinvestimento;


            DataTable _tmpTotPF = tabTortaTotali.Copy(); //set.Tables["MacroAssetTotale"];
            _tmpTotPF.Columns.Remove("Percentuale");

            if (totalNegativeCurrentAccountValue != 0 || totaleSelfNegFO != 0 || GPEligoFondi < 0 || GPEligoTitoli < 0 || ((GradoCopertura >= 0 && GradoCopertura < 100) && (ProdottiNonRapp != 0 || PartiteViaggianti != 0)))
            {
                _tmpTotPF.Rows[0][0] = "Patrimonio /$Banca$/ (€) *".Replace("/$Banca$/", datathread.NomeRete);
            }
            else
            {
                _tmpTotPF.Rows[0][0] = "Patrimonio /$Banca$/ (€)".Replace("/$Banca$/", datathread.NomeRete);
            }

            DatiTabella datitabPF = new DatiTabella();
            datitabPF.table = _tmpTotPF;



            datitabPF.setY(document.getLastPos() + 10);
            datitabPF.setX(document.getMargineLeft());
            datitabPF.setCell(220, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); //Andrea Modifica 14062022 190 ---> 220
            //datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabPF.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false);


            logger.Info(string.Concat("Periodico ", datathread.Periodico.ToString()));

            if (datathread.Periodico)
            {
                var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
                if (idModello == 6)
                    tab.ColoreDirectBankB = "green";
            }
            else
            {
                var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Diagnosi").IdModello;
                logger.Info(string.Concat("Modello ", idModello.ToString()));

                if (idModello == 6)
                    tab.ColoreDirectBankB = "green";
            }



            document.InsertTable(tab.getTabella(datitabPF));
            #endregion

            document.setHeaderSpace(40);


            #region Grafico
            //// Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            //view.RowFilter = "";
            //dati.dataTab = view.ToTable(false, this.setTableForIsto());

            //switch (dati.dataTab.Rows.Count)
            //{
            //    case 3:
            //        dati.setHeight(ChartHeigth - 25);
            //        break;
            //    case 4:
            //        dati.setHeight(ChartHeigth);
            //        //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
            //        break;
            //    case 5:
            //        dati.setHeight(ChartHeigth + 15);
            //        break;
            //    default:
            //        dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 2.5)));




            //        break;
            //}

            //dati.setWidth(200);
            //Istogramma isto = new Istogramma();
            ////document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            //document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); /// Buona


            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
            #endregion

            var xrowDim = datitab.GetRowDim();

            if (tabTortaTabella.Rows.Count == 18 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;
            }

            if (tabTortaTabella.Rows.Count == 19) // && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;
            }

            datitab.SetRowDim(xrowDim);

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale) + dim))
                {

                    if (datathread.Periodico)
                    {
                        var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
                        if (idModello == 6)  // FD
                            MaxRow = document.getWritableRow(24, false); //23
                        else
                            MaxRow = document.getWritableRow(23, false); //23
                    }
                    else
                        MaxRow = document.getWritableRow(23, false); //23

                    //if (tabTortaTabella.Rows.Count > 17 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
                    // MaxRow = document.getWritableRow(19, false);

                    // ulteriore controllo per evitare che la nota sfori sul footer. Questa gestione è da rifare totalmente.
                    if (document.checkMargin((MaxRow + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale + altezzaNotaPatrimonioNonRappresentabile) * 23))
                        MaxRow -= 1;

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow - (1 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;


                datitab.table = view.ToTable(false, setTableForTable());

                if (datathread.Rete == "S" && datitab.table.Rows.Count > 18) //Andrea Rosaspina
                    datitab.setY(document.getLastPos() - 4);
                else
                    datitab.setY(document.getLastPos());

                datitab.setX(document.getMargineLeft());
                //setta posizione tabella
                document.InsertTable(tab.getTabella(datitab));

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                // Grafico

                dati.dataTab = view.ToTable(false, this.setTableForIsto());

                // Posizionamento delle barre in base al numero di righe
                switch (datitab.table.Rows.Count)
                {
                    case 1:
                        dati.setHeight(ChartHeigth - 63); // modifica Andrea 
                        break;
                    case 2:
                        dati.setHeight(ChartHeigth - 42); // prova Andrea
                        break;
                    case 3:
                        dati.setHeight(ChartHeigth - 18); // prova Andrea
                        break;
                    case 4:
                        dati.setHeight(ChartHeigth);
                        //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                        break;
                    case 5:
                        dati.setHeight(ChartHeigth + 32);
                        break;
                    case 6:
                        dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 2.5) + 3));
                        break;
                    default:
                        /**************************** Fix Aladdin centratura barra Pino ***************************************************/
                        //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 2.5)));
                        dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 25));
                        /*******************************************************************************************************************/

                        /**** Fix - FD PINO 06/06/2023 ****/
                        if (datathread.Rete == "S" && datitab.table.Rows.Count > 18) // Andrea Rosaspina
                            dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 3) - 4));
                        else
                            dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 3) + 5));

                        //if (datathread.Rete == "S" && datitab.table.Rows.Count > 18) // Andrea Rosaspina
                        //    dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 3) - 4));
                        //else
                        //{
                        //    if (datitab.table.Rows.Count > 18)
                        //        dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 3) -4));
                        //    else
                        //        dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow() + 3) + 5));
                        //}
                        /**************************************************************************************/

                        break;
                }


                dati.setWidth(200);
                Istogramma isto = new Istogramma();
                //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
                document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 15); /// Buona 12



                //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

                if (!_saltopaginaeffettuato)
                {
                    //float yRectBarra = Convert.ToSingle((datitab.GetRowDim() * datitab.getNumRow()) + MargineTop + 60);
                    float yRectBarra = Convert.ToSingle((datitab.GetRowDim() * datitab.getNumRow()) + MargineTop + 110);
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra, 199, 23, 0, new RgbColor(255, 255, 255)));
                    //if(datathread.Rete == "S" && tabTortaTabella.Rows.Count == 19)
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra + 5, 199, 34, 0, new RgbColor(255, 255, 255)));
                    //else
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra, 199, 23, 0, new RgbColor(255, 255, 255)));
                }

                if (cut)
                {
                    /*** Fix - FD riposizionamento dell'indicazione del cambio pagina 06/06/2023 - Pino ****/
                    //document.changePage(389, dim + 20);

                    if (datathread.Periodico)
                    {
                        var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
                        if (idModello == 6)  // FD
                            document.changePage(500, dim + 20);
                        else
                            document.changePage(389, dim + 20);
                    }
                    else
                        document.changePage(389, dim + 20);
                    /******************************************************************************************/


                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }

            // Totale della griglia

            datitab = new DatiTabella();
            datitab.table = tabTortaTotali;

            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true, 0);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));


            float yRect = datitab.getY() + 13;
            float yLineHeader = datitab.getY() + 12;

            if (!_saltopaginaeffettuato)

            {
                // Barra colorata del footer anche estesa al grafico
                switch (dati.dataTab.Rows.Count)
                {
                    case 3:
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));
                        break;
                    case 4:
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
                        break;
                    case 5:
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));
                        break;
                    default:
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect, 199, 23, 0, new RgbColor(232, 236, 237)));
                        break;
                }
            }


            //if (dati.dataTab.Rows.Count == 4)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));

            dim += datitab.GetRowDim() * datitab.getNumRow();

            if (tabTortaPatrimonioNonRappresentabile != null)
            {
                DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
                datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;
                datitabPatrimonioNonRappresentabile.SetRowDim(xrowDim);
                datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
                datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
                datitabPatrimonioNonRappresentabile.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
                dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            }


            if (tabTortaContoCorrenteBancaFideuram != null)
            {
                DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();

                datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;
                datitabContoCorrenteBancaFideuram.SetRowDim(xrowDim);
                datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
                datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
                datitabContoCorrenteBancaFideuram.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
                dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            }

            if (tabTortaLineaSelf != null)
            {
                DatiTabella datitabLineaSelf = new DatiTabella();
                datitabLineaSelf.table = tabTortaLineaSelf;
                datitabLineaSelf.SetRowDim(xrowDim);
                datitabLineaSelf.setY(document.getLastPos() + dim);
                datitabLineaSelf.setX(document.getMargineLeft());
                datitabLineaSelf.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabLineaSelf.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabLineaSelf.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabLineaSelf));
                dim += datitabLineaSelf.GetRowDim() * datitabLineaSelf.getNumRow();
            }


            if (tabTortaPartiteViaggianti != null)
            {
                DatiTabella datitabPartiteViaggianti = new DatiTabella();
                datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

                datitabPartiteViaggianti.setY(document.getLastPos() + dim);
                datitabPartiteViaggianti.setX(document.getMargineLeft());
                datitabPartiteViaggianti.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
                datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

                document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
                dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            }

            if (tabTotale != null)
            {
                DatiTabella datitabContoTotale = new DatiTabella();
                tabTotale.Columns.Add();
                datitabContoTotale.table = tabTotale;

                datitabContoTotale.setY(document.getLastPos() + dim);
                datitabContoTotale.setX(document.getMargineLeft());
                datitabContoTotale.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
                datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
                datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

                document.InsertTable(tab.getTabella(datitabContoTotale));
                dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            }

            // Scrittura del footer sul grafico
            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());


            #region Imposto la tabella per il footer del grafico
            DataTable _dt = new DataTable();
            for (int x = 0; x <= Labels.Count - 1; x++)
            {
                _dt.Columns.Add(string.Concat("P", x.ToString()), typeof(String));
            }


            DataRow newrow = _dt.NewRow();

            int y = 0;
            foreach (var item in Labels)
            {
                newrow[string.Concat("P", y.ToString())] = item.ToString();
                y++;
            }
            _dt.Rows.Add(newrow);

            DatiTabella datitabGrafico = new DatiTabella();
            datitabGrafico.table = _dt;

            float _dim = datitab.GetRowDim() * (view.Count + 1);
            if (tabTortaTabella.Rows.Count == 19)
                _dim = datitab.GetRowDim() * (view.Count + 1) - 20;

            datitabGrafico.setY(document.getLastPos() + _dim);
            datitabGrafico.setX(358);
            datitabGrafico.setCell(10, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabGrafico.setCell(50, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabGrafico.setCell(50, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabGrafico.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabGrafico.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitabGrafico));
            #endregion


            if (!_saltopaginaeffettuato)
            {
                switch (dati.dataTab.Rows.Count)
                {
                    case 3:
                        if (!datathread.SezioneReport.Codice.Equals("FD148"))
                        {
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                            //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                            //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        }
                        break;
                    case 4:
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        break;
                    case 5:
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        break;
                    default:
                        //float passo = 40.0F;
                        //for (int i = 0; i <= Labels.Count - 1; ++i)
                        //    if (i == 0)
                        //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 265F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        //    else
                        //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));



                        //float passo = 40.0F; //23.5F;    //294.5F
                        ////float x = datitab.getX();
                        ////float barWidth = dati.getWidth();
                        //for (int i = 0; i <= Labels.Count-1; ++i)
                        //    if (i == 0)
                        //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 270F + i, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        //    else
                        //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 270F + (passo * i), yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));


                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, yRect, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                        ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, yRect, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        break;
                }
            }



            //if (dati.dataTab.Rows.Count == 4)
            //{
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //}
            //else
            //{
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //}

            dim += datitab.GetRowDim() * datitab.getNumRow();
        }

        protected void writeSezione10(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();

            datitab.table = tabTortaTabella;

            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCellSpace(0);


            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTortaLineaSelf = 0;
            int rTotTotale = 0;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTortaLineaSelf != null)
                rTotTortaLineaSelf = tabTortaLineaSelf.Rows.Count;



            if (tabTotale != null)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            //if (_noIndicizzato)
            //    document.setTitolo("SOSTITUIRE_TITOLO");
            //else

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                // Inizio: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                if ((datathread.TipoReport.ToUpper() == "DIAGNOSI") && ((datathread.SezioneReport.Codice == "S153") || (datathread.SezioneReport.Codice == "S154") || (datathread.SezioneReport.Codice == "S163")))
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);

                }
                // Fine: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                else if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                {
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(Header);
                }
                else
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);

                    /*************** modifica Aladdin 14062021 - Pino ******************************************/
                    datathread.SezioneReport.TestoIntroduttivo = "In questa scheda è riportata la classificazione, sulla base delle principali macro asset class finanziarie, del patrimonio che lei detiene presso /$Banca$/, con evidenza dell'esposizione, in termini percentuali, a ciascuna macro asset class.";
                    /*******************************************************************************************/

                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);
                }

            }

            //document.setHeaderSpace(10);

            #region Nuova tabella 
            //DatiTabella datitab1 = new DatiTabella();
            //datitab1.table = tabTortaTotali;

            decimal totalSelfNegGP = datathread.Periodico ? datathread.GetSelfNegativeValue("XY") : 0;
            decimal totaleSelfNegFO = datathread.Periodico ? datathread.GetSelfNegativeValue("FO") : 0;
            decimal totalNegativeCurrentAccountValue = datathread.Periodico ? datathread.TotalNegativeCurrentAccountValue : 0;
            decimal totalePartiteViaggianti = datathread.PartiteViaggiantiDisinvestimento + datathread.PartiteViaggiantiInvestimento;
            decimal GPEligoFondi = datathread.GPEligoFondi;
            decimal GPEligoTitoli = datathread.GPEligoTitoli;
            decimal ProdottiNonRapp = datathread.PatrimonioNonRappresentabileFI;
            decimal PartiteViaggianti = datathread.PartiteViaggiantiInvestimento + datathread.PartiteViaggiantiDisinvestimento;
            // decimal GradoCopertura = datathread.GradoCoperturaMacroAssetInterno;
            decimal PatrBancaSez = datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente - datathread.PartiteViaggiantiInvestimento - datathread.PartiteViaggiantiDisinvestimento - datathread.PatrimonioNonRappresentabileFI;
            decimal GradoCopertura = PatrBancaSez / datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente * 100;
            decimal PatrimonioTerzi = datathread.Patrimonioterzictv;

            DataTable _tmpTotPF = tabTortaTotali.Copy(); //set.Tables["MacroAssetTotale"];       ((GradoCopertura >= 0 && GradoCopertura < 100) && (ProdottiNonRapp != 0 || PartiteViaggianti != 0))
            _tmpTotPF.Columns.Remove("Percentuale");

            if (totalNegativeCurrentAccountValue != 0 || totaleSelfNegFO != 0 || GPEligoFondi < 0 || GPEligoTitoli < 0 || ((GradoCopertura >= 0 && GradoCopertura < 100) && (ProdottiNonRapp != 0 || PartiteViaggianti != 0)))
            {
                _tmpTotPF.Rows[0][0] = "Patrimonio /$Banca$/ (€) *".Replace("/$Banca$/", datathread.NomeRete);
            }
            else
            {
                _tmpTotPF.Rows[0][0] = "Patrimonio /$Banca$/ (€)".Replace("/$Banca$/", datathread.NomeRete);
            }

            DatiTabella datitabPF = new DatiTabella();
            datitabPF.table = _tmpTotPF;


            datitabPF.setY(document.getLastPos() + 10);
            datitabPF.setX(document.getMargineLeft());
            if (datathread.Rete == "W")
            {
                datitabPF.setCell(220, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
                datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false);
            }
            else
            {
                datitabPF.setCell(190, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
                //datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
                datitabPF.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false);
            }
            document.InsertTable(tab.getTabella(datitabPF));
            #endregion

            document.setHeaderSpace(50);

            #region Grafico
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    dati.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    dati.setHeight(ChartHeigth);
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    dati.setHeight(ChartHeigth + 24);
                    break;
                case 6:
                    dati.setHeight(ChartHeigth + 49);
                    break;
                default:
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
                    /**************************** Fix Aladdin centratura barra Pino ***************************************************/
                    //dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * (datitab.getNumRow() + 1)));
                    dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 10));
                    /*******************************************************************************************************************/
                    break;
            }


            dati.setWidth(200);
            Istogramma isto = new Istogramma();
            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); /// Buona
            #endregion

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            var xrowDim = datitab.GetRowDim();

            if (tabTortaTabella.Rows.Count == 18 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;

            }
            datitab.SetRowDim(xrowDim);

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale) + dim))
                {
                    MaxRow = document.getWritableRow(23, false); //23

                    //if (tabTortaTabella.Rows.Count > 17 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
                    // MaxRow = document.getWritableRow(19, false);

                    // ulteriore controllo per evitare che la nota sfori sul footer. Questa gestione è da rifare totalmente.
                    if (document.checkMargin((MaxRow + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale + altezzaNotaPatrimonioNonRappresentabile) * 23))
                        MaxRow -= 1;

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow - (1 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                /********************************* Originale ***********************************************/
                //datitab.table = view.ToTable(false, setTableForTableNoControvalore());

                //datitab.setY(document.getLastPos());
                //datitab.setX(document.getMargineLeft());

                ////setta posizione tabella
                //document.InsertTable(tab.getTabella(datitab));
                /*********************************************************************************************/

                /******************************** Modifica Aladdin 14062021 Pino *************************************************/
                DatiTabella datitabRap = new DatiTabella(tabTortaTabella);
                datitab.table = view.ToTable(false, setTableForTableNoControvalore());
                Tabella tabellaDatiRap = new Tabella(document.getMargineLeft(), document.getLastPos());
                tabellaDatiRap.Header = true;
                tabellaDatiRap.Colonne.Add(new Colonna("Descrizione", "Macro asset class", 175, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaDatiRap.Colonne.Add(new Colonna("Percentuale", "Peso %", 130, TipoAllineamento.DESTRA, false, 9, false));

                if (DirectBanker == "S")
                    tabellaDatiRap.ColoreDirectBankB = "green";


                tabellaDatiRap.Draw(datitabRap, document);
                //SIMBOLI
                int nPallino = 1;
                float yPallino = document.getLastPos() + tabellaDatiRap.AltezzaCella;
                float xPallino = document.getMargineLeft();
                //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
                foreach (DataRow drSimbolo in tabellaDatiRap.Datasource.Rows)
                {
                    RgbColor color =
                        new RgbColor(byte.Parse(drSimbolo["Red"].ToString()), byte.Parse(drSimbolo["Green"].ToString()), byte.Parse(drSimbolo["Blue"].ToString()));
                    ceTe.DynamicPDF.PageElements.Circle simbolo =
                        new ceTe.DynamicPDF.PageElements.Circle(xPallino, yPallino, 10 / 1.8F, color, color);
                    //page.Elements.Add(simbolo);
                    document.getCurrentPage().Elements.Add(simbolo);
                    yPallino += tabellaDatiRap.AltezzaCella;
                    nPallino++;
                }
                /*******************************************************************************************/

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                if (cut)
                {
                    document.changePage(389, dim + 20);
                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }

            // Totale della griglia
            //datitab = new DatiTabella();
            //datitab.table = tabTortaTotali;

            DataTable _tmpTot = tabTortaTotali; //set.Tables["MacroAssetTotale"];
            _tmpTot.Columns.Remove("Controvalore");
            _tmpTot.Rows[0][0] = "TOTALE";

            datitab = new DatiTabella();
            datitab.table = _tmpTot;


            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            //datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));

            float yRect = datitab.getY() + 13;
            float yLineHeader = datitab.getY() + 12;

            // Barra colorata del footer anche estesa al grafico

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                default:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect, 199, 23, 0, new RgbColor(232, 236, 237))); // 358 23
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect + 23, 199, 10, 0, new RgbColor(255, 255, 255)));
                    break;
            }

            //if (dati.dataTab.Rows.Count == 4)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));

            dim += datitab.GetRowDim() * datitab.getNumRow();

            //if (tabTortaPatrimonioNonRappresentabile != null)
            //{
            //    DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
            //    datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;
            //    datitabPatrimonioNonRappresentabile.SetRowDim(xrowDim);
            //    datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
            //    datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
            //    datitabPatrimonioNonRappresentabile.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
            //    dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            //}


            //if (tabTortaContoCorrenteBancaFideuram != null)
            //{
            //    DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();

            //    datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;
            //    datitabContoCorrenteBancaFideuram.SetRowDim(xrowDim);
            //    datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
            //    datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
            //    datitabContoCorrenteBancaFideuram.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
            //    dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            //}

            //if (tabTortaLineaSelf != null)
            //{
            //    DatiTabella datitabLineaSelf = new DatiTabella();
            //    datitabLineaSelf.table = tabTortaLineaSelf;
            //    datitabLineaSelf.SetRowDim(xrowDim);
            //    datitabLineaSelf.setY(document.getLastPos() + dim);
            //    datitabLineaSelf.setX(document.getMargineLeft());
            //    datitabLineaSelf.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabLineaSelf));
            //    dim += datitabLineaSelf.GetRowDim() * datitabLineaSelf.getNumRow();
            //}


            //if (tabTortaPartiteViaggianti != null)
            //{
            //    DatiTabella datitabPartiteViaggianti = new DatiTabella();
            //    datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

            //    datitabPartiteViaggianti.setY(document.getLastPos() + dim);
            //    datitabPartiteViaggianti.setX(document.getMargineLeft());
            //    datitabPartiteViaggianti.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
            //    dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            //}

            //if (tabTotale != null)
            //{
            //    DatiTabella datitabContoTotale = new DatiTabella();
            //    tabTotale.Columns.Add();
            //    datitabContoTotale.table = tabTotale;

            //    datitabContoTotale.setY(document.getLastPos() + dim);
            //    datitabContoTotale.setX(document.getMargineLeft());
            //    datitabContoTotale.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            //    document.InsertTable(tab.getTabella(datitabContoTotale));
            //    dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            //}

            // Scrittura del footer sul grafico
            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                default:
                    //float passo = 40.0F;
                    float passo = 45.0F;
                    //float passo = 50.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                        {
                            if (dati.getValMin() < 0)
                                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 280F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                            else
                                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        }
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
            }

            dim += datitab.GetRowDim() * datitab.getNumRow();
        }

        protected void writeSezione163(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();

            datitab.table = tabTortaTabella;

            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCellSpace(0);


            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTortaLineaSelf = 0;
            int rTotTotale = 0;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTortaLineaSelf != null)
                rTotTortaLineaSelf = tabTortaLineaSelf.Rows.Count;



            if (tabTotale != null)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            //if (_noIndicizzato)
            //    document.setTitolo("SOSTITUIRE_TITOLO");
            //else

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                // Inizio: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                if ((datathread.TipoReport.ToUpper() == "DIAGNOSI") && ((datathread.SezioneReport.Codice == "S153") || (datathread.SezioneReport.Codice == "S154") || (datathread.SezioneReport.Codice == "S163")))
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);

                }
                // Fine: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                else if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                {
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(Header);
                }
                else
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);

                    /*************** modifica Aladdin 14062021 - Pino ******************************************/
                    datathread.SezioneReport.TestoIntroduttivo = "In questa scheda è riportata la classificazione, sulla base delle principali macro asset class finanziarie, del patrimonio che lei detiene presso /$Banca$/, con evidenza dell'esposizione, in termini percentuali, a ciascuna macro asset class.";
                    /*******************************************************************************************/

                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest,"), 0, 520, 8);
                }

            }

            //document.setHeaderSpace(10);

            #region Nuova tabella 
            //DatiTabella datitab1 = new DatiTabella();
            //datitab1.table = tabTortaTotali;
            decimal GradoCopertura = 100;
            if (datathread.Patrimonioterzictv != 0)
                GradoCopertura = (datathread.Patrimonioterzictv - datathread.PatrimonioNonRappresentabileAI) / (datathread.Patrimonioterzictv) * 100;
            decimal PatrimonioTerziNonRapp = datathread.PatrimonioNonRappresentabileAI;
            decimal PatrimonioTerzi = datathread.Patrimonioterzictv;

            DataTable _tmpTotPF = tabTortaTotali.Copy(); //set.Tables["MacroAssetTotale"];
            _tmpTotPF.Columns.Remove("Percentuale");
            if (PatrimonioTerzi < 0 || (GradoCopertura >= 0 && GradoCopertura < 100))
                _tmpTotPF.Rows[0][0] = "Patrimonio altri Istituti (€)*";
            else
                _tmpTotPF.Rows[0][0] = "Patrimonio altri Istituti (€)";

            DatiTabella datitabPF = new DatiTabella();
            datitabPF.table = _tmpTotPF;


            datitabPF.setY(document.getLastPos() + 10);
            datitabPF.setX(document.getMargineLeft());
            datitabPF.setCell(155, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabPF.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false);

            document.InsertTable(tab.getTabella(datitabPF));
            #endregion

            document.setHeaderSpace(50);

            #region Grafico
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto());
            switch (dati.dataTab.Rows.Count)
            {
                case 1:
                    dati.setHeight(ChartHeigth - 69);
                    break;
                case 2:
                    dati.setHeight(ChartHeigth - 43);
                    break;

                case 3:
                    dati.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    dati.setHeight(ChartHeigth);
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    dati.setHeight(ChartHeigth + 24);
                    break;
                case 6:
                    dati.setHeight(ChartHeigth + 43);
                    break;
                case 7:
                    dati.setHeight(ChartHeigth + 72); //63
                    break;
                default:
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
                    dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * (datitab.getNumRow() + 1)) + datitab.GetRowDim() + 10);
                    break;
            }

            dati.setWidth(200);
            Istogramma isto = new Istogramma();
            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); /// Buona
            #endregion

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            var xrowDim = datitab.GetRowDim();

            if (tabTortaTabella.Rows.Count == 18 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;

            }
            datitab.SetRowDim(xrowDim);

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale) + dim))
                {
                    MaxRow = document.getWritableRow(23, false); //23

                    //if (tabTortaTabella.Rows.Count > 17 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
                    // MaxRow = document.getWritableRow(19, false);

                    // ulteriore controllo per evitare che la nota sfori sul footer. Questa gestione è da rifare totalmente.
                    if (document.checkMargin((MaxRow + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale + altezzaNotaPatrimonioNonRappresentabile) * 23))
                        MaxRow -= 1;

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow - (1 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                /********************************* Originale ***********************************************/
                //datitab.table = view.ToTable(false, setTableForTableNoControvalore());

                //datitab.setY(document.getLastPos());
                //datitab.setX(document.getMargineLeft());

                ////setta posizione tabella
                //document.InsertTable(tab.getTabella(datitab));
                /*********************************************************************************************/

                /******************************** Modifica Aladdin 14062021 Pino *************************************************/
                DatiTabella datitabRap = new DatiTabella(tabTortaTabella);
                datitab.table = view.ToTable(false, setTableForTableNoControvalore());
                Tabella tabellaDatiRap = new Tabella(document.getMargineLeft(), document.getLastPos());
                tabellaDatiRap.Header = true;
                tabellaDatiRap.Colonne.Add(new Colonna("Descrizione", "Macro asset class", 175, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaDatiRap.Colonne.Add(new Colonna("Percentuale", "Peso %", 130, TipoAllineamento.DESTRA, false, 9, false));
                tabellaDatiRap.Draw(datitabRap, document);
                //SIMBOLI
                int nPallino = 1;
                float yPallino = document.getLastPos() + tabellaDatiRap.AltezzaCella;
                float xPallino = document.getMargineLeft();
                //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
                foreach (DataRow drSimbolo in tabellaDatiRap.Datasource.Rows)
                {
                    RgbColor color =
                        new RgbColor(byte.Parse(drSimbolo["Red"].ToString()), byte.Parse(drSimbolo["Green"].ToString()), byte.Parse(drSimbolo["Blue"].ToString()));
                    ceTe.DynamicPDF.PageElements.Circle simbolo =
                        new ceTe.DynamicPDF.PageElements.Circle(xPallino, yPallino, 10 / 1.8F, color, color);
                    //page.Elements.Add(simbolo);
                    document.getCurrentPage().Elements.Add(simbolo);
                    yPallino += tabellaDatiRap.AltezzaCella;
                    nPallino++;
                }
                /*******************************************************************************************/

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                if (cut)
                {
                    document.changePage(389, dim + 20);
                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }

            // Totale della griglia
            //datitab = new DatiTabella();
            //datitab.table = tabTortaTotali;

            DataTable _tmpTot = tabTortaTotali; //set.Tables["MacroAssetTotale"];
            _tmpTot.Columns.Remove("Controvalore");
            _tmpTot.Rows[0][0] = "TOTALE";

            datitab = new DatiTabella();
            datitab.table = _tmpTot;


            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            //datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));

            float yRect = datitab.getY() + 13;
            float yLineHeader = datitab.getY() + 12;

            // Barra colorata del footer anche estesa al grafico
            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                default:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
            }

            //if (dati.dataTab.Rows.Count == 4)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));

            dim += datitab.GetRowDim() * datitab.getNumRow();

            //if (tabTortaPatrimonioNonRappresentabile != null)
            //{
            //    DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
            //    datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;
            //    datitabPatrimonioNonRappresentabile.SetRowDim(xrowDim);
            //    datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
            //    datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
            //    datitabPatrimonioNonRappresentabile.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
            //    dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            //}


            //if (tabTortaContoCorrenteBancaFideuram != null)
            //{
            //    DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();

            //    datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;
            //    datitabContoCorrenteBancaFideuram.SetRowDim(xrowDim);
            //    datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
            //    datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
            //    datitabContoCorrenteBancaFideuram.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
            //    dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            //}

            //if (tabTortaLineaSelf != null)
            //{
            //    DatiTabella datitabLineaSelf = new DatiTabella();
            //    datitabLineaSelf.table = tabTortaLineaSelf;
            //    datitabLineaSelf.SetRowDim(xrowDim);
            //    datitabLineaSelf.setY(document.getLastPos() + dim);
            //    datitabLineaSelf.setX(document.getMargineLeft());
            //    datitabLineaSelf.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabLineaSelf));
            //    dim += datitabLineaSelf.GetRowDim() * datitabLineaSelf.getNumRow();
            //}


            //if (tabTortaPartiteViaggianti != null)
            //{
            //    DatiTabella datitabPartiteViaggianti = new DatiTabella();
            //    datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

            //    datitabPartiteViaggianti.setY(document.getLastPos() + dim);
            //    datitabPartiteViaggianti.setX(document.getMargineLeft());
            //    datitabPartiteViaggianti.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
            //    dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            //}

            //if (tabTotale != null)
            //{
            //    DatiTabella datitabContoTotale = new DatiTabella();
            //    tabTotale.Columns.Add();
            //    datitabContoTotale.table = tabTotale;

            //    datitabContoTotale.setY(document.getLastPos() + dim);
            //    datitabContoTotale.setX(document.getMargineLeft());
            //    datitabContoTotale.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            //    document.InsertTable(tab.getTabella(datitabContoTotale));
            //    dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            //}

            // Scrittura del footer sul grafico
            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                default:
                    //float passo = 40.0F;
                    //for (int i = 0; i <= Labels.Count - 1; ++i)
                    //    if (i == 0)
                    //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 265F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    //    else
                    //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));


                    //float passo = 40.0F;
                    float passo = 45.0F;
                    //float passo = 50.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                        {
                            if (dati.getValMin() < 0)
                                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 280F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                            else
                                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        }
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));



                    break;

            }

            dim += datitab.GetRowDim() * datitab.getNumRow();
        }

        protected void writeSezione154(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();

            datitab.table = tabTortaTabella;

            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCellSpace(0);


            int rTotTortaPatrimonioNonRappresentabile = 0;
            int rTotTortaContoCorrenteBancaFideuram = 0;
            int rTotTortaLineaSelf = 0;
            int rTotTotale = 0;

            if (tabTortaPatrimonioNonRappresentabile != null)
                rTotTortaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile.Rows.Count;

            if (tabTortaContoCorrenteBancaFideuram != null)
                rTotTortaContoCorrenteBancaFideuram = tabTortaContoCorrenteBancaFideuram.Rows.Count;

            if (tabTortaLineaSelf != null)
                rTotTortaLineaSelf = tabTortaLineaSelf.Rows.Count;



            if (tabTotale != null)
                rTotTotale = tabTotale.Rows.Count;

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            //if (_noIndicizzato)
            //    document.setTitolo("SOSTITUIRE_TITOLO");
            //else

            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                // Inizio: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                if ((datathread.TipoReport.ToUpper() == "DIAGNOSI") && ((datathread.SezioneReport.Codice == "S153") || (datathread.SezioneReport.Codice == "S154") || (datathread.SezioneReport.Codice == "S163")))
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);

                }
                // Fine: aggiunto per via del font = 8 sul nuovo report di Diagnosi
                else if (datathread.TipoReport.ToUpper() == "DIAGNOSI")
                {
                    document.setSezTitoloDiagnosi(datathread.SezioneReport.Titolo);
                    document.setChapterHeader(Header);
                }
                else
                {
                    document.setSezTitolo(datathread.SezioneReport.Titolo);

                    /*************** modifica Aladdin 14062021 - Pino ******************************************/
                    datathread.SezioneReport.TestoIntroduttivo = "In questa scheda è riportata la classificazione, sulla base delle principali macro asset class finanziarie, del patrimonio che lei detiene presso /$Banca$/, con evidenza dell'esposizione, in termini percentuali, a ciascuna macro asset class.";
                    /*******************************************************************************************/

                    document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);
                }

            }

            //document.setHeaderSpace(10);

            #region Nuova tabella 
            //DatiTabella datitab1 = new DatiTabella();
            //datitab1.table = tabTortaTotali;
            decimal totalSelfNegGP = datathread.Periodico ? datathread.GetSelfNegativeValue("XY") : 0;
            decimal totaleSelfNegFO = datathread.Periodico ? datathread.GetSelfNegativeValue("FO") : 0;
            decimal totalNegativeCurrentAccountValue = datathread.Periodico ? datathread.TotalNegativeCurrentAccountValue : 0;
            decimal GPEligoFondi = datathread.GPEligoFondi;
            decimal GPEligoTitoli = datathread.GPEligoTitoli;
            decimal ProdottiNonRapp = datathread.PatrimonioNonRappresentabileCompl;
            decimal PartiteViaggianti = datathread.PartiteViaggiantiInvestimento + datathread.PartiteViaggiantiDisinvestimento;
            // decimal GradoCopertura = datathread.CoperturaTotaleRisorseFinanziarie;
            decimal PatrBancaSez = datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente + datathread.Patrimonioterzictv - datathread.PartiteViaggiantiInvestimento - datathread.PartiteViaggiantiDisinvestimento - datathread.PatrimonioNonRappresentabileCompl;
            decimal GradoCopertura = PatrBancaSez / (datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente + datathread.Patrimonioterzictv) * 100;
            decimal PatrimonioTerzi = datathread.Patrimonioterzictv;

            DataTable _tmpTotPF = tabTortaTotali.Copy(); //set.Tables["MacroAssetTotale"];
            _tmpTotPF.Columns.Remove("Percentuale");
            if (totalNegativeCurrentAccountValue != 0 || totaleSelfNegFO != 0 || GPEligoFondi < 0 || GPEligoTitoli < 0 || (GradoCopertura >= 0 && GradoCopertura < 100))
                _tmpTotPF.Rows[0][0] = "Patrimonio Finanziario Complessivo (€)*";
            else
                _tmpTotPF.Rows[0][0] = "Patrimonio Finanziario Complessivo (€)";

            DatiTabella datitabPF = new DatiTabella();
            datitabPF.table = _tmpTotPF;


            datitabPF.setY(document.getLastPos() + 10);
            datitabPF.setX(document.getMargineLeft());
            datitabPF.setCell(230, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitabPF.setCell(100, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);

            document.InsertTable(tab.getTabella(datitabPF));
            #endregion

            // document.setHeaderSpace(50);
            document.setHeaderSpace(40);

            #region Grafico
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    dati.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    dati.setHeight(ChartHeigth);
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    dati.setHeight(ChartHeigth + 24);
                    break;
                case 6:
                    dati.setHeight(ChartHeigth + 48);
                    break;
                case 7:
                    dati.setHeight(ChartHeigth + 72); //62
                    break;
                default:
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
                    dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 10);
                    break;
            }

            dati.setWidth(200);
            Istogramma isto = new Istogramma();
            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); /// Buona
            #endregion

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            var xrowDim = datitab.GetRowDim();

            if (tabTortaTabella.Rows.Count == 18 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
            {
                xrowDim--;

            }
            datitab.SetRowDim(xrowDim);

            while (cut)
            {
                if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale) + dim))
                {
                    MaxRow = document.getWritableRow(23, false); //23

                    //if (tabTortaTabella.Rows.Count > 17 && tabTortaPatrimonioNonRappresentabile.Rows.Count + tabTortaContoCorrenteBancaFideuram.Rows.Count >= 1)
                    // MaxRow = document.getWritableRow(19, false);

                    // ulteriore controllo per evitare che la nota sfori sul footer. Questa gestione è da rifare totalmente.
                    if (document.checkMargin((MaxRow + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale + altezzaNotaPatrimonioNonRappresentabile) * 23))
                        MaxRow -= 1;

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow - (1 + rTotTortaPatrimonioNonRappresentabile + rTotTortaContoCorrenteBancaFideuram + rTotTortaLineaSelf + rTotTotale))
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                /********************************* Originale ***********************************************/
                //datitab.table = view.ToTable(false, setTableForTableNoControvalore());

                //datitab.setY(document.getLastPos());
                //datitab.setX(document.getMargineLeft());

                ////setta posizione tabella
                //document.InsertTable(tab.getTabella(datitab));
                /*********************************************************************************************/

                /******************************** Modifica Aladdin 14062021 Pino *************************************************/
                DatiTabella datitabRap = new DatiTabella(tabTortaTabella);
                datitab.table = view.ToTable(false, setTableForTableNoControvalore());
                Tabella tabellaDatiRap = new Tabella(document.getMargineLeft(), document.getLastPos());
                tabellaDatiRap.Header = true;
                tabellaDatiRap.Colonne.Add(new Colonna("Descrizione", "Macro asset class", 175, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaDatiRap.Colonne.Add(new Colonna("Percentuale", "Peso %", 130, TipoAllineamento.DESTRA, false, 9, false));
                tabellaDatiRap.Draw(datitabRap, document);
                //SIMBOLI
                int nPallino = 1;
                float yPallino = document.getLastPos() + tabellaDatiRap.AltezzaCella;
                float xPallino = document.getMargineLeft();
                //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
                foreach (DataRow drSimbolo in tabellaDatiRap.Datasource.Rows)
                {
                    RgbColor color =
                        new RgbColor(byte.Parse(drSimbolo["Red"].ToString()), byte.Parse(drSimbolo["Green"].ToString()), byte.Parse(drSimbolo["Blue"].ToString()));
                    ceTe.DynamicPDF.PageElements.Circle simbolo =
                        new ceTe.DynamicPDF.PageElements.Circle(xPallino, yPallino, 10 / 1.8F, color, color);
                    //page.Elements.Add(simbolo);
                    document.getCurrentPage().Elements.Add(simbolo);
                    yPallino += tabellaDatiRap.AltezzaCella;
                    nPallino++;
                }
                /*******************************************************************************************/

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                if (cut)
                {
                    document.changePage(389, dim + 20);
                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }

            // Totale della griglia
            //datitab = new DatiTabella();
            //datitab.table = tabTortaTotali;

            DataTable _tmpTot = tabTortaTotali; //set.Tables["MacroAssetTotale"];
            _tmpTot.Columns.Remove("Controvalore");
            _tmpTot.Rows[0][0] = "TOTALE";

            datitab = new DatiTabella();
            datitab.table = _tmpTot;


            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            //datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));

            float yRect = datitab.getY() + 13;
            float yLineHeader = datitab.getY() + 12;

            // Barra colorata del footer anche estesa al grafico
            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
                default:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRect, 199, 23, 0, new RgbColor(232, 236, 237)));
                    break;
            }

            //if (dati.dataTab.Rows.Count == 4)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 105, 199, 23, 0, new RgbColor(232, 236, 237)));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 128, 199, 23, 0, new RgbColor(232, 236, 237)));

            dim += datitab.GetRowDim() * datitab.getNumRow();

            //if (tabTortaPatrimonioNonRappresentabile != null)
            //{
            //    DatiTabella datitabPatrimonioNonRappresentabile = new DatiTabella();
            //    datitabPatrimonioNonRappresentabile.table = tabTortaPatrimonioNonRappresentabile;
            //    datitabPatrimonioNonRappresentabile.SetRowDim(xrowDim);
            //    datitabPatrimonioNonRappresentabile.setY(document.getLastPos() + dim);
            //    datitabPatrimonioNonRappresentabile.setX(document.getMargineLeft());
            //    datitabPatrimonioNonRappresentabile.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPatrimonioNonRappresentabile.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPatrimonioNonRappresentabile));
            //    dim += datitabPatrimonioNonRappresentabile.GetRowDim() * datitabPatrimonioNonRappresentabile.getNumRow();
            //}


            //if (tabTortaContoCorrenteBancaFideuram != null)
            //{
            //    DatiTabella datitabContoCorrenteBancaFideuram = new DatiTabella();

            //    datitabContoCorrenteBancaFideuram.table = tabTortaContoCorrenteBancaFideuram;
            //    datitabContoCorrenteBancaFideuram.SetRowDim(xrowDim);
            //    datitabContoCorrenteBancaFideuram.setY(document.getLastPos() + dim);
            //    datitabContoCorrenteBancaFideuram.setX(document.getMargineLeft());
            //    datitabContoCorrenteBancaFideuram.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabContoCorrenteBancaFideuram.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabContoCorrenteBancaFideuram));
            //    dim += datitabContoCorrenteBancaFideuram.GetRowDim() * datitabContoCorrenteBancaFideuram.getNumRow();
            //}

            //if (tabTortaLineaSelf != null)
            //{
            //    DatiTabella datitabLineaSelf = new DatiTabella();
            //    datitabLineaSelf.table = tabTortaLineaSelf;
            //    datitabLineaSelf.SetRowDim(xrowDim);
            //    datitabLineaSelf.setY(document.getLastPos() + dim);
            //    datitabLineaSelf.setX(document.getMargineLeft());
            //    datitabLineaSelf.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabLineaSelf.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabLineaSelf));
            //    dim += datitabLineaSelf.GetRowDim() * datitabLineaSelf.getNumRow();
            //}


            //if (tabTortaPartiteViaggianti != null)
            //{
            //    DatiTabella datitabPartiteViaggianti = new DatiTabella();
            //    datitabPartiteViaggianti.table = tabTortaPartiteViaggianti;

            //    datitabPartiteViaggianti.setY(document.getLastPos() + dim);
            //    datitabPartiteViaggianti.setX(document.getMargineLeft());
            //    datitabPartiteViaggianti.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            //    datitabPartiteViaggianti.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);

            //    document.InsertTable(tab.getTabella(datitabPartiteViaggianti));
            //    dim += datitabPartiteViaggianti.GetRowDim() * datitabPartiteViaggianti.getNumRow();
            //}

            //if (tabTotale != null)
            //{
            //    DatiTabella datitabContoTotale = new DatiTabella();
            //    tabTotale.Columns.Add();
            //    datitabContoTotale.table = tabTotale;

            //    datitabContoTotale.setY(document.getLastPos() + dim);
            //    datitabContoTotale.setX(document.getMargineLeft());
            //    datitabContoTotale.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            //    datitabContoTotale.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            //    document.InsertTable(tab.getTabella(datitabContoTotale));
            //    dim += datitabContoTotale.GetRowDim() * datitabContoTotale.getNumRow();
            //}

            // Scrittura del footer sul grafico
            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
                case 4:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 5:
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 6:
                    float passo = 40.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 280F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                case 7:
                    passo = 40.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 280F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    break;
                default:
                    passo = 40.0F;
                    for (int i = 0; i <= Labels.Count - 1; ++i)
                        if (i == 0)
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 265F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                        else
                            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                    break;
            }

            dim += datitab.GetRowDim() * datitab.getNumRow();
        }

        /******* ESG - Per la sezione S181 seconda tabella Pino *********/
        protected void writeSezione181(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();

            datitab.table = tabCaratteristiche;

            //vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            #region Grafico
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIstoESG());

            // serve per dimensionare la posizione in altezza delle barre del grafico
            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    dati.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    dati.setHeight(ChartHeigth);
                    //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    dati.setHeight(ChartHeigth + 24);
                    break;
                case 6:
                    dati.setHeight(ChartHeigth + 49);
                    break;
                default:
                    dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 10));
                    break;
            }

            // Serve per dimensionare l'ampiezza del grafico
            dati.setWidth(400);
            dati.ActLabelSeries();
            Istogramma isto = new Istogramma();

            //IstoFarfallaS133BIS isto = new IstoFarfallaS133BIS(750, 85);
            document.InsertGrafico(isto.getGraficoCaratteristicheESG(dati), 128, document.getLastPos() + 22); /// Buona
            #endregion
        }
        /****************************************************************/

        /***** FD - Per la sezione FD200 29/05/2023 - Pino *****/
        protected void writeSezione200(DataThread datathread)
        {
            int MaxRow;
            bool cut = true;
            DataTable vista;
            Tabella tab = new Tabella();
            float MargineTop;

            datitab.table = tabMacroAssetClass;

            vista = datitab.table;

            if (document == null)
                document = datathread.DocumentPDF;

            MargineTop = document.getLastPos();

            datitab.table.Columns[1].Caption = string.Empty;


            datitab.setY(document.getLastPos());
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();

            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            // ********************Modifica Andrea ***********************************************//
            datitab.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false); // 90
            //************************************************************************************//
            datitab.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false); // 120
            datitab.setCellSpace(10);

            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
            float altezzaNotaPatrimonioNonRappresentabile = tabTortaPatrimonioNonRappresentabile == null ? 0 : tabTortaPatrimonioNonRappresentabile.Rows.Count;
            altezzaNotaPatrimonioNonRappresentabile = altezzaNotaPatrimonioNonRappresentabile * 30;


            //V if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile)) 
            //Aggiunto 30 per non far sforare la S10
            if (document.checkMargin(ChartHeigth + altezzaNotaPatrimonioNonRappresentabile + 30))
                document.addPage();


            if (_noIndicizzato)
                document.setTitolo(datathread.SezioneReport.Titolo);
            else
            {
                document.setChapterHeader(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest,"), 0, Convert.ToInt32(document.getLastPos()) - 10, 520, 8);
            }


            #region Inizio sezione Grafico
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(datitab.table);

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            // Paginazione
            while (cut)
            {
                if (vista.Rows.Count != 0)
                {

                    if (datathread.Periodico)
                    {
                        var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
                        if (idModello == 6)  // FD
                            MaxRow = document.getWritableRow(24, false); //23
                        else
                            MaxRow = document.getWritableRow(23, false); //23
                    }
                    else
                        MaxRow = document.getWritableRow(23, false); //23

                    vista.Columns.Add("ID");
                    int i = 0;
                    cut = false;
                    foreach (DataRow myRow in vista.Rows)
                    {
                        if (i < MaxRow)
                            myRow["ID"] = 1;
                        else
                        {
                            myRow["ID"] = 2;
                            cut = true;
                        }
                        i++;
                    }
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 1");
                }
                else
                    cut = false;

                datitab.table = view.ToTable(false, setTableForFDAssetClass());

                dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);

                #region Grafico Percentuale
                // Grafico
                IstoFarfallaS133BIS graficoCaratteristiche = null;

                if (cut)
                {
                    graficoCaratteristiche = new IstoFarfallaS133BIS(180, 500);  //220 //180
                    graficoCaratteristiche.DocumentPDF = document;
                    graficoCaratteristiche.PositionX = 230;  //145
                    graficoCaratteristiche.PositionY = Convert.ToInt32(document.getLastPos() + 9); //32 //38 //42 //542 //22  //25;
                    graficoCaratteristiche.AxisY_LineColor = true;
                    graficoCaratteristiche.AxisY_Hide = true; //false;
                    graficoCaratteristiche.AxysX_Increment = Convert.ToDecimal(1);
                    graficoCaratteristiche.AxisY_DashStyle = Dundas.Charting.WebControl.ChartDashStyle.DashDot;
                    graficoCaratteristiche.isShadowOffset = false;    // Abilita l'ombreggiatura delle barre per ESG è fissato a 40 
                    graficoCaratteristiche.isPixelPointWidth = "40"; // serve per dimensionare l'altezza delle barre
                    graficoCaratteristiche.BorderLineColor = System.Drawing.Color.FromArgb(0, 0, 0);
                    graficoCaratteristiche.BorderLineWidth = 10;
                }
                else
                {
                    graficoCaratteristiche = new IstoFarfallaS133BIS(220, datitab.GetRowDim() * (datitab.getNumRow()));  //540
                    graficoCaratteristiche.DocumentPDF = document;
                    graficoCaratteristiche.PositionX = 230;  //145
                    graficoCaratteristiche.PositionY = Convert.ToInt32(document.getLastPos() + 9); //32 //38 //42 //542 //22  //25;
                    graficoCaratteristiche.AxisY_LineColor = true;
                    graficoCaratteristiche.AxisY_Hide = true; //false;
                    graficoCaratteristiche.AxysX_Increment = Convert.ToDecimal(1);
                    graficoCaratteristiche.AxisY_DashStyle = Dundas.Charting.WebControl.ChartDashStyle.DashDot;
                    graficoCaratteristiche.isShadowOffset = false;    // Abilita l'ombreggiatura delle barre per ESG è fissato a 40 
                    graficoCaratteristiche.isPixelPointWidth = "40"; // serve per dimensionare l'altezza delle barre
                    graficoCaratteristiche.BorderLineColor = System.Drawing.Color.FromArgb(0, 0, 0);
                    graficoCaratteristiche.BorderLineWidth = 10;
                }

                System.Collections.Generic.List<IValoriSerie> listaValoriPesoRelativo = new System.Collections.Generic.List<IValoriSerie>();
                foreach (var item in datitab.table.AsEnumerable())
                {
                    IValoriSerie IvaloriSeriePesoRelativo = new IValoriSerie();
                    IvaloriSeriePesoRelativo.chiave = item[0].ToString();
                    IvaloriSeriePesoRelativo.valore = Convert.ToDecimal(item[1]);
                    IvaloriSeriePesoRelativo.colore = System.Drawing.Color.FromArgb((int)item["Red"], (int)item["Green"], (int)item["Blue"]);
                    listaValoriPesoRelativo.Add(IvaloriSeriePesoRelativo);
                }

                SerieIstoFarfallaS133BIS seriePesoRelativo = new SerieIstoFarfallaS133BIS();

                seriePesoRelativo = new SerieIstoFarfallaS133BIS();
                seriePesoRelativo.Name = "Caratteristiche%";
                seriePesoRelativo.Values = listaValoriPesoRelativo;
                //seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 105F);
                //seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 100F); //100 // ultimo parametro per aumentare lo spazio tra le barre
                seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -1F, 50.7F, 100F); //100 // ultimo parametro per aumentare lo spazio tra le barre
                seriePesoRelativo.AxisY_CustumizedByValues = false;
                seriePesoRelativo.ReverseAxisY = false;
                seriePesoRelativo.Axisy_Interval = 0;  //10

                graficoCaratteristiche.SerieList.Add(seriePesoRelativo);
                graficoCaratteristiche.Draw();

                #endregion
                //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

                #region Header per la tabella
                DataTable table = view.ToTable(false, this.setTableForFD());

                table.Columns["PercentualeString"].ColumnName = "Percentuale";
                table.Columns["percentuale_modello_string"].ColumnName = "Percentuale Modello";

                datitab.table = table;

                // Impostazione e stampa header tabella
                if (datathread.Rete == "S" && datitab.table.Rows.Count > 18) //Andrea Rosaspina
                    datitab.setY(document.getLastPos() - 4);
                else
                    datitab.setY(document.getLastPos());

                datitab.setX(document.getMargineLeft());

                if (DirectBanker == "S")
                    tab.ColoreDirectBankB = "green";

                //setta posizione tabella
                document.InsertTable(tab.getTabella(datitab));
                #endregion

                if (!_saltopaginaeffettuato)
                {
                    //float yRectBarra = Convert.ToSingle((datitab.GetRowDim() * datitab.getNumRow()) + MargineTop + 60);
                    float yRectBarra = Convert.ToSingle((datitab.GetRowDim() * datitab.getNumRow()) + MargineTop + 110);
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra, 199, 23, 0, new RgbColor(255, 255, 255)));
                    //if(datathread.Rete == "S" && tabTortaTabella.Rows.Count == 19)
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra + 5, 199, 34, 0, new RgbColor(255, 255, 255)));
                    //else
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, yRectBarra, 199, 23, 0, new RgbColor(255, 255, 255)));
                }

                if (cut)
                {
                    /*** Fix - FD riposizionamento dell'indicazione del cambio pagina 06/06/2023 - Pino ****/
                    //document.changePage(389, dim + 20);

                    if (datathread.Periodico)
                    {
                        var idModello = datathread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
                        if (idModello == 6)  // FD
                            document.changePage(500, dim + 20);
                        else
                            document.changePage(389, dim + 20);
                    }
                    else
                        document.changePage(389, dim + 20);
                    /******************************************************************************************/


                    document.nextPage(document.getMargineLeft());
                    datitab.setHeader();
                    dim = 0;
                    view = new DataView(vista);
                    view.RowFilter = ("ID = 2");
                    vista = view.ToTable();
                    vista.Columns.Remove(vista.Columns["ID"]);
                    _saltopaginaeffettuato = true;
                }
            }
            #endregion

            #region Header della tabella Non più utilizzato
            var xrowDim = datitab.GetRowDim();
            datitab.SetRowDim(xrowDim);

            /*** Aggiungo 2 colonne per l'header della tabella 30/05/2023 - Pino ***/

            tabMacroAssetClass.Columns.Add(new DataColumn("PortafoglioModello", typeof(System.String)));
            tabMacroAssetClass.Columns.Add(new DataColumn("PortafoglioAttuale", typeof(System.String)));

            /*******************************************************************/


            DatiTabella datitabRap = new DatiTabella(tabMacroAssetClass);
            datitab.table = view.ToTable(false, setTableForFDAssetClass());
            Tabella tabellaDatiRap = new Tabella(document.getMargineLeft(), document.getLastPos());
            tabellaDatiRap.Header = true;
            tabellaDatiRap.Colonne.Add(new Colonna("AssetClassName", "Asset class", 160, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));
            tabellaDatiRap.Colonne.Add(new Colonna("PortafoglioModello", "Portafoglio Modello (%)", 160, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));
            tabellaDatiRap.Colonne.Add(new Colonna("PortafoglioAttuale", "Portafoglio Attuale (%)", 180, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));


            if (DirectBanker == "S")
                tabellaDatiRap.ColoreDirectBankB = "green";


            //tabellaDatiRap.Draw(datitabRap, document);


            dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);
            #endregion

        }
        /*******************************************************/

        /***** FD - Per la sezione FD190 08/08/2023 - Pino *****/
        protected void writeSezione190(DataThread datathread)
        {
            DatiTabella datiHeaderCaratteristiche = new DatiTabella();
            DatiTabella datiHeaderPercentualeAttuale = new DatiTabella();
            DatiTabella datiMacroAsset = new DatiTabella();
            Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());

            document = datathread.DocumentPDF;

            DataSet set = datathread.Data.DatiSezione;

            #region Titolo e Testo del paragrafo
            logger.Info("Titolo della sezione " + datathread.SezioneReport.TestoIntroduttivo);
            document.setLastPos(-40);
            document.setSezTitolo(datathread.SezioneReport.Titolo);
            document.setChapterHeader(string.Concat(datathread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", datathread.NomeRete), "<br>"), 0, 520, 8);
            #endregion

            #region Stampo la colonna MacroAssetClass

            //datitab.table = tabMacroAssetClass;

            //Tabella tabellaDati = new Tabella(document.getMargineLeft(), document.getLastPos());
            //tabellaDati.Header = true;
            //tabellaDati.HeaderFont = 8;
            //tabellaDati.Datasource = tabMacroAssetClass;
            //tabellaDati.AltezzaCella = 15;
            //tabellaDati.Colonne.Add(new Colonna("AssetClassName", "Macro Asset Class", 120, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO));

            //if (DirectBanker == "S")
            //    tabellaDati.ColoreDirectBankB = "green";

            //tabellaDati.Draw(datitab, document);
            #endregion


            #region Sezione per stampare solo l'header della tabella
            //logger.Info("Scrittura di solo header della tabella Titolo della seconda tabella " + _testointroduttivo);
            DataSet _ds = new DataSet();
            DataTable _dt = new DataTable();
            _dt.Columns.Add("Macro Asset Class", typeof(System.String));
            _dt.Columns.Add("Portafoglio modello (%)", typeof(System.String));
            _dt.Columns.Add("Portafoglio attuale (%)", typeof(System.String));

            _ds.Tables.Add(_dt);
            DataRow dr = _dt.NewRow();
            dr[0] = "";
            dr[1] = "";
            dr[2] = "";

            _dt.Rows.Add(dr);

            datiHeaderCaratteristiche.table = _ds.Tables[0];

            datiHeaderCaratteristiche.setY(document.getLastPos() + 10);
            datiHeaderCaratteristiche.setX(document.getMargineLeft());

            datiHeaderCaratteristiche.setHeader(true);
            datiHeaderCaratteristiche.setCellSpace(10);
            datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
            datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
            datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);

            tab.ColoreDirectBankB = "green";

            document.InsertTable(tab.getTabella(datiHeaderCaratteristiche));

            ceTe.DynamicPDF.Merger.ImportedPage page1 = document.getCurrentPage();
            #endregion


            #region Grafico Percentuale modello
            // Grafico
            DatiGrafico dati = new DatiGrafico();
            DataView view = new DataView(tabMacroAssetClass);
            view.RowFilter = "";
            dati.dataTab = view.ToTable(false, this.setTableForIsto190());

            //switch (dati.dataTab.Rows.Count)
            //{
            //    case 3:
            //        dati.setHeight(ChartHeigth - 25);
            //        break;
            //    case 4:
            //        dati.setHeight(ChartHeigth);
            //        //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
            //        break;
            //    case 5:
            //        //dati.setHeight(ChartHeigth + 24);
            //        dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 15));
            //        break;
            //    case 6:
            //        dati.setHeight(ChartHeigth + 49);
            //        break;
            //    default:
            //        //dati.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
            //        /**************************** Fix Aladdin centratura barra Pino ***************************************************/
            //        //dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * (datitab.getNumRow() + 1)));
            //        dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 10));
            //        /*******************************************************************************************************************/
            //        break;
            //}


            dati.setWidth(200);
            Istogramma isto = new Istogramma();
            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
           // document.InsertGrafico(isto.getGrafico(dati), 180, document.getLastPos() - 8); /// Buona

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            // Scrittura del footer sul grafico
            //FormatNum format = new FormatNum();
            //ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());

            //switch (dati.dataTab.Rows.Count)
            //{
            //    case 3:
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

            //        break;
            //    case 4:
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 115, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 115, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //        break;
            //    case 5:
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 135, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 135, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //        break;
            //    default:
            //        //float passo = 40.0F;
            //        float passo = 45.0F;
            //        //float passo = 50.0F;
            //        for (int i = 0; i <= Labels.Count - 1; ++i)
            //            if (i == 0)
            //            {
            //                if (dati.getValMin() < 0)
            //                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 280F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //                else
            //                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + i, yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            //            }
            //            else
            //                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[i].ToString(), 275F + (passo * i), yRect + 5, 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

            //        break;
            //}


            #endregion

            #region Grafico Percentuale
            // Grafico
            DatiGrafico datiPercentuale = new DatiGrafico();
            DataView viewPercentuale = new DataView(tabMacroAssetClass);
            view.RowFilter = "";
            datiPercentuale.dataTab = viewPercentuale.ToTable(false, this.setTableForIsto());

            switch (dati.dataTab.Rows.Count)
            {
                case 3:
                    datiPercentuale.setHeight(ChartHeigth - 25);
                    break;
                case 4:
                    datiPercentuale.setHeight(ChartHeigth);
                    //datiPercentuale.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow())));
                    break;
                case 5:
                    //datiPercentuale.setHeight(ChartHeigth + 24);
                    datiPercentuale.setHeight(Convert.ToSingle(datiHeaderCaratteristiche.getHeaderDim()) + ((datiHeaderCaratteristiche.GetRowDim() * datiHeaderCaratteristiche.getNumRow()) + datiHeaderCaratteristiche.GetRowDim() + 100));
                    break;
                case 6:
                    datiPercentuale.setHeight(ChartHeigth + 49);
                    break;
                default:
                    //datiPercentuale.setHeight(Convert.ToSingle(datitab.GetRowDim() * (datitab.getNumRow()+2.5)));
                    /**************************** Fix Aladdin centratura barra Pino ***************************************************/
                    //datiPercentuale.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim() * (datitab.getNumRow() + 1)));
                    datiPercentuale.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + ((datitab.GetRowDim() * datitab.getNumRow()) + datitab.GetRowDim() + 10));
                    /*******************************************************************************************************************/
                    break;
            }


            datiPercentuale.setWidth(200);
            Istogramma istoPercentuale = new Istogramma();
            istoPercentuale.isPixelPointWidth = "10";
            istoPercentuale.isShadowOffset = false; // serve per impostare l'ombreggiatura delle barre

            //document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11);
            document.InsertGrafico(istoPercentuale.getGraficoFD190(datiPercentuale), 340, document.getLastPos()+30); /// Buona
            #endregion

            #region Elenco MacroAsset
            /****** Inserimento tabella con le due colonne e con la colonna delle Caratteristiche riempita ********/
            logger.Info("Inizio inserimento tabella Macro Asset");
            datiMacroAsset.table = set.Tables["MacroAssetClass"];
            Tabella tabellaMacroAsset = new Tabella(document.getMargineLeft(), document.getLastPos() + 78, 0, -2, 0.009F);   //90  68

            tabellaMacroAsset.Datasource = datiMacroAsset.table;
            tabellaMacroAsset.Header = false;
            tabellaMacroAsset.DimensioneLinea = 0;
            tabellaMacroAsset.AltezzaCella = 30; //35;
            tabellaMacroAsset.Colonne.Add(new Colonna("AssetClassName", "Asset Class", 150, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));
            tabellaMacroAsset.Draw(datiMacroAsset, document);
            logger.Info("Fine inserimento tabella MacroAsset");
            /***********************************************************************************************************/
            #endregion

            #region Sezione per stampare solo l'header della tabella Percentuale modello
            //logger.Info("Scrittura di solo header della tabella Titolo della seconda tabella " + datathread.SezioneReport.TestoIntroduttivo);
            //DataSet _ds = new DataSet();
            //DataTable _dt = new DataTable();
            //_dt.Columns.Add("Portafoglio modello (%)", typeof(System.String));

            //_ds.Tables.Add(_dt);
            //DataRow dr = _dt.NewRow();
            //dr[0] = "";

            //_dt.Rows.Add(dr);

            //datiHeaderCaratteristiche.table = _ds.Tables[0];
           
            
            ////datiHeaderCaratteristiche.setY(document.getLastPos());
            ////datiHeaderCaratteristiche.setX(document.getMargineLeft()+150);

            ////datiHeaderCaratteristiche.setHeader(true);
            ////datiHeaderCaratteristiche.setCellSpace(10);
            ////datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
            ////datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);

            //Tabella tab = new Tabella(document.getMargineLeft()+145, document.getLastPos());
            //tab.Header = true;
            //tab.HeaderFont = 8;
            //tab.Datasource = _ds.Tables[0];
            //tab.AltezzaCella = 15;
            //tab.Colonne.Add(new Colonna("Portafoglio modello (%)", "Portafoglio modello (%)", 100, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO));

            //if (DirectBanker == "S")
            //    tab.ColoreDirectBankB = "green";

            //tab.Draw(datiHeaderCaratteristiche, document);
            #endregion

            #region Sezione per stampare solo l'header della tabella Percentuale attuale
            //DataSet _dsAttuale = new DataSet();
            //DataTable _dtAttuale = new DataTable();
            //_dtAttuale.Columns.Add("Portafoglio attuale (%)", typeof(System.String));

            //_dsAttuale.Tables.Add(_dtAttuale);
            //DataRow drAttuale = _dtAttuale.NewRow();
            //drAttuale[0] = "";

            //_dtAttuale.Rows.Add(drAttuale);

            //datiHeaderPercentualeAttuale.table = _dsAttuale.Tables[0];

            //Tabella tabAttuale = new Tabella(document.getMargineLeft() + 340, document.getLastPos());
            //tabAttuale.Header = true;
            //tabAttuale.HeaderFont = 8;
            //tabAttuale.Datasource = _dsAttuale.Tables[0];
            //tabAttuale.AltezzaCella = 15;
            //tabAttuale.Colonne.Add(new Colonna("Portafoglio attuale (%)", "Portafoglio attuale (%)", 160, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO));

            //if (DirectBanker == "S")
            //    tabAttuale.ColoreDirectBankB = "green";

            //tabAttuale.Draw(datiHeaderPercentualeAttuale, document);
            #endregion
        }
        /*******************************************************/



        protected void addNota(DocumentPDF doc, float cc, float max, string rete, int dim)
        {
            FormatNum con = new FormatNum();
            if (rete == "F")
            {
                if (cc > 0)
                    //FC 26062015 Aggionamento nuova Ragione Sociale
                    //doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Banca FIDEURAM (al lordo del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse FIDEURAM (al lordo del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                else if (cc < 0)
                    //FC 26062015 Aggionamento nuova Ragione Sociale
                    //doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Banca FIDEURAM (al netto del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse FIDEURAM (al netto del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                else
                    //FC 26062015 Aggionamento nuova Ragione Sociale
                    //doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Banca FIDEURAM e presso altri Istituti.", dim);
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse FIDEURAM e presso altri Istituti.", dim);
            }
            else
            {
                if (cc > 0)
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Sanpaolo Invest (al lordo del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                else if (cc < 0)
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Sanpaolo Invest (al netto del conto corrente pari a € " + con.ConvertNum(cc) + ") e presso altri Istituti.", dim);
                else
                    doc.setSezFooter("La distribuzione riportata è rappresentativa del " + con.ConvertNum(tabNota.Rows[0]["ValorePercentuale"]) + "% delle risorse Sanpaolo Invest e presso altri Istituti.", dim);
            }
        }

        public void setTitolo(string label)
        {
            Titolo = label;
        }

        public bool NoIndicizzato
        {
            set
            {
                _noIndicizzato = value;
            }
        }

        public string Header
        {
            get
            {
                return _header;
            }
            set
            {
                _header = value;
            }
        }
        #endregion
    }
}