using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using System.Collections.Generic;
using Consulenza.ReportWriter.Business.CHART_PDF;
using System.Linq;
using Consulenza.ReportWriter.Business.Entity;
using Dundas.Charting.WebControl;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
public class S42 : Entity.Section
{
///
///S42.RischioMercatoEvoluzionePatrimonio idSezione = 85
///
public S42(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S42", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
var benchmark = new ColorPDF(180, 199, 231);
var flessibili = new ColorPDF(244, 177, 131);
#region Tabella
#region Prodotti Finanziari (Benchmark - Flessibili) + Istogrammi
var dtTabella = new DataTable();
dtTabella.Columns.Add(new DataColumn("Oggetto", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Categoria", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Controvalore", typeof(string)));
dtTabella.Columns.Add(new DataColumn("VaR", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Oggettostacked", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Percentuale", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Altro", typeof(bool)));
var dtPat = dati.Tables["profilo"];//.AsEnumerable().Where(l => l.Field("Altro")).CopyToDataTable();
foreach (DataRow ro in dtPat.Rows)
{
dtTabella.Rows.Add("",
ro["Categoria"].ToString(),
Helper.FormatCurrency(ro["Controvalore"].ToString()),
Helper.FormatCurrency(ro["VaR"].ToString()),
"",
Helper.FormatCurrency(ro["Percentuale"].ToString())
);
}
var tabellaProgetti = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabella)
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
MinimumRowHeight = 27,
Footer = false
};
tabellaProgetti.IndexesOfSeparatorsToIgnore.Add(3);
// tabellaProgetti.Columns.Add(new ColumnPDF("oggetto", 15, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Objectpdf, "oggetto", string.Empty) { PaddingLeft = 3, DeltaYContent = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("Categ", 148, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Categoria", "Categoria") { HeaderFontSize = 7, PaddingLeft = 5, VerticalAlignment = VerticalAlignmentType.Centrato });
tabellaProgetti.Columns.Add(new ColumnPDF("Contro", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Controvalore", "Controvalore
attuale (€)") { HeaderFontSize = 7, PaddingRight = 1, HeaderPaddingLeft = 25 });
tabellaProgetti.Columns.Add(new ColumnPDF("Var", 67, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderFontSize = 7, HeaderPaddingRight = 11, PaddingRight = 8 });
tabellaProgetti.Columns.Add(new ColumnPDF("oggettost", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Percentuale", string.Empty) { PaddingLeft = 5, HeaderBackgroundColor = ColorPDF.Bianco, DeltaYContent = 9, BackgroundColor = ColorPDF.Bianco });
// tabellaProgetti.Columns.Add(new ColumnPDF("Percentuale", 70, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "Percentuale", "") { HeaderBackgroundColor = ColorPDF.Bianco, BackgroundColor = ColorPDF.Bianco });
var list = new List();
list.Add(Convert.ToDouble(dati.Tables["profilo"].AsEnumerable().Max(x => x["Percentuale"])));
var max = (float)Helper.Round(list.Max());
float larghezzaSpazioTestoPercentuale = 0;
float larghezzaBarra = 0;
float deltaXBarra = 0;
//decimal totcontr = dati.Tables["profilo"].AsEnumerable().Sum(l => l.Field("Controvalore"));
//decimal totvar = dati.Tables["profilo"].AsEnumerable().Sum(l => l.Field("VaR"));
int i = 0;
foreach (DataRow r in dtTabella.Rows)
{
tabellaProgetti.Cells[0, i].ValueObjectList = new List()
{
new CirclePDF(11, 11, r["Categoria"].ToString().Contains("bench") ? benchmark : r["Categoria"].ToString().Contains("fless") ? flessibili : r["Categoria"].ToString().Contains("Totale") ? ColorPDF.Standard_Grigio_SfondoColonnaTabella : ColorPDF.Bianco){ DeltaY = 7},
new FormattedTextAreaPDF(r["Categoria"].ToString(), 0)
{
DeltaY = 5,
DeltaX = 15,
FontSize = 7
}
};
larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(r["Percentuale"]), max, tabellaProgetti.Columns[3].Width - 50);
larghezzaSpazioTestoPercentuale = tabellaProgetti.Columns[3].Width - larghezzaBarra;
deltaXBarra = larghezzaBarra + 10;
if (larghezzaSpazioTestoPercentuale < 35)
{
deltaXBarra = (tabellaProgetti.Columns[3].Width - 35);
larghezzaSpazioTestoPercentuale = 35;
}
if (Convert.ToDouble(r["Percentuale"]) == 0 && r["Categoria"].ToString().Contains("bench"))
benchmark = ColorPDF.Bianco;
if (Convert.ToDouble(r["Percentuale"]) == 0 && r["Categoria"].ToString().Contains("fles"))
flessibili = ColorPDF.Bianco;
tabellaProgetti.Cells[3, i].ValueObjectList = new List()
{
new RectanglePDF(12, larghezzaBarra, r["Categoria"].ToString().Contains("bench") ? benchmark : r["Categoria"].ToString().Contains("fless") ? flessibili : r["Categoria"].ToString().Contains("Totale") ? ColorPDF.Standard_Grigio_SfondoColonnaTabella : ColorPDF.Bianco){DeltaY=-1.1F},
new FormattedTextAreaPDF(Helper.FormatPercentage(r["Percentuale"].ToString(), 2), 0, larghezzaSpazioTestoPercentuale)
{
DeltaY =Convert.ToDouble(r["Percentuale"]) == 0 ? 2 : 0.4F,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
DeltaX =Convert.ToDouble(r["Percentuale"]) == 0 ? 0 : deltaXBarra,
FontSize = 7
}
};
// tabellaProgetti.Cells[5, i].Value = Convert.ToDecimal(r["Percentuale"]) > 0 ? " " + Helper.FormatCurrency(r["Percentuale"].ToString()) : "";
tabellaProgetti.Cells[1, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
i++;
}
AddElement(tabellaProgetti);
AddElement(new SpacePDF(10));
#endregion
#region Totale Gestito
AddElement(new FormattedTextAreaPDF("Totale risparmio gestito", EnvironmentFacade.RendererFacade.XLeftLimit, 148) { DeltaX = 5, FontSize = 7, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, AutoIncrementYWritable = false });
AddElement(new FormattedTextAreaPDF(" " + Helper.FormatCurrency(dati.Tables["profilo2"].AsEnumerable().Where(l => l.Field("Altro")).Sum(o => o.Field("Controvalore")).ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 147, 90) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, AutoIncrementYWritable = false });
var row = (from o in dati.Tables["profilo2"].AsEnumerable() where Convert.ToBoolean(o["Altro"]) select o).LastOrDefault();
AddElement(new FormattedTextAreaPDF(" " + Helper.FormatCurrency(row["var"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 147 + 90, 67) { FontSize = 7, DeltaX = -10, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, AutoIncrementYWritable = true });
#endregion
#region Altri Prodotti + Patrimonio Fideuram
var dtTabellaA = new DataTable();
dtTabellaA.Columns.Add(new DataColumn("Categoria", typeof(string)));
dtTabellaA.Columns.Add(new DataColumn("Controvalore", typeof(string)));
dtTabellaA.Columns.Add(new DataColumn("VaR", typeof(string)));
var dtPat1 = dati.Tables["profilo2"].AsEnumerable().CopyToDataTable();
//var dtPat1 = dati.Tables["profilo2"].AsEnumerable().Where(l => !l.Field("Altro")).CopyToDataTable();
foreach (DataRow ro in dtPat1.Rows)
{
if (!ro["Categoria"].ToString().ToLower().Contains("risparmio"))
{
dtTabellaA.Rows.Add(ro["Categoria"].ToString(),
Helper.FormatCurrency(ro["Controvalore"].ToString()),
Helper.FormatCurrency(ro["VaR"].ToString()));
}
}
var tabellaAltri1 = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabellaA)
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
RowHeight = 27,
Footer = true,
Header = false
};
tabellaAltri1.Columns.Add(new ColumnPDF("Categ", 147, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Categoria", "") { HeaderFontSize = 7, PaddingLeft = 2 });
tabellaAltri1.Columns.Add(new ColumnPDF("Contro", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Controvalore", ""));
tabellaAltri1.Columns.Add(new ColumnPDF("Var", 67, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "VaR", "") { HeaderFontSize = 7, HeaderPaddingRight = 5, PaddingRight = 5 });
tabellaAltri1.FooterColumns.Add(new ColumnPDF("Totale", 147, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo));
tabellaAltri1.FooterColumns.Add(new ColumnPDF("controvalore", 90, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo));
tabellaAltri1.FooterColumns.Add(new ColumnPDF("var", 67, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { PaddingRight = 5 });
tabellaAltri1.FooterCells[0, 0].Value = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
tabellaAltri1.FooterCells[1, 0].Value = Helper.FormatCurrency(dati.Tables["patrimonioFideuram"].Rows[0]["Controvalore"].ToString());
tabellaAltri1.FooterCells[2, 0].Value = dati.Tables["patrimonioFideuram"].Rows[0]["VaR"].ToString().Replace(".", ",");
AddElement(tabellaAltri1);
AddElement(new SpacePDF(15));
#endregion
#endregion
#region Nota + Testo (Dinamico con Orizzonte Temporale)
//if (_presenzaNota)
// AddElement(new FormattedTextAreaPDF(string.Format(testi.Rows[0]["testo3"].ToString(),nota), EnvironmentFacade.RendererFacade.XLeftLimit));
if (getNota().Length > 0)
tabellaAltri1.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota(),
new[] { "VaR" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella) { FontSize = 6 , TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }
);
AddElement(new SpacePDF(5));
#endregion
if (dati.Tables["profilo"].AsEnumerable().FirstOrDefault(o => o.Field("Altro") && o.Field("Controvalore") > 0) != null && dati.Tables["scenari"].Rows.Count > 0)
{
if (getTestoIntro2().Length > 0)
AddElement(new FormattedTextAreaPDF(getTestoIntro2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
#region Scenari Tabella
var dtTabellaS = new DataTable();
dtTabellaS.Columns.Add(new DataColumn("Oggetto", typeof(string)));
dtTabellaS.Columns.Add(new DataColumn("Descrizione", typeof(string)));
dtTabellaS.Columns.Add(new DataColumn("Valore", typeof(string)));
dtTabellaS.Columns.Add(new DataColumn("Scadenza", typeof(string)));
foreach (DataRow ro in dati.Tables["scenari"].Rows)
{
dtTabellaS.Rows.Add("",
ro["Descrizione"].ToString(),
Helper.FormatDecimal(ro["Valore"].ToString(), 2),
Helper.FormatDecimal(ro["Scadenza"].ToString(), 2));
}
var tabellaScenari = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabellaS)
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = false,
AlternateRow = false,
HeaderHeight = 22,
RowHeight = 25,
AutoIncrementYWritable = false
};
//tabellaScenari.Columns.Add(new ColumnPDF("og", 20, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Objectpdf, "ogg", "") { DeltaYContent = 11, PaddingLeft = 5 });
tabellaScenari.Columns.Add(new ColumnPDF("descr", 120, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Objectpdf, "Descrizione", "Scenari possibili") { PaddingLeft = 5, HeaderFontSize = 7, FontSize = 7, FontBold = false });
tabellaScenari.Columns.Add(new ColumnPDF("valore", 70, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Valore", "A 1 anno (%)") { HeaderFontSize = 7, FontSize = 7, PaddingRight = 10, FontBold = false });
tabellaScenari.Columns.Add(new ColumnPDF("scadenza", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Scadenza", "A scadenza (%)") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 5, PaddingRight = 10, FontBold = false });
tabellaScenari.FooterColumns.Add(new ColumnPDF("de", 135, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo) { FontSize = 7, FontColor = ColorPDF.Rosso });
tabellaScenari.FooterColumns.Add(new ColumnPDF("va", 55, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo) { FontSize = 7, BackgroundColor = ColorPDF.Bianco });
tabellaScenari.FooterColumns.Add(new ColumnPDF("sca", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo) { FontSize = 7, BackgroundColor = ColorPDF.Bianco });
int j = 0;
foreach (DataRow r in dati.Tables["scenari"].Rows)
{
ColorPDF colore = r["Descrizione"].ToString().Equals("Ottimistico") ? new ColorPDF(0, 128, 0) : r["Descrizione"].ToString().Equals("Medio") ? new ColorPDF(0, 0, 0) : new ColorPDF(255, 0, 0);
tabellaScenari.Cells[0, j].ValueObjectList = new List()
{
new RectanglePDF(3, 13, colore){ DeltaY = 10},
new FormattedTextAreaPDF(r["Descrizione"].ToString(), 0)
{
DeltaY = 4,
DeltaX = 20,
FontSize = 7
}
};
tabellaScenari.Cells[1, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaScenari.Cells[2, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
j++;
}
AddElement(new SpacePDF(15));
AddElement(tabellaScenari);
#endregion
#region Grafico Combination
var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 320, 1.0F)
{
Height = 100,
Width = 200,
MinorGridAxisY = false,
AutoIncrementYWritable = true,
MarginAxisY = 0,
ShowLineAxisY = true,
ShowLabelAxisY = true,
LabelFormatAxisY = FormatType.Decimale0,
LabelFormatAxisX = FormatType.DataShort,
ShowLineAxisX = true,
IntervalNumberAxisX = 5,
ShowLegend = false,
LegendDeltaX = 124,
LegendYOffset = 6,
LegendSymbolHeight = 0.2f,
LegendSymbolDeltaY = 9.2f,
LegendWidthColumns = new List { 20, 2, 20 },
RemoveWhiteSpacesY = true
};
// creo le Serie
var serieCombination = new List()
{
new Serie { Name = "Ottimistico", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6, ShowInLegend = false },
new Serie { Name = "Media", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6, ShowInLegend = false},
new Serie { Name = "Pessimistico", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6, ShowInLegend = false} ,
new Serie { Name = "Stripped0Line", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6, BorderStyle = ChartDashStyle.Dash, ShowInLegend = true, Text = "0,00", Color = new ColorPDF(195,195,195) }
};
serieCombination[3].Points.Add(new Point
{
Color = new ColorPDF(150, 150, 150),
Values = new ValuesPointXY(dati.Tables["ControvaloriLineeProtette"].Rows.OfType().Min(x => Convert.ToDateTime(x["Data"]).ToOADate()), 0),
ShowLabelAxisY = false,
FontSizeLabelAxisY = 7,
FontBoldLabelAxisY = false,
ShowLabelAxisX = false
});
serieCombination[3].Points.Add(new Point
{
Color = new ColorPDF(150, 150, 150),
Values = new ValuesPointXY(dati.Tables["ControvaloriLineeProtette"].Rows.OfType().Max(x => Convert.ToDateTime(x["Data"]).ToOADate()), 0),
ShowLabelAxisY = false,
FontSizeLabelAxisY = 7,
FontBoldLabelAxisY = false,
ShowLabelAxisX = false
});
//var dataAttuale = DateTime.Now;
//var dataFutura = dataAttuale.AddYears(Convert.ToInt32(_OrizzonteTemporale));
//var dts = dati.Tables["ControvaloriLineeProtette"].AsEnumerable().OrderBy(o => o.Field("Data")).Where(o => o.Field("Data") <= dataAttuale).CopyToDataTable();
//var dts = dati.Tables["ControvaloriLineeProtette"].AsEnumerable().Where(o => o.Field("Data") >= dataAttuale && o.Field("Data") <= dataFutura).OrderBy(o => o.Field("Data")).CopyToDataTable();
// valorizzo le Serie
//foreach (DataRow item in dts.Rows)
foreach (DataRow item in dati.Tables["ControvaloriLineeProtette"].Rows)
{
#region Serie Ottimistico
serieCombination[0].Points.Add(new Point
{
Color = new ColorPDF(0, 128, 0),
Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["Ottimistico"])),
ShowLabelAxisY = false,
FontSizeLabelAxisY = 7,
LabelAxisY = Helper.FormatPercentage(Convert.ToDecimal(item["Ottimistico"]), 2),
FontBoldLabelAxisY = false,
ShowLabelAxisX = true
});
#endregion
#region Serie Media
serieCombination[1].Points.Add(new Point
{
Color = new ColorPDF(0, 0, 0),
Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["Media"])),
ShowLabelAxisY = false,
LabelAxisY = Helper.FormatPercentage(Convert.ToDecimal(item["Media"]), 2),
FontSizeLabelAxisY = 7,
FontBoldLabelAxisY = false,
FontSizeLabelAxisX = 7,
ShowLabelAxisX = true
});
#endregion
#region Serie Pessimistico
serieCombination[2].Points.Add(new Point
{
Color = new ColorPDF(255, 0, 0),
Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["Pessimistico"])),
ShowLabelAxisY = false,
LabelAxisY = Helper.FormatPercentage(Convert.ToDecimal(item["Pessimistico"]), 2),
FontSizeLabelAxisY = 7,
FontBoldLabelAxisY = false,
ShowLabelAxisX = true
});
#endregion
}
//aggiungo le Serie al grafico
graficoCombination.SeriesCollection = serieCombination;
//AddElement(new SpacePDF(10));
//aggiungo il grafico alla pagina
AddElement(graficoCombination);
//AddElement(new SpacePDF(10));
#endregion
#region Statistiche
var tabellaStatistiche = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["statistiche"]) // CAMBIARE 3 con 2
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = false,
AlternateRow = false,
RowHeight = 25
};
tabellaStatistiche.Columns.Add(new ColumnPDF("descrizione", 165, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Descrizione", "Statistiche") { HeaderFontSize = 7, FontBold = false });
tabellaStatistiche.Columns.Add(new ColumnPDF("valore", 115, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Valore", "") { FontSize = 7, PaddingRight = 5 });
AddElement(new SpacePDF(12));
AddElement(tabellaStatistiche);
AddElement(new SpacePDF(10));
#endregion
}
}
protected sealed override DataTable GetDataTable()
{
return null;
}
protected sealed override DataSet GetDataSet()
{
var ds = new DataSet();
ds.Tables.Add(new DataTable("profilo"));
ds.Tables.Add(new DataTable("profilo2"));
ds.Tables.Add(new DataTable("patrimonioFideuram"));
ds.Tables.Add(new DataTable("scenari"));
ds.Tables.Add(new DataTable("ControvaloriLineeProtette"));
ds.Tables.Add(new DataTable("statistiche"));
int orzTempMesi = scadenzaTemporale();
var evoluzionePatrimonio = datiSeiUnico.rischioUnit().rischio.evoluzione;
var pianificazioneVerticale = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale;
#region Estrazione Profilo Finanziario
ds.Tables["profilo"].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables["profilo"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["profilo"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["profilo"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));
ds.Tables["profilo"].Columns.Add(new DataColumn("Altro", typeof(bool)));
foreach (var item in evoluzionePatrimonio.strutturaRisparmioGestito)
{
ds.Tables["profilo"].Rows.Add(item.descrizione,
item.controvalore,
item.var == null ? "0" : item.var,
item.pesoRelativoCtv * 100,
item.descrizione.ToLower().Contains("benchmark") || item.descrizione.ToLower().Contains("fless") ? true : false);
}
#endregion
#region Estrazione Altri Profili
ds.Tables["profilo2"].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables["profilo2"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["profilo2"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["profilo2"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));
ds.Tables["profilo2"].Columns.Add(new DataColumn("Altro", typeof(bool)));
foreach (var item in evoluzionePatrimonio.strutturaPortafoglio)
{
//if (!item.descrizione.ToLower().Contains("risparmio"))
//{
var VaR = item.var == null ? "0" : (item.controvalore < 0 ? "n.c." : item.var);
ds.Tables["profilo2"].Rows.Add(item.descrizione,
item.controvalore,
item.var == null ? "0" : item.var,
item.peso * 100,
item.descrizione.ToLower().Contains("gestito") ? true : false);
// }
}
#endregion
#region Estrazione Patrimonio Fideuram
ds.Tables["patrimonioFideuram"].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables["patrimonioFideuram"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["patrimonioFideuram"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["patrimonioFideuram"].Columns.Add(new DataColumn("Valore note", typeof(string)));
ds.Tables["patrimonioFideuram"].Rows.Add(
string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)),
pianificazioneVerticale.patrimonioTotaleRFA,
pianificazioneVerticale.varInfos.varDecodificato,
pianificazioneVerticale.varInfos.stat.copertura);
#endregion
#region Estrazione Dati Grafico
if (evoluzionePatrimonio.listaConi != null)
{
ds.Tables["controvaloriLineeProtette"].Columns.Add(new DataColumn("Data", typeof(DateTime)));
ds.Tables["controvaloriLineeProtette"].Columns.Add(new DataColumn("Ottimistico", typeof(decimal)));
ds.Tables["controvaloriLineeProtette"].Columns.Add(new DataColumn("Pessimistico", typeof(decimal)));
ds.Tables["controvaloriLineeProtette"].Columns.Add(new DataColumn("Media", typeof(decimal)));
var coni = from c in evoluzionePatrimonio.listaConi
where c.dtRiferimento <= DateTime.Now.AddYears(orzTempMesi) //dipende da quale opzione arriva: se si decide per mesi o anni...rivedi opzioni, metodo e where
orderby c.dtRiferimento
select new
{
c.dtRiferimento,
quantileSup = c.quantileSup * 100,
quantileInf = c.quantileInf * 100,
quantileInter = c.quantileInter * 100
};
foreach (var item in coni)
{
ds.Tables["controvaloriLineeProtette"].Rows.Add(item.dtRiferimento,
Convert.ToDecimal(item.quantileSup),
Convert.ToDecimal(item.quantileInf),
Convert.ToDecimal(item.quantileInter)
);
}
#endregion
#region Estrazione Scenari
ds.Tables["scenari"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["scenari"].Columns.Add(new DataColumn("Valore", typeof(decimal)));
ds.Tables["scenari"].Columns.Add(new DataColumn("Scadenza", typeof(decimal)));
ds.Tables["scenari"].Rows.Add(
"Ottimistico",
evoluzionePatrimonio.scenari.optScenarioOneYear,
Helper.FormatDecimal(coni.LastOrDefault().quantileSup.ToString(), 2)
);
ds.Tables["scenari"].Rows.Add(
"Medio",
evoluzionePatrimonio.scenari.stScenarioOneYear,
Helper.FormatDecimal(coni.LastOrDefault().quantileInter.ToString(), 2)
);
ds.Tables["scenari"].Rows.Add(
"Pessimistico",
evoluzionePatrimonio.scenari.pesScenarioOneYear,
Helper.FormatDecimal(coni.LastOrDefault().quantileInf.ToString(), 2)
);
#endregion
#region Estrazione Statistiche
ds.Tables["statistiche"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["statistiche"].Columns.Add(new DataColumn("Valore", typeof(string)));
// AM - HotFix #9720
bool tempHorizonExist = evoluzionePatrimonio.scenari.minimumTime.ToString() != "-" &&
evoluzionePatrimonio.scenari.minimumTime.ToString() != null &&
evoluzionePatrimonio.scenari.minimumTime.ToString() != "";
string tempHorizonString = tempHorizonExist ? evoluzionePatrimonio.scenari.minimumTime.ToString().Substring(0,2).Replace(" ", "") :
evoluzionePatrimonio.scenari.minimumTime.ToString();
string tempHorizon = tempHorizonExist && (orzTempMesi < int.Parse(tempHorizonString)) ?
"-" : evoluzionePatrimonio.scenari.minimumTime.ToString();
ds.Tables["statistiche"].Rows.Add("Tempo minimo di investimento", tempHorizon/*evoluzionePatrimonio.scenari.minimumTime.ToString()*/);
ds.Tables["statistiche"].Rows.Add("Perdita massima stimata (%)", evoluzionePatrimonio.scenari.maxLoss.ToString() == "0" ? "-" : Helper.FormatDecimal(evoluzionePatrimonio.scenari.maxLoss.ToString(), 2));
#endregion
}
return ds;
}
public virtual int scadenzaTemporale()
{
var pi = GetOption().Valore;
// return 0;
return int.Parse(GetOption().Valore);// int.Parse(GetOption().Valore) != 6 ? int.Parse(GetOption().Valore) / 12 : int.Parse(GetOption().Valore);
}
public virtual string getNota()
{
string nota = "";
var copertura = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.varInfos.stat.copertura;
if (copertura < 100)
{
nota = string.Format(GetText().Rows[0]["testo2"].ToString(), Helper.FormatDecimal(copertura.ToString(), 2)).Trim();
}
return nota;
}
public virtual string getTestoIntro2(){
return string.Format(GetText().Rows[0]["testo1"].ToString(),Helper.orizzonteTemporale(GetOption().Valore), Helper.ReplaceVariables("$/Banca/$",base.EnvironmentFacade.ReportEnvironment));
}
}
}