278 lines
14 KiB
C#
278 lines
14 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// Testo introduttivo della sezione.
|
|
/// </summary>
|
|
public string TestoIntroduttivo
|
|
{
|
|
get
|
|
{
|
|
return _testointroduttivo;
|
|
}
|
|
set
|
|
{
|
|
_testointroduttivo = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Testo del titolo della sezione.
|
|
/// </summary>
|
|
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<DataColumn>()
|
|
.Select(p => new DataColumn(p.ColumnName, p.DataType))
|
|
.ToArray();
|
|
var Columns_2 = set.Tables["dtUlterioriCaratteristicheESG"].Columns.Cast<DataColumn>()
|
|
.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, "<br>"), 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("<font color =\"{0}\"><b>{1}<b/></font>", "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
|
|
|
|
}
|
|
|
|
|
|
}
|