using System; using System.Collections.Generic; using System.Linq; using System.Text; using ceTe.DynamicPDF; using ceTe.DynamicPDF.Text; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using ContrattoSei.Utilities; using ceTe.DynamicPDF.PageElements; using System.Collections.Generic; using System.Data; namespace PDFGenerator.Presentation.Section { public class S182 : ISezione { string Titolo = string.Empty; string _testotitolo; string _testointroduttivo; string _testoAlternativo; public int widthImporti = 60; public int widthData = 50; public int fontsize = 6; public int headerFontSize = 5; NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); /// /// Testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } /// /// Testo del titolo della sezione. /// public string TestoTitolo { get { return _testotitolo; } set { _testotitolo = value; } } public string TestoAlternativo { get { return _testoAlternativo; } set { _testoAlternativo = value; } } public void setTitolo(string label) { Titolo = label; } public S182() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DataSetS182DettaglioProdottiESG set = (DataSetS182DettaglioProdottiESG)dataThread.Data.DatiSezione; DatiTabella datitab = new DatiTabella(); //datitab.table = set.Tables["dtDettaglioProdottiESG"]; set.Tables["Prodotti"].Columns.Add("Immagine"); datitab.table = set.Tables["Prodotti"]; #region Titolo Seconda tabella // Titolo della sezione switch (dataThread.Rete) { case "F": { _testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "Fideuram"); break; } case "S": { _testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "Fideuram S.p.A., commercializzati tramite la rete di private banker Sanpaolo Invest,"); break; } case "W": { _testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "IW Private Investments"); break; } } logger.Info("Titolo della sezione " + _testointroduttivo); document.setLastPos(-40); document.setChapterHeader(string.Concat(_testointroduttivo, "
"), 0, 520, 8); #endregion #region Tabella /***** Disegno la tabella con oggetti della solution trimestrale *************/ int widthTotaleAltre = calculateWidth(); int widthNomeProdotto = 520 - widthTotaleAltre + 25; /** Creo una tabella solo per header **/ #region Tabella Header non usata //Tabella tabellaHeader = null; //tabellaHeader = new Tabella(document.getMargineLeft(), document.getLastPos()); //tabellaHeader.HeaderFont = 6; //tabellaHeader.AltezzaCella = 30; //tabellaHeader.Header = true; // la gestione dell'header viene fatta manualmente. //tabellaHeader.SaltoPagina = false; //DataView viewHeader = new DataView(datitab.table); //viewHeader.RowFilter = ("CodArea = 'xxx'"); //datitab.table = viewHeader.ToTable(); //datitab.table.Rows.Add(datitab.table.NewRow()); // serve per far scrivere l'intestazione. //tabellaHeader.Colonne.Add(new Colonna("Immagine", string.Empty, 10, TipoAllineamento.SINISTRA, false, 6, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("NomeProdotto", "Prodotto", widthNomeProdotto, TipoAllineamento.SINISTRA, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); ////tabellaDati.Colonne.Add(new Colonna("Descrizione", string.Empty, widthData+10, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("preferenzaE", string.Empty, widthData, TipoAllineamento.SINISTRA, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("preferenzaS", string.Empty, widthData, TipoAllineamento.SINISTRA, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("preferenzaG", string.Empty, widthData, TipoAllineamento.SINISTRA, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("CatSFDR", "Categoria.
SFDR", widthData, TipoAllineamento.CENTRATO, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); //tabellaHeader.Colonne.Add(new Colonna("ESGRating", "ESG
Rating", widthData, TipoAllineamento.CENTRATO, false, tabellaHeader.HeaderFont, false, TipoColonna.IMMAGINE)); //tabellaHeader.Colonne.Add(new Colonna("TrendESGRating", "Trend ESG
Rating", widthData, TipoAllineamento.CENTRATO, false, tabellaHeader.HeaderFont, false, TipoColonna.IMMAGINE)); //tabellaHeader.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", widthImporti, TipoAllineamento.SINISTRA, false, tabellaHeader.HeaderFont, false, TipoColonna.TESTO)); //tabellaHeader.DrawESG(datitab, document); #endregion Tabella tabellaDati = new Tabella(document.getMargineLeft(), document.getLastPos(), 2, 0, 0.02F); tabellaDati.Header = true; tabellaDati.HeaderFont = 8; tabellaDati.Datasource = datitab.table; tabellaDati.AltezzaCella = 23; //15; tabellaDati.LineaFineTabella = false; tabellaDati.WithImage = true; //int widthTotaleAltre = calculateWidth(); //int widthNomeProdotto = 520 - widthTotaleAltre + 25; //tabellaDati.Colonne.Add(new Colonna("Immagine", string.Empty, 15, TipoAllineamento.SINISTRA, false, 6, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("Descrizione", "Prodotto", widthNomeProdotto, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("ESG_E", string.Empty, widthData, TipoAllineamento.SINISTRA, false, fontsize,false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("ESG_S", string.Empty, widthData, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("ESG_G", string.Empty, widthData, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("CatSFDR", "Categoria.
SFDR*", widthData, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("ESGRating", "ESG
Rating**", widthData, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.IMMAGINE)); //tabellaDati.Colonne.Add(new Colonna("TrendESGRating", "Trend ESG
Rating", widthData, TipoAllineamento.CENTRATO, false, fontsize, false, TipoColonna.IMMAGINE)); //tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", widthImporti, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); //tabellaDati.Colonne.Add(new Colonna("Saving", string.Empty, 10, TipoAllineamento.SINISTRA, false, 6, true)); //tabellaDati.Colonne.Add(new Colonna("Immagine", string.Empty, 10, TipoAllineamento.SINISTRA, false, 6, false)); /***** ESG - Distanziare la colonna NomeProdotto dalle altre 26/09/2022 - Pino *************/ //tabellaDati.Colonne.Add(new Colonna("NomeProdotto", "Prodotto", widthNomeProdotto-2, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("NomeProdotto", "Prodotto", widthNomeProdotto, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false)); tabellaDati.Colonne.Add(new Colonna("Nome_Progetto", string.Empty, 0, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false)); /********************************************************************************************/ //tabellaDati.Colonne.Add(new Colonna("Descrizione", string.Empty, widthData+10, TipoAllineamento.SINISTRA, false, fontsize, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("preferenzaE", string.Empty, widthData - 5, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("preferenzaS", string.Empty, widthData - 5, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("preferenzaG", string.Empty, widthData - 5, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("CatSFDR", "Categoria SFDR", widthData + 35, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("ESGRating", "ESG Rating", widthData + 10, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.IMMAGINE)); //tabellaDati.Colonne.Add(new Colonna("TrendESGRating", "Trend ESG
Rating", widthData + 10, TipoAllineamento.SINISTRA, false, tabellaDati.HeaderFont, false, TipoColonna.IMMAGINE)); tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", widthImporti + 50, TipoAllineamento.DESTRA, false, tabellaDati.HeaderFont, false, TipoColonna.TESTO)); tabellaDati.DrawESG(datitab, document); /**********************************************************************************************/ /************* provo ad inserire le immagini dopo aver disegnato la tabell. Problema si posizione sull'ultima pagina. **************/ //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); //System.Reflection.Assembly thisExe; //thisExe = System.Reflection.Assembly.GetExecutingAssembly(); //System.IO.Stream fileE = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("FrecciaS80")); //System.IO.Stream fileS = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("logo-sociale")); //System.IO.Stream fileG = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("logo-governance")); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileE, document.getMargineLeft()+150, tabellaDati.Y - 6, 0.57F)); /**************************************************************************************************************************************/ #region Vecchia versione Tabella Totale //DataRow[] found = set.Tables["Prodotti"].Select("Area <> ' '"); //double _totale = 0.0; //if (found.Length > 0) //{ // for (int i=0; i<=found.Length-1;i++) // { // _totale += Convert.ToDouble(found[i].Field("Controvalore")); // } //} //string _importo = _totale.ToString("#,##0.00"); ; //DataSet _ds = new DataSet(); //DataTable _dt = new DataTable(); //_dt.Columns.Add("PatrimonioFideuram", typeof(System.String)); //_dt.Columns.Add("Totale", typeof(System.String)); //_ds.Tables.Add(_dt); //DataRow dr = _dt.NewRow(); //dr[0] = "Totale Risorse Allocate*"; //dr[1] = _importo; //_dt.Rows.Add(dr); //datitab = new DatiTabella(); //datitab.table = _dt; //Tabella tabellaTotali_OUT = new Tabella(document.getMargineLeft(), document.getLastPos() + tabellaDati.AltezzaTabella + 27); //tabellaTotali_OUT.HeaderFont = 8; //tabellaTotali_OUT.Header = false; //tabellaTotali_OUT.SaltoPagina = false; //tabellaTotali_OUT.Colonne.Add(new Colonna("PatrimonioFideuram", "",150, TipoAllineamento.SINISTRA, true, 8, true)); //tabellaTotali_OUT.Colonne.Add(new Colonna("Totale", "", 365, TipoAllineamento.DESTRA, true, 8, true)); //// Scrive la tabella Totali //tabellaTotali_OUT.Draw(datitab, document); #endregion #region Nuova versione Tabella Totale Risorse Finanziarie // Recupero le altezze delle tabelle float dim = tabellaDati.AltezzaTabella + 27; Tabella tabellaTotali_OUT = null; if (dataThread.Periodico) { if (set.Tables["ProdottiTRF"].Rows[0][1].Equals("TOTALE RISORSE FINANZIARIE")) { DataSet _ds = new DataSet(); DataTable _dt = new DataTable(); _dt.Columns.Add("PatrimonioFideuram", typeof(System.String)); _dt.Columns.Add("Totale", typeof(System.String)); _ds.Tables.Add(_dt); DataRow dr = _dt.NewRow(); dr[0] = "Totale Risorse Finanziarie"; dr[1] = set.Tables["ProdottiTRF"].Rows[0]["Controvalore"]; _dt.Rows.Add(dr); datitab = new DatiTabella(); datitab.table = _dt; tabellaTotali_OUT = new Tabella(document.getMargineLeft(), document.getLastPos() + dim); tabellaTotali_OUT.HeaderFont = 8; tabellaTotali_OUT.Header = false; tabellaTotali_OUT.SaltoPagina = false; tabellaTotali_OUT.Colonne.Add(new Colonna("PatrimonioFideuram", "", 150, TipoAllineamento.SINISTRA, true, 8, true)); tabellaTotali_OUT.Colonne.Add(new Colonna("Totale", "", 365, TipoAllineamento.DESTRA, true, 8, true)); // Scrive la tabella Totale Risorse Finanziari tabellaTotali_OUT.Draw(datitab, document); } } #endregion #region Tabella Dettaglio Risorse Finanziarie Tabella tabellaDettTRF = null; if (dataThread.Periodico) { if (set.Tables["ProdottiTRF"].Rows[0][1].Equals("TOTALE RISORSE FINANZIARIE")) { dim = dim + tabellaTotali_OUT.AltezzaTabella; #region Dettaglio // Tabella Dettaglio risorse Finanziarie DataTable _dtDettTRF = new DataTable(); _dtDettTRF.Columns.Add("PatrimonioFideuramDett", typeof(System.String)); _dtDettTRF.Columns.Add("TotaleDett", typeof(System.String)); var ListaDettTrf = set.Tables["ProdottiTRF"].AsEnumerable().Where(f => f.Field("Descrizione") == string.Empty).Select(s => s).ToList(); foreach (var itemDetTRF in ListaDettTrf) { DataRow drDettTRF = _dtDettTRF.NewRow(); drDettTRF[0] = itemDetTRF[5].ToString(); drDettTRF[1] = itemDetTRF["Controvalore"].ToString(); _dtDettTRF.Rows.Add(drDettTRF); } datitab = new DatiTabella(); datitab.table = _dtDettTRF; tabellaDettTRF = new Tabella(document.getMargineLeft(), document.getLastPos() + dim); tabellaDettTRF.HeaderFont = 8; tabellaDettTRF.Header = false; tabellaDettTRF.SaltoPagina = false; tabellaDettTRF.Colonne.Add(new Colonna("PatrimonioFideuramDett", "", 150, TipoAllineamento.SINISTRA, false, 8, false)); tabellaDettTRF.Colonne.Add(new Colonna("TotaleDett", "", 365, TipoAllineamento.DESTRA, false, 8, false)); // Scrive la tabella Totale Risorse Finanziari tabellaDettTRF.Draw(datitab, document); #endregion } } #endregion #region Tabella Totale Patrimonio if (set.Tables["ProdottiTRF"].Rows[0][1].Equals("TOTALE RISORSE FINANZIARIE")) dim = dim + tabellaDettTRF.AltezzaTabella; DataTable _dtTotalePatrimonio = new DataTable(); _dtTotalePatrimonio.Columns.Add("DescrizioneTP", typeof(System.String)); _dtTotalePatrimonio.Columns.Add("TotalePatrimonio", typeof(System.String)); var listaTotalePatrimonio = set.Tables["ProdottiTRF"].AsEnumerable().Where(f => f.Field("Descrizione").Equals("TOTALE PATRIMONIO")).Select(s => s).ToList(); foreach (var itemTP in listaTotalePatrimonio) { DataRow drTotP = _dtTotalePatrimonio.NewRow(); drTotP[0] = itemTP["Descrizione"].ToString(); drTotP[1] = itemTP["Controvalore"].ToString(); _dtTotalePatrimonio.Rows.Add(drTotP); } datitab = new DatiTabella(); datitab.table = _dtTotalePatrimonio; Tabella tabellaTotP = new Tabella(document.getMargineLeft(), document.getLastPos() + dim); tabellaTotP.HeaderFont = 8; tabellaTotP.Header = false; tabellaTotP.SaltoPagina = false; tabellaTotP.Colonne.Add(new Colonna("DescrizioneTP", "", 150, TipoAllineamento.SINISTRA, true, 8, true)); tabellaTotP.Colonne.Add(new Colonna("TotalePatrimonio", "", 365, TipoAllineamento.DESTRA, true, 8, true)); // Scrive la tabella Totale Risorse Finanziari tabellaTotP.Draw(datitab, document); #endregion #region Nota tabella //string nota = "*Il controvalore non considera i saldi negativi di conto corrente e/o le operazioni in corso."; //document.setSezFooter(nota, tabellaDati.AltezzaTabella + tabellaTotali_OUT.AltezzaTabella + tabellaTotali_OUT.AltezzaCella, 0, 7); //tabellaTotali_OUT.NotaTabella.Add(nota); #endregion #endregion /*** ATTENZIONE Forzatura - Pino ************************/ //dataThread.Periodico = true; //dataThread.CodiceFiscale = "DGSMHL70H08Z404F"; //dataThread.Rete = "S"; /********************************************************/ } protected int calculateWidth() { int tot = 0; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; return tot; } #endregion } }