2025-04-15 12:10:19 +02:00

531 lines
28 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 ceTe.DynamicPDF.Merger;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer;
namespace PDFGenerator.Presentation.Section
{
public class S162 : ISezione
{
public S162()
{
//
// TODO: Add constructor logic here
//
}
DataSetS162 set;
ImportedPage page;
string notaGradoCopertura = string.Empty;
public void writeSezioneOLD(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datitab = new DatiTabella();
set = (DataSetS162)dataThread.Data.DatiSezione;
datitab.table = set.Tables["Prodotti"];
// Modifica per Disclaimer Verticale
string sVerticalText = "";
ceTe.DynamicPDF.PageElements.TextArea testoPaginaVerticale = null;
if (datitab.table.Rows.Count > 0)
{
sVerticalText = "Le eventuali informazioni riguardanti investimenti da lei detenuti presso altri intermediari vengono elaborate secondo le indicazioni da lei ";
//if (dataThread.Rete.Equals("F"))
//{
// sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. ";
// sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e laggiornamento dei dati contenuti ";
// sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, ";
// sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
//}
//else
//{
// sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Sanpaolo Invest SIM non garantisce la completezza e la veridicità. ";
// sVerticalText = sVerticalText + "La preghiamo di comunicare a Sanpaolo Invest SIM ogni successiva variazione a tali informazioni, al fine di consentire a Sanpaolo Invest SIM la correzione e laggiornamento dei dati contenuti ";
// sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Sanpaolo Invest SIM con finalità meramente informative e secondo le indicazioni da lei fornite, ";
// sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
//}
//************************************** Cecco modifiche dicitura IWBANK***********************************
switch (dataThread.Rete)
{
case "F":
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
break;
}
case "S":
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram S.p.A. non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram S.p.A. ogni successiva variazione a tali informazioni, al fine di consentire alla Banca la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram S.p.A., tramite la rete di private banker Sanpaolo Invest con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
break;
}
case "W":
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali IW Private Investments non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a IW Private Investments ogni successiva variazione a tali informazioni, al fine di consentire a IW Private Investments la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da IW Private Investments con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
break;
}
}
//*********************************************************************************************
testoPaginaVerticale = new ceTe.DynamicPDF.PageElements.TextArea(sVerticalText, document.getMargineLeft() - 30, 750, 620, 100)
{
Angle = 270,
Align = ceTe.DynamicPDF.TextAlign.Justify,
FontSize = 5
};
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
else
{
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
}
// Fine Modifica per Disclaimer Verticale
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
//if (dataThread.TipoReport.ToUpper() == "DIAGNOSI")
// document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
//else
document.setTitolo(dataThread.SezioneReport.Titolo);
DataView view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Fondi'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
document.setSezTitoloWithoutNumber("Fondi");
this.writeArea(datitab, document, "Fondi", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Gestioni patrimoniali'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
document.setSezTitoloWithoutNumber("Gestioni patrimoniali");
this.writeArea(datitab, document, "Gestioni patrimoniali", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Prodotti di Tipo amministrato (escluso C/C)'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
document.setSezTitoloWithoutNumber("Titoli");
this.writeArea(datitab, document, "Prodotti di Tipo amministrato (escluso C/C)", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Assicurativi Unit/Index Linked'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
document.setSezTitoloWithoutNumber("Assicurativi Unit/Index Linked");
this.writeArea(datitab, document, "Assicurativi Unit/Index Linked", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Portafoglio Generico'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
document.addPage();
document.setSezTitoloWithoutNumber("Portafoglio Generico");
this.writeArea(datitab, document, "Portafoglio Generico", dataThread);
}
// Aggiunta per Disclaimer Verticale
//if (sVerticalText != "")
//{
// page = document.getCurrentPage();
// page.Elements.Add(testoPaginaVerticale);
//}
// Fine Aggiunta
}
public void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datitab = new DatiTabella();
set = (DataSetS162)dataThread.Data.DatiSezione;
datitab.table = set.Tables["Prodotti"];
// Modifica per Disclaimer Verticale
string sVerticalText = "";
bool bPass = false;
ceTe.DynamicPDF.PageElements.TextArea testoPaginaVerticale = null;
if (datitab.table.Rows.Count > 0)
{
sVerticalText = "Le eventuali informazioni riguardanti investimenti da lei detenuti presso altri intermediari vengono elaborate secondo le indicazioni da lei ";
if (dataThread.Rete.Equals("F"))
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
}
else
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram S.p.A. non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram S.p.A. ogni successiva variazione a tali informazioni, al fine di consentire alla Banca la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram S.p.A., tramite la rete di private banker Sanpaolo Invest con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
}
testoPaginaVerticale = new ceTe.DynamicPDF.PageElements.TextArea(sVerticalText, document.getMargineLeft() - 30, 750, 620, 100)
{
Angle = 270,
Align = ceTe.DynamicPDF.TextAlign.Justify,
FontSize = 5
};
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
//if (document.checkMargin(datitab.GetRowDim() * 4))
// document.addPage();
//if (sVerticalText != "")
//{
// page = document.getCurrentPage();
// page.Elements.Add(testoPaginaVerticale);
//}
}
// Fine Modifica per Disclaimer Verticale
if (sVerticalText != "")
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
}
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
//if (document.checkMargin(datitab.GetRowDim() * 4))
// document.addPage();
//if (dataThread.TipoReport.ToUpper() == "DIAGNOSI")
// document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
//else
document.setTitolo(dataThread.SezioneReport.Titolo);
DataView view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Fondi'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
if (sVerticalText != "" && !bPass)
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
bPass = true;
}
}
document.setSezTitoloWithoutNumber("Fondi");
this.writeArea(datitab, document, "Fondi", dataThread);
if (sVerticalText != "" && view.Count > 8)
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
bPass = true;
}
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Gestioni patrimoniali'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
if (sVerticalText != "")
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
}
document.setSezTitoloWithoutNumber("Gestioni patrimoniali");
this.writeArea(datitab, document, "Gestioni patrimoniali", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Prodotti di Tipo amministrato (escluso C/C)'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
if (sVerticalText != "")
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
}
document.setSezTitoloWithoutNumber("Titoli");
this.writeArea(datitab, document, "Prodotti di Tipo amministrato (escluso C/C)", dataThread);
if (sVerticalText != "" && view.Count > 8)
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
page = document.getPageAt(document.CurrentPage - 2);
page.Elements.Add(testoPaginaVerticale);
}
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Assicurativi Unit/Index Linked'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
if (sVerticalText != "")
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
}
document.setSezTitoloWithoutNumber("Assicurativi Unit/Index Linked");
this.writeArea(datitab, document, "Assicurativi Unit/Index Linked", dataThread);
}
datitab.table = set.Tables["Prodotti"];
view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = 'Portafoglio Generico'");
if (view.Count > 0)
{
if (document.checkMargin(datitab.GetRowDim() * 4))
{
document.addPage();
if (sVerticalText != "")
{
page = document.getCurrentPage();
page.Elements.Add(testoPaginaVerticale);
}
}
document.setSezTitoloWithoutNumber("Portafoglio Generico");
this.writeArea(datitab, document, "Portafoglio Generico", dataThread);
}
}
/// <summary>
/// Verifica se nel datatable passato in input è presente almeno un campo della colonna VarProxato con valore 1.
/// Se si aggiungo al documento un oggetto Nota di tipo VarProxato e aggiungo al valore del campo VaR gli *.
/// La S48 può avere le note a fondo pagina solo per i var proxati.
/// </summary>
/// <param name="dataTable">fonte dati</param>
/// <param name="idtabellaassociata">id della tabella a cui andrà associata la nota</param>
/// <param name="document">documento</param>
private void ImpostaNote(DataTable dataTable, string idtabellaassociata, ref DocumentPDF document)
{
DataRow[] drVarProxato = dataTable.Select("VarProxato=1");
if (drVarProxato.Length > 0)
if (!document.Note.Exists(delegate(Nota t) { return t.TipoNota == Nota.TipologiaNota.VarProxato; }))
document.Note.Add(new Nota(Nota.TipologiaNota.VarProxato, idtabellaassociata, Resource.Nota_VarProxato));
//aggiungo al valore del campo VaR gli *
foreach (DataRow row in drVarProxato)
{
if (row["VaR"].ToString().ToLower() != "n.c.")
row["VaR"] += document.Note.Find(delegate(Nota nota) { return nota.TipoNota == Nota.TipologiaNota.VarProxato; }).ToString();
}
}
/// <summary>
/// Stampa la tabella.
/// </summary>
/// <param name="datitab"></param>
/// <param name="document"></param>
/// <param name="area"></param>
/// <param name="dataThread"></param>
private void writeArea(DatiTabella datitab, DocumentPDF document, string area, DataThread dataThread)
{
page = document.getCurrentPage();
#region Disegna Tabella
//setta la datatable
datitab.table = set.Tables["Prodotti"];
DataView view = new DataView(datitab.table);
view.RowFilter = ("TipoProdotto = '" + area + "'");
datitab.table = view.ToTable();
//aggiungo una riga in più per fare posto alla scritta continua e uno per il totale
Tabella tabellaDati = new Tabella(document.getMargineLeft(), document.getLastPos());
tabellaDati.HeaderFont = 8;
tabellaDati.Header = true;
tabellaDati.Datasource = datitab.table;
tabellaDati.Id = "tabellaS48_" + area;
#region Settaggio delle Note di piè di pagina, delle note a piedi della tabella e degli * per i varProxati
//Imposto le nota a pie di pagina.
ImpostaNote(datitab.table, tabellaDati.Id, ref document);
//Nota a piedi della tabella
// Imposto la nota a piedi della Tabella
notaGradoCopertura = datitab.table.Rows[0]["Copertura"] == DBNull.Value ? string.Empty : datitab.table.Rows[0]["Copertura"].ToString();
if (notaGradoCopertura.Length > 0)
{
document.Note.Add(new Nota(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id, notaGradoCopertura));
tabellaDati.NotaTabella.Add(document.Note.Find(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id).Testo);
}
#endregion
int dimfont = 7;
tabellaDati.AltezzaCella = 30;
if (dataThread.NumeroIntermediari > 1)
{
tabellaDati.Colonne.Add(new Colonna("Intermediario", "Intermediario", 75, TipoAllineamento.SINISTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 65, TipoAllineamento.SINISTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Descrizione", "Descrizione", 116, TipoAllineamento.SINISTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Versato", "Versato netto (€)", 56, TipoAllineamento.DESTRA, false, dimfont, false));
//tabellaDati.Colonne.Add(new Colonna("MinusPlus", "Utile/<BR>perdita €", 80, TipoAllineamento.DESTRA, false, 7, false));
tabellaDati.Colonne.Add(new Colonna("CreditRisk", "Rischio<BR>Credito", 60, TipoAllineamento.DESTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Var", "Rischio<BR>(VaR %)", 60, TipoAllineamento.DESTRA, false, dimfont, false));
//tabellaDati.Colonne.Add(new Colonna("Var", "Rischio<BR>(VaR %)", 50, TipoAllineamento.DESTRA, false, 7, false));
}
else
{
tabellaDati.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 65, TipoAllineamento.SINISTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Descrizione", "Descrizione", 157, TipoAllineamento.SINISTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Versato", "Versato netto (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false));
//tabellaDati.Colonne.Add(new Colonna("MinusPlus", "Utile/perdita €", 80, TipoAllineamento.DESTRA, false, 7, false));
tabellaDati.Colonne.Add(new Colonna("CreditRisk", "Rischio<BR>Credito", 65, TipoAllineamento.DESTRA, false, dimfont, false));
tabellaDati.Colonne.Add(new Colonna("Var", "Rischio<BR>(VaR %)", 65, TipoAllineamento.DESTRA, false, dimfont, false));
//tabellaDati.Colonne.Add(new Colonna("Var", "Rischio<BR>(VaR %)", 50, TipoAllineamento.DESTRA, false, 7, false));
}
datitab.setCellSpace(0);
tabellaDati.Draw(datitab, document);
#endregion
#region Scrivi Totale
datitab = new DatiTabella();
datitab.table = set.Tables["ProdottiTotale"];
DataView view2 = new DataView(datitab.table);
view2.RowFilter = ("TipoProdotto = '" + area + "'");
datitab.table = view2.ToTable();
//Imposto gli asterischi di rimando nel caso in cui sia presente la nota del grado copertura
if (notaGradoCopertura.Length > 0)
datitab.table.Rows[0]["Var"] = datitab.table.Rows[0]["Var"].ToString() + document.Note.Find(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id).ToString();
Tabella tabellaTotale = new Tabella(document.getMargineLeft(), document.getLastPos() + tabellaDati.AltezzaTabella + 25);
tabellaTotale.HeaderFont = 8;
tabellaTotale.SaltoPagina = false;
tabellaTotale.Header = false;
if (dataThread.NumeroIntermediari > 1)
{
/***************************** Fix Allineamento - Pino **********************************************************/
tabellaTotale.Colonne.Add(new Colonna("Totale", "", 256, TipoAllineamento.SINISTRA, true, dimfont, true));
tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true));
tabellaTotale.Colonne.Add(new Colonna("Var", "", 175, TipoAllineamento.DESTRA, true, dimfont, true));
//--- Originale
//tabellaTotale.Colonne.Add(new Colonna("Totale", "", 256, TipoAllineamento.SINISTRA, true, dimfont, true));
//tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true));
//tabellaTotale.Colonne.Add(new Colonna("Var", "", 186, TipoAllineamento.DESTRA, true, dimfont, true));
}
else
{
tabellaTotale.Colonne.Add(new Colonna("Totale", "", 222, TipoAllineamento.SINISTRA, true, dimfont, true));
tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true));
tabellaTotale.Colonne.Add(new Colonna("Var", "", 210, TipoAllineamento.DESTRA, true, dimfont, true));
}
tabellaTotale.Draw(datitab, document);
document.setLastPos(tabellaTotale.AltezzaTabella + tabellaDati.AltezzaTabella);
#endregion
}
}
}