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

254 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
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.Linq;
using NLog;
namespace PDFGenerator.Presentation.Section
{
class S184 : ISezione
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private string _header = "";
public string Header
{
get { return _header; }
set { _header = value; }
}
private TipologiaReport _tipologiaReport;
public TipologiaReport TipologiaReport
{
get { return _tipologiaReport; }
set { _tipologiaReport = value; }
}
private string _testoIntroduttivo = string.Empty;
public string TestoIntroduttivo
{
get { return _testoIntroduttivo; }
set { _testoIntroduttivo = value; }
}
private string _testoChiusura = string.Empty;
public string TestoChiusura
{
get { return _testoChiusura; }
set { _testoChiusura = value; }
}
public S184()
{
//
// TODO: Add constructor logic here
//
}
#region ISezione Members
public void writeSezione(DataThread dataThread)
{
dataThread.SETDATA();
DatiTabella datitab = new DatiTabella();
DocumentPDF document = dataThread.DocumentPDF;
DataSetS184 set = (DataSetS184)dataThread.Data.DatiSezione;
if (!set.TabellaCoerenzaESG.Rows[0]["percESG"].ToString().Equals("n.d.", StringComparison.OrdinalIgnoreCase))
{
// 20181219 Fix bug di spaginazione della tabella complessità alta, in caso venga stampata a cavallo di due pagine
//if (!document.LastSectionCheckIn.Equals("S179")) // Se non si è passati per la S179
if (!document.LastSectionCheckIn.Equals("S178")) // Se non si è passati per la S184 o per la 179
{
if (dataThread.TipoReport.Equals("DIAGNOSI"))
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
}
else
{
if (document.getLastPos() >= 400) //500
{
if (string.IsNullOrEmpty(document.NotaPieDiPagina))
document.NotaPieDiPagina = "";
document.changePage();
document.nextPage(document.getMargineLeft());
}
}
document.LastSectionCheckIn = "S184";
float fontSize = 5;
//document.changePage();
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
//string nota = dataThread.SezioneReport.Nota;
// string tempTesto = dataThread.SezioneReport.TestoIntroduttivo;
//if (dataThread.Rete.ToUpper() == "S")
// tempTesto = tempTesto.Replace("Fideuram", "Sanpaolo Invest");
//document.setChapterHeader(tempTesto.Replace("$/Banca/$", dataThread.NomeRete).Replace("nel patrimonio Sanpaolo Invest", "nel portafoglio"), 0, 520, 8);
//document.setHeaderSpace(5);
//Header: non ho usato quello standard perché dovevo farlo su due righe
//Sfondo
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 5, document.getLastPos() - 18, 520 + 10, 23, 0, new RgbColor(232, 236, 237)));
//Leone: eliminata come da requisiti 20230509_Report Diagnosi Sei_FID_MUA+ESG.pptx
//Prima riga: Obbligazioni - Azioni
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Obbligazioni", document.getMargineLeft() + 5 + 132 + 90 -10, document.getLastPos() - 16, 520, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Azioni", document.getMargineLeft() + 5 + 132 + 90 + 95 + 90 +10, document.getLastPos() - 16, 520, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//Seconda riga: intestazioni colonne tabella
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Emittente", document.getMargineLeft(), document.getLastPos() - 12, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30+2, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90-3+2, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97+10, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 90 +8, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//Leone: Modificate come da requisiti 20230509_Report Diagnosi Sei_FID_MUA+ESG.pptx
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Emittente", document.getMargineLeft(), document.getLastPos() - 12, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 2 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 - 3 + 2 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 10 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 90 + 8 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
var currentX = document.getMargineLeft();
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Prodotti che soddisfano almeno un obiettivo ESG (%)", currentX, document.getLastPos() - 16, 150, 25, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Prodotti in linea con le preferenze di sostenibilità (%)", currentX, document.getLastPos() - 16, 150, 25, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
currentX += 200;
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Soglia di sostenibilità", currentX, document.getLastPos() - 12, 150, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Percentuale di sostenibilità", currentX, document.getLastPos() - 12, 150, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
currentX += 200;
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Esito di coerenza ESG", currentX, document.getLastPos() - 12, 150, 20, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
document.setLastPos(20);
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tab.Header = false;
tab.LineaFineTabella = true;
tab.Datasource = datitab.table;
datitab.table = set.Tables["TabellaCoerenzaESG"];
tab.Colonne.Add(new Colonna("pesoSostESG", "", 150, TipoAllineamento.CENTRATO, false, 7, false));
tab.Colonne.Add(new Colonna("percESG", "", 200, TipoAllineamento.CENTRATO, false, 7, false));
tab.Colonne.Add(new Colonna("Coerenza", "", 170, TipoAllineamento.CENTRATO, false, 7, false));
tab.AltezzaCella = 23;
datitab.setCellSpace(0);
//setta posizione tabella
tab.Draw(datitab, document);
document.setLastPos(tab.AltezzaTabella - 43);
//Discolsure Adeguatezza Dinamico
string NotaDisclosure = string.Empty;
string notapieTabella = string.Empty;
/*** Fix - Trimestrale 10/2023 - Pino *****/
switch (set.Tables["TabellaCoerenzaESG"].Rows[0]["Coerenza"].ToString())
{
case "COERENTE":
NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio è COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance dichiarata nel questionario di Profilatura."; //Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento. Per maggiori dettagli in merito alle modalità e ai criteri di valutazione delladeguatezza del suo portafoglio si rimanda alla sezione «Avvertenze e Glossario».";
break;
case "NON COERENTE":
NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio NON E COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance dichiarata nel questionario di Profilatura."; //La invitiamo a contattare il prima possibile il suo private banker per valutare le azioni necessarie a rendere coerente il suo portafoglio. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento.";
break;
case "n.a.":
NotaDisclosure = string.Empty;
break;
}
//bool isCoerente = set.Tables["TabellaCoerenzaESG"].Rows[0]["Coerenza"].ToString().Equals("COERENTE", StringComparison.OrdinalIgnoreCase);
//if (isCoerente)
//{
// NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio è COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance dichiarata nel questionario di Profilatura. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento. Per maggiori dettagli in merito alle modalità e ai criteri di valutazione delladeguatezza del suo portafoglio si rimanda alla sezione «Avvertenze e Glossario».";
//}
//else
//{
// NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio NON E COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance dichiarata nel questionario di Profilatura. La invitiamo a contattare il prima possibile il suo private banker per valutare le azioni necessarie a rendere coerente il suo portafoglio. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento.";
//}
/********************************************/
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(NotaDisclosure, datitab.getX(), document.getLastPos() - 25, 500F, 40F, Globals.OpenTypeFontVerdana, fontSize + 1f));
//if (S178.isAdeguato.HasValue)
//{
// if (S178.isAdeguato.Value == true)
// {
// notapieTabella = $"Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento. Per maggiori dettagli in merito alle modalità e ai criteri di valutazione delladeguatezza del suo portafoglio si rimanda alla sezione «Avvertenze e Glossario».";
// }
// else
// {
// notapieTabella = $"La invitiamo a contattare il prima possibile il suo private banker per valutare le azioni necessarie a rendere coerente il suo portafoglio. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento.";
// }
// //Nota a piè di tabella
// page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(notapieTabella, datitab.getX(), document.getLastPos() - 5, 500F, 30F, Globals.OpenTypeFontVerdana, fontSize + 1f));
//}
//COntrollo se la sezione successiva
//int currentId = Array.IndexOf(dataThread.SequenzaSezioniDaStampare, "S184");
//string nexIsS179 = dataThread.SequenzaSezioniDaStampare.ElementAtOrDefault(currentId + 1);
//if (!string.IsNullOrEmpty(nexIsS179) && nexIsS179.Equals("S170"))
// document.setLastPos(document.getLastPos() * -1);
//else
// document.setLastPos(tab.AltezzaTabella + 20);
//dataThread.AltezzaS184 = tab.AltezzaTabella + 20;
document.setLastPos((document.getLastPos() * -1));
document.setLastPos(document.getLastPos() + tab.AltezzaTabella + 150);
//document.setLastPos(document.getLastPos() - 230);
//document.setLastPos(document.getLastPos() *-1);
//if(dataThread.TipoReport.ToUpper().Equals("DIAGNOSI"))
document.nextPage(document.getMargineLeft());
}
}
#endregion
}
}