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

379 lines
18 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using ceTe.DynamicPDF.Text;
using ceTe.DynamicPDF;
using PDFGenerator.Presentation.Section;
using PDFGenerator;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
using PDFGenerator.BusinessLayer;
using PDFGenerator.BusinessLayer.DataSection;
/// <summary>
/// Summary description for S157
/// </summary>
///
public class S157 : ISezione
{
string Titolo = string.Empty;
string _testotitolo;
string _testointroduttivo;
/// <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 void setTitolo(string label)
{
Titolo = label;
}
public S157()
{
//
// TODO: Add constructor logic here
//
}
public void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datitab = new DatiTabella();
DataSetS157 set = (DataSetS157)dataThread.Data.DatiSezione;
bool _mostracolonnacopertura = false;
#region Resulset- Verifica disegno colonna "copertura"
datitab.table = set.Tables["ResultSet"];
#endregion
if (document.checkMargin(300))
document.addPage();
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitolo(_testotitolo);
document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8);
#region Piramide
//disegno la parte della piramide
Piramide modello = new Piramide();
modello.writeSezione(document);
datitab.table = set.Tables["GraficoPiramide"];
DataView view = new DataView(datitab.table);
view.RowFilter = "";
datitab.table = view.ToTable(false, "Controvalore", "Rischio", "Copertura");
Tabella tabella = new Tabella();
tabella.HeaderFont = 8;
tabella.LineeTabella = false;
tabella.Y = document.getLastPos();
tabella.X = 210;
tabella.Header = true;
tabella.SaltoPagina = false;
tabella.Datasource = datitab.table;
tabella.AltezzaCella = 30;
if (_mostracolonnacopertura)
{
tabella.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 70, TipoAllineamento.DESTRA, false, 9, false));
tabella.Colonne.Add(new Colonna("Rischio", "Rischio <BR> (VaR %)", 50, TipoAllineamento.DESTRA, false, 9, false));
tabella.Colonne.Add(new Colonna("Copertura", "Copertura <BR> (%)", 60, TipoAllineamento.DESTRA, false, 9, false));
}
else
{
tabella.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 100, TipoAllineamento.DESTRA, false, 9, false));
tabella.Colonne.Add(new Colonna("Rischio", "Rischio <BR> (VaR %)", 80, TipoAllineamento.DESTRA, false, 9, false));
}
tabella.Draw(datitab, document);
#endregion
#region Grafico a Farfalla
DatiGrafico dati = new DatiGrafico();
dati.dataTab = set.Tables["GraficoFarfalla"];
dati.setHeight(188);
dati.setWidth(163);
dati.ActLabelSeries();
IstoFarfalla farfalla = new IstoFarfalla();
document.InsertGrafico(farfalla.getGrafico(dati), 400, document.getLastPos() + 14);
// header del grafico
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Piramide Modello", tabella.X + 190, tabella.Y - 5, 120, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Piramide Attuale", tabella.X + 275, tabella.Y - 5, 120, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left));
//footer del grafico
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(tabella.X + 190, tabella.Y + 173, 163, 23, 0, new RgbColor(232, 236, 237)));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(" 100% 50% 0% 50% 100%", tabella.X + 190, tabella.Y + 179, 320, 10, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.TextAlign.Left));
#endregion
#region Tabella per il Totale delle Risorse Allocate
//setta la datatable
datitab = new DatiTabella();
datitab.table = set.Tables["RisorseAllocate"];
Tabella tabellaRisorseAllocate = new Tabella();
tabellaRisorseAllocate.HeaderFont = 9;
tabellaRisorseAllocate.X = document.getMargineLeft();
tabellaRisorseAllocate.Y = document.getLastPos() + tabella.AltezzaTabella + 40;
tabellaRisorseAllocate.SaltoPagina = false;
tabellaRisorseAllocate.Datasource = datitab.table;
tabellaRisorseAllocate.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, true));
if (_mostracolonnacopertura)
{
tabellaRisorseAllocate.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseAllocate.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseAllocate.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, false, 9, true));
}
else
{
tabellaRisorseAllocate.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseAllocate.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, false, 9, true));
}
if (set.Tables["RisorseNonAllocate"].Rows.Count > 0)
tabellaRisorseAllocate.Draw(datitab, document);
#endregion
#region Tabella per il Totale delle Risorse non Allocate
datitab = new DatiTabella();
datitab.table = set.Tables["RisorseNonAllocate"];
Tabella tabellaRisorseNonAllocate = new Tabella();
tabellaRisorseNonAllocate.HeaderFont = 9;
tabellaRisorseNonAllocate.X = document.getMargineLeft();
tabellaRisorseNonAllocate.Y = document.getLastPos() + tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + 40;
tabellaRisorseNonAllocate.SaltoPagina = false;
tabellaRisorseNonAllocate.Datasource = datitab.table;
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, false));
if (_mostracolonnacopertura)
{
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, false));
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, false, 9, false));
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, false, 9, false));
}
else
{
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, false));
tabellaRisorseNonAllocate.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, false, 9, false));
}
if (set.Tables["RisorseNonAllocate"].Rows.Count > 0)
tabellaRisorseNonAllocate.Draw(datitab, document);
#endregion
#region Tabella per il Totale delle Risorse Finanaziarie
datitab = new DatiTabella();
datitab.table = set.Tables["RisorseFinanziarie"];
Tabella tabellaRisorseFinanaziarie = new Tabella();
tabellaRisorseFinanaziarie.HeaderFont = 9;
tabellaRisorseFinanaziarie.X = document.getMargineLeft();
tabellaRisorseFinanaziarie.Y = document.getLastPos() + tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + tabellaRisorseNonAllocate.AltezzaTabella + 40;
tabellaRisorseFinanaziarie.SaltoPagina = false;
tabellaRisorseFinanaziarie.Datasource = datitab.table;
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, true));
if (_mostracolonnacopertura)
{
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, false, 9, true));
}
else
{
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, true));
tabellaRisorseFinanaziarie.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, false, 9, true));
}
//if (
// ((set.Tables["RisorseAllocate"].Rows.Count == 0 || set.Tables["RisorseNonAllocate"].Rows.Count == 0) && set.Tables["PartiteViaggianti"].Rows.Count > 0) || ((set.Tables["RisorseAllocate"].Rows.Count == 0 || set.Tables["RisorseNonAllocate"].Rows.Count == 0) && dataThread.TotalNegativeCurrentAccountValue < 0)
// ||
// ((set.Tables["RisorseAllocate"].Rows.Count > 0 && set.Tables["RisorseNonAllocate"].Rows.Count > 0 && set.Tables["PartiteViaggianti"].Rows.Count > 0) || (set.Tables["RisorseAllocate"].Rows.Count > 0 && set.Tables["RisorseNonAllocate"].Rows.Count > 0 && dataThread.TotalNegativeCurrentAccountValue < 0))
// )
if (set.Tables["RisorseNonAllocate"].Rows.Count > 0
|| set.Tables["RisorseNonAllocate"].Rows.Count > 0
|| dataThread.TotalNegativeCurrentAccountValue < 0
|| set.Tables["PartiteViaggianti"].Rows.Count > 0
|| dataThread.TotalSelfNegCurrentAccountValue < 0)
tabellaRisorseFinanaziarie.Draw(datitab, document);
#endregion
#region Tabella per il Conto Corrente
datitab = new DatiTabella();
datitab.table = set.Tables["ContoCorrente"];
Tabella tabellaContoCorrente = new Tabella();
tabellaContoCorrente.HeaderFont = 9;
tabellaContoCorrente.X = document.getMargineLeft();
tabellaContoCorrente.Y = document.getLastPos() + tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + tabellaRisorseNonAllocate.AltezzaTabella + tabellaRisorseFinanaziarie.AltezzaTabella + 40;
tabellaContoCorrente.SaltoPagina = false;
tabellaContoCorrente.Datasource = datitab.table;
tabellaContoCorrente.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, false));
if (_mostracolonnacopertura)
{
tabellaContoCorrente.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, false));
tabellaContoCorrente.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, false, 9, false));
tabellaContoCorrente.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, false, 9, false));
}
else
{
tabellaContoCorrente.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, false));
tabellaContoCorrente.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, false, 9, false));
}
if (dataThread.TotalNegativeCurrentAccountValue < 0)
tabellaContoCorrente.Draw(datitab, document);
#endregion
#region Tabella per il Linea Self Negativa
datitab = new DatiTabella();
datitab.table = set.Tables["LineaSelf"];
Tabella tabellaLineaSelfNegativa = new Tabella();
tabellaLineaSelfNegativa.HeaderFont = 9;
tabellaLineaSelfNegativa.X = document.getMargineLeft();
tabellaLineaSelfNegativa.Y = document.getLastPos() + tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + tabellaRisorseNonAllocate.AltezzaTabella + tabellaRisorseFinanaziarie.AltezzaTabella + tabellaContoCorrente.AltezzaTabella + 40;
tabellaLineaSelfNegativa.SaltoPagina = false;
tabellaLineaSelfNegativa.Datasource = datitab.table;
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, false));
if (_mostracolonnacopertura)
{
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, false));
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, false, 9, false));
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, false, 9, false));
}
else
{
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, false));
tabellaLineaSelfNegativa.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, false, 9, false));
}
if (dataThread.TotalSelfNegCurrentAccountValue < 0)
tabellaLineaSelfNegativa.Draw(datitab, document);
#endregion
#region Tabella per gli Investimenti in corso o Partite Viaggianti
datitab = new DatiTabella();
datitab.table = set.Tables["PartiteViaggianti"];
Tabella tabellaPartiteViaggianti = new Tabella();
tabellaPartiteViaggianti.HeaderFont = 9;
tabellaPartiteViaggianti.X = document.getMargineLeft();
tabellaPartiteViaggianti.Y = document.getLastPos() + tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + tabellaRisorseNonAllocate.AltezzaTabella + tabellaRisorseFinanaziarie.AltezzaTabella + tabellaContoCorrente.AltezzaTabella + tabellaLineaSelfNegativa.AltezzaTabella + 40;
tabellaPartiteViaggianti.SaltoPagina = false;
tabellaPartiteViaggianti.Datasource = datitab.table;
tabellaPartiteViaggianti.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, false, 9, false));
if (_mostracolonnacopertura)
tabellaPartiteViaggianti.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, false, 9, false));
else
tabellaPartiteViaggianti.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, false, 9, false));
if (set.Tables["PartiteViaggianti"].Rows.Count > 0)
tabellaPartiteViaggianti.Draw(datitab, document);
#endregion
#region Tabella per il Totale Patrimonio
datitab = new DatiTabella();
datitab.table = set.Tables["TotalePatrimonio"];
float YtabellaTotalePatrimonio = tabella.AltezzaTabella + tabellaRisorseAllocate.AltezzaTabella + tabellaRisorseNonAllocate.AltezzaTabella + tabellaRisorseFinanaziarie.AltezzaTabella + tabellaContoCorrente.AltezzaTabella + tabellaPartiteViaggianti.AltezzaTabella + tabellaLineaSelfNegativa.AltezzaTabella + 40;
float XtabellaTotalePatrimonio = document.getMargineLeft();
Tabella tabellaTotalePatrimonio = new Tabella();
tabellaTotalePatrimonio.HeaderFont = 9;
tabellaTotalePatrimonio.X = XtabellaTotalePatrimonio;
tabellaTotalePatrimonio.Y = document.getLastPos() + YtabellaTotalePatrimonio;
tabellaTotalePatrimonio.SaltoPagina = false;
tabellaTotalePatrimonio.Datasource = datitab.table;
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Descrizione", "", 170, TipoAllineamento.SINISTRA, true, 9, true));
if (_mostracolonnacopertura)
{
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Controvalore", "", 74, TipoAllineamento.DESTRA, true, 9, true));
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Rischio", "", 48, TipoAllineamento.DESTRA, true, 9, true));
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Copertura", "", 58, TipoAllineamento.DESTRA, true, 9, true));
}
else
{
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Controvalore", "", 100, TipoAllineamento.DESTRA, true, 9, true));
tabellaTotalePatrimonio.Colonne.Add(new Colonna("Rischio", "", 80, TipoAllineamento.DESTRA, true, 9, true));
}
tabellaTotalePatrimonio.Draw(datitab, document);
#endregion
document.setLastPos(YtabellaTotalePatrimonio-30);
FormatNum conv = new FormatNum();
if (decimal.Parse(set.TotalePatrimonio[0]["copertura"].ToString()) < 100)
{
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(*) Grado di copertura: " + conv.ConvertNum(decimal.Parse(set.TotalePatrimonio[0]["copertura"].ToString())) + "%", document.getMargineLeft(), document.getLastPos(), 180, 10, Globals.OpenTypeFontVerdana, 7));
document.setLastPos(40);
}
else
{
document.setLastPos(30);
}
}
}