2025-06-03 15:11:16 +02:00

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
}
}