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 ceTe.DynamicPDF.PageElements; using System.Collections.Generic; using System.Data; namespace PDFGenerator.Presentation.Section { public class FD185 : ISezione { NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); string Titolo = string.Empty; string _testotitolo; string _testointroduttivo; string _testoAlternativo; public int widthImporti = 95; public int widthData = 50; public int fontsize = 6; public int headerFontSize = 5; /// /// 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 FD185() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { dataThread.SETDATA(); DocumentPDF document = dataThread.DocumentPDF; DataRow totaleEvo; string descrizioneTotEvo = ""; DataRow totaleBase; string descrizioneTotBase = ""; decimal decTotaleEvo = 0; decimal decTotaleBase = 0; #region DIVIDO I DATI IN 2 DATATABLE DataSetFD185UlterioriCaratteristicheESG set = (DataSetFD185UlterioriCaratteristicheESG)dataThread.Data.DatiSezione; DatiTabella datitab = new DatiTabella(); datitab.table = set.Tables["dtUlterioriCaratteristicheESG"]; DataTable dtPortafoglioEvo = new DataTable(); DataTable dtPortafoglioBase = new DataTable(); var Columns = set.Tables["dtUlterioriCaratteristicheESG"].Columns.Cast() .Select(p => new DataColumn(p.ColumnName, p.DataType)) .ToArray(); var Columns_2 = set.Tables["dtUlterioriCaratteristicheESG"].Columns.Cast() .Select(p => new DataColumn(p.ColumnName, p.DataType)) .ToArray(); dtPortafoglioBase.Columns.AddRange(Columns); dtPortafoglioEvo.Columns.AddRange(Columns_2); for (int i = 0; i < datitab.table.Rows.Count; i++) { DataRow row = datitab.table.Rows[i]; if (row["Portafoglio"].ToString().Equals("Portafoglio Direct Evo")) { dtPortafoglioEvo.ImportRow(row); } else { dtPortafoglioBase.ImportRow(row); } } #endregion #region PRELEVO I 2 TOTALI try { totaleEvo = set.Tables["dtTotali"].Select("Descrizione like '%DIRECT%'").FirstOrDefault(); decTotaleEvo = Convert.ToDecimal(totaleEvo["Totale"]); descrizioneTotEvo = totaleEvo["Descrizione"].ToString(); } catch { } try { totaleBase = set.Tables["dtTotali"].Select("Descrizione like '%BASE%'").FirstOrDefault(); decTotaleBase = Convert.ToDecimal(totaleBase["Totale"]); descrizioneTotBase = totaleBase["Descrizione"].ToString(); } catch { } #endregion #region TITOLO SEZIONE // 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); float posizioneY = 0; posizioneY = posizioneY + 25; #endregion // Nuova Tabella ESG 2024 // stampo i dati per Portafoglio Direct Evo e Portafoglio Base in 2 tabelle distinte //document.setLastPos(1); writeSezionePortafoglio(document, dtPortafoglioEvo, set, dataThread, posizioneY, decTotaleEvo, "Portafoglio Direct Evo"); writeSezionePortafoglio(document, dtPortafoglioBase, set, dataThread, posizioneY, decTotaleBase, "Portafoglio Base"); } public void writeSezionePortafoglio(DocumentPDF document, DataTable dtDati, DataSetFD185UlterioriCaratteristicheESG set, DataThread dataThread, float posizioneY, object decTotale, string portafoglio) { if (dtDati.Rows.Count > 0) { // INTESTAZIONE DESCRIZIONE PORTAFOGLIO DataTable dtIntestazione = new DataTable(); dtIntestazione.Columns.Add("Des"); dtIntestazione.Rows.Add(string.Format("{1}", "black", portafoglio)); Tabella tabella = new Tabella(document.getMargineLeft(), document.getLastPos() + posizioneY, 30, -2, 0.2F); DatiTabella datiTabellaInt = new DatiTabella(); tabella.Header = false; tabella.Colonne.Add(new Colonna("Des", Utility.setColoreTesto("Descrizione", dataThread), 500, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); datiTabellaInt.table = dtIntestazione; tabella.Draw(datiTabellaInt, document); document.setLastPos(1); // INTESTAZIONE TABELLA Tabella tabellaDatiIntestazione = new Tabella(document.getMargineLeft()-32, document.getLastPos() + posizioneY - 10, 30, -2, 0.2F); DatiTabella datiTabellaIntestazione = new DatiTabella(); datiTabellaIntestazione.table = set.Tables["dtIntestazione"]; datiTabellaIntestazione.table.Columns.Add(new DataColumn("label_PAI_A0", typeof(string))); datiTabellaIntestazione.table.Columns.Add(new DataColumn("label_PAI_S0", typeof(string))); tabellaDatiIntestazione.Header = true; tabellaDatiIntestazione.Colonne.Add(new Colonna("colProdotto", Utility.setColoreTestoD("Prodotto", dataThread), 50, TipoAllineamento.SINISTRA, false, tabellaDatiIntestazione.HeaderFont, false)); tabellaDatiIntestazione.Colonne.Add(new Colonna("colSFDR","", 55, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("colAmb", "", 70, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("colSoc", "", 42, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("colTax", "% minima di investimento ecosostenibile (taxonomy)", 68, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("label_PAI_A0", string.Empty, 15, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont - 1, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("label_PAI_A", "PAI Ambientali considerati dal prodotto", 66, TipoAllineamento.SINISTRA, false, tabellaDatiIntestazione.HeaderFont-1, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("label_PAI_S0", string.Empty, 15, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont - 1, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("label_PAI_S", "PAI Sociali considerati dal prodotto", 63, TipoAllineamento.SINISTRA, false, tabellaDatiIntestazione.HeaderFont-1, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("col_UlterioriEl_ESG", string.Empty, 55, TipoAllineamento.CENTRATO, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.Colonne.Add(new Colonna("colControvalore", "", 70, TipoAllineamento.DESTRA, false, tabellaDatiIntestazione.HeaderFont, false, TipoColonna.TESTO)); tabellaDatiIntestazione.SezioneDiProvenienza = "FD185"; tabellaDatiIntestazione.DrawUlterioriCaratteristicheESG(datiTabellaIntestazione, document, TipoContratto.Dadvisory, false); posizioneY = (tabellaDatiIntestazione.AltezzaCella * datiTabellaIntestazione.table.Rows.Count) + 15; // DATI TABELLA + TOTALE Tabella tabellaDati_2 = new Tabella(document.getMargineLeft()-32, document.getLastPos() + posizioneY +40 , 30, -2, 0.2F); DatiTabella datiTabellaDati_2 = new DatiTabella(); datiTabellaDati_2.table = dtDati; tabellaDati_2.Header = false; // tabellaDati_2.WithImage = true; tabellaDati_2.Colonne.Add(new Colonna("NomeProdotto", Utility.setColoreTesto("Prodotto", dataThread), 55, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); /********************************************************************************************/ // PS Nuova gestione ESG 2024 aggiunte 2 colonne e rinominata quella esistente tabellaDati_2.Colonne.Add(new Colonna("PERC_INVESTIMENTO_SFDR", "", 55, TipoAllineamento.CENTRATO, false, 8, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("PERC_INVESTIMENTO_SFDR_AMBIENTALE", "", 70, TipoAllineamento.CENTRATO, false, 8, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("PERC_INVESTIMENTO_SFDR_SOCIALE", "", 42, TipoAllineamento.CENTRATO, false, 8, false, TipoColonna.TESTO)); /********************************************************************************************/ tabellaDati_2.Colonne.Add(new Colonna("PERC_INVESTIMENTO_TAXONOMY","", 66, TipoAllineamento.CENTRATO, false, 9, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("label_PAI_A", "", 78, TipoAllineamento.CENTRATO, false, tabellaDati_2.HeaderFont-4, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("label_PAI_S", "", 78, TipoAllineamento.CENTRATO, false, tabellaDati_2.HeaderFont-4, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("UlterioriElementiESG", "", 50, TipoAllineamento.CENTRATO, false, tabellaDati_2.HeaderFont, false, TipoColonna.TESTO)); tabellaDati_2.Colonne.Add(new Colonna("Controvalore", "", 70, TipoAllineamento.DESTRA, false, tabellaDati_2.HeaderFont, false, TipoColonna.TESTO)); tabellaDati_2.SaltoPaginaForzato = true; tabellaDati_2.Draw(datiTabellaDati_2, document); posizioneY = (tabellaDati_2.AltezzaCella * (datiTabellaDati_2.table.Rows.Count + 2)) + 30; // TOTALE DataTable dtTotale = new DataTable(); dtTotale.Columns.Add("Des"); dtTotale.Columns.Add("Tot"); decimal value = Convert.ToDecimal(decTotale); dtTotale.Rows.Add("TOTALE " + portafoglio.ToUpper(), value.ToString("C2")); Tabella tabellaTot = new Tabella(document.getMargineLeft()-32, document.getLastPos() + posizioneY + 10, 30, -2, 0.2F); DatiTabella datiTabellaTot = new DatiTabella(); tabellaTot.Header = false; tabellaTot.Colonne.Add(new Colonna("Des", "", 59 + 68 + 69 + 59 + 64 + 69 + 69 + 44, TipoAllineamento.SINISTRA, true, 8, true, TipoColonna.TESTO)); tabellaTot.Colonne.Add(new Colonna("Tot", "", 70, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.TESTO)); datiTabellaTot.table = dtTotale; tabellaTot.Draw(datiTabellaTot, document); document.setLastPos(2); document.addPage(); } } protected int calculateWidth() { int tot = 0; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; tot += widthImporti; return tot; } #endregion } }