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